What's a Senior Developer?

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?

FWIW, I didn't make the

FWIW, I didn't make the mental transition from programmer to developer until I learned my second language. Learning the first was all about syntax. Learning the second, and generalizing, was about problem solving. I wouldn't hire anyone who claimed to be "senior" but only was fluent with one language. I have had "senior" in my title for 25 years now. However it has been at least 10 years since I worked for a shop that used the title in a way that comes close to your definition. It seems that at 15 years of experience, or thereabouts, organizations don't know what to call the "senior seniors" or they no longer value and pay for the development skills.

What's missing in my opinion

Nice post. I too often have to disappoint people that 'I have developed websites for the past 8 years' alone does not make you a senior developer. In addition to what you mention, I look for a number of additional things in a senior developer:

  • Professional attitude towards customers, management and other developers
  • Software Engineering skills (it's about much more than writing code!)
  • Architectural ownership of a system
  • Being able to see the big picture
  • Guarding the quality of the project (making sure testing gets done, code is reviewed, code is clean)

And a couple of other things that I probably forget. The amount of years of experience is hardly relevant, I have a senior develope that only has 2 years of professional experience but just has the right skillset and talent to understand things the right way.