For a long time, I wanted to compile my list of qualities of a senior developer. How do you become one? What do people expect from a senior developer? This post is my first attempt.
There are many angles to approach the topic. Here are some of the sources I found interesting:
John Allspaw's On being a senior engineer
Camille Fournier's Career ladder of RentTheRunway and An incomplete list of skills senior engineers need, beyond coding.
Soft Skills Engineering Podcast, where a listener once asked, "Can I call myself a senior developer after X months in the industry?", and the host answered: "I'm afraid, you didn't make enough mistakes yet".
A recent Twitter thread (in Russian), where the author says that to him seniority is not about hard skills (languages, frameworks, technical stacks), but more about professionalism, responsibility, decision-making, and ability to solve business problems.
In this post, I'm writing down my answer. I wish I wrote it a couple of years ago to compare how my views have changed. I'm sure I will give a different answer in a couple of years. Here I just list the points, and I plan to elaborate on some of them later.
Important Senior developer traits (2021):
Hunting for business knowledge - actively search how the product works, how users interact with it, why it works as it does;
Being able to discuss without raising the voice;
Express opinions and support them with arguments;
Gut feeling - listening to your intuition;
Remember stuff - writing down, documenting, keeping lists of things, organizing information inputs and outputs;
Knowing the processes of working with people in Software Development;
Knowing the next step and the one after that;
Pushing a task till the end or passing it to another person;
Changing processes when needed (supported with an opinion and arguments);
Looking at things from the team point of view;
Seeing people as collaborators and contributors (or at least parts of a solution), not obstacles;
Solving the unsolvable problems;
Experience in putting out fires;
Experience in breaking things (build, CD, production).