The IT industry currently has a non-standardised convention to denote the skill levels of software developers. Even the term ‘software developer’ does not say anything about a person’s skill set. Some software developers write code only, whereas others create and design the complete software system, and in a few cases the software developer will even be architecting the system on a cloud-based provider like AWS. But that is not all, there is still the whole junior/mid/senior levels to make sense of. And it is us, the developers, who assign, or at least push for these titles, ourselves.
I must confess that I called myself ‘senior’, many years ago, when I was not near a senior level. This is easy enough to do, as you need new experiences in the form of either new employment or colleagues that are better than you to realise your weaknesses. You need exposure to become senior.
I was once approached for a mid-senior position. To this day I am unsure what exactly that meant.
Is it necessary or accurate to call yourself a junior, senior, or mid-level developer? Potentially it is. Many years ago I met a guy who wrote the software that allowed an armoured vehicle to fire its cannon while driving at full speed and still hit its target. He just called himself a programmer. Nothing fancy. His CV and experience did his talking for him. He did not feel the need for any other title. He was rock solid and he knew that. Contrast this to some of the people I have interviewed over the last ten years, and now and then it is in stark contrast where the title ‘senior’ is applied using a time frame as the only factor to determine seniority. If you have done the same thing for ten years in a limited environment, it may not necessarily make you any more technically skilled than someone with three years of similar experience. In fact, you may be outperformed on a technical level by someone with three years of experience who comes from an environment where he or she had access to really good mentors and really good engineering principles.
A really good mentor accelerates a person’s development a lot faster than most people will learn on their own. If you can, get yourself a mentor.
In the absence of an environment to gauge your skills against, how would you know what to call yourself if you do not even know your shortcomings? How do we discern between individuals where both have four years of experience, and both call themselves senior, but the one has only been fixing bugs for the last three years, and the other one has been building microservices and was responsible for the full SDLC of eight microservices for the last two years using different database types? Of these two in my example, which one sounds the most senior to you?
My initial feeling is that it is the employees who must decide what they view as a senior, mid and junior developer. Companies must have a clear view of what they want in a junior, mid or senior developer, and then we, the developers, must apply for a role based on that criteria. Sure, this boils down to once you get that senior position, you are senior developer. But what if you want to go on a learning experience, and you find a midlevel position where you will accelerate your learning, but suddenly will be classified as a mid level developer? Coupling too much value to the prefix of ‘senior’ may cause you to lose out on opportunities.
Not calling ourselves senior will even allow us to move from a senior position, ‘down’ to what is considered a ‘mid-level’ position if that mid-level position offers us a greater learning opportunity, without losing the ‘senior’ label. Most people won’t ‘downgrade’ themselves that much because of how that label ‘mid’ can impact their next job role.
What do I want to see in a senior developer? If you call yourself a senior developer you must be able to contribute to solutions relating to the scalability of the codebase, and the performance of the system. Senior developers must be able to contribute to the overall design of a system on a high level and see flaws early on. They do not need to know the programming language better than a (what would be considered)mid-level developer, but they should know how to use it in a better and more elegant way. Senior developers should be mentors to the rest of the team. And of course, great database design is imperative.
I am still under the impression that we should reconsider the junior, mid and senior labels we give ourselves. It feels like looking into a mirror and judging your own looks on a scale of 1 – 10, and we all know that it is the interview process that will correctly or incorrectly decide whether you are suitable for a role.
I have started to ditch the senior label I was so proud of once. I started calling myself the contentious title of software engineer. Why? I believe the title engineer encompasses all of the skills and disciplines needed to build scalable software using best practices, deploy the system and run it in scalable environments, giving attention to the security and safety of the system. It includes the complete system from inception to delivery, from abstraction to concrete implementation. I also see an engineer as someone who applies ethical coding and can adapt to new technologies relatively easily, and either know how to select different systems for different needs, or at least how to research solutions and then decide on the best solution. These claims I make can easily be questioned in an interview. Instead of coupling myself to a level of seniority, I couple the acknowledgement of certain knowledge and skills, and of course, the acknowledgement that there is always more to learn and more skills to sharpen.
Then again, I am sure that 2025 me will think that 2021 me sucked at least a little. That would be a great thing, because it would mean that I have learned.
Leave a Reply