There are only three types of programmers in the world…

..and they are:

  1. Programmers who want to write an operating system
  2. Programmers who want to write a compiler
  3. Programmers who want to write a database

It’s not that every programmer ever actually works on one of these, just that every programmer seems to dream of doing one of these things. It’s the primary reason why things like Linux exist. Yes, open source, blah, blah, blah, OS choices, blah, blah, blah, evil Microsoft, blah, blah, blah. But I would bet my bottom dollar that 9 out of 10 of the people donating their valuable time to the Linux project do so not because they want an alternative to Windows but because they always dreamed of being OS hackers. It’s also why there are so many damn programming languages out there, all the people who sit around dreaming of being, I don’t know, James Gosling or something.

(I think with the advent of the Internet, it’s likely that there’s now a fourth kind of programmer who wants to write websites, but I’m not totally sure about that yet.)

The interesting thing about these categories is that the Venn diagram tends, in my experience, to be pretty distinct-most “data” guys aren’t also “language” guys, and most “language” guys aren’t also “OS” guys, and so on. My theory is that it’s like the parable of the blind men and the elephant: although we all grapple with basically the same set of problems, each kind of programmer grapples with a different aspect of it.

The blind men and the elephant

I say all this because although I started out working in databases, it’s clear to me that I’ve always been a “language” guy. In college, I did so-so in the OS course and never touched a database course (I’m not even sure they were offered), but my compiler course netted me a special letter of commendation from the professor (the only one I ever got). Anyway, now I’m back in the “data” world as an even more confirmed “language” guy and the most interesting thing is how many of the problems are the same, but the way they’re conceptualized, handled, or even talked about, are different from what I’ve been used to working on programming languages. It’s kind of. refreshing to see things in a different light. More on that soon.

10 thoughts on “There are only three types of programmers in the world…

  1. iHunger

    Nearly every programmer I’ve ever known has wanted to write games. They may dabble in the other areas, but they pretty much dream of writing the next big video game.

    Reply
  2. Pingback: Anonymous

  3. Pingback: Anonymous

  4. Shawn

    It seems like there are more than 3 kinds of programmers, what about programmers who want to write graphics libraries, network protocols, games, or just plain old applications? Would those categories somehow fit into those three, or, is it that "at heart" there are only 3 kinds of programmers?

    Reply
  5. Pingback: Anonymous

  6. Samuel Jack

    Very insightful!

    I guess I’m a compiler guy at heart, which must be why I look for every opportunity to shoehorn a little-language into my projects!

    I suppose that was also why I was disappointed to see the M project being aligned with SQL Server when I can sense such possibilities on the language front.

    Reply
  7. paulvick

    iHunger: You may be right, although I think when it comes to games, most programmers don’t want to actually write the code for the game, they want to be the Dungeon Master (nee level designer). That’s more of a meta-level task than programming…

    Shawn: Yeah, there are lots of different things that people do out in the world, but you hit the nail on the head with the "at heart" comment.

    SDX2000: I don’t disagree that some people cross the divide, but I still find the people have an affinity to one side or the other…

    Reply
  8. Anthony D. Green

    Regarding the games … aside from the character/story/level/media design part of it

    Do you want to work on the data storage (character stats, MMO accounts, item database, etc)?

    Do you want to write a scripting engine for the game?

    Do you want to write the core game engine i.e. operating system (including Gfx, Snd, menuing/commanding etc)?

    Even in the context of the game you’re still an OS/compiler/database developer making the motions in your own private universe 🙂

    Reply
  9. Max Strini

    "(I think with the advent of the Internet, it’s likely that there’s now a fourth kind of programmer who wants to write websites, but I’m not totally sure about that yet.)"

    I think the fourth category you’re looking for is "programmers who want to write distributed application infrastructure (e.g. web browsers, web servers, things like WCF, …)" Which also shares many of the same problems with the other system software categories.

    Reply

Leave a Reply