What's a Senior Developer?Submitted by Keith Casey on Wed, 11/11/2009 - 05:00
In recent weeks, I've spoken with a number of people about developers. About hiring them, firing them, training them, promoting them, and generally everything revolving around getting or having good people for a team. And one of the odd things that struck me is that:
Every organization defines "Senior Developer" completely different and sometimes contradictory ways.
I don't mean little things like one organization wants a senior have have 6+ years versus another wanting 8+ years. I mean real philosophical differences in roles, responsibilities, background, and everything else. So in the interest of disclosure, here are my thoughts on what makes a Senior Developer:
First, I expect a good amount of experience. I don't have a hard and fast number of years that I look for, but 5+ seems to be a good starting point. And to be clear, this is five years of actual development experience, not in technology in general. Three years as a tester, two as a developer doesn't cut it.
Next, I look for experience in multiple languages. Having deep understanding of one language is a huge plus, but unless it's complemented by another language, it makes me nervous. I want to see someone who has worked in other languages and approached problems from different directions with different tools. I believe it can show the ability to apply concepts creatively and use a variety of tools.
Next, I look for some basic project/time management skills. I don't expect a senior developer to draw a Gantt chart and create project documents, but I do expect them to create useful estimates. More importantly, I like to see how those estimates are created initially and tracked over time. If a developer needs to increase an estimate, that isn't inherently bad but refusing to consider reality... bad idea.
Next, I expect a Senior Developer to be an effective communicator. This doesn't necessarily mean a published author or someone speaking at conferences, but those can be included. I mean someone who can write a blog post covering a technical concept. Or someone that can draw a picture on the whiteboard to get the point across. Bonus points if the person can solicit feedback from other people - in their team or not - and figure out how to aggregate all the information into larger idea or concept.
Finally, I expect mentorship. A Senior Developer needs to groom and help the rest of the team in terms of the concepts of the organization, product/project, and general development concepts. This person isn't necessarily teaching classes, but they're often performing code reviews or architecture reviews. They're often paired with someone else showing them the how's and why's of the system. They're often finding new tools and concepts applicable to the team and sharing them.
Yes, some of this does fit nicely with Cal Evan's "Three Qualities of a Leader" and there's a reason for that. A Senior Developer - either in name or in responsibility - is often the same as a Team Lead. This person must be effective both on their own and on a team. They have to report up to the Project Manager (or higher!) and lead the rest of the team.. and sometimes even coordinate and collaborate with other teams horizontally.
What does a Senior Developer in your organization look like?