The Eight Levels of Programmers

April 3, 2009

Have you ever gotten that classic job interview question, "where do you see yourself in five years?" When asked, I'm always mentally transported back to a certain Twisted Sister video from 1984.

I want you to tell me – no, better yet, stand up and tell the class

twisted-sister-i-wanna-rock-video-still-frame.jpg

what do you wanna do with your life?

You want to rock, naturally! Or at least be a rockstar programmer. It's not a question that typically gets a serious answer – sort of like that other old groan-inducing interview chestnut, "what's your greatest weakness?" It's that you sometimes rock too hard, right? Innocent bystanders could get hurt.

But I think this is a different and more serious class of question, one that deserves real consideration. Not for the interviewer's benefit, but for your own benefit.

The "where do you see yourself in five years" question is sort of glib, and most people have a pat answer they give to interviewers. But it does raise some deeper concerns: what is the potential career path for a software developer? Sure, we do this stuff because we love it, and we're very fortunate in that regard. But will you be sitting in front of your computer programming when you're 50? When you're 60? What is the best possible career outcome for a programmer who aspires to be.. well, a programmer?

What if I told you, with tongue firmly planted in cheek, that there were Eight Levels of Programmers?

  1. Dead Programmer

    This is the highest level. Your code has survived and transcended your death. You are a part of the permanent historical record of computing. Other programmers study your work and writing. You may have won a Turing Award, or written influential papers, or invented one or more pieces of fundamental technology that have affected the course of programming as we know it. You don't just have a wikipedia entry – there are entire websites dedicated to studying your life and work.

    Very few programmers ever achieve this level in their own lifetimes.

    Examples: Dijkstra, Knuth, Kay

  2. Successful Programmer

    Programmers who are both well known and have created entire businesses – perhaps even whole industries – around their code. These programmers have given themselves the real freedom zero: the freedom to decide for themselves what they want to work on. And to share that freedom with their fellow programmers.

    This is the level to which most programmers should aspire. Getting to this level often depends more on business skills than programming.

    Examples: Gates, Carmack, DHH

  3. Famous Programmer

    This is also a good place to be, but not unless you also have a day job.

    You're famous in programming circles. But being famous doesn't necessarily mean you can turn a profit and support yourself. Famous is good, but successful is better. You probably work for a large, well known technology company, an influential small company, or you're a part of a modest startup team. Either way, other programmers have heard of you, and you're having a positive impact on the field.

  4. Working Programmer

    You have a successful career as a software developer. Your skills are always in demand and you never have to look very long or hard to find a great job. Your peers respect you. Every company you work with is improved and enriched in some way by your presence.

    But where do you go from there?

  5. Average Programmer

    At this level you are a good enough programmer to realize that you're not a great programmer. And you might never be.

    Talent often has little do do with success. You can be very successful if you have business and people skills. If you are an average programmer but manage to make a living at it then you are talented, just not necessarily at coding.

    Don't knock the value of self-awareness. It's more rare than you realize. There's nothing wrong with lacking talent. Be bold. Figure out what you're good at, and pursue it. Aggressively.

  6. Amateur Programmer

    An amateur programmer loves to code, and it shows: they might be a promising student or intern, or perhaps they're contributing to open source projects, or building interesting "just for fun" applications or websites in their spare time. Their code and ideas show promise and enthusiasm.

    Being an amateur is a good thing; from this level one can rapidly rise to become a working programmer.

  7. Unknown Programmer

    The proverbial typical programmer. Joe Coder. Competent (usually) but unremarkable. Probably works for a large, anonymous MegaCorp. It's just a job, not their entire life. Nothing wrong with that, either.

  8. Bad Programmer

    People who somehow fell into the programmer role without an iota of skill or ability. Everything they touch turns into pain and suffering for their fellow programmers – with the possible exception of other Bad Programmers, who lack even the rudimentary skill required to tell that they're working with another Bad Programmer.

    Which is, perhaps, the hallmark of all Bad Programmers. These people have no business writing code of any kind – but they do, anyway.

These levels aren't entirely serious. Not every programmer aspires to the same things in their career. But it's illuminating to consider what a programmer could accomplish in ten years, twenty years, or thirty years – perhaps even a lifetime. Which notable programmers do you admire the most? What did they accomplish to earn your admiration?

In short, what do you wanna do with your life?

Posted by Jeff Atwood
215 Comments

I would not like be programmer for ever. I'm a good programmer, I'll hope have my own business

Valerio on May 7, 2009 2:34 AM

I use computer a lot. I have never been interested in programming. What do yo think guyz?

Romesh on May 14, 2009 10:32 AM

have been a professional programmer for 8 years. [still age >>what do you wanna do with your life?
Become a mathematician in the near future and discover something original, even if not at the level of my heroes like Newton, Gauss, Riemann.

That said I enjoy my work [programming] - even if I were to be lifelong professional programmer, I would still consider it a nice life from the career point of view.

Fakrudeen on June 5, 2009 5:56 AM

are open source programmers amateur programmers? really?

amir on June 27, 2009 12:40 PM

i would think of myself as a 3. i think that almost everyone goes through stage 1. its just that some people might just get stuck at that stage, those can be classified as bad programmers.

karan on July 13, 2009 3:05 AM

Thank for information

suteetoe on July 23, 2009 8:12 AM

I like to think that we all had a level one moment in our lives. Don't you agree? :-)

Richard on July 30, 2009 2:40 AM

I'd rather just be alive, period.

Anonymous on July 31, 2009 9:24 AM

I'd like to think that on a good day I can reach level 4! Doesnt #2 seem to have a lot in common with #4? Can't really tell the 2 apart.

CodeCobbler on August 18, 2009 3:41 AM

Hmmm, 6 going on 7. This isn't good.

Jason Cohen on February 6, 2010 11:17 PM

Definitely missing Stallman and Torvalds on that list. And Tim Sweeney.

emanon on February 6, 2010 11:17 PM

Would Dijkstra actually even consider himself a programmer?

Nelson on February 6, 2010 11:17 PM

Ahhh programming is fun, it's a hobby and it sure beats having to spend large amounts to get someone else to do your changes for you.

Television Spy on February 6, 2010 11:17 PM

Dijkstra is my personal Jesus. Everytime I code something, anything, I imagine him patting on my shoulder whenever I do something sensible and clearing his throat when I make some mistake. It's reassuring.

LOL, should we come up with a campaign like...

What would Djikstra Do? (tm)

Jon Limjap on February 6, 2010 11:17 PM

If you can write Hello World in 3 different programming languages with one line of code in dutch then you are a level 7 programmer. =)

Xero976 on December 6, 2010 1:15 PM

«Back

The comments to this entry are closed.