What makes a senior developer?

There are many ways to classify software developer skill levels. Often you see developers being referred to as “junior” or “senior”. But these terms are not very well defined.

Obviously, “junior” commonly refers to someone who is early in their career, with small number of years of experience. Meanwhile, “senior” has worked already several years. But I don’t consider this a good classification. The reason is, years of experience has only a little correlation with actual work skill. For me, the “junior” and “senior” are more related to skill levels. Skill is determined by number of years of experience, but also motivation, environment and learning capability.

Levels of developers

I use the following definitions to classify developers:

  • Junior developer: needs assistance with basic programming tasks. Unable to perform refactorings on codebase. No experience with different technologies or frameworks to be able to choose between them.
  • Experienced developer: can perform basic programming tasks individually when needed. Can perform basic refactoring on codebase. Understands architecture, but rarely suggests any changes to overall system architecture. Has experience with 1 or 2 frameworks and programming languages.
  • Senior developer: can perform any programming task individually (when needed). Frequently performs complex refactorings on the codebase. Actively suggests changes to overall system architecture. Has experience with multiple frameworks and/or programming languages. Shares information about new tools, technologies and patterns to the rest of the team/company. Senior developer is usually able to make educated guesses about the root cause of a problem.

Lead developer and architect

When senior developer is used as a role in the team, I use it as analogous to “lead developer” or “technical lead”. However, I do not consider this optimal (there should always be more than one person for every role). Software architect is also a more specialised role for senior developer. Any senior developer should have the skills to be an architect (or lead developer).

How long?

It is important to understand, that since the skill level is not tied to number of years, some developers remain “forever juniors”. Meanwhile, some other developer may rise to senior status fairly quickly. On average, the time it takes junior developer to become experienced, and experienced to become senior, is about 2 to 3 years of practical full-time work. But as said, there are significant subjective differences.

Mixing experience levels

I agree it makes sense to mix different levels of experience in the same team. Junior developers can have out-of-the box ideas, and pairing them up with seniors is very effective teaching method. It’s important to note the distinction between inexperienced developer who is eager to learn, and possibly unmotivated “forever junior”. Personally, I enjoy teaching and sharing knowledge, but teaching someone who doesn’t want to learn can be unmotivating and wasteful.

10x developer

As I understand it, the term “10x developer” was originally referring to smart developers from FAANG companies, being 10 times more productive than average. I think it’s impossible. It would require the person having IQ of 1000. Individual productivity differences are definitely possible, but we’re talking about at most 2 to 3 times better than average. Being 10 times more productive than the developer with the lowest productivity might be possible.

The only way a person can become 10 times more productive is by sharing knowledge and practices, teaching other team members to write better code faster. If you count everybody’s productivity increases together, that might sum up to 10 times one developer’s original productivity.

Leave a Reply