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.
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
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.
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.
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.
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
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
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
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.
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.