What defines a senior software engineer? What are their responsibilities? I get this question a lot from friends, family, colleagues, and even from myself.
There is no one clear definition; every company, website, and person have their definition.
As a team leader in the past and a senior software engineer today, this is my definition:
- Holistic view - understanding the bigger picture, where the product is going, and how to engineer it.
- Communicating with all the involved parties - Being able to bridge between PO, PM, UX, SRE, and engineering, so everyone is up to speed.
- Involved in the full software development life cycle - contributing to every step of the development cycle.
- Being a mentor and a guide - teach your knowledge to others, identify weak and strong points, help grow, and empower others.
- Improving your team - Senior will help develop and empower the people around them.
- Spot pitfalls and solve them ahead of time - recognize patterns and have the "future sight" to understand possible pitfalls and their solutions.
- Not a function of years of experience, but knowledge - as put by Darknight at softwareengineering: "Some achieve the above in 2 years or less, others take 10 years".
So, what is your definition?
Top comments (14)
It's easier to say what does not define a senior engineer. Here's a couple that come to mind:
Wait, what? Looking at tech skills can't prove whether someone is fit for a senior role? Correct. When thinking of senior engineers I often reference John Allspaw:
Let us become mature engineers instead of seniors.
I really liked your closing line:
This pretty much sums it.
I'm happy to see that we agree on many points.
I wrote an article about this recently here.
Happy to see that as well!
Fascinating article!
More often than not... age
In my own experience, age isn't that good a predictor for this. It's indeed a property shared among most senior developers, but I could say the same about having two eyes and two legs, or being able to read and write.
I'm not saying that it's a good predictor - but in 25 years as a developer, I've found that it is usually the case - even if there are younger devs that are more capable
What I'm saying is that age (or 'experience') doesn't inherently make a developer more capable. It's generally the mindset that sets apart more capable developers. That mindset usually takes time to develop (so age is indeed a factor), but there are plenty of develops increase in years without improving in mindset.
I totally agree with you Jon, having the correct personality and attributes do not have a direct correlation to age.
Unfortunately though - in real life, having the title "Senior Developer" usually has more correlation to age than to actually having the requisite skills
This is my point
Yes, I see your point. I took 'senior developer' to mean more than that, since then the answer to the post here would be "a senior software engineer is someone who has the title 'senior software engineer' on their contract'. Which is as much true as it is meaningless.
I think that's a great list you have there!
I also sometimes like to consider 'the ability to handle responsibility and accountability'.
As developers progress in their career, we will start making decisions that have larger and longer lasting impacts to users, the project, and teammates. As we 'mature', we will want get a better handle of understanding these responsibilities, enjoy being responsible for changes, and be able to see the change through.
Thanks Jen!
Your point you raised is spot on in my opinion.
I'm a bit late to the party but I like this:
This came to me after being a Senior Dev for a while. I often get a good sense of which solutions won't work for a particular problem before I understand what will