I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

Apr 3, 2009

The Eight Levels of Programmers

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    View blog reactions
« Should Competent Programmers be "Mathematically Inclined"?
I Happen to Like Heroic Coding »
Comments

@Sarah - Well, so this is the sad truth. Not sure I'll repeat that too much as it was a nice thing to believe :-)... To cope with this, I hope I'll be able to buid a small software company or be part of one with a flat decision process. It must be a an objective of the company to keep coders at coding, otherwise promote them to management would often look like the easiest solution sometimes...

Arnaud on April 3, 2009 2:06 AM

Unfortunately, so many proggies fit in the lower of the first seven levels of programmer hell. But, it keeps the rest employed. ;-)

Gregory A. Beamer on April 3, 2009 2:12 AM

Carmack arguably belongs under the dead programmer title as well.

Nicholas Wright on April 3, 2009 2:13 AM

This is a cute list but the inclusion of Gates is egregiously wrong. I cannot fathom what compelled you to even put him on the list, much less at such a high station.

Jenn on April 3, 2009 2:21 AM

We can always take comfort in that everyone's going to be a dead programmer at some point.

G-Man on April 3, 2009 2:34 AM

Somewhere between 4 and 5... Hmm, not bad for someone of 17 years, or is it? :P

horsedrowner on April 3, 2009 2:35 AM

So, the 1 million question is... where are you Jeff? =D I would say... 7?

Nicolás Miyasato (miya) on April 3, 2009 2:38 AM

I wanna be a Dinosaur! :)

Jax on April 3, 2009 2:39 AM

That was probably the most meaningless post I've seen on this blog. You don't HAVE to update just to update you know.

err on April 3, 2009 3:04 AM

I wish I had learned Knuth was not dead BEFORE I sent flowers...

Steve on April 3, 2009 3:09 AM

After 12 years I feel like I've finally reached 5 (within the last 2 years). What do they say? It takes 10 years to become truly proficient at anything... Oh how I'd like to get to 7 though! I can live without 6, and long ago accepted I don't have the conviction for an 8 :)

Fun article :D

Eagan on April 3, 2009 3:12 AM

what do you wanna do with your life?

after 20 years, just like Twisted Sister's song I wanna rock 1984 that song ain't intended to the same audience, it would be kids stuff, renamed and used on a silly cartoon movie 2004 Spongebob Squarepants Movie. Goofy Goober Rock. The guitar riff is not played most likely on a real guitar with a fuzzy distortion and a loud Marshal Amp but on a silly piece of crappy lifeless game console that cannot wail.

So the same with the code of programmers. after 20 years the code and programming technique would just be kid's stuff.

carey on April 3, 2009 3:24 AM

Are you trying to say that our goal is to do so well we make ourselves obsolete?

What about Woz, who still works at stuff? (Sorry for any slight gaps in comparison as I consider him more an engineer than programmer).

Allan on April 3, 2009 3:32 AM

Dude, I almost just shat a brick because you said Knuth was a Dead Programmer! REDACT IT!

Xyz on April 3, 2009 3:36 AM

And the same goes for Kay!!

Xyz on April 3, 2009 3:37 AM

... and Dijkstra is just frozen :(

Xyz on April 3, 2009 3:38 AM

If you think you're a number 4 and you don't understand why an Amateur Programmer is greater than the Unknown Programmer based on these descriptions you might actually be a number 2.

An amateur programmer loves to code, and it shows
beats
It's just a job, not their entire life.

Coward on April 3, 2009 3:42 AM

ScottGu is an example of no. 6, the famous programmer. So are you by the way, Jeff.

Mike on April 3, 2009 3:45 AM

You've got to be kidding me. I mean, again, this isn't even your idea. Oddly enough the guy you link to begins counting from 0, which is a common CS convention and you start at 1. That's not a big deal, it's just sort ironic.

As for all you guys babbling about how people are missing the point of the post ... what is the point?

Charles on April 3, 2009 3:47 AM

@Charles I think the point is that Rockhard Awesome is keeping the thread hating, Coding Horror up all night and he isn't paying down his sleep debt as fast as he likes to pay down is technical debt so this represents the interest charges.

Waiting for him to post, Get Off My Lawn!!!

CrashCodes on April 3, 2009 3:56 AM

Really Jeff, I love your writing, but you should really correct level 8. It's not fair to the programmers you mention.
While it may be clear to you, like code, we write to be read, and naming level 8 'Dead Programmer' then listing people who are alive is just bad naming :).

