The world of developers can be divided into four groups. No! Before you start skipping to end looking for a punchline, this isn’t the lead up to some corny joke about how some like star trek, while others prefer star wars, with the Babylon 5 group being left out into the cold.
No. This is about the 4 stages in a developers life cycle.
Unconscious Incompetence (Innocence)
This is the one we all start off at. Your rubbish and you don’t even know it. We’ve all been there so don’t be too hard on those young developers that are still there. This is how developers come into the world.
The good news is that very few people stay like this for too long. Just being around a good developer shocks you into the next stage.
Conscious Incompetence (Dejection)
The second stage up the ladder is possibly the lowest ebb in the developers life cycle. You’ve graduated from the innocence and freedom of stage one where you didn’t realize how much you had to learn, and now you’re stuck in the deep hole of depression with the realization of just how meaningless your skills really are. Come on, you didn’t really think that your HTML Skillz would carry you through.
If you’re in this stage now, and don’t want to stay in this stage forever, expect to be doing a lot of reading. Cover yourselves in books. Make a fort. Swim in the knowledge of our ancestors, though in reality it might help if you stick to tech books for now. After reading countless books and working though problems one day. BAM!! You’ll accend to the next stage…
Conscious Competence (Confidence)
You’ve graduated from stage 2. You still have the books but now when a problem rears its ugly head, you not only know how to solve it, you know why its come up, where its documented, even what part of what book is relevant to the issue at hand.
Developers at this stage, if you’re working as part of a team, need to develop great levels of patience. Expect to be interrupted for the most trifling issues. The smallest problems. The silliest mistakes. There are two ways to deal with these interruptions.
The first way is to solve the problems as they are presented to you. If you value your sanity, DON’T DO THIS. At least, not every time. If you solve peoples problems in a few seconds, yes they bother you less the first time, but the next time there is a problem, they come back, expecting an equally quick resolution. And the the whole situation just snowballs. You turn from being a developer to the resident problem solver. And no-one wants that.
Instead, take a bit of XP methodology. This isn’t possible every time, but if you can, try and do a spot of pair programming. Yes its not always enjoyable to sit behind someone as they slowly work a problem when you could solve it in seconds, but do it now and see it as an investment in time.
Most problems don’t stem from the developer coming against something they simply cannot do. Hell, for most of us, a quick google every now and then is an accepted part of our programming day. So teach your co-workers/protégé/desk buddies not how to solve the problem in front of them, rather, teach them how to go about finding a solution to the problem. Give a man a fish and he’ll eat for a day. Teach him how to google and he’ll eat for life.
For many developers this is the end of their life cycle. By the time they’ve risen to the top of their game, an new flashier more exciting language has come along and they feel the tug of peer pressure to move on to newer shores. However, for the precious few who stick the course, we come to the fourth stage…
Unconscious Competence (Mr Developer)
You’re not just good, you’re great. Not only can you solve any problem thrown at you, you look good doing it. The books that once were so important for reference now become just a comforting reminder of yesterday, and you’ve gone from reading the books, to writing them.
Watch out though! Developers at this stage can tend to lose contact with where they came from. Little questions that before you would of answered now become tiresome. Its even possible to forget that everything is not instantly obvious to all those around you.
So those are the four stages of developerdom. Of course you may go through these stages many time, with every new language you pick up you have to go through them all again. Luckily for us, the more you do it, the quicker you can move through them until you reach the point where you can pick new languages in roughly 25-32 minutes. No seriously. You can. Trust me on this.




