Matt Briggs has one of the best posts I’ve ever read on the stages and mindsets of a software developer.
He notes that years of experience does not make a “senior” developer:
The reality we live in is that “Senior Developer” means a person who has been slinging code for more than 3 years. These people are put into leadership positions, and typically things play out as you would expect — quite badly.
This is my take on the terms we use in the industry. Really, putting people into 3 buckets is a huge over-simplification of the nuance, knowledge, and experience of progressing through this profession, but it is what it is. If we are going to classify people in this way, then we need to take time in the industry off the table. A person with 10 years experience is quite different than someone who has experienced the same year 10 times.
Matt attempts to describe junior, intermediate, and senior developers based on what they should be able to do and how they should be able to function on a team. He admits it’s an oversimplification, but I don’t care because it’s still a great description.
A senior developer has to think at a different level:
A senior developer thinks of more than just themselves. They are aware of how their organization and their clients work, what their values are, and what is both important and not important for success. When a ball is dropped, a senior developer will do what they can to pick it up. The phrase “this is not my job” is never, ever said in those situations.
A senior developer will understand that this job is to provide solutions to problems, not write code. Because of that, a senior developer will always think of what they are doing in terms of how much value it brings to their organization and their clients vs how much effort they are putting in.
While an intermediate will plow through days of boring work, a senior developer will take a step back and question what is breaking down to cause all that boring work to begin with. They will evaluate the cost of fixing root problems, and either fix them directly, or put things in motion so they will be fixed eventually.
A senior developer understands that you cannot do everything yourself, and that their primary role is to help their team get better, in many of the same ways they themselves strive for personal improvement.
A senior developer understands that leadership is not about power, it is about empowerment. It is not about direction, it is about serving.
It’s tough to get the full idea of his post, even with long quotes. I recommend you check this one out in full if you’re a) a developer on a team, or b) work with developers in any capacity. That’s probably all of you.