Why Do Programmers Suck?
One of my bigger pet peeves when dealing with other programmers is this belief in absolutes and how unbending some programmers can be in dealing with them. We all fall prey to it, even me and, probably, you too, but some of us (especially the young) can be so blinded by interpretation as to lose all credibility. Now, to be clear when I say “absolutes” I’m talking about the home spun wisdom either given to us through experience or, more than likely, through someone else’s experience.
Absolutes are but one example of how dealing with programmers can be difficult. Another of my personal favorites is the religious fanaticism we have towards our tools (and against those tools and users of the tools we don’t use). Arrogance is key here.
Still, it’s not like it’s a good thing to be so problematic. There’s a wonderful thread laid out on Reddit which goes into a lot of detail on how I’m not alone with this:
I am a programmer and electrical engineer. I get along well with most people, but most programmers irritate me. They are always trying to one up each other and prove how smart they are. They commonly engage in petty infighting and ruthless backstabbing.
They want to feel like artists and desire to spend all of their time refining their beautiful, unique creations. But unlike actual free-thinkers, they constantly seek refuge in argument by authority, blindly quoting their favorite gurus to support their positions.
Their arrogance and narcissism are beyond belief. In what other industry do recent college graduates show up at their first job absolutely, religiously, convinced of the infallibility of their favorite fad, arguing their point to the extent of damaging their own prospects?
One thing common to most programmers seems to be the desperate need to believe in absolutes. “You must never use goto”. “Only one entry and one exit from any function”. “All objects MUST have a copy constructor”. “Singletons are evil”. “Do not use global variables, ever”.
I’ve been a consultant for the last 19 years. I’ve seen the insides of about 20 or more different companies, so I know these attitudes are pervasive in programmers across many industries. More so when the programming is business-centric, less so when the programming is industrial, scientific or embedded.
I guess what it really comes down to is that programmers, especially young ones, need to be right and need to be seen as super smart. They crave rules, discipline and order while at the same time regarding themselves as creative and ingenious beings. They seem to need these things as if their entire self-image depends on it, cognitive dissonance be damned.
What is it about the profession or the training that so commonly leads to this outcome?
Of course none of this applies to fine folks who frequent this website. I see a much higher level of maturity here than I see in most development teams. And I myself would NEVER be guilty of any of these tendencies
.
Any ideas?

Email
Twitter
Right on! This is so true.
You ask why this seems so pervasive? I have a theory. Many programmers come out of school with teachers who are has beens or never were’s. I can’t tell you how many times I’ve sat in lectures with instructors that would spend 2/4ths of the class telling “war stories” of the same three contracts that make the entire sum of their real world experience as if it was some kind of mystical knowledge that they were passing on. Arrogance breeds arrogance. The best instructors that I have had where PH.d’s who were not afraid to say they didn’t know, and then proceeded to find out how right there in class. I personally try and model my self as a programmer after these instructors and not the former.
A few things that I would have to say is important to understand would be:
1) that it is called “Computer Science” for a reason. I do not consider my self an “Artist” but rather a scientist or an engineer. My job is to get the task done as efficiently as possible(not as beautifully as possible).
2) Some times we have to do things the “wrong” way in order to get the job done. I truly appreciate W3C standards, and I even try and code xhtml strict. Sometimes, it is necessary that the page functions the way the client intends rather than for it to validate as the W3C intends. Who pays my bills?
3) Tools. They are all tools. I am primarily a php/mysql developer and alot of php developers are very anal about their object oriented skillz. Just because you can code oo in php doesn’t mean you have to code oo for EVERYTHING. Objects and Functions are both tools that should be used alternatively when needed. Why would I use a 100+ line class to send an email when a six line function gets the job done?