TL;DR: A very interesting perspective about what truly makes a senior developer. Coding & mentoring abilities are a must but not enough.
In the world of software, just because someone has been a developer for a long time, it doesn’t mean they have become excellent at it. In my experience, what differentiates senior developers and engineers from junior and mid-level ones is how they use skillsets and approach problems. While this varies among types of organizations — the skills used by a senior developer in a small startup aren’t the same as those used by one in a massive company — there are a few clear qualities that all experienced software folks with a “senior” title have.
The idea that we can categorize developers and engineers into junior vs. mid-level vs. senior suggests there is some way to measure. The mistake here is pretending there is a single scale of measuring talent when there isn’t. Different organizations, problem sets, and domains suggest very different skills. But there are four key abilities to use in measuring seniority:
Ideally, a senior engineer should be strong at all four of these skillsets, but it’s more critical that their strengths complement the team and company and their needs. So the relative importance of these four skills can vary widely. For example, in a small company or startup, skill as a sole programmer and the ability to grow other programmers typically matters far more than social and political skills.