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 --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?
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
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.
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.
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?
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.
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.
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.
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?
Hmmm, 6 going on 7. This isn't good.
Jason Cohen on April 3, 2009 7:46 AMDid Knuth die? :(
Carra on April 3, 2009 7:48 AMThe 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 7:48 AMShould I point out the fact that Knuth isn't dead yet?
Roberto Teixeira on April 3, 2009 7:49 AMKnuth is dead?
M on April 3, 2009 7:50 AMMmm, neither is Alan Kay.
Bit weird to put these two people on the "dead programmer" level.
Carra on April 3, 2009 7:52 AM9. 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 8:00 AMNot 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 8:00 AMIf you know you're a bad programmer... does that still make you a bad programmer?
John on April 3, 2009 8:03 AMI meant "Dead Programmer" figuratively, not literally.
As in "people will remember you after you're.."
Sheesh.
Jeff Atwood on April 3, 2009 8:03 AMRegarding Dijkstra, Knuth & Kay:
<quote>Very few programmers ever achieve this level in their own lifetimes.</quote>
Can Berk Güder on April 3, 2009 8:05 AMOh, and s/Gates/Torvalds/.
Can Berk Güder on April 3, 2009 8:06 AMThanks, I needed a label. Now I know my place in society. LOL
_ck_ on April 3, 2009 8:09 AMI 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 8:11 AMI'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 8:12 AMI'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 8:12 AMHow 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 8:13 AMGates was a programmer? Whom are you kidding? What code did he actually wrote?
skfd on April 3, 2009 8:16 AMI would have put Torvalds and Stallman on the list at levels 7 and/or 8
colin on April 3, 2009 8:18 AMI'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.
@Regis: "9. Legendary Programmer" - see http://xkcd.com/224/ (tongue firmly planted in check).
gvb on April 3, 2009 8:19 AMAre 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 8: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 8:23 AMI like to think that I'm a number 3, and fear being a number 1.
Benjamin M. Strozykowski on April 3, 2009 8:23 AMJeff, where would you put David Caminer?
Eddie on April 3, 2009 8:26 AMI 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 8:27 AMI 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 8: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.
How about the 'Woz? Or is he more of an electrical engineer then a programmer?
James on April 3, 2009 8:28 AMDefinitely missing Stallman and Torvalds on that list. And Tim Sweeney.
emanon on April 3, 2009 8:30 AMIf 2/3 of your "dead" programmers are not actually dead, you should probably pick a better name. Otherwise you're pulling a Humpty Dumpty.
+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 8:32 AM@John Bad programmers mostly likely dont read this blog and they dont even know it.
Terry on April 3, 2009 8:34 AM8. 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 8:35 AMNot 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
Ooh. How many XP do we need to level up?
Practicality on April 3, 2009 8:40 AMWOW #t=2m34!
Thank you, i didn't know you could do that!
"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 8:53 AMWhy not just rename "Dead Programmer" to "Immortal Programmer". It's really what you are saying anyway.
puppet on April 3, 2009 8:54 AMI'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 8:56 AMOh 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 8:57 AMAlso missing Ritchie.
Doug B on April 3, 2009 8:58 AMWhere's Admiral Hopper?
jmags on April 3, 2009 8:59 AMWould Dijkstra actually even consider himself a "programmer?"
Another coder tries to impose computer science style grouping on real life. Rookie mistake...
Dirtnap on April 3, 2009 9:08 AMI 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 9:10 AMJoel 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 9: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 9:14 AMEveryone should strive for two and see if providence leads to anything above that.
john on April 3, 2009 9:14 AMYou 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 9:16 AMBut 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
holy crap im a #2 (no phun intended)...
Kittens are evil on April 3, 2009 9:28 AMI know programmers, and Bill Gates is no programmer.
Chris Noe on April 3, 2009 9:28 AMPerhaps you could replace Dead with Timeless?
Mark Ransom on April 3, 2009 9:29 AMI 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 9:41 AMI 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 9: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 9:43 AMYou forgot level 5.5: <b>burnt-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 9:45 AMwhat's the purpose of this blog? is this just a daily brain-fart thing or what?
Lxw on April 3, 2009 9:46 AMHere 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 10:11 AMDHH? 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 10:13 AMMy classification of myself was corporate programmer(day job) and cowboy programmer(endless nights).
Biswanath on April 3, 2009 10:13 AMKlingon programmers aspire to die in a glorious battle with system bugs regardless of skill level.
Qapla'!
Charles on April 3, 2009 10: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 10:27 AMSo I wonder where the Code Monkey would fall?
chrispatterson on April 3, 2009 10:29 AM# Successful Programmer
# Famous Programmer
# Working Programmer
These are not 'true' levels because they are not distinct.
Nick on April 3, 2009 10:36 AMBill 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 10: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 ;)
May I respectfully request you replace dead programmers with immortal programmers?
Terry Smith on April 3, 2009 10:59 AMThere are only 2 levels of programmers:
The ones that open their code, and the ones that close it. In other words, the ones that give a shit and the ones that don't. Success has nothing to do with money or fame.
You can go to the grave and take all your shit whit you, or you can pass it on. Who knows, maybe in 10 years someone comes up with a brilliant idea that converts shit into food, and thanks to your shit, hunger becomes history.
2 levels only. Successful, famous, working and average programmers mean shit to the people that have cancer or are starving to death.
Chala on April 3, 2009 11:32 AMBut will you be sitting in front of your computer programming when you're 50? October, so yes.
When you're 60? If I don't manage to get what I've heard called an FY fund together in the next 10 years, probably.
When you're 70? I hope not.
Francis Fish on April 3, 2009 11:52 AMOh god, Chala.
Success has to do with how the individual defines success. If you require money and fame for success, then success has to do with money and fame. If you do not, then it does not. But successfulness is a contextual measure. Is DHH even rich? I don't know. Obviously, it's impossible to use well-known example people who are not famous, so complaints that the examples of successful people are famous is pretty much a non-starter.
Anyway, whether or not Jeff's scale is valid, open and closed source has little-to-nothing to do with it. And random invocations of cancer and starvation make you a level 1 asshole on a scale of 8 types of asshole.
Anonymous on April 3, 2009 11:53 AMWhat about the 'Infamous Developer' - you know the ones that think they are famous and helpful, but really just start projects then never finish.
Kmett on April 3, 2009 11:59 AMI'm somewhere at the bottom of the list :(
Wayne on April 3, 2009 12:02 PMJeff has a knack for depressing me beyond measure. i have just now found out that after 8+ years of coding, that i'm incompetent and unworthy of the level one that so fits my current lifestyle or cyberstyle.
pitiful really. what if ones carrier path doesn't lead down the path of coding but the will, love and urge to code is there? i code a lot in my free time and i'm conversant with all current coding standards and technologies. but those standards above, they don't place me anywhere!
they also inspire me.
i take solace in that closing "These levels aren't entirely serious. Not every programmer aspires to the same things in their career."
Nice one Jeff congs on the leveling up to seven :-)
I'd replace "Dead" with "Epic"... or else, "Holy Coder of St. Cuthbert"
@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 1:06 PMUnfortunately, 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 1:12 PMCarmack arguably belongs under the dead programmer title as well.
Nicholas Wright on April 3, 2009 1:13 PMThis 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 1:21 PMWe can always take comfort in that everyone's going to be a dead programmer at some point.
G-Man on April 3, 2009 1:34 PMSomewhere between 4 and 5... Hmm, not bad for someone of 17 years, or is it? :P
horsedrowner on April 3, 2009 1:35 PMSo, the 1 million question is... where are you Jeff? =D I would say... 7?
Nicolás Miyasato (miya) on April 3, 2009 1:38 PMI wanna be a Dinosaur! :)
Jax on April 3, 2009 1:39 PMThat was probably the most meaningless post I've seen on this blog. You don't HAVE to update just to update you know.
I wish I had learned Knuth was not dead BEFORE I sent flowers...
Steve on April 3, 2009 2:09 PMAfter 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 2:12 PMwhat 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 2:24 PMAre 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 2:32 PMDude, I almost just shat a brick because you said Knuth was a Dead Programmer! REDACT IT!
Xyz on April 3, 2009 2:36 PMAnd the same goes for Kay!!
Xyz on April 3, 2009 2:37 PM... and Dijkstra is just frozen >:(
Xyz on April 3, 2009 2:38 PMIf 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."
ScottGu is an example of no. 6, the famous programmer. So are you by the way, Jeff.
Mike on April 3, 2009 2:45 PMYou'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 2:47 PM@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 2:56 PMReally 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 :).
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 4:08 PMBill Gates did not write GW Basic. But who cares? Jeff couldn't. He's too busy curing cancer!
Metaphor Monster on April 3, 2009 4:49 PMYour 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 4:52 PMI 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 5:04 PMWell, 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 5:27 PM@CrashCodes, probably so. He does like his "technical debt." I think maybe it's time to declare bankruptcy
Charles on April 3, 2009 6:01 PMRe: 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 6:22 PMDead 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 7:07 PMI'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 7:35 PMKnuth isn't dead.
Stewart on April 3, 2009 9:21 PMJeff,
Please go back to the old font. Please god...
Jeremy on April 3, 2009 9:28 PMWell, 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.
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!
Just adding myself to the chorus of people pointing out that (a) Knuth and Kay are still very much alive and (b) using the phrase "dead programmer" figuratively is *not* a good use of the English language.
Shishberg on April 4, 2009 12:48 AM"I meant "Dead Programmer" figuratively, not literally.
"As in "people will remember you after you're.."
"Sheesh."
Wow.
That confirms it. Coding Horror is dead.
Y'know, like, figuratively.
Shishberg on April 4, 2009 1:31 AMI agree with the Earlier comments where is [urlhttp://en.wikipedia.org/wiki/Grace_Hopper]Admirial Grace Murray Hopper[/url]?
Kranor on April 4, 2009 2:26 AMB@@@er forgot the no html bit!!!!
Kranor on April 4, 2009 2:28 AMi worked for a while at a large software corp which had quite a good differentiation between the mgt. track and the programmer track.
for programmers it was something like:
- junior dev
- dev
- senior dev
- team lead
- junior architect
- senior architect
- technical specialist
not sure the names are right but these mapped directly to the management levels all the way up to svp.
On the topic of dead programmers, how about Phil Katz? He's dead.
http://en.wikipedia.org/wiki/Phil_Katz
> Anyway, whether or not Jeff's scale is valid, open and closed source has little-to-nothing to do with it.
Open-source has nothing to do with it? Nothing to do with success? With cancer? You bunch of Visual Basic morons. Remember, while rock stars talk, programmers code. Keep reading blogs you uncivilized microsoft cockroaches.
Read, read, read!
http://www.informatics-review.com/open.html
B@@@er forgot the no html bit!!!!
Kranor on April 4, 2009 4:05 AMA couple of years ago I run a survey on a developer group meeting asking people what they were doing then and what they wanted to do in a 5 years from that moment.
<a href="http://blog.brodzinski.com/2007/04/career-paths-for-not-only-developers.html">Results of the survey</a> were at least a bit surprising. Anyway one thing which appeared was that keeping developer role in few years wasn't very popular choice. Only one fourth of developers considered that as their career goal.
Most of the time being a developer isn't seen as a very prestigious role (which is pretty wrong I believe). Usually people prefer to end up as architects or some kind of expert consultant.
Pawel Brodzinski on April 4, 2009 4:15 AMElves and Gnomes Programmers?
Do they later become Famous or Dead/Immortal or Legendary?
Success is for kids, real men change the game silently.
Jeff -
In which category should we put Tony (C.A.R.) Hoare? He's probably saved more CPU cycles than anyone on the planet.
- Lepto
Lepto Spirosis on April 4, 2009 6:02 AMI work for a big technology consultancy and I see a lot of "bad" programming. But this bad programming isn't always because it's written by bad programmers.
Most bad programming I see is down to the conflict between "Getting something done now" and "doing something properly" . And the blame of this lays exclusively at the feet of project managers who a lot of they time have zero software development experience. They can split tasks up nicely on a gantt chart, but they don't understand the complexities of programming.
RandomConsultant on April 4, 2009 6:13 AM> As for all you guys babbling about how people are missing the point of the post ... what is the point?
"Where do you see yourself in five years?"
My suggestion is to look at programmers you respect, or for that matter *anyone* you respect in any field, and think about what they accomplished in their career -- and how.
It's about picking a direction rather than floating through life like that feather in Forrest Gump, or that plastic bag in American Beauty. I know because I used to be that feather, that plastic bag, until 2004.
Jeff Atwood on April 4, 2009 6:38 AMI'm probably at a 4.79. However I look forward to 9 as I'm positive c# is alive and well in Heaven.
Chris on April 4, 2009 6:40 AMUnknown Programmer and Bad programmer. Did somebody say Microsoft Access.
pete on April 4, 2009 8:04 AMUnder the interviewee hood: My greatest strength is that I can spin my greatest weakness as my greatest strength. Mwahhaha!
Cringe-worthy during interviews but certainly introspection-worthy
Very interesting were the subtle distinctions between Unknown Programmer and Average Programmer and Famous Programmer and Successful Programmer.
Nice post Jeff!
Aarti on April 4, 2009 10:24 AMSorry man, love your columns in general, but... You are equating levels of programming competence with fame and peer worship. Totally disagree with the idea that mastery equals Big Business Success or Idolized Godlike Aspect.
I propose instead:
I program because I need to get things done, and I get them done. I know what needs to be built and what doesn't. I build the smallest possible system with the maximum impact. I advise and mentor others to help them achieve their best. I live modestly and within my means. I enjoy my life and the pleasures my work brings. I don't need a Wikipedia entry or acolytes, or to be featured in xkcd comics.
PS, I recognize that your article is tongue in cheek, but nonetheless it is thought provoking and therefore worthy of comment :)
NIck on April 4, 2009 11:27 AMThe best thing you can do with your programming talent is share it with others. Become a teacher or a mentor. Knowledge is wasted if it's not shared.
Joel on April 4, 2009 1:22 PMI'm surprised nobody has mentioned Jon Skeet yet given his micro-celebrity status on Stackoverflow
Chris on April 4, 2009 3:29 PMWhat about the Programmer who realized they can't be programming all their life and decided to do the next best thing, become a systems analyst. That's ME.
Ex-Programmer on April 4, 2009 3:29 PMI rather be 'successful' in everything in life than just be a dead programmer, let alone famous programmer. Balance is key to life. It's cliched but often missed by geeks. I mean no offense to geeks.
Andrew on April 4, 2009 3:34 PMHey, you forgot "Programmer who blogs rather than programming" ;-)
Shmork on April 4, 2009 3:41 PMI am a 4 and 1 at the same time! :)
Jeff on April 4, 2009 4:22 PMOh I remember THAT question alright! I was asked the whole five year thing seven years ago during the interview for my current programming job. Little did I realise I would still be in the same company all these years later!
Phil on April 4, 2009 4:26 PM> Hey, you forgot "Programmer who blogs rather than programming" ;-)
That's Jeff, the famous blogger (sorry, programmer). So, Jeff considers himself to be above than the working and unknown programmer?
Oh boy. Can you name someone from the development team that created the software for the first laser-powered aircraft? Of course not. They are all unknown programmers.
Do you know Mikhail Fursov and Lionel Le Folgoc? Of course not. And yet, you think you are a couple of levels above them, don't you
Chala on April 4, 2009 4:27 PMAhhh 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 April 4, 2009 4:31 PMI got high... and now I'm programming at level 9... suckers!
kwahom on April 4, 2009 4:37 PM> I rather be 'successful' in everything in life than just be a dead
> programmer, let alone famous programmer. Balance is key to life.
Amen to that. While in 5 years I see myself still living as a programmer, thats not really what I want to do with my life. Don't misunderstand me, I love what I do, but I don't want to be still behind a desk when I'm 60, there are many things I want to do (travel around the world, make a band and play in nightclubs, paint) and I don't want to wait to my retirement. Sure, I CAN do these thing for 20, 30, even 40 years more, but that's definitely not what I WANT to do...
1 vote for changing "dead" to "immortal"
Ben on April 4, 2009 8:29 PMI always answer "Where do you see yourself in five years" with "Fugitive from justice".
Everyone laughs -- and if they don't then you probably don't want to work there.
Mathew Ferguson on April 4, 2009 8:36 PM@Jeff Atwood:
"It's about picking a direction rather than floating through life like that feather in Forrest Gump, or that plastic bag in American Beauty. I know because I used to be that feather, that plastic bag, until 2004."
That's a bit melodramatic isn't it?
Wow great list. You could re-use it for a lot of different disciplines. I'm a 4-5 Industrial Designer. Did you notice in the comments people rank themselves as "somewhere in between"? I guess no one wants to be perfectly pegged just as you have called it or seen as static.
oops on April 4, 2009 10:17 PMobviously some programmers are better than others... this article is pointless/useless
silly article on April 5, 2009 12:00 AMWhatever, but there needs to be designers, architects, and analysts too. And their levels. Programmers are or at least shouldn't be alone.
Silvercode on April 5, 2009 1:09 AMHow do you people find the time babbling about this nonsense while you're working programmers?. Either you're very talented with multitasking capabilities or you don't work enough...
Guitarmother on April 5, 2009 3:58 AMThis is pretty bad.
All these levels are obvious. Why do they need to be stated at all?
This list has no redeeming values whatsoever.
"Tongue planted firmly in cheek"? Nothing in here approaches humour.
JoeProgrammer on April 5, 2009 4:20 AMgoing to b-school so i don't have to freakin code any longer.
oracle programmer on April 5, 2009 5:33 AMHmm… shouldn't this have gone from level zero to level seven instead?
evan on April 5, 2009 5:37 AMSorry but Gates is not a programmer.
Jay on April 5, 2009 6:41 AMLmao @ Jay, afraid Gates was a programmer, doesnt know what he does now
Ananth on April 5, 2009 9:31 AMExcellent post Jeff
Sarat on April 5, 2009 10:05 AMSo when a programmer builds a business around his work he ALSO has to be famous in order to be successful?
What a load of poppycock.
Future Technology on April 5, 2009 11:06 AMGeez, when I read this post, I didn't think it was meant to be an exhaustive list of programmers... I guess I was wrong, because based on the comments, most people thought that was what Jeff was trying to do. No love for Bill Joy?!!! ha ha
chrishad95 on April 5, 2009 11:07 AMI'm kinda scared to think about where I fall on this list. Its probably depressingly low. Oh well I guess that gives me something to work towards :) .
Serinox on April 5, 2009 1:08 PMI see myself at 4.8 but I aim to be 6.0
Andrei Rinea on April 5, 2009 1:47 PMWell we all know Jeff is number 3, an Amateur Programmer.
James on April 5, 2009 3:34 PMWhy don't you change 'dead' programmer to 'immortal' programmer?
genghis on April 5, 2009 6:02 PMTo be honest, the levels of programming are probably better represented by a B-tree rather than a list.
Nat on April 5, 2009 7:39 PMI'm sorry to hear Mr. Knuth has passed away. He was quite a remarkable person.
fschwiet on April 5, 2009 9:31 PMI'd label myself #4. I began coding as a hobby and luckily landed a fantastic programming job, but I have no aspirations to be programming professionally in the future. Not even 2 years from now.
Auir on April 5, 2009 11:50 PMStupid people..the level posted by jeff dont mean anything...
he is just trying to show directions to programmers...
and about bill gates..
he may not be a programmer ..but he certainly has a very strong background in programming ..and that reflects in his company..enuf said..
and now back to programming(read blogs..)...
:)
>Gates was a programmer? Whom are you kidding? What code did he actually wrote?
Are you kidding me? get updated here : http://channel9.msdn.com/shows/History/The-History-of-Microsoft-1975/
The list seems overly focused on fame as a measurement of being a good programmer. I'd say a better measure is someone's scope of influence on software development projects. Certainly the top ranking would then be reserved for people who have a high enough profile that they influence thousands of developers.
But for most of us, there is plenty of opportunity to grow inside our organisations. The 'lower' level programmers mostly affect only the code they themselves touch. Next 'up' are those who mentor other programmers around them. Then there are those who lead small teams, then come those who make decisions which affect multiple teams, products, etc. in larger organisations.
Working on software that is used by other programmers, e.g. operating systems, development tools, libraries, etc. is another way you as a programmer can demonstrate growth and influence without necessarily having your name known to the programmers who get things done using your work.
So where do you draw the line between being a bad programmer and being an inexperienced programmer? How long do you need to be programming before you can honestly assess your skills and realize that you're a good/competent/bad programmer?
Tyler on April 6, 2009 5:15 AMHe he he... I love the #1s. They seem to be lost most of the times. They are kind of fun at times, apart from being pain most of the times.
Ashish K Mondal on April 6, 2009 6:20 AMWhen did fame become the pinnacle of a software development career?
Neil on April 6, 2009 6:52 AMIf you're going to include Gates, how about including Larry Ellison as well?
Steve Walker on April 6, 2009 7:47 AMI'd like to see an article about the 8 kinds of project manager.
gingerman on April 6, 2009 3:44 PMThe only difference between #1 and #4 is self-awareness and people skills. Hooray, I jumped up to average with no increase in programming ability!
The author left out the non-programming skill of either looking good or looking the part of the programmer (or best of all, both). That helps a bad programmer rise to average, too.
BG on April 7, 2009 5:39 AMIt seems there are a few that feel this way, but I call into question the #2 Unknown Programmer's "It's just a job, not their entire life"... can a programmer still "love to code" even if it's not their entire life?
As it is with communicating with business, there's a fine and subtle line with appropriate and inappropriate; loving something with all your mind *at work* may not always be the same thing as loving something else with all of your heart and all of your mind and all of your strength. With my mind, I pour it all into my programming on the job and love it. Get that flow and it's great, if you know what I mean. But there's so much more to life, there's so much more that is worth our love. Get out and pursue something - run a marathon, climb mountains, get married, love your kids and be there for everything in their lives, have and know Something bigger than yourself.
Must there always one and not the other? Is it loving programming over everything else, or can you still pour it all into your programming *and* other things?
I say there is more, and it doesn't hold you back from just being an unknown programmer. Who knows... I'm not anyone special and that's fine. Maybe everyone will label me an unknown programmer and if so, so be it. I'd take this life I have any day over what I knew before when the only thing in my life for the most part was programming....
Chris on April 7, 2009 5:54 AMMaybe putting "you code _will_ transcend your death... " will stop these pedants..
And I laugh at most people on here calling themselves 4, or 5 or even 6... you're all 3's and you know it. I suspect there's a fair bunch of 2's here too. :)
Jonny on April 7, 2009 7:23 AMAwesome post, thanks!
ramil on April 7, 2009 8:20 AMI think 4.Average Programmer and 3.Amateur Programmer should probably be swapped. At least in the way you are presenting. An amateur programmer will aspire to "greatness" more than your "talented, yet unmotivated" average programmer.
honestitsme on April 7, 2009 8:21 AMgood god, you people commenting are reading *WAY* to deep into this.. nobody cares how any of you think it should be different.
i enjoyed your post.
lol on April 7, 2009 8:39 AMDon’t we all start out as beginner (bad?) programmer and improve through reading, peer discussion / review and experience. What kind of environment do you need to grow great programmers?
John on April 7, 2009 4:22 PMForgiving the contrived, just-for-fun nature of this list, I would say that there's a bit of a rift between 5 and 8. Ranks above 5 on this list begin mixing in industry exposure / success vs. pure computer scientist / developer prowess at ranks below 5 and at 8.
It's my belief that elevating oneself as a programmer above what you have as ~5 is really not so much a factor of becoming a stronger developer in the software-engineering-as-a-craft sense but a factor of whether or not one goes outside of software engineering and brings in orthogonal domain knowledge. And, then leverages their software engineering faculties to change that industry (or at least be somewhere in the forefront). An example might be advanced studies in mathematics/statistics and genetics and then writing software that advances our understanding of the genome in some way. Making money from that requires the fuzzy "business skills" you mention but business skills in the general sense won't create the opportunity.
Julius B. on April 7, 2009 6:22 PMJeff, given your recent posting on mathematics, is it not curious that of your three "immortal" programmers, two (Dijkstra and Knuth) are/were mathematicians (Knuth is of course also a formidable programmer, but he is studied for his texts, which are mathematical.)
Jim Davis on April 8, 2009 6:11 AM9. Cool Programmer
Can write just as good code as anybody else on the list but has a life. Can any time turn on or off the nerdy side but not locked into it; a free soul. You can have a conversation with him/her about any aspect of programming while sitting on a surf board waiting for the big one.
Level -1 (or FF): Professional Blogger
Writes about other "levels", belongs to none. Diggs stuff.
BugFree on April 8, 2009 1:05 PM@Jim Davidson, Kay also has this thing called "PhD" therefore more than a little "mathematically inclined," for which both Jeff has derided in the past.
Jim, I had not thought of this previously but it is pretty ironic.
Charles on April 8, 2009 8:20 PMYes, Gates was a programmer. He wrote Altair BASIC. If you'd ever cracked a copy of Levy's "Hackers: Heroes of the Computer Revolution" you'd know he was a master at bumming instructions out of assembly.
Also:
I'm guessing the reason "amateur" is above "unknown" is that it is very possible to be in high school or working on an undergrad and become a well-known open source developer. Not "well-known" in the sense that a computer science professor will talk about you in a class. If I understand this correctly, it'd be like when my classmates say they came across my name related to some open source project (in a commit, in a changelog, working on a bug, discussion on a development list, etc) or random people online go "oh! you fixed that bug I had!"
"If you know you're a bad programmer... does that still make you a bad programmer?
John on April 3, 2009 08:03 AM"
HAHAHA!! That's a pretty valid question if you ask me. If you know you're bad at it, at least you're good enough to know you're bad.. right?...
Frank on April 9, 2009 5:56 AMWow, working for Megacorp can make you a few of those at once, and none of them good. Damn you, Initech!
Now get back to work, your inane program isn't going to code itself.
:)
Hutch on April 9, 2009 6:49 AMOne more thing.. not everyone wants to be famous.
Programmers aren't all social beings. I realize we have to view this blog through the perspective of a programmer who chose to be essentially a programming journalist, but really, Jeff. I can't speak for anyone else on this blog but myself, but I'd be a miserable type 7 or 8 on your scale. It's not what I aspire to. I want to be great, and I better myself constantly. *But* if I never, ever have to give a lecture or a presentation to 100+ people, I won't consider myself any less a programmer.
Oh, and Megacorp holds the code base to your hospital software. Those 'bad programmers' are the ones that help warn math-deficient nurses from giving you a wrong RX dosage or the correct blood type. There's no code-hero when you have a several million line base. Trust me.
Hutch on April 9, 2009 7:00 AMSomewhere on this list, Guido van Rossum and Larry Wall's names *should* appear...
Maybe your "Dead Programmer" should be renamed to "Immortals". Much more appropriate - dead or alive!
Harry v on April 11, 2009 5:16 PMit seems interesting. so, can somebody rise from bad programmer to successful programmer? or from a lower level to an upper one?
ali on April 12, 2009 12:26 AMDijkstra 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.
Ale on April 13, 2009 9:48 AMthe levels of programming are probably better represented by a B-tree rather than a list http://www.softwarefreedown.com
pingo on April 13, 2009 10:02 AMwhen I read this post, I didn't think it was meant to be an exhaustive list of programmers... I guess I was wrong, because based on the comments, most people thought that was what Jeff was trying to do. No love for Bill Joy?!!! ha ha http://www.vo2ov.com
putin on April 13, 2009 10:03 AMlove it! i'm 41 - been coding, since i was 12, and i hope to be coding for many many more years. just when things get stale, another technology/language comes along to challenge u.
the management track is for the truly uncreative - its all about following someone else's process... they've been trying to dumb me down for years but my brain cells keep coming back!
excellent blog - excellent responses - thsi is what bloggin is all about
kal on April 13, 2009 10:52 AMGreat article! But I see too few data points.
I'm interested to know in what category do these people fall in:
Linus Torvalds
Phil Greenspun
Joel Spolsky
Anders Hejlsberg
Bill Joy
James Gosling
"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 April 16, 2009 1:37 AMPHP, C, C++, Java, Python, Perl Programming Tips techniques
A good read:
http://digg.com/programming/PHP_C_C_Java_Python_Perl_Programming_Tips_techniques
what about George Bush? I've heard he was a great programmer, at least he can write program to instruct troops to kill iraqi people :(
hey, we're talking about coding...not politics :)
Topan Hadi on April 17, 2009 4:41 AMInteresting. But see, any classification of any thing finally turns out nonesense. Don't label yourself, which is pathetic.
Dark9 on April 17, 2009 5:34 PMI believe Linus Torvalds should be in lvl 7, where Bill Gates should be in lvl 6
C# Programmer on April 20, 2009 1:23 PMThis is a ridiculous post.
There are two types:
1) Programmer - He who understands everything about the software development cycle AND the machine's he is working on.
2) Coder - He who thinks he is a programmer but just regurgitates code, occassionally creating something "new" from something old.
99.9999999% of the IT pro's who think they are programmers, are in fact coders of various skillsets.
Unless you program solely in machine code or 1's and 0s, you are a simple, replacable coder. You are not special and no one thinks you are.
And Gates, despite the stupidity of the comments here, did a LOT of coding in his early days. 16 hour days coding, working late nights coding, busting his ass coding. Doesnt mean he was the greatest coder, but he most certainly was a coder.
Comment feature: Bane of the internet. Let the idiots reign.
Adam on April 21, 2009 6:19 PM"Unknown Programmer".... hey, that's me!
Rob on April 28, 2009 5:04 AMIf we're listing legendary programmers, second in the pantheon after Knuth: Edgar F Codd.
http://en.wikipedia.org/wiki/Edgar_F._Codd
keith on April 28, 2009 2:03 PMWAIT - Ruby On Rails guy and ID guy make #7, but Gosling doesn't? This is a joke.
MIke on May 1, 2009 7:18 PMYou really should change the post where you specify the "dead programmers". People who don't read the comments, don't realize your point, and thinks that guys are really all dead.
João Cavaleiro on May 3, 2009 5:06 AMwhat about men who haven't seen a programer in their life,
know nothing about programming ,but studying abt computers in college.
i am one such guy.
what to do?
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 1:34 PMI use computer a lot. I have never been interested in programming. What do yo think guyz?
Romesh on May 14, 2009 9:32 PMhave 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 4:56 PMare open source programmers amateur programmers? really?
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 2:05 PMThank for information
suteetoe on July 23, 2009 7:12 PMI like to think that we all had a level one moment in our lives. Don't you agree? :-)
Richard on July 30, 2009 1:40 AMI'd rather just be alive, period.
Anonymous on July 31, 2009 8:24 AMI'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 2:41 PM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |