Geeks With Blogs
Lee Brandt's Blog You're only as smart as your last line of code

I was thinking about the level of programming abilities lately, as we are starting to interview for an open position. I thought, "Wouldn't it be nice if programmers came in version numbers like software?" This would make it easy to say, I need a version 3 programmer with abilities in languages A, B and C. It's so difficult to say Mid-Level developer, because mid-level is so subjective. Mid between WHO? So here are my thoughts of what the versions for a web programmer might be:

Alpha: Has read some books and has put together some web sites for friends (mostly using Dreamweaver or FrontPage), but the quality is such that you probably would be leery about hiring them professionally until they learn how to hand-code some HTML.

Beta: Is getting better at putting together sites and has some skill with HTML; but still uses tables for everything, and knows next to nothing about CSS. Still is intimidated by the thought of dynamic web sites or database.

Pre Version 1 (0.1): Just a bit above Beta. Knows HTML and is starting to understand how CSS is supposed to work. Does some with JavaScript, but is still amateurish style. Starting to get into dynamic sites and how to connect to database. Still not someone you'd hire as a web developer for a professional team.

1.0: Can put together a web site. Will take the most direct route to every problem. Has no concept of scalability, extensibility or what's really going evolutionon "under the covers" of their favorite web design tools. Good entry-level developer. Needs lots of help and supervision.

2.0: Understands Object-Oriented development. Understands that there is a need for tiered development and separation of concerns. Tends to find more elegant solutions to problems and may, on occasion, use a design pattern, but has no concept of design patterns. Good junior developer. Can be let loose on coding things and may need some help finding a better solution to complicated problems.

3.0: Starting to understand object-oriented development and design patterns enough to see the use of them. Can even recognize a design pattern when they see one, but may not always be able to see a patterned solution to a problem. Starting to be able to architect solutions that have good separation of concerns and is testable. Knows a few different languages and WHY they are different (i.e. their best uses). Good mid-senior developer. Can easily be trusted to develop a solution and provide guidance to v1 and v2 developers. May still have trouble with more difficult architectural solutions but, with a little guidance, they understand and will remember the decisions they made and WHY for future projects.

4.0: Understands patterns and sees patterns within user stories. Starting to explore methodologies, architectures and approaches to  software development. Learning has begun to transcend language and technology. Constructs and deconstructs applications from their requirements in her head. Can see abstractly, how patterns fit together and how different x-driven designs can be applied to different situations. Is a decently versed Polyglot Programmer. Understands the nuances of different systems and methodologies. Good Senior programmer. Will easily be able to help v2 and v3 programmers to push themselves to the next level.

5.0: Thinks in terms of systems. Can still get down into the bowels of any system and rescue it from total code rot, but is much more valuable in making teams cohesive and preventing code rot. Can easily see when a v1-4 programmer might be starting to derail in their designs and can keep a team of developers motivated and excited about creating software solutions. Leads by example. Is always hungry for new and easier ways to accomplish development tasks. Can easily be trusted to run the entire IT department if they are required to. Good Senior Developer or Architect.

OK. So those are my thoughts. I didn't really edit these or spend a lot of time revising the definitions. Anyone got extras to add? changes to mine? I'd like to make this a group-think project. I know people have been trying to do this from the beginning of time. I have no delusions that this will become an ISO standard for identifying developer competency. But we should at least be thinking about it. What are YOUR versions? I want to challenges dev bloggers to write a blog about THEIR thoughts on developer versioning.


BTW - I see myself as a v4 programmer, working REAL hard to live up to my v5 responsibilities. :)

Posted on Sunday, June 22, 2008 11:29 PM | Back to top

Comments on this post: Developer Versioning: Which Version are You?

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
When it comes to web development I would say I'm a v2. When it comes to desktop development I would be a v4.5-5.
Left by devjargon on Jun 24, 2008 9:59 AM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
Good, Very good, it's perfect!
Left by Jay on Jun 26, 2008 8:00 PM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
Perfect! Maybe,I'm at 3-4!
Left by Anlige on Jun 28, 2008 5:38 AM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
I think I am at Pre Version 3.0 or more
Left by waters on Jun 29, 2008 9:07 PM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
Good, Maybe, I' am at 3.
Left by winxql on Jul 09, 2008 2:20 AM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
So poor.It seems that I am at Alpha.
Left by Eric on Jul 12, 2008 3:11 AM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
So let me see if I understand correctly:

Levels until 4 are mostly if not all technical and from level 4 to 5 a developer magically has leadership abilities and people skills??
Left by Fortunato on Jul 25, 2008 8:49 AM

# re: Developer Versioning: Which Version are You?
Requesting Gravatar...
@Fortunado: Not magically. Generally, when a programmer reaches v4, they have had to mentor junior developers already. Granted some programmers NEVER become good mentors, but I think people know what it's like to come up in the world. It's a bit like being a senior in high school and helping the freshmen out.

What would your versions look like if you created a "Developer Versioning" schema?

Thanks for your comments as always!
Left by Lee Brandt on Jul 25, 2008 9:08 AM

Your comment:
 (will show your gravatar)

Copyright © Lee Brandt | Powered by: