Needless to say, there are many different opinions on what a senior dev is or does.
According to some people on StackExchange a senior developer can:
- handle the entire software development life cycle, end to end
- lead others, or others look to him/her for guidance
- can self manage projects
I think this is a reasonable answer but sure enuogh people added more:
- I would disagree with the second bullet point
- at 22-23 you should not be a senior devloper. (Why exactly?)
- Accountability
- you have had at least one project fail under your leadership
- etc
So what are the key things defining a senior dev in your opinion?
Or, if you prefer the via negativa, what is a "junior" missing to be a senior?
Top comments (10)
Kind of my opinion on the matter:
Jr: Requires tutelage. Needs a lot of pair programming or very specific specs. At the tail-end of "junior" they can work alone, but still rely heavily on code reviews to get it right. Has minimal "institutional knowledge" Focused on a single tier (front/middle/back).
Mid: Independent worker, can take nebulous requirements and still make something useful. Works within the existing architecture. Knows a fair amount about the company or industry. Can work with non-devs when asked for information. Expert in one tier, can work in others, has some DB experience
Sr: Capable of teaching. Expands on existing architecture. Has a great deal of company and/or industry knowledge. Works well with product/project managers to help drive the product. Works well in the full stack, including the DB
Principal/Architect: Does most of their work outside of an IDE, but can still rip through a story on occasion.
Thanks for your explanation!
It is very clear and I mostly second it.
I can see you add different parts of the stack as a prerequisite to a Principal/Architect position. But that isn't the only possibility for a developer.
I think a developer could be a senior despite having limited knowledge of "the other part of the stack". Especially if the person is not interested in other roles.
Clearly, some knowledge of "the other part of the stack" is very important.
Furthermore, if someone is passionate enough, exploring the other side comes naturally, at some point. My opinion of course.
You're right about the passion aspect. And honestly if their passion drives them to naturally exploring all aspects, then wouldn't that same kind of passion be what brings them to a senior level? It's not so much boxes to tick as that growth mindset that elevates people beyond that mid-level role. Every company is different and, frankly, so is every manager. But someone who is an expert in one tier, knowledgable in the others, and radiates desire to grow and help other's grow, they're going to be a Sr in pretty much any company that has such a title.
Beautifully outlined:)
I agree with all points but the "capable" of teaching. Many seniors do teaching but not all are capable of it to an extend of a teacher. Teaching is a disciple in itself and being a good teacher requires years of teaching practice.
This is also a good point!
I second that teaching/mentoring/etc is not necessarily a characteristic of a senior dev.
But it makes the developer more valuable in the right team and circumstances.
An older one. Seriously. In every company I've worked in over 27 years, it usually just boils down to age (experience)
That's also an unfortunate truth, in my opinion.
From one side, I would hope that everyone who works long enough can learn enough.
On the other side, this is often far from the truth.
It seems like companies cannot justify salary increases over a certain threshold without changing the job title, so there someone gets it it for seniority and not because of their competences.
Yup - experience often does not correlate with competence
In a team, Who is solving a complicated problem with his years of experience. In my opinion, he is the senior.