Thursday, June 2, 2011

How to know the Seniority level of a Developer?

One tough thing to do when looking to hire an employee is to tell with some level of certainty to which of these three famous groups of seniority belongs, I'm talking of course of the "Junior" "Semi Senior" and "Senior" groups.

Many people take in account the years of experience, some others combine this with some questions of framework-related knowledge, problem solving capability and others ask very specific questions about weird constructions on the language that probably are never used even in huge applications.

Truth is no one knows for sure what makes a developer member of one of the seniority groups. I've had the chance to interview many people on my career and also have been interviewed several times so I'll try to explain in the following lines my take of what is the evolution for developers.

The four Stages
When somebody start with the ways of development it goes through four stages but it doesn't depend on the time (only) to go through them or the experience in a single project or technology but the will of the person to IMPROVE. I put the word in capitals because this is the key on the whole process, you can have like 10 years or more in one technology, language, platform, tool, etc, but if you don't have the will to improve, you'll still be considered a Junior. Obviously over time that person will gain some knowledge so time does matter and it matters a lot! But let's start with the stages.

The programming stage: in this stage this guy realizes that he understands the programming language and has the ability to print messages on the screen at will!! :O it also notices that he can make sense of a graphic UI design tool and write code behind some buttons or read textfields. This guy maybe want's to start earning some money with his apps and with luck he does. People who are on this stage are AMATEURS, they aren't really acknowledged as professionals but they make their way and build some apps.

The designing stage: if this amateur guy want's to improve it will soon learn that he's writing a lot of duplicated code, he feels that he's writing always the same thing to achieve similar behaviors so he begins developing interest for design patterns and pre-built things to ease things a bit. Also at this point he has some knowledge of what's going on, he is going beyond recipes, he is starting on the professional side. People on this stage can be considered JUNIORS, they have some foundation knowledge use a lot of pre-built things, and love recipes. These guys now can achieve things, in fact they can achieve many things and they really do! but there's still a long way of maturity and improvement left.

The deciding stage: After doing a lot of applications as junior using pre-defined recipes and tricks, these developers are starting to be very productive with the development tools, have some deeper understanding of how frameworks work and also now it's easy to learn how new frameworks work, so they become SEMI-SENIOR they now can tell why they're doing what they're doing. They now care about the performance of the application, they know most of the good practices of the programming language and can solve some complex programming problems.

The quality stage: One of the most hard things to do is to tell between a semi-senior developer and a senior one, but think about evolution! These semi-senior developers want to improve and they now can work very comfortable in small and big projects but they realize that the code doesn't go away as soon as they deliver. They start thinking on how the code they're writing right now will look on the future. They think about quality! they want to make things readable, they want to be able to re factor without breaking things they can foresee problems and solve them before they happen so all of these makes them to produce really good code easy to read, complex application logic that your grandma can understand! These guys are SENIOR, and they start delivering code with increasingly high quality well designed, well documented, effective, etc.

This is my take on seniority after several hours of thinking, my aim is to share and discuss what seniority means in development, feel free to post comments on the subject.

1 comment:

  1. "Producen codigo facil de leer, logica compleja que hasta tu abuela podria entender. Esos tipos son SENIOR!!" jajaja, buen articulo.

    ReplyDelete