DEV Community

Cover image for What is a Senior Developer *Really*?
Marc Backes
Marc Backes

Posted on • Originally published at marc.dev

What is a Senior Developer *Really*?

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.

Top comments (41)

Collapse
 
jmfayard profile image
Jean-Michel πŸ•΅πŸ»β€β™‚οΈ Fayard

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 😬😬"

Collapse
 
vbarzana profile image
Victor A. Barzana

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.

Collapse
 
kj2whe profile image
Jason

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.

Collapse
 
richardhendricks profile image
Richard Hendricks

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?

Collapse
 
cchana profile image
Charanjit Chana

πŸ’― 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.

Collapse
 
millebi_41 profile image
Bill Miller

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.

Collapse
 
artdevgame profile image
Mike Holloway

Titles are so subjective.

Even using the measures above, you'd get a lot of grey areas. Non-seniors that have all the qualities & skills of seniors and seniors that are lacking enough qualities & skills to question their level.

Honestly, I feel that what makes someone a senior or not comes down to being given the opportunity as opposed to not.

Collapse
 
millebi_41 profile image
Bill Miller

Also, beware of someone using their title as a reason to "be right". A clear sign of someone "promoted" based on years of experience or past knowledge, rather than skill and aptitude for leading anything.

Collapse
 
michaeljota profile image
Michael De Abreu

Honestly, I feel that what makes someone a senior or not comes down to being given the opportunity as opposed to not.

Sometimes is about searching for the opportunity. If you feel like you are a Senior already, and the company you work for doesn't give you the opportunity to show it, then you always have the option to seek that opportunity elsewhere.

Collapse
 
bofcarbon1_61 profile image
Nomadic Brian

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.

Collapse
 
wsirota profile image
wsirota

Excellent article. About that sixth sense: I had a manager press me as to why I had added 30% to an estimate as a contingency. What was it for? I said that I couldn't say what was going to go wrong, but based on the size and scope of the spec, I knew that something would. Of course, then when that something did come up, I had to put on my lawyer's hat and prove that I didn't deliberately cause it or overlook it in my estimate (in that case it was api changes from an ecommerce partner that they didn't feel they had to tell us about.).

Collapse
 
rodrigoabril profile image
JosΓ© Rodrigo Abril Lara

ahh! but it is my old enemy broken API contracts.

Collapse
 
themarcba profile image
Marc Backes

Ohhh yes. People don’t understand that sixth sense. It’s also hard to explain. But it’s definitely a thing!

Collapse
 
shybovycha profile image
Artem Shubovych

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.

Collapse
 
onyxdragun profile image
Onyxdragun

I wish more people mentored. Out of my relativley short career, I know of only 2 people who have actuall been more of a mentor to me. One is now retired the other I no longer work with.

Are there mentors out there still? I feel like I'm missing out.

Collapse
 
cajuncoding profile image
cajuncoding

Yes there are most definitely many of us out there that enjoy mentoring and sharing and challenging our colleagues! But remember mentoring is always a two way thing (you have to genuinely want to learn from someone and maybe even ask them directly)... and it’s often bi-directional meaning you may be the mentor on one topic while learning from others on another.

And finally, even if the mentoring relationship isn’t formal or the other party is a consultant...you may learn a lot from them as they have been around many other industries and environments.

And being argumentative out of ignorance will ensure that no-one is interested in sharing much of anything with you (I keep hoping my current client tech staff may one day learn this) :-)

Collapse
 
jonrandy profile image
Jon Randy πŸŽ–οΈ

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.

Collapse
 
m121 profile image
Mateo Perez Salazar

God, yes!! , often I see many developers say "I am a senior" only because know a lot about a language and they are +40 years old.

I love to mentor people, I always try to do the best communication channel for my team, I try always to share my knowledge. But I can't find a good job because my weakness is the logic problems and solve problems in hackerrank, I am the average developer only for this, is so stressful.

Collapse
 
dotorimook profile image
dotorimook

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. πŸ˜‚

Collapse
 
mattsmithies profile image
Matt Smithies

Good article, I really like how you broke the list down into easy to digest points. I wrote a similar post where I focused on the business case of a senior individual providing a higher ROI then the cost to bring them in, around impact and positive change.

I touched upon how the as the tech force doubles every 5 years there is more demand then ever for good senior devs to help steer the ship technically for a positive long-term business outcomes. My hypothesis is that I worry that due to the allure of FANNG-type roles and compensation packages there is a trend where smaller companies and start-ups will find it harder to be less accessible to compete for good talent.

Collapse
 
brandonkylebailey profile image
Brandon

