There is a common misconception of what a senior developer is. Some may tell you it's the years of experience, others may say it's the "bugfixes per second". It's none of those.
What a senior developer is NOT βοΈ
When you look for a developer/software engineer job and read through the postings, you find a pattern where recruiters seem to define a senior developer on the number of years they have experience in the field. Well, this is not how it works. Determining what and what, not a senior developer is, is more complicated than that.
Let's start with what they are not:
- People that know everything about a programming language
- Know all the answers
- The absolute truth
Problem solving π‘
One of the essential traits of a senior developer is the ability to solve problems quickly while also:
- staying efficient
- making sure not to introduce unnecessary sources of errors
- creating as little friction with the existing system as possible
- thinking of the bigger picture
- having expandability/reusability in mind
- make decisions about potential trade-offs
There is not always enough time to make perfect solutions. A senior developer must know which sub-optimal solution they can accept for the moment, but be sure to raise awareness that it's a quick solution for now but that it needs to be changed sometime in the future.
Tech skills & experience π
Of course, it is important that a senior developer has a vast amount of technical skills experience. This does not mean that they know every syntax by heart and can list all the array functions available.
No, this has more to do with knowing what tools and software patterns are out there, so they can choose the correct one for the problem at hand.
Often, a senior developer has some sixth sense when it comes to possible roadblocks. This experience is drawn from previous projects. They can't immediately explain why one road may be worse, but they can almost bet on why one solution would be better. When they look closely at the problem, they will eventually find what's wrong exactly with a given approach, though.
It's also vital to know what you don't know and do some more research to learn more about the problem.
Knowledge of technologies βοΈ
A great senior developer also knows about tools available, even if they are not using them and even if they don't remember exactly how they work. They know when the occasion arises that there is something out there that could be a great fit.
They are experts in pairing the perfect tool with a given problem. They might have to do some research to ensure that a tool is right for the job, but they know what to look for.
Especially at the beginning of a new project, a senior developer should make wise choices of which decisions pay off in the long run.
From start to the end π
A senior developer is capable of handling every step of the way to build a part of the software:
- Analyze the problem
- Understand the problem
- Form a viable solution for the problem
- Implement the solution
- Test the solution
- Integrate the solution
- Deploy the solution
Mentoring π
One important quality that every senior developer should possess is to be able to lead others. This means:
- Help them to up their skills
- Guide them to better solutions and help them understand why
- Help them when they are stuck
- Don't look down on them
- Provide them with interesting and helpful resources
- Cheer others on
- Share what you know
- Give credit where credit is due
Communication π¬
Senior developers should be great communicators:
- Explain a problem to someone in an understandable way (even to non-tech people)
- Present a solution and explain why among all the solutions, his is the best
- Navigate political situations in the workplace
- Try to shield other developers from bad management decisions
Humbleness π
A senior developer is not always right, and they should know that. Everyone makes mistakes, and when they make one, they should own up to them:
- Raise awareness of a problem
- Claiming responsibility
- Analyze the severity of a problem
- Have a range of solutions to solve the problem
- Accept help
Also, a senior developer should never assume they are always right. They should analyze input from others and be prepared to accept it as a better solution. However, they should not be easily influenced by others either. They should always have the best solution in mind. There is no place for ego.
Summary β¨
In summary, a senior developer is really good at solving problems, choosing the right technology for a job, and helping others excel at their own job.
Oldest comments (39)
Whilst the above is sometimes true, from 25 years as a developer I've seen that it's most often the case that a 'senior' developer is usually just an older developer.
π― agree on mentoring. Enabling others is so important, your team/product may only be as strong as the βweakestβ developer so Senior Devs can use their experience to bring up the skills of everyone else. That then means everyone is making better decisions and writing better code.
I agree as well. A good senior is hoping to develop teammates to become peers to accomplish more interesting tasks together as a team.
They should also be interested in learning new things from anyone, because by default a senior will have more experience and therefore their education was further in the past than a more recent person entering the field. Things change, and keeping up with the changes is what makes a good developer at any level. The people that learn just enough to do their job, are rarely good seniors.
That's excellent.
A company just made me pass a multiple choices quizz on codingame.com and it pisses me off how irrelevant it was. My gut told me "You are measuring the wrong things!! A senior developer is not someone who knows a lot of trivia by heart π¬π¬"
That's so true, don't tell me! I have had the same situation :) tons of tests, not even passing all of them, I have been forced to eat hackerrank for breakfast, lunch and dinner for about 3 months, what a shame people don't understand what a senior level means. Great post, also liked a lot Jean's answer.
My wife had to do even worse ridiculousness. She had to submit working programs for a series of programming questions - not just a few lines of code, but full programs.
Not one person interviewing her asked her about her solutions. She asked the last person she interviewed with, and they said they never look at them. WTF is the point of these exercises?
Honestly, If I get to the 'Your going to be interviewed by our Sr Dev `{{Insert Name Here}}`. I like to follow up with 'Cool, may I see thier github/gitbucket page?'
After all, I do wanna see whom I'd be working with and what their code is like, just like they are curious about mine.
Excellent topic! Being a senior developer is one of my dreams when I start learning programming. Indeed every senior developer should have great problem solving skills.
Though years of working in plenty of companies, interviewing for those companies and being interviewed for dozens more, I am totally sure there is no universal definition of a senior developer.
True, plenty of job postings will define the role as X+ years and knowledge of every tech the team has ever touched.
Some even require a person to be a kind of one-man-army, capable of leading the team, communicate the business requirements between stakeholders and the team, architect the whole distributed system infrastructure and automate deployments.
Few of the companies I have worked with would gladly promote a person with 3+ yrs of experience and a solid skill in the project tech stack to senior. My current company has requirements so high that senior position is easily comparable to lead dev of those others.
I guess the more or less right definition comes from team and company needs at that very same moment a senior developer is needed. Which you never know before that moment has come.
I want to hug you. This is exactly how I see myself as a Sr. App Developer. You don't know how many times I feel this is missed when getting interviews these days. What do I bring to the project? Why ask me to take a coding test? I've done it for 25+ years. Memorizing code means nothing if very little at all to interview for this role.
Good to read the post.
I think senior developers have so many roles to do, and people have different expectations in their mind. Sometimes, I feel that when someone says the word 'a senior developer', it can be replaced with a super man. π
Thank you for writing this.
Great summary Marc. It opened my eyes about it. I think that, with time, you get there and you even notice it. Also, make you think what you should expect when you're looking to hire a Senior Developer.
Beyond these traits and responsibilities, what is the demand of this position like?