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.

Latest comments (39)

Collapse
 
thamaraiselvam profile image
Thamaraiselvam

This is excellent read :D

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
 
nicolasjengler profile image
Nicolás J. Engler

Ugh, this piece was amazing. Thanks for taking the time to write this, it made my Saturday!

Collapse
 
salthedev profile image
SalTheDev

Thanks for this! I like how your article didn't just focus on the technical skills, but rather you gave a look into some of the soft skills that should be learned as well. As a newbie self-taught dev this helps me to see what habits I should start forming early. Super insightful read :)

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.

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
 
lauhakari profile image
Mikko Lauhakari

Great article. Hit a point with me and gave my imposter-syndrome a punch in the gut.
Now I actually feel a bit like a "senior" dev.

Collapse
 
destynova profile image
Oisín

What did you do instead, how did you do it, and how's it going so far?

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
 
victorneves profile image
Victor Neves

I think this is the best explanation that I found out until today, even so, I think this is not straight forward. For others, it will be another set of conditions

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
 
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
 
shabrany profile image
Jorge fernandez

So true! Great article!

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
 
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
 
rodrigoabril profile image
José Rodrigo Abril Lara

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

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.