Originally asked on Reddit here, I found this question interesting. Since I've started programming 10 years or so ago, my personality has gotten more prickly as I pack on more and more years as a programmer. Why is this?
I'll post glomek's answer on Reddit to start the conversation. It was the answer most modded up.
I suppose that you might have just been unlucky enough to hang out with the wrong programmers, but I'll give the ones you know the benefit of the doubt and assume that they are more or less normal.
Programmers are detail oriented. If we leave out one character by mistake we can introduce a subtle data corruption bug or a crashing bug.
We work very hard to say exactly what we mean. When interacting with us, it is easy to get the sense that we are pedantic assholes because we are frequently asking for clarification on trivial points that you haven't thought about or correcting what seem like unimportant mistakes in what you say.
What you need to understand is that all of those annoying pedantic points are things that we need to understand, and that we need to understand correctly, if we are to have any hope of giving you anything useful.
So try to be patient with us. If we seem to be demanding unreasonable levels of detail, please remember that it is because we need them in order to give you what you want.
The typical computer program cannot have judgment. It cannot "understand" much of anything. It mindlessly follows a bunch of instructions, no matter how sensible or stupid those instructions are. Getting those instructions right is our job, but in order to do it we need to understand the task at hand. We need to understand it completely, unambiguously, down to every last decision, without any "rules of thumb" or "do what makes sense" type of steps, not even any trivially insignificant ones.
Also, we tend to complain when you change your mind about what you want after we have written it. This is because programs are delicate things. They tend to only be easy to change in ways that they were designed to be changed. Changes that were not anticipated in the initial design can be very difficult and time consuming, and are dangerous as they can introduce subtle bugs. If you think over your experiences, I'll bet that most of the time when a program took longer to deliver than you wanted, you changed your mind about something after development had started.
Now you might have thought that the change was a small one, but it probably wasn't small at all to the programmer.
So, if you want to get along with programmers, I can offer these two pieces of advice that will make it much easier:
- Figure out what you want. Completely.
- Don't change your mind once development begins.
Obviously, these cannot be done all the time, but do your best, and whenever you fail, understand that it is your fault, and not the programmer's, that the conversation is difficult or the product is being delayed.