Great post Marc! I was thrown in to a senior position a few months ago straight from a junior position and the imposter syndrome really cranks up when all the responsibility falls to you! I think teaching/ mentoring is the best way to learn things yourself!

Collapse
 
mikemcanally profile image
MBlade • Edited

A senior developer does have years of experience. Experience is how they get that sixth sense you talk about. Years of making mistakes and learning from them gives you a spider sense about when your approach to a problem solution will cause you to code yourself into a corner, perhaps resulting in performance issues, maintainability issues or say bugs resulting from adopting to quickly immature new technologies with rapidly changing code bases resulting in code which is discarded and rewritten completely shortly afterwards. These kind of pitfalls are traps many inexperienced programmers fall into because they need to learn from failure as well as success. Sometimes success is based on not picking the newest technology, programming language or tools, because the senior developer knows what skills everyone has in general and can gauge the reasonable time needed to meet deadlines and knows when to choose a well traveled path vs. a new and untried one in order to get the project in on time, hence securing future funding. I have found newer programmers will always argue for new technologies without consideration to other factors. This is not to say senior programmers don't embrace new technologies and approaches, only that they know when and when not to. Experience is not a bad word or a bad thing to have. In fact most experienced senior programmers review completed projects to determine how well they went, what they could have done differently or better or not at all. That is how we learn the most from our mistakes! That is how you become a senior developer/programmer with all the qualities listed in this article.

Oh P.S. Something the article seems to gloss over a bit, writes good code documentation. You're not there, where ever you are, to impress everyone with your cryptic code, because you are the only one who can understand it and modify it or for some personal job security. That is NOT how a good senior programmer/developer behaves.

Collapse
 
alexmartelli profile image
Alex Martelli

You're neglecting a key point in Brook's immortal "The Mythical Man-Month": in a sufficiently large team, different roles, personas are warranted and helpful. One of them, per Brooks: "The language lawyers are well-acquainted with the intricacies of the language used. Able to see obscure but efficient ways of solving tricky problems." (nowadays, add libraries and frameworks to just "language" -- Python+Flask vs Python+Django may well require different "language lawyers" as the frameworks are SO deeply different). I just happen to have just the right mindset to be a very senior and impactful "language lawyer" -- on Python and several libraries/frameworks for decades now, as I was with Pascal (mostly Turbo Pascal) in the '80s, C and the Win32 API in the '90s (see aleax.it/TutWin32/ -- alas, it's in Italian only, as I was back in Italy then, though I'm back to the US for 15+ years now:-). Of course, especially as I grew in maturity and experience, I added other in-depth skills, but the "language lawyer" mindset you shrug away has been my core claim to adding value to a team mostly throughout my decades in software (after getting college training, and starting out my career, designing hardware systems and circuits) -- that's why I wrote early editions of "Python Cookbook" and all editions of "Python in a Nutshell", how I won the Frank WIllison memorial award for contributions to Python, how I made "front page" (top 0.01% or less) by reputation as a Stack Overflow contributor (mostly about Python and related matters)... no doubt this quirk of my mind is part of what helped me graduate in electric engineering with a GPA above A+ (though it was HW, I nevertheless "glommed" into the details of whatever specific technology was most relevant to any given course, and aced+ exams focused on it).

Of course there are many other kinds of senior technologists contributing to a sufficiently large team (and if you work in small-enough teams, esp. in startups, this forces you to broaden your "footprint" to help the whole team/firm move forward!)... but "language lawyers", or, to quote you, "People that know everything about a programming language" (and framework, libraries, etc), as I remain at my core, can, in particular, be extremely valuable. "gnōthi seauton", and, if the shoe fits!, DON'T be worried to wear it:-).

Collapse
 
richardhendricks profile image
Richard Hendricks

Mentoring and communication need to be 1 and 2 on this list. Maybe even the only things on this list!

If you are "senior member of technical staff" and you are not sharing your knowledge, and documenting how to do things, you don't deserve that title. The number of times I've heard "I'm the senior engineer and we have to do it this way" I can count on one hand, and inevitably those people are idiots/PITAs nobody wants to work with.

I don't give a shit if you have this amazing new hardware/technique/whatever - if you can't or won't explain it to the rest of the team, I don't want to work with you! "Protecting your job" by not providing good mentoring and clear documentation is just a red flag that you don't belong around here.

What's almost as bad is someone who only ever tells you half the answer. How do I fix this? "Oh, just do X." Well, how the fuck do I do X??? A truly senior developer knows enough to give a complete answer, or even better, write up a page on how to do it and keep it up to date! And not only answer the first question, but the 2nd, 3rd and 4th question likely to come up as well.