The Two Types of Programmers

Contrary to myth, there aren't fourteen types of programmers. There are really only two, as Ben Collins-Sussman reminds us.


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2007/11/the-two-types-of-programmers.html

I tend to believe that any generalization/stereo-type is bad.

Wow, some grumpy people in here! I seriously doubt that Jeff subscribes to the exact percentages, or that he doesn’t understand that there are some in between people out there. In fact, in my experience, most people would be in between.

If the 80% moniker was meant to be disparaging, I didn’t get that impression.

Now, I’d be interested to see real percentages on people who, even during business hours, don’t want to learn anything. I’ve worked with several of those. They drive me nuts. I can understand not wanting to fully understand the 7 layers of TCP/IP, but I do NOT understand why you would not want to take the time to learn how Visual Basic 6 handles strings, and therefore why a particular string concatenation method was slowing our program down. I tried to teach someone this when their procedure took 75 seconds to run, and after I optimized it it took less than 1 second. They could have cared less. It’s important, though, because this same person may use the same method in the future.

If you don’t want to spend 100 hours a week learning only computer stuff, fine. Few people do (much less than 20% I would think). But if you don’t want to spend ANY of your 40 hours a week at your paid job learning it, then you, sir or madame, are not even close to a real programmer.

jeepers man, yall are gettin all “spread the good word holee holee jesus is here” and stuff.

Very nice post John, though I have my own version of the same. Programmers for me are two types, one type who just get the job done in whatever language or tool that they are given by learning just what is needed to complete the task and finish fast, second type who like to get into the clean details and learn in depth and take more time but get a perfected version of it…

If you’ve read this far then that’s because you’re in the 80%, now get back to work!

“My dad worked in the defense industry and I was probably the only 10 year old reading Electronic Defense magazine”

Hehe, nope. My uncle worked for DoD.

Didn’t you post this exact same article a few weeks ago?

Like so many things in live to convey an intent it is often easier conveyed in an over simplified manner, which I think is what Jeff has done here. There are many over simplified 80/20 rules (20% of the people do 80% of the work, etc.). In this case it is probably 10% uber-geeks and 90% less than uber-geeks. In reality it’s a sliding scale.

Also, there are many facets of this, programming, designing, networking, databases, compilers, languages, embedded, etc. No one is in the 10% or 20% in all of them.

One of the things I’ve noticed is that the majority of the people I’ve worked with don’t take the initiative to learn the new technologies on their own time or attend user groups; they may read a few books and are willing to go to a course if the employer will pay but other than that they just float along.

So what makes me a “20%” or an “80%”?

I’m not a computer fanatic. Not that kind of person who asked for the most precious thing in his life says “my computer” and that prefers writing new lines of code instead of wasting his time for a normal life. Not at all. I’m not a genius, in my group (I’m still a university student) I’m exactly in the middle. Honestly, I don’t really like sitting in front of my laptop and gazing at its screen doing nothing important.

But I really do enjoy programming. Since I was 14 and discovered C I have known that programming was what I wanted to do in my life. When I’m in the middle of writing some kind of project, I can’t stop thinking about it - I’m falling asleep and waking up thinking about the solution. I’m really eager to get to know more and more and understand everything I’m dealing with. I always have hundreds of questions to my teachers written down before every lecture. I want to be as good as I can be in this field and I’m working really hard, spending hours studying to reach the aim.
Genius is one thing, hard work is the other.

There is some kind of passion, but not the absolute one.
So tell me, who am I?

polish_computer_science_student

P.S. Jeff I love your articles. This blog is my first “Home” website that remained in this place.

Great article because its got ALOT of good and bad comment. Which means its a winner regardless.

No one is reading THIS comment unless I’m still at the bottom and they read it before writing their own. You’ll get bored after reading the first 15.

Personally, I’m in the 80%. I like what I do but will never be the best. Therefore I love the comment about 80% of the 80% think theyre in the 20%, good one.

Mmm I wonder how many of those MS technology geeks belong to the 80%?

  • I know I should learn Lisp because it probably is better than my “Blub” language of choice, but can’t be bothered. Erlang seems interesting, but it seems a bit immature for usage beyond the tasks it was designed for (Like Tim Bray’s Wide Finder project shows)

  • I like Python, but do most of my programming in Java and PHP.

  • I am comfortable using regular expressions, but most of it is used in languages other than Perl

  • I do most of my work through an SSH shell / Samba share to a Linux server, but the OS I use on my desktop is Windows XP.

What kind of a programmer am I?

Let me look in my crytal ball. You belong to the 20% of the idiots who actually post something on this blog.

I like to think I’m one of the 20% developers, though the longer I spend in the industry the more my enthusiasm is drained and I’m drifting towards becoming one of the 80% developers.

As someone who sadly places himself in that 80% group, I have to say that I have ambitions of joining the 20% - in my work, I’ve fought hard to push past the (brace yourself) Access 2000 barrier and bring in .Net 1.2, with C# and not VB, but I still think my programming is rudimentary and I still haven’t found a good deal of material in books and resources that have really helped me cross that divide.

I get intimidated by the girth of information I have to get my head around and there doesn’t seem to be a fair starting point to tackle the problem from. So I read blogs and I pick up books from O’Reilly because that’s what all Alpha Geeks seem to recommend but at the end of the day, I still feel like I don’t know enough and the frustration sets in.

Note: This is despite a BS in Computer Science. Perhaps my schooling was inadequate but I consider myself to be a human of at least average intelligence who enjoys stepping through through the Insert Sort to prove to myself that it still works.

The programmers who perform the best, in my experience, are the ones who find themselves somewhere between the 20%-programmers and the 80%-programmers.

The 20%-programmers tend to have a too narrow focus, leading them to not see the big picture, and thus create unnecessary solutions 99% of the time.

The 80%-programmers tend to not know the details in the tools which they use… and they tend to not care about how the code looks, as long as it “seems” to work. They can usually get something up and running pretty fast, but it’ll usually be a nightmare to maintain.

So… My preference for someone to work with would be someone inbetween those two lairs. One with enough insight in the technology and in the importance of clean code, but not someone who gets an erection from calculating fibonacci sequences.

nice post!
it made me realize which category i belong to…

I am a proud 80%er. My 2 main goals in development is to solve buisiness problems within the confines set forth by the company and to make a living.

I go home and forget about programming because life is too short. I hear the disdainful comments by the alpha 20%ers and…frankly…I don’t care. I get called in to make things work, sometimes after an alpha decided to reinvent the wheel because he read about something cool and backed the company into a corner they can’t extricate themselves from.

I learn techniques from the alphas and make an intelligent decision as to whether the approach should be followed. Asking the question often forgotten: “Just because I CAN do it it this way, does it mean I should?”

I don’t begrudge alphas for being alphas. But neither do I suffer egos. Frankly, from what I’ve seen, the best make it look easy, because for them, it is. They don’t wave it in your face, because, what’s the point.

There are really only 2 types of people in the world: those who make ridiculous generalizations… and those who don’t. I love your writing Jeff, and what you have here is one of the best written crocks of poop I’ve seen in a long time.

That reminds me: If I was a pie… what kind of pie would I be???