Ravi Mohan's Blog

Thursday, December 11, 2003

The Five Levels Of Programming

Just a mental exercise to distinguish multiple "levels" of programmers.

Some of the observations are India and Bangalore specific but the various "types" should beidentifiable everywhere.

Level 1 : the Novice/the Charlatan At the very bottom we have the "great unwashed hordes" - people who studied computer science because "they said that's the best way to get a job" ".The focus for these people are to get into "better " companies (where "better" is defined as "bigger") and move up the career ladder to become a manager as soon as possible.This is the person who seriously believes in iso 9000/cmm level 5 etc as "improving productivity". .On the brighter side this level also include s a lot of people just out of school and who love to program. and are eager to change the world.

Level 2 : the expert This is the guy who knows everything aboout one particular piece of technology . It could be jsp, weblogic,C++ /the PIC microcontroller/whatever. This is the guy who'll tell you what's happening when a particular problem occurs with the technology he is an expert in.("oh just go to a config file foo and change blah to baz" ).Unfortunately in India, even this level of expertise is pretty thin on the ground. Not surprising when you see that most "IT" jobs don't want really intelligent people. (A friend's HR Manager actually asked him to select the "less talented people" when he conducted interviews beacuse the "hacker types won't like our company". Not very surprising when you get a job because you are cheap(er) than because you are good.) The distinguishing characterisitic of the expert is when people in his team /company say " hmm That's a difficult problem let's call in Mr.x "

Level 3 : The Thinker People at this level think about what they are doing and ask a great number of intelligent questions. Most often they use the simple "why" and other "dumb questions" to investigate . This stage is also marked with growing dissatisfaction about the state of the world and a feeling of "I could do better than that " when they see a piece of sub optimal code/design. (This is similair to how a lot of writers start their careers - they read some tripe and say to themselves "this idiot got published? Why I could do better.").In my experience though a lot of otherwise excellent people "freeze" at this stage and never complete the leap across the chasm that separates them from

Level 4:The Hacker This is the person who has gone beyond wishing to actually writing some code , or perhaps writing a book about what he knows.What distinguishes him from a true guru is that his expertise is narrower in scope and he often does not redefine software programming (or a sub area thereof). The charcteristic that distinguishes hime from the "lower" level is that he is well known within his area of expertise. A good example of this type of person are the tech leads of open source projects like Hibernate or the author of a book like "Regular Expressions".These are true "bearers of light".

Level 5:The Guru These are the Martin Fowlers, the Peter Norvigs , the Stallmans and the Torvalds, the von Rossums and the Larry Walls. What they do profoundly changes the world of programming and influences how the rest of the world programs.

'Nuff said

No comments: