Programmers Are Idiots

By on August 2, 2004

So I’m out here in Boston (home of the Free Speech Zone) at a seminar on distributed enterprise application development. The instructor is Pinku Surana, who certainly seems to know his stuff. I found this interesting article in his blog, where he argues that programmers are idiots, and I have to say he makes a pretty good case.

I occasionally teach IT programmers. I’ve taught over 100 people now and I can honestly say I’ve met maybe 5 good programmers. The rest are dangerously incompetent. In fact, they are so profoundly ignorant of computer science and programming that they actually believe they are fairly good. This is the perverse effect of ignorance: because they don’t know what they don’t know, they think they know everything. Brookes’ Mythical Man Month described the uberprogrammers who are mysteriously 10x more productive than the average. I would go further and say the uberprogrammers aren’t really so uber; rather, the average is abysmal.

He goes on to say that if non-IT companies want effective software, they should ditch their programmers and demand flexible software from vendors.

I agree with him on the first point. We, as programmers, are not nearly as good as we think we are. I think it probably stems from the fact that even a novice programmer knows more about computers than nearly everyone he knows, and they all praise him for being “so smart” when he fixes their printer or gets rid of their virus problem. My mechanic is “so smart” about replacing my car’s water pump. No one really praises him for it because cars have been around a long time and there’s not much magic to them. I don’t think I’d have my mechanic build me a new car from scratch, though.

I disagree with Pinku on the idea that you can solve your software problems by demanding configurable and interoperable software from vendors. It’s a great idea in theory, but when you start dealing with vendors in reality, it quickly breaks down. We already demand these things from vendors, and they either don’t deliver, or don’t deliver as expected. Most programmers dislike vendor solutions because they’re crappy in some way and hard to integrate with. That’s because the vendor’s programmers are idiots, too. The vendor’s programmers spend a lot of time griping about how the customers write crappy architectures that are hard to integrate with their “well-written” solution. So, which is more dangerous, the idiot you know or the one you don’t?



  1. This is not endemic of just programmers: most PEOPLE in general are “idiots”. Perceived greatness is always enhanced by mediocre surroundings. In all fields and all areas of human endeavor.

  2. Even though I have never heard the term before Uberprogrammers do exist, I am lucky to know two that would qualify. One in particular has the stuff legends are made about. I could relate lots of stories that would not be believed but I will tell you one: Many years ago at a computer club meeting another programmer had been complaining he had been fiddling for weeks to produce a program to draw a shaded sphere. My friend didn’t even sit down he just typed in the code off the top of his head and it ran first time, it took him less than a minute.

  3. There’s a great link in the second or third comment to an APA study that has this in the abstract:

    “… people who are unskilled in these domains suffer a dual burden: Not only do these people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of the metacognitive ability to realize it.”

    I’ve always believed there are three kinds of skillsets in people:

    1. People who are skilled
    2. People who are unskilled and know it
    3. People who are unskilled BUT THINK THEY ARE SKILLED

    The last group is the one you really have to worry about. There was a time in my life when I was very much a member of this group. I now fit in to #1 or #2 depending on what skillset we’re talking about.

  4. Hi Joe, saw your post in my web logs. Just want to make one correction to my comments. I should have said “ignorant” instead of “idiots” when describing these programmers. Ignorant means they don’t know something; idiot implies they are incapable of doing better. I believe all programmers can get better, just as I hope I can continue to get better. But I have a long way to go before I am good enough to kiss an uberprogrammer’s feet, and so I study and practice, just as you do, to further hone my skills.

  5. Well, heres where I fit in; People who are unskilled BUT THINK THEY ARE SKILLED. Maybe this statement contradicts itself.


  6. Good programmers who know what they are doing are literally one hundredth of one percent of the entire population of programmers.

    I’ve been doing this in every programming paradigm since 1979 (assembler on aircraft data recorders was my first job) and seriously, sad to relate, I have not yet met anyone half my age who can actually understand what its all about.

    The language is unimportant. The problem and the solution is 99% of the work: get that right in your head and the actual coding is almost an irrelevant afterthought.

    We actually often drafted the code using a pencil and paper, flowcharts etc, and then had a very accurate typist to actually input it into an editor.

    We would watch as it was compiled (by the typist) and were seriously surprised if it threw any errors.

    That was systems analysis — a skill seriously lacking in “programmers” today.

  7. This is totally true. I am new at a Company where i’m working now, I’m an inexperienced Developer just finnished my study. They already have one Developer that has worked over 15 years in programming. I was quite excited to learn new things from his experience, but was quite shocked to see that she didnt even understand OOP, RDB etc. Her code was like mine when i was a 10 year old boy :P.

    Now i don’t know what i have to do, as i have to learn a lot and got a lot of Projects too lately and She’s not much of a help. She’s been doing a really small database app for nearly 4 month now! LOL. And she is still looking at the monitor couriously, compile her code and waiting for some “magic” to happen :P God, help me!!!

  8. I think the more appropriate way to deal with this is to frame the question “Why is this so?” instead of stating that programmers are idiots :-)

    I would throw at least some of the blame at some Universities. My “Computer Science” course for example, only has 1 maths subject and the rest is focused in this magical land of OOP and documentation. I think that’s crap.

    Btw I’m in a bad mood. I’m gonna regret posting this.

Comments are closed. If you have something you really want to say, email and we‘ll get it added for you.