What makes a developer senior? After completing my code Bootcamp and starting my first job as a web developer, I immediately became interested by this question. I wanted to know what skills to develop so that I could progress on my new career path as quickly as possible.
I reached out to more than 20 developers, hoping they’d illuminate me. I quickly realised there wasn’t a single path to becoming senior. There were several traits and skills that made up a senior developer which enabled them to contribute with greater impact across four key dimensions. I call these the arcs of seniority.
The Arc of Independence
As a developer becomes more senior, they become more independent.
As they grow their skillset and gain experience, they need less help from other developers around them. They are able to tackle problems and develop solutions with greater autonomy.
Independence is also the ability to see issues in a system ahead of time and proactively suggest new areas to work on (rather than waiting for a product manager to assign new tasks).
More senior developers are able to both create sensible tasks and find good solutions with greater independence.
The Arc of Authority
As a developer becomes more senior, they become the voice of authority on specific products and parts of whole systems.
A more senior developer understands a system deeply and appreciates its nuances. During team discussions, they are able to steer peers to optimal solutions and highlight any potential problems ahead of time. They take ownership of significant parts of a code base and contribute to its development and improvement by taking on high impact tickets.
The Arc of Design
As a developer becomes more senior, they contribute more to the design of overall systems and projects.
More senior developers are trusted to design overall systems before their development. They are able to take requirements into consideration and design a system that meets them, understanding the tradeoffs against other possible designs. This role is considered important as teams acknowledge that once a system is built, in some cases it can be hard or costly to change the fundamental design of the system. In some companies, this role is distinct from a senior developer e.g. Architecture Lead.
The Arc of Influence
As a developer becomes more senior, they grow their areas of influence.
A more junior developer tends to be inward looking - they are most concerned with completing the ticket they are working on at any one time.
A more senior developer tends to become more outward looking. This comes in a few different forms. First, they play a greater role in mentoring their peers and other members of the team. They become a force multiplier for those around them. Second, they play a larger role in interfacing with other teams. For example, they may communicate with the commercial team on delivery of certain features or they may communicate more with management. Third, they play a bigger role in improving the team itself e.g. suggesting improvements on management of the sprint. Finally, they may contribute towards management of others and hiring.
Different Types of Senior
Importantly, a senior developer won’t necessarily cover all these arcs. Different people have different traits and preferences which will allow them to excel in different areas.
For example, you may have a developer who excels at designing systems, is highly independent, is a voice of authority on products but is otherwise happy to stay away from hiring, management, mentoring or communicating with other teams.
But you could also have a developer who is happy to manage, mentor, hire and work on processes but spends less time working on the architecture of systems.
The point is, there is no one route to becoming senior. Companies may value each of these arcs differently, but each allows a developer to make a greater impact.
Experience vs Time
It’s worth mentioning that time is needed in order to grow along each of these arcs, but it is not sufficient. The quality and variety of experiences allows someone to develop along each of the arcs. For example, in order to flex your design muscle you need to put yourself in a position where you are designing systems regularly (whether that is within your primary place of work or through side projects).
Together, these four arcs cover the routes to becoming senior. These dimensions enable you to contribute more, make a greater impact and take on more responsibility. In business terms, they allow you to make better products that gain more revenue, or save costs1. At your company, it’s important to understand which arc is valued by your team and management. Personally, it helps to know your preferences and understand how your traits enable a given arc.
And remember, there is no one route to becoming senior. So maybe you’ll find an arc that I’ve missed above. If you do, please do let me know.
[Update - 22 Oct 2019] - More and more companies are being explicit about how an employee can progress through the organisation. One way of doing this is by publishing a progression framework. You can see a good collection of progression frameworks on progression.fyi (including companies such as Monzo, Basecamp, Spotify, etc).
Patrick McKenzie has a great post called "Don't Call Yourself a Programmer". In it, her argues that developers should speak about there work in terms of revenue made or costs saved for a business, as thats what the business actually cares about.↩