RelaX on April 3, 2009 4:06 AM

Bill G wrote GWbasic which was on the origional Apple and Pet's amongst others.

and if you call you self a programmer and dont know that your not even a level 1 programmer - go back to working at macdonalds

Neuro on April 3, 2009 5:08 AM

Bill Gates did not write GW Basic. But who cares? Jeff couldn't. He's too busy curing cancer!

Metaphor Monster on April 3, 2009 5:49 AM

Your list is very subjective Jeff - both the definitions (I don't think anyone agrees with you that Dead was a good choice of word), and the rankings. I would have kept it more abstract than that.

Also putting an order in programming ability is sort of pointless. I doubt Knuth could out-program Carmack in every situation or vice versa. What's more to measure is the effect of their output. You don't have to be an algorithmic genius to help as many people as possible, and neither is all the business knowledge in the world going to help you assemble a team to write Windows.

Gaurav Sharma on April 3, 2009 5:52 AM

I wanna rock! ahem, I mean I wanna be a dead programmer. Never thought I'd say that. Maybe @regis' suggestion of 9. Legendary Programmer is a better name for #8. I hate to knit-pick, but you know, we programmers are a picky lot.

~Lee

Lee Brandt on April 3, 2009 6:04 AM

Well, still here at age 54, creating software for real-time/embedded systems, working as an independent contractor. I've always enjoyed writing code that interacts with the real world, making the lights blink and the motors turn. And I like learning new things (never an end to that!). Pretty sure I'm a 4, although I see myself as competent rather than average.

Allen Moore on April 3, 2009 6:27 AM

@CrashCodes, probably so. He does like his technical debt. I think maybe it's time to declare bankruptcy

Charles on April 3, 2009 7:01 AM

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

I want to be a damn good programmer, respected in my field and earn a little money.

I think -- within my niche -- I am there.

Emily -- not a spammer on April 3, 2009 7:22 AM

Dead programmer:
A programmer who you freak out due to seeing their names on the dead programmer list even if it is not the case.

Sry if this has been said already.

kpdecker on April 3, 2009 8:07 AM

I'm a 3 and (i hope) a 5. I don't have my sights on 7 or 8, if i get there i get there, all i know is i keep coming back to 3.

Job on April 3, 2009 8:35 AM

Did Knuth die? :(

Carra on April 3, 2009 8:48 AM

The hard part is getting from 'working' to 'famous' and beyond. If you are a working programmer when do you find the time to write that famous paper?

Gregor Brandt on April 3, 2009 8:48 AM

Should I point out the fact that Knuth isn't dead yet?

Roberto Teixeira on April 3, 2009 8:49 AM

Knuth is dead?

M on April 3, 2009 8:50 AM

Mmm, neither is Alan Kay.

Bit weird to put these two people on the dead programmer level.

Carra on April 3, 2009 8:52 AM

9. Legendary Programmer

Legend tells of a legendary programmer whose coding skills were the stuff of legend. He develops only in his own languages, on machines he built running an OS he created. He writes code not for himself, or for humanity, but for God.

Regis on April 3, 2009 9:00 AM

Not only are Knuth and Kay not dead, but Gates, unlike Carmack and DHH, didn't build a business on his code. He was a programmer, and he built a business around code, but it wasn't, at least primarily, HIS code that he built his business around.

Jeff LaMarche on April 3, 2009 9:00 AM

If you know you're a bad programmer... does that still make you a bad programmer?

John on April 3, 2009 9:03 AM

I meant Dead Programmer figuratively, not literally.

As in people will remember you after you're..

Sheesh.

Jeff Atwood on April 3, 2009 9:03 AM

Regarding Dijkstra, Knuth Kay:

quoteVery few programmers ever achieve this level in their own lifetimes./quote

Can Berk Güder on April 3, 2009 9:05 AM

Oh, and s/Gates/Torvalds/.

Can Berk Güder on April 3, 2009 9:06 AM

Thanks, I needed a label. Now I know my place in society. LOL

_ck_ on April 3, 2009 9:09 AM

I hope this isn't a strict numerical progression, if 'average programmer' means GOTO SOME_OTHER_JOB as you are implying.

dtr on April 3, 2009 9:11 AM

I'm probably 4 going 5 soon. But going to drop myself back to 3 this fall when i go back to school.

Ólafur Waage on April 3, 2009 9:12 AM

I'd personally like to be successful, competent, and working - so far, so good. Even though I've written a book, I doubt I'll ever be famous. Besides, if I ever become famous, I'll have to start behaving badly and deal with the paparazzi, like all the other famous programmers. How do you and Joel live with that?

Wandercoder on April 3, 2009 9:12 AM

How exactly does an amateur programmer get a higher ranking than an unknown programmer. Wouldn't an amateur be trying to get a job in the programming field?

// Maybe not understanding this is why I'm only a #4

Clair on April 3, 2009 9:13 AM

Gates was a programmer? Whom are you kidding? What code did he actually wrote?

skfd on April 3, 2009 9:16 AM

I would have put Torvalds and Stallman on the list at levels 7 and/or 8

colin on April 3, 2009 9:18 AM

I'm at 5 bruteforcing my way to 6 ;)

Actually I feel like I've just touched a project that is useful to others, hasn't been done before and makes the _actual_ work I want to do a lot easier. If that isn't going to make me famous, I'm at least going to maintain a smoking cool library.

Leonard Ritter on April 3, 2009 9:18 AM

@Regis: 9. Legendary Programmer - see http://xkcd.com/224/ (tongue firmly planted in check).

gvb on April 3, 2009 9:19 AM

Are you bored? Another let's put programmers into different categories post? What about the Full Time Blogger Programmer? Which one are you?

Metaphor Monster on April 3, 2009 9:20 AM

Maybe not understanding this is why I'm only a #4

You say that as if it's a bad thing. Someone's got to be average otherwise there'd be nothing to measure by.

4 for life.

Tool on April 3, 2009 9:23 AM

I like to think that I'm a number 3, and fear being a number 1.

Benjamin M. Strozykowski on April 3, 2009 9:23 AM

Jeff, where would you put David Caminer?

Eddie on April 3, 2009 9:26 AM

I would bet most people at 5 are also at number 2. I'm a successful programmer, 17 years working at a high rate of pay. I keep my skills up to date and know I could have another job within a few days if I decided to leave where I am. What I do actually affects the bottom line of the company I'm with. That puts me in category 5 doesn't it? But at the same time, you don't know me, I'm not famous and I work for a Megacorp. So except for your Competent (usually) but unremarkable statement, that makes me number 2 as well.

Your levels 1-5 are all actually part of number 2. Number 6 defines what is not in group number 2 doesn't it? Oww my head hurts.

Kuerwen on April 3, 2009 9:27 AM

I hope I'll still be programming when I'm 50. If I'm not, then I have less than 47 days to live. Until one of those days arrives, I think I must be some sort of #5...

Mike Woodhouse on April 3, 2009 9:28 AM

@Jeff

“I meant Dead Programmer figuratively, not literally.”

I know you don’t like people taking your posts literally, but I do think in this case you should change the post to make it clear that Knuth is not dead. I suspect a lot of people do not read the comments, and will assume, as I did, that they’d missed some announcement.

Steve W on April 3, 2009 9:28 AM

How about the 'Woz? Or is he more of an electrical engineer then a programmer?

James on April 3, 2009 9:28 AM

If 2/3 of your dead programmers are not actually dead, you should probably pick a better name. Otherwise you're pulling a Humpty Dumpty.

Michael on April 3, 2009 9:32 AM

+1 for missing the point.

I don't think Jeff was trying to make a list of famous programmers...sheesh.

Kuerwen on April 3, 2009 9:32 AM

@John Bad programmers mostly likely dont read this blog and they dont even know it.

Terry on April 3, 2009 9:34 AM

8. Dead Programmer
... Your code has survived and transcended your death.
...
Examples: Dijkstra, Knuth, Kay

Yes, you did kill Knuth and Kay. Stop whining and correct that. =)

Bruno Gomes on April 3, 2009 9:35 AM

Not only is Alan Kay not dead, but he is still actively working and leading a team of researchers on a new project.

And Donald Knuth is active writing stuff programmers should probably be reading.

Less than a minute on Google gets you this.


Bonnie

Bonnie MacBird on April 3, 2009 9:39 AM

Ooh. How many XP do we need to level up?

Practicality on April 3, 2009 9:40 AM

WOW #t=2m34!
Thank you, i didn't know you could do that!

drozzy on April 3, 2009 9:46 AM

But will you be sitting in front of your computer programming when you're 50? When you're 60?

I'm 57. I work as a developer in a startup on a windows/mac desktop app, and I'm sitting in front of my computer programming. Ok, I should be programming, but I'm commenting here instead.

To be fair, this is a second career for me, I started professional programming in 1995.

I'm pretty happy to be sitting in front of my computer programming. It doesn't bother me too much that I'm much older than the other devs here, but the fact that I'm older than some of their parents does nag at me a bit.

Jim Howard on April 3, 2009 9:53 AM

Why not just rename Dead Programmer to Immortal Programmer. It's really what you are saying anyway.

puppet on April 3, 2009 9:54 AM

I'm afraid 6 is the highest level I can achieve in my lifetime. I'm now between 5 and 6 though.

nobodynobodyghost on April 3, 2009 9:56 AM

Oh my gosh, did you guys hear that Knuth and Kay aren't dead?

The point was that if they were dead, died tomorrow, or quit everything and joined the circus (Do those exists anymore?) they have already guaranteed a spot in history beyond most people in computer science.

Tool on April 3, 2009 9:57 AM

Also missing Ritchie.

Doug B on April 3, 2009 9:58 AM

Where's Admiral Hopper?

jmags on April 3, 2009 9:59 AM

Another coder tries to impose computer science style grouping on real life. Rookie mistake...

Dirtnap on April 3, 2009 10:08 AM

I feel bad for the programmers who think they're 4s or 5s but are actually 1s. I wonder how high one's self-perceived level could get with one's actual level remaining at 1. Are there any people who think they're 7s or 8s but are actually 1s?

Johnny on April 3, 2009 10:10 AM

Joel is going to cut your pay again for not listing him as a Successful Programmer. It seems that Joel and FogCreek are an exact match to your definition of Successful.

Shawn Swaner on April 3, 2009 10:13 AM

the fact that I'm older than some of their parents does nag at me a bit.

Ouch that hit home g. Same thing here, second career I started when I was 45. And now I am mid fifties and still having a great time.

sponge bob on April 3, 2009 10:14 AM

Everyone should strive for two and see if providence leads to anything above that.

john on April 3, 2009 10:14 AM

You think DHH is on the level of Gates and Carmack? There are a lot of examples you could have put on that category, but he isn't one of them. Making one web application framework in a sea of hundreds doesn't really elevate you past your famous programmer level. We'll have long forgotten about RoR, and we'll still be using Windows and playing FPSs.

GT on April 3, 2009 10:16 AM

Knuth isn't dead.

Stewart on April 3, 2009 10:21 AM

But it’s not just that some programmers work faster; some programmers can do things that few other programmers can do. These are your visionaries and trailblazers. I call this sometimes-10X/sometimes-infinite advantage: The “Tenfinity Factor.”

This wide productivity gap results in five major classes of computer programmers:

1. Visionary/Artist Programmer
2. Trailblazer Programmer
3. Workhorse Programmer
4. Drone Programmer
5. Idiot Programmer

Timm on April 3, 2009 10:25 AM

holy crap im a #2 (no phun intended)...

Kittens are evil on April 3, 2009 10:28 AM

I know programmers, and Bill Gates is no programmer.

Chris Noe on April 3, 2009 10:28 AM

Jeff,

Please go back to the old font. Please god...

Jeremy on April 3, 2009 10:28 AM

Perhaps you could replace Dead with Timeless?

Mark Ransom on April 3, 2009 10:29 AM

I first got paid to program when I was 16 and I'm 42 now. After 25 years and numerous opportunities to become a manager or change careers entirely, I'm still programming and still loving it. Aside from needing a bigger monitor and a better chair, not seeing anything stopping me from coding into my 50s. Aside from the eyes, my memory is getting a little weaker, but with the internet and intellisense, I can more than compensate.

They key to keeping things interesting for me has been changing industries and platforms from time to time.

JohnOpincar on April 3, 2009 10:41 AM

I want to be a billionair of course. I'm probably at the wrong time though, I should have been there in the 80s.

Hoffmann on April 3, 2009 10:43 AM

what do you wanna do with your life

Make sure my kids grow up to remember me as a great dad. Programming has no bearing on my life goals, despite it being a passion of mine (along with music).

David Dawkins on April 3, 2009 10:43 AM

You forgot level 5.5: bburnt-out programmer/b:

- still coding at 51; reading blogs instead of producing product; worse still, commenting on blog posts...

Tim Dowty on April 3, 2009 10:45 AM

what's the purpose of this blog? is this just a daily brain-fart thing or what?

Lxw on April 3, 2009 10:46 AM

Here in France I often have the feeling that the career path for a programmer is to do not stay a programmer too long. Often programming is seen as an entry level position and there is a pressure to go towards project management or architect positions where you no longer code... Those of us who really enjoy programming and don't want to do something else often show the US as a counter-example : but is it true ?

Arnaud on April 3, 2009 11:11 AM

DHH? From the fraction of programmers that are aware RoR exists, most of them don't even know who he is...

Carlos on April 3, 2009 11:13 AM

My classification of myself was corporate programmer(day job) and cowboy programmer(endless nights).

Biswanath on April 3, 2009 11:13 AM

Klingon programmers aspire to die in a glorious battle with system bugs regardless of skill level.

Qapla'!

Charles on April 3, 2009 11:14 AM


You forgot programmer looking to be something else. Sometimes it's a means to an end, time spent in the trenches and all that.

Lets call it stepping stone programmer.

-dan on April 3, 2009 11:27 AM

So I wonder where the Code Monkey would fall?

chrispatterson on April 3, 2009 11:29 AM

# Successful Programmer
# Famous Programmer
# Working Programmer

These are not 'true' levels because they are not distinct.

Nick on April 3, 2009 11:36 AM

Bill Gates built a nice business on code he was involved with writing. I used and bought stuff from Microsoft back then. Seriously. I used their BASIC a lot, and bought a Fortran compiler (that I wound up rarely using).

Then came the big MS-DOS opportunity, when he bought an OS cheap, made a few quick changes, and sold it to IBM on extremely favorable terms. Since then, his success has depended far more on business actions than technical ability, but the technical ability is what got him in position to do the business stuff.

However, my big complaint is the assumption that programming is intended to get rich. I use it as a way to do a job I really like while getting paid a nice, but not extravagant, salary. I don't want to get into management too far, and I don't care enough about getting rich to do the things it would take. There are various legitimate goals in the world of software, and using it as a satisfying way to make a comfortable living is one of them.

In other words, I'm probably a 5, and happy there. The other stuff I want to do with my life doesn't really involve software (although I wouldn't stop programming just because I'd retired). Where do I go from there? Somewhere off your numeric list.

David on April 3, 2009 11:40 AM

@Arnaud - not really. Some larger companies (notably Microsoft) have a technical track that allows you to do more and more design without necessarily becoming a manager. Outside of that, the track is generally

developer - senior developer - development manager - ? - CTO
(I'm not super interested in this track, so I'm not sure of the exact progression.)

Alternate paths include
developer - senior developer*
and
developer - senior developer - CTO of a startup*
and
developer - senior developer - chief architect - hired by Google ;)

Sarah Mei on April 3, 2009 11:41 AM

Well, as a 58-year old programmer, I can say that I spent an awful lot of my working life striving to get to the point where at least 80% of my working time could be spent actually coding. And I love it. In five years time (when I will be 63) I'd like to still be coding.

David on April 3, 2009 11:41 AM

May I respectfully request you replace dead programmers with immortal programmers?

Terry Smith on April 3, 2009 11:59 AM

Wow, I am just impressed by the number of +50 year olds that still code and commented on this blog. I just turned 50 and still coding daily – and love it.

Kids, forget about the management track, you will just end up wiping other peoples bums ;-) Stick to coding and enjoy daily enlightenment - who needs levels!

Mitch on April 3, 2009 12:18 PM

More comments»

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.