The Eight Levels of Programmers

I’d like to see an article about the 8 kinds of project manager.

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?

He 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.

When did fame become the pinnacle of a software development career?

If you’re going to include Gates, how about including Larry Ellison as well?

Don’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?

The 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.

It 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…

Forgiving 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.

Maybe 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. :slight_smile:

Awesome post, thanks!

I 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.

good 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.

Level -1 (or FF): Professional Blogger

Writes about other levels, belongs to none. Diggs stuff.

Jeff, 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 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.

  1. 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.

Yes, 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?..