“Senior Software Developer” — says the text on the business card. But what makes someone senior? Is it the age? Is it the years in the business? Know-how? There’s a sometimes heated and, to some extent, endless debate going on what makes an engineer senior.
Over the years, I have seen many models from ad-hoc promotions to rigorous formalized systems to determine your rank as an industry professional. I found each system to have its flaws, yet hold some level of value.
Whatever the reason, the title “senior” comes with an air of respect, and the expectation of having one’s opinion taken into account with greater weight. Sometimes, this authority is well-deserved; other times, it feels like a borderline abuse of the rank.
So, what makes someone senior in the industry?
Seniority in Years
One of my first experiences with seniority was back as a young uni-escapee working for a web studio making websites for clients. Our site builder (that’s what they called a frontend dev back then) was a fellow in his thirties with a self-proclaimed 8 years of experience in the industry.
One of the things that struck me as odd, and I never quite understood was the fact that he utterly refused to use CSS. That was in the days when CSS Zen Garden was a hot thing, the browser support was already there, and it was quite clear to anyone with two eyes that CSS would definitely be here to stay.
Little did I know as a twenty-some-year-old dev with barely 1-2 years of experience in the industry that change can be scary. When you have done the same thing for almost a decade, having to throw everything out the window and basically start from scratch is like staring into the abyss.
The truth is, it’s easy to get comfortable. It’s easy to settle into a routine to write code, just delivering what you’re asked for. About ten years later, I was interviewing a fellow who had fallen into this trap. He had been working as a PHP developer for a small company for quite a few years. I expected someone with that much experience to have a decent amount of knowledge in the language he was working in. I was in for a shock. He knew nothing beyond the PHP 4 level of working.
I was in awe and could not help asking him how he got to that point. He said that over the years, he was always looking for new jobs. He never found one that paid quite as well as the one he had at the time. Of course, he was a senior colleague at the company right up to the point when he was let go.
Learning new things can be hard. I, myself, was stuck working with PHP only for a long time because I was scared of switching, having to start from scratch in a new ecosystem. Sure enough, I was learning new things in that ecosystem, trying to improve, but learning a new language seemed very scary. I thought I would start again as a junior developer with a low salary. Even recently, I had an unreasonable fear of Go right up to the point where I actually sat down and implemented a project in it.
As it turns out, nothing could be further from the truth. Software development is so much more than learning a syntax or a standard API. It’s the way you think about a problem. It’s the architecture of your software. It’s the tests that you write. Those don’t change when you move to a new language or technology. The language is just a tool.
Seniority based on Domain Knowledge
Does this mean years of experience are utterly worthless if one does not pursue self-improvement? Well, not quite. Even if your job doesn’t require you to learn new skills in technology, you gain experience with the domain. For example, if you work in the finance industry you will gain intimate familiarity with banking APIs, financial transactions, credit cards, security requirements, and whatnot.
If you work in a field with this kind of specialist domain knowledge, your experience may very well be invaluable. You may be the resident expert on all matters related to that field. However, keep in mind that you are then a senior in that field. You may or may not be a senior software developer.
This is not necessarily a bad thing. My current employer (a telecommunication company) is looking for a Telco Cloud Senior Expert right now. The job description contains a ton of requirements all-around planning a cloud deployment. There are some technical requirements, but most of your expertise should be managing the cloud deployment in that particular field, the telecommunications sector.
From this position, you have a wide array of options: from a strategist to a management position. One thing is certain, though: if you don’t hone your skills as an expert in the technology, you will not become, or no longer be a senior in the technology sense of the word.
And, you know what? That’s ok. It’s ok as long as you realize that you have moved on and let the tech folks do their job without unnecessary micromanagement. It will no longer be your role, nor will you be able to make low-level technology decisions, and you can very well become an annoyance to the team if you pretend to.
Seniority based on Technology Know-how
What if you keep sharp? What if you continuously put in an effort to stay on top of technology? Is it even possible?
As a good consultant would say, it depends. Every company, every team, is by necessity limited in scope. The purpose of the company and the team you are working in is delivering business value. The technology is just a tool to get the job done. It may not be so easy to convince your manager to try out new technology.
To keep employees happy, companies sometimes assign a budget to spend on education. Sometimes, in very rare cases you get time to do the education/certification in your work time. What’s seldom happening is the actual day-to-day use of the technology you are learning unless it’s something like Kubernetes, which is enjoying an insane amount of hype right now.
Your ambitions to self-improve may be higher than your team can afford. A certain depth is required, of course, otherwise, you’ll be the person who doesn’t know anything in-depth. Jumping from one technology to the next is not advisable. However, if you are stuck on a project for 10+ years, the threat of technology surpassing you may become very real. Personally, I would recommend switching projects (not necessarily companies) every 3-5 years, at least.
The question still remains: is your knowledge in technology enough to make you a senior? I would argue, no. You may be called a senior, but without a few other critical skills, you may very well be the one who isn’t quite there yet. The worst is you won’t even know why you aren’t promoted, given more responsibility, or whatever else you hope to get from a senior title.
Seniority based on Diversity
One of the aspects of seniority usually significant to your colleagues as well as your management is diversity. I’m not talking about your skin color or gender, I’m talking about diversity in thought and technology. As a senior engineer, you will be tasked with coming up with solutions to novel problems, and debugging issues in the production environment.
Both of these tasks require an understanding of more than just the narrow scope of your programming language. You also need to understand other related technologies. For example, if you are a Java developer you may be required to write or debug shell scripts, Python programs, Dockerfiles, or Kubernetes deployments. If you flat-out refuse to learn even a basic level of other programming languages and technologies, your seniority will be lacking.
Think of it as a T-shape. You have depth in a few areas, but you also have enough surface to cover a wider area. What this wider area encompasses depends entirely on your area of work. As a senior engineer, however, you should never have a condescending attitude towards other technologies or programming languages you have not even tried. Apart from the fact that it’s unprofessional, you are also using your attitude to mask your unwillingness to learn. Look in the mirror and ask yourself: honestly, why are you refusing to even take a look at something else? Ok, now stop lying to yourself and really think about it: is it fear of not being good enough? Is it laziness? Is it the time investment?
There are good reasons not to invest time into a particular technology, but as a senior, you can’t afford to not have any breadth.
Seniority based on Independence
Another aspect of seniority that’s held in high regard is independence. Or, more importantly, the ability to understand a problem and act on it.
Understanding a problem comes with two components: understanding the business aspect, and understanding the technology problem behind it. Less senior developers tend to focus solely on the technology problem and completely disregard the business aspect. Let me give you an example. Let’s say something is slow. A junior or medior member of the team may come up with solutions like optimizing X or Y, rewriting the code, or even just saying,
“This is shit, we need to rewrite it.” A senior team member might think about changing the application’s flow to entirely bypass the problematic piece of code.
The same thing goes for acting on immediate issues. While a junior or medior engineer may wait for someone to tell them to do something, a senior member will take the initiative, gather information on the issue, and at the very least, come up with a plan to solve it. If, for example, a customer writes an e-mail about a production breakage, and the management is not in, a senior engineer will take the initiative to solve it. It requires a senior engineer to think about the business need. If, for example, the breakage is severe, merely writing back an e-mail asking for details may not be enough. It may involve getting over any potential dislikes towards phone calls and actually calling the customer. If nothing else, this will make sure the customer feels supported, and lessens the team’s heat.
The specific cases of the required independence are heavily dependent on the business you are in, of course. In some cases, you will never face a customer, but you will have to deal with your peers who are looking to you for guidance. If you are not willing to pick up the gauntlet and deal with things on your own, you are definitely lacking in seniority.
Seniority based on Social Skills
Interacting with customers or your team members brings us to another important aspect: social skills. I know this may raise a few eyebrows, but yes, even the most brilliant engineers need a certain level of social skills. No one wants to work with a brilliant jerk. After all, in any reasonably sized project, no engineer works alone.
Don’t get me wrong; there is a lot to be said about putting one’s mind to a singular purpose. However, in a business setting, having a team member holding the senior title behave in a manner that demotivates the team is not exactly helpful in getting things done.
Lacking social skills may rear their head in several ways, ranging from not willing to help to giving useless feedback.
“This is shit code” won’t help anyone write better code, it will just create frustration.
I won’t go into all the ways social skills can be improved here, suffice to say a senior team member should behave as such towards others. This includes giving good feedback, encouraging personal development, and thinking about the team getting ahead instead of pleasing one’s ego. After all, the rank of senior is one of respect, but also responsibility.
Seniority is not a way to Management
So, what comes after senior? What happens when you have reached this title? Is that the end of your career? Is the next step being a manager and stopping to care about technology?
That is, of course, a possibility. You can become a manager if that is what you want to. However, being a good manager requires much more than just simply being promoted. It’s a learning path of techniques, but more importantly, the aforementioned social skills. How do you deal with difficult team members? How do you encourage everyone to be at their best? How do you stop yourself from micro-managing because you don’t know how to feel productive as a manager?
These are very relevant topics, and management is definitely not for everyone. After a good decade or so in your career, you may feel stuck. Thankfully, in recent years several larger companies have realized the value of keeping extremely experienced engineers on staff and have expanded the career ladder for engineers similar to management career opportunities.
These new ranks may include principal engineer, senior principal, and distinguished engineer. Not every company can afford to have this track as it comes with a price tag, but it is an opportunity to take on more significant challenges while still sticking to the technology you love. Ultimately, you are the only one to tell what makes you happy. I’m thankful we live in a world where we techies can do cool and exciting stuff in a vast array of fields, from research at university to worldwide companies, running your own startup, or going into education.
What do you think? Do these points on seniority match your experience? You can tell me on my Discord channel. ∎