Trumpi asked the question What makes a senior developer? So I started to write a comment on it, and it ended up a little big for a comment so I thought a blog post would be better.
Warning: This post is FULL of generalizations and is based on my narrow sighted view of the world.
Before I answer the title question, I want to take a stab at a point in Trumpi’s post about why they are tossing so many 'senior' dev's CVs away? Arne commented on it and said it’s because developers want the high life quicker (easier?) now. I disagree with Arne because I think it's the companies who hire these junior/intermediate developers and push them into higher positions out of need (i.e. the company does not have seniors, so they put intermediates or juniors into those positions as there is a gap to fill). They then think because they are a senior in company x - they should be a senior else where. I’ve seen this a lot in the “newer” development companies, the more established ones seem to avoid this issue.
Not to say that I haven’t met developers wanting the high life quickly - however this seems to stem from a education background. Developers who are self trained, go to training colleges or techs don’t seem to be so fast lane driven. The higher the education (honor students being the worst) seem that the “high life quickly” syndrome effects them more.
To the question at hand what makes a senior developer? That is a tough question because it's more about environment/culture of the company than the person him/her self. If your culture is more formal (suit and tie), senior could be based more on qualification while in a more informal environment it could be more experience. There is no wrong or right here.
My view of a senior is a person who meets 5 key items: Knowledge, Proven, Sharing, Passionate, and Humility.
- Knowledge: Has a deep knowledge of a technology or technologies (how it was obtained is irrelevant to me).
- Proven: Has paid his 'school fees': Meaning he has done real (hard) work to prove he deserves to be called senior.
- Sharing: Is able to share knowledge. This is important because a senior who can't share knowledge is not worth it. Now there is the issue about personality here (being that some developers don’t really have one) - I am not saying seniors need to be the great speakers like Scott Hanselman, or sales men. If they are introverted and can only share with people they know at work, that is just as good as being a great speaker/blogger etc…
- Passionate: They must be passionate. As a senior, being called a geek/nerd is a badge of honor that should be strived for.
- Humility: Lastly, and most importantly, the culmination of all of those points should lead a senior to actually be in the spot of saying I don't know everything... but I am willing to learn.
The senior developers I have worked with have come from such a varied background and are on many a varied path but they all meet those 5 points.