Wednesday, January 6, 2010

Are You So Arrogant ...

I was insulted last night. Now, there's nothing new about that, nor even anything particularly blog worthy. After all, we all get insulted in some fashion or another on a regular basis. We shrug it off, and we move on. This time, though, I've heard this particular insult too often. I want to address this, in particular: I was called arrogant.

Why? Because I answered a question.

The person who called me arrogant had asked about a particular piece of a program I've written, wondering what would happen if the user did a specific action. I replied that them doing so would be irrelevant, since it could do no harm. The reply came back, and amounted to "Are you sure?"

Suddenly, I wasn't sure. I went back to the code, and re-read it. I checked the actual behavior while running. I verified the contents of the database. Now, I was sure again: It simply didn't matter if the user did this action. It produced an off-by-one sum error for something which already has a much larger margin of error (counting cards that got sent and receieved from around the world). Being off by one in that situation causes no concern whatsoever.

Despite this, I then checked the database to see who was doing it, and found a whopping four people out of fifty three had done it. I spelled all of this out for the original questioner. Since the original questioner is not a technical person, I made sure to use terms that would make sense to her.

And then she asked the question that started with the title of this post: "Are you so arrogant ... " (yes, I've left the rest out, as I'm trying very hard not to make this an attack against her, and quoting her excessively would do just that).

I'm arrogant because I answered her question in terms that I knew she would understand.

After that, she mentioned that, in her experience, computer people (programmers, techs, administrators, etc) come across as if dealing with idiot children when dealing with non-computer people. So, instead of just being arrogant, I'm arrogant and condescending.

This is where the great disconnect occurs, and is the main point of this post: As a developer, I have to know things about the computer that many people do not. Doing web development, I have to know HTML, CSS, and JavaScript. If I'm doing anything with dynamic data, I also have to know whatever programming language I'm using on the server, and some database dialect so I can store, retrieve, and manipulate that data. All of that is the bare minimum required to do that work.

In order to do it well, I need to know some bits about the underlying operating system, the web server software being used, basics about HTTP (and possibly https), and the quirks of the various browsers in use around the world (IE6/7/8, Firefox, Opera, Chrome). Possibly more importantly, I have to have the knowledge that I can make no assumptions about anything. I can't count the number of times I've said "That's not possible to happen!" only to find out later that not only was it possible, it happened due to a bug in my code, and that bug came from an assumption.

In other words, I have to have a huge amount of specific, detailed, technical knowledge rolling around in my head just to do the basics of my job well. When I get somebody who is a self-proclaimed non-technical person asking me for answers that require at least some of that knowledge be handed out, I have to mentally change gears and use terms that I know will work to explain that knowledge. Of course I sound condescending, simply because I try very hard to make no assumptions.

The part that I find most interesting to me, in all of this, is one thing that my experience has taught me: The more understanding people have of their own systems, the less likely they are to call me arrogant when I explain an answer to their question.

I care a great deal about making sure I'm understood. There are times when my doing so comes across as rude, arrogant, or condescending. I do not set out to do so, but there are times when I cannot think of a way to avoid it. I actually don't like doing so. To have the insult lobbed in my direction on top of that is more than I can accept. I had to say something.

My final thought on all of this comes from her final remark: "Not everybody is a computer genius." That's correct, not everybody is. Not even me. If you want to find out about a few of them, allow me to give you some names to look up: Alan Turing, Steve Wozniak, Linus Torvalds, Alan Cox, Theo de Raadt, Brian Kernighan, Dennis Ritchie, Larry Wall, and Guido von Rossum. I am not, and never will be, in their league.


Phil said...

I'm a network engineer working daily with all sorts of people with all sorts of titles in the IT and IT-related field.

I find that many, many people in our field are extremely arrogant and often have a very condescending tone. I've found that this tone is underlying in even their non-technical conversations. Frankly, it's a pervasive character trait in the industry. I can't stand most of my co-workers for that very reason, and we complaints form our customers from time to time that has resulted in the owner of my company actually having to address this issue with certain technicians.

In addition to our diction, non-verbal communication such as tone and eye contact communicates as much if not more than the complete sentences we speak.

Especially the linux guys. Seriously. Why?

Michael Pedersen said...

I think the question of "why" is a bit harder to answer, but it usually comes down to the maturity of the two people involved.

I have noticed, personally, three stages that people go through in their careers: " I know nothing. Teach me." This gives way to "I know everything, and can fix it. Go away and stop bothering me." This gives way to "I know nothing, teach me."

No, I didn't repeat myself. The first and the last are quite similar. People learn a little bit, and think they've learned everything. Then they find out how little they know, and get back on the learning train again.

When you get someone in that second stage, it's pure arrogance. No argument. But when you get someone in that last stage (and there may be something beyond it, I admit, I just haven't seen it yet myself), everything changes. At least, it does for me.

Yes, I consider myself to be in the last stage. If I am asked a question, I can give an honest answer, even if that answer is "I don't know yet." I also figured out that non-technical people are not idiots, they just don't care about computers the way I do. As such, I try very hard to work with them, to help them understand what I'm trying to say. If they don't know, I'm as gentle as I can be about teaching them, and try to avoid forcing them to learn everything they don't care about.

Now, take someone who has insecurity issues of any sort, and put them with someone who is trying to make sure they can understand what they need to without trying to make them understand byte ordering or other such arcane issues, and the result can be exactly what I saw happen to me: Accusations of arrogance.

Still bothers me to this day. I try very hard not to do it. And it can still happen.