What Defines a Senior Software Engineer?

Erik Jhordan Rey
6 min readMay 14, 2019

--

For the last 2 years, I have participated in the hiring process in the company I work for by helping among other things with technical interviews, and I’m always surprised when I start to read a CV or a profile that people use the word “Senior”. Why and how are they defining them as a Senior?

For me, Senior Software Engineer is one of the most complicated things to define or identify in the Software industry. That is why in this post I would like to try to answer the following questions:

- What does it mean to be a Senior Software Engineer?

- What is the correct path to be a Senior Software Engineer?

- What should a company expect from a Senior Software Engineer?

The Senior Software Engineers Rocking in the Software Industry

After some discussions about this topic with a few colleagues, we identified some patterns which the industry has been using to recognize a possible “Senior Software Engineer”.

Companies

Software industry

With the current evolution of the Software industry, it seems it is the industry itself that decides who is a Senior Software Engineer.

Here is an example.

“Hi Erik Jhordan, Hope all is well! My name is Marc Hendrick’s and I am a Technical Recruiter with X-Company. Would you be interested in working for an X-Company-A/B company? I have a Full-Time Senior Software Developer position available — 1 year of professional experience, position located in El Paso, Texas. Would you be interested? Please let me know your thoughts! Warm Regards,”

Why look for Senior Software Engineers with only 1 year experience?

As you can see, these are the kind of recruiters looking for “Seniors”. I appreciate this people are interested in me, but I’m a little bit confused: Am I a Senior Software Engineer? If this guy is looking for Seniors and he contacts me, it must mean I am indeed a Senior, yeah!

A consulting company also sometimes decides who is a Senior Software Engineer, as the following story illustrates.

I have a friend who started working in a Software consulting company just after finishing his studies. Another friend also joined a Software consulting company at the same time. Three months later, I was very surprised when one of them told me: “I’m a Senior Developer”. I answered: “really?. I have no doubt about your capacity and skills, but it seems to me it is much too early for you to be considered as a Senior Developer.” Indeed I started working two years before him and only then I was thinking about how I could be a mature Senior Software Engineer, so how could he be already one after 3 months of professional career?

In his case it seems the magic that allowed him to become a Senior Software Engineer in just three months was the following: He started working in a team of Software Engineers with some of them working on a small project and others for a big client (a bank). And only because the Senior Engineers are more expensive than the Junior Engineers, every person on the team working for this bank became automatically Senior Software Engineers. Magic!

Developers

LinkedIn or personal websites

I think many people feel recognized by the usage of the word “Senior” in their resume or personal website. Unfortunately in many cases, just using this word doesn’t make you a Senior Software Engineer.

  • “Senior Developer Full-Stack & DevOps “
  • “Multi Senior Software Engineer Lead”
  • “Sr. Developer, Architect Lead”
  • “Senior Full-Stack Web, Sr. Software Engineer”
  • “Full-Stack Senior Software Engineer”
  • “Technical Consultant, Senior Software Developer”
  • “Multi Senior Software Full-Stack Developer”
  • “Sr. Mobile Hybrid & Multi-platform Developer”

People must understand that the usage of the highest job title description will not make them better Developers nor will they write more complex or better code. Unfortunately, there are Developers taking advantage of these titles to obtain more money or sell themselves more expensive. For me, this is very sad.

“People are increasingly more valuable than the software they produce” by Fernando Cejas

Losing trust in companies or Senior Software Engineers

Unfortunately, I have heard and seen many times the kind of stories described before, and to me, it is very disappointing how the companies can manipulate the Software ecosystem and how the Developers can also take advantage of the situation.

The following statements don’t mean you are a Senior Software Engineer:

  • Your job title says it
  • You are asking for a higher salary
  • Recruiters get in touch with you when they are looking for Senior Engineers
  • You write very complex but not understandable code
  • Your company gives me a “Senior” title without the proper experience
  • You have many years in the industry

Next time you will use the title “Senior”, be careful to understand the points above with professionalism and self-criticism, because this is impacting the whole Software ecosystem and can affect other Developers, even yourself.

So, what does it mean to be a Senior Software Engineer?

This is my opinion but I don’t believe in the Software Engineer qualification levels like Junior, Middle, or Senior. But the fact is that the industry is commonly applying this to determine both salary levels and responsibilities. The problem is this is done without any objective criteria for classification. Nor is there anything that tells us what steps we need to take to achieve that maturity status as a person and as a Software Engineer.

“Senior means not only professional but also personal maturity”

After many discussions with some of my colleagues, we agreed that to consider a Software Engineer as Senior, the following principles should be looked at:

  • Human values
  • Pragmatic Engineering culture
  • Self-learning
  • Growing one’s professional career

Human values

Responsibility & Humility: Understand we sometimes make mistakes. There are always good intentions, but we are humans. Maturity helps you smartly face these problems, learn out of failure, and create retrospectives to not repeat those failures.

Trust & Communication: Don’t promise anything that you are not completely sure to comply with. Be honest. Remember it is always better to say: “I will not be able to deliver it on time”, notifying in advance, than “I will not be able to deliver it on time” but notifying the day of delivery.

Flexibility: Be prepared for change. Don’t be afraid to leave your comfort zone. Learn other tools, technologies, and programming languages. Be an expert in an area but always open yourself to face new challenges. Our job isn’t just about writing code.

Pragmatic Engineering Culture

Respect, Listen, and Learn: In the end, these are opinions and we can agree with them or not. But listening is always a good thing. Be patient, we will have time to express ourselves.

Favor leaders over bosses: Leaders are always leading by example.

Mentorship: Help and teach your teammates. Treat everyone the same way, no one is better than anyone else, there are no rockstars.

Complaints vs. Propositions: An experienced engineer sometimes questions the company processes and the ways of working, but then he should propose ways to improve or solve them.

Problem Solver: Business first, and as a priority before proposing technical solutions that are developed for technical pleasure. Don’t attack problems with code. Try first to understand them from a business perspective and then a technical perspective. When you do this, make a plan for how to solve it.

Try to solve without coding. The best code is not code.

Self-Learning & Growing one’s professional career

Defend code quality and good practices: Always be looking to make better Software.

Foment continuous learning and sharing: Read blog entries, take workshops, read books about best practices, and attend pair programming sessions and conferences.

Share your experiences: Create blog entries, promote conference attendance, and be involved as a speaker or organizer.

Conclusion

I don’t think there is a correct way to get the proper professional maturity, but I’m a strong believer that perseverance, hard work, and human values will ​​help you to be a better professional. To be a Senior Software Engineer is a process, and it is not an easy one. That’s why applying some of these principles is a good starting point to change your working culture.

During your professional career, you will be facing different problems, your skill set is going to get richer, and other abilities will be developed through these experiences. Never stop learning from your teammates, from your mistakes, and your heroes, and you will always be prepared to face problems you encounter in the best way possible according to your experience.

Further reading / listening

“In the software profession, sadly, nobody remembers the heroes” by @ecamacho

--

--