Tuesday, September 18, 2007

Programming and Arrogance

When you live and work in a culture of programmers (as almost any unmarried Amazon programmer seems to), its easy to see some trends emerge that are both interesting, cool, and/or troubling. The trend I was really forced to notice is a culture of Arrogance that seems to permeate the culture at Amazon. This culture is really not limited to Amazon, Google practically oozes arrogance, and it is much the same with every company that believes in itself that I've talked to. Part of this is the difficultly in hiring good programmers, exemplified here Why Can't Programmers... Program. Everyone has this problem, and most people do reject 199 out of 200 applicants (as the article mentions), but as that discussion indicates (follow some of the links), rejecting 199 people doesn't mean you're hiring the top 0.5%, just the top 0.5% of the applicant pool. Most programmers aren't looking for jobs, and companies try to keep the good ones anyway.

I think a fair amount of the arrogance comes from the art itself. When you sit down to code, normally you have some idea of the shape of the solution you want to implement, and it seems to me that a large portion of getting that solution written is being so stubborn and unable to give up on that idea that your willpower literally bends the electrons in the computer to your will making little slaves of them. How can you not be arrogant when every day you're conquering your computer all over again, programming something that (at least most of the time) no one has written before.

Another portion of the equation is the attitude of other programmers. Whatever you might say, about nature or nuture or genes making a person's profession, something attracts a lot of smart but socially challenging individuals to programing. These people are used to being right (see the previous paragraph), and are not ready for you or even Linus Torvald himself to tell them they are wrong.

I think most good or great programmers (at least in a commercial setting) have to learn to put away this arrogance, but its not something that comes easy (at least for me). Admitting that you might be wrong about a proposed solution is extremely difficult. Paradoxically, I find that once a solution is implemented, most programmers are willing (and even eager) to admit to the solutions failings or even to start over and reimplement everything differently (this happens a lot during development and is called refactoring, at least in some way). Being a decent company programmer I think also means learning to work around these foibles in others (in addition to suppressing your own instincts).

Thats all I have for now, but I have some more thoughts for later... How does aggression fit in? What about the programmers that seem to be naturally immune to these kinds of feelings? How does this affect the gender inequality in the profession?

No comments: