Junior, Middle, and Senior Software Developers - who are they ?
I started wondering who is a Junior, Middle, or Senior Software Developer and what boundaries distinguish them before even writing my first line of code. Moreover, who is the mysterious blacksmith that decides which skill level stamp to put on you and how to make it "S" (Senior) as fast as possible? And I grateful I had this question in my mind before doing any career steps. Curious why?
The purpose of this article is to shed light on skill levels that ere exist in the Software Development world and provide an alternative perspective to it. Whether you are just starting or have been in development for a while, reading this will give you a better understanding of existing levels in this profession and give valuable food for thought. Enjoy the read!
Before I start
Since this topic is quite complex, before jumping to any details, I would like to add additional clarity to the existed terms and the terms I will use in this article.
Overall in this field, you may find such terms as Job Title, Job Role, Job Position, Job Grade, Job Level. These usually exist within the context of companies. But I will use the term Skills Level that exists outside of any companies' context.
You may also find level names like ENTRY-LEVEL, MID-LEVEL, EXPERIENCED, ADVANCED, HIGHLY ADVANCED. There are also many different title names that companies established for themselves. See the example below:
Source: www.levels.fyi
For simplicity's sake, I will use the words Junior, Middle, and Senior to describe Skills Levels.
When referring to Software Developer, I also mean a Software Engineer, Programmer, Coder, or any other possible terms or titles which describe someone who writes code and builds software systems that make the life of humanity a bit better.
Now when you wore lenses I am looking into all this through we a ready to move forward.
Why you should know and distinguish who is Junior, Middle, or Senior
When designing my path to becoming a Software Developer, I worked on defining skill levels in the domain as part of SMART. That gave me a good understanding of what skills I need to focus on to move as efficiently as possible from Junior to Senior level developer. What was more exciting is that it helped me to jump into the Middle positions right away. Hence I did not need to spend time at Internship or Junior positions. And that was invaluable.
While working as a Software Developer, I noticed that there are developers who have formal Senior titles but without the skills that show it. They were Junior or Middle-level developers in "Senior Pants"; Or how I call it - "Senior Junior Developer";
While working with the "Senior Junior Developer" colleagues, I tried to be extra cautious about what I was learning from them and how I was taking their advice. I also noticed that such people often suffering at the position they realized does not fit their skills. Such situations were noticeable in collaboration with them.
Let's summarize few things I mentioned above and add a few more cases where it is helpful to know who is who at the Skills Level scale:
- When you are just starting to pursue a Software Developer career, and you have the ambition to grow. Having a clear understanding of who is a Senior level developer will accelerate your path towards it.
- When you are on the job market, you want to define which position and income to target. Being able to do self-assessment and to define your Skills Level instead of solely delegating it to someone will serve you in searching for the right opportunity.
- When you work at an Intern, Junior, or Middle position, it is crucial to get through the fog of formal titles and see who is a real Senior Developer you want to follow. And who is "Senior Junior Developer" whose advice might not be as valuable.
- In case you are working as a Software Developer and even have a "Senior" word as part of your formal title. You may realize that you have never pondered about your actual Skills Level deliberately, and all your titles were assigned to you by someone else. A new perspective can help you reveal your actual skill level and open new growth opportunities. It might be a hard pill to swallow.
Okay, now you have a good idea of the benefits you can have when you can distinguish Junior, Middle, and Senior Developer. Now it is time to get knowledge on how to define and distinguish them.
The Skills Level stamps and who puts them on us
One of the fastest and most intuitive ways to define a developer's skill level is by the job title at the current position. And this was the first approach I took to distinguish who is who.
I was thinking: "Well, if this person has a job title Senior ... (whatever company call it after), then one should have Senior level skills"; Assuming that the companies are playing the role of the mysterious blacksmith and put the Skills Level stamp.
But after digging dipper, things became controversial, and the questions popped up:
- If a Developer was working on Junior level tasks 80% of the time during a 10years period, could one become a Senior skilled Developer?
- In case a Developer was working on a specific project for 10years where one is good enough to be a Senior. Could one be considered as a Senior when starting on a different project?
- Why Junior titled Developer with 2years of experience, who consistently delivers the same amount of value Senior titled Developer with 10years of experience does for a company could not be considered a Senior there?
- Imagine a Senior titled Developer with 10years of experience, was using similar solutions, approaches, and technics and did not deliberately do any additional self-education. Could one still be considered as Senior?
- How about personal skills. Can we consider someone as a Senior skilled Developer whose interpersonal skills and behavior discourage other team members from honest collaboration and knowledge sharing?
- How about a technology stack. If someone worked as a Senior Developer in web development, should one start as a Junior when moved to mobile development?
- If someone Senior in Apple, would one be considered to be a Senior in Google?
- ...
Answering all those questions could take another post, so I would not do it here (But curious, how would you answer these questions ?). But what they helped to realize is that the job titles companies assign are not a reliable indicator of actual Skills Level.
I also found that many companies create company-specific definitions for Junior, Middle, and Senior Developer roles. And in most cases, the terms were too formal and vague. Again, more questions than answers.
But where to get clear definitions of who is who? Glad you asked, I have something for you in the next chapter.
The Skills Levels simplified
First of all, a Software Developer is a problem solver. One takes a problem as input and writes the code that solves this problem. Each solution gives a specific business value. One also takes resources like time, money, human resources. Or even the health of the manager or client who overstressed because of missed deadlines. And will continue to take resources while a solution in place in the form of code maintenance and code changes by others.
Here is the principle I came up with: "The fewer resources developer consumed to provide a problem solution and continue to consume to maintain the solution, the higher skill level of the Software Developer"; Or else, it is a relationship between "giving and taking"; The principle will help you to get in and out between the fog of formal titles and distinguish who is who.
From the technical problem-solving perspective, I came up with a few more other definitions for each specific Skills Level. Let me share them with you.
Junior Developer
- The Junior Software Developer can solve most of the problems with guidance from more experienced colleagues.
Middle Developer
- The Middle Software Developer can solve most of the problems without or with minimum guidance.
Senior Developer
- The Senior Software Developer can solve almost any problem most optimally.
- The solution they provide minimizes the human resources required to change, extend and maintain it in the future.
- They also doubt that the problem actually should be solved to achieve the expected business value. And provide a better alternative.
- They tend to question the necessity to solve the problem if one sees the evidence that resources to solve this problem will be higher than the business value of the solved problem itself.
- One should also have human skills that allow him to efficiently collaborate with team members and be a mentor for the less experienced colleagues.
With all that in mind, I realized that by focusing on delivering more value as the developer, it is possible to accelerate the move from Junior to Senior faster. Hence, get a bit of control over your career. And even become the mysterious blacksmith who puts the desired Skill Level stamp on you.
The principle and these definitions have served me very well during my career to define steps I need to do to grow as a self-taught Software Developer. And I believe they will serve you as well.
Before you go
Before you continue the journey, here are a few things I would love you to take out from this post.
First, it is essential to clearly understand what stands for Junior, Middle, or Senior terms. It will give you an appropriate mental role model that will help you become the kind of developer you want to become and avoid becoming one you would not like to be.
Second, it is necessary to realize that you also decide where you are at a Skills Levels scale, and you also have control over it. Do not delegate this decision solely to external sources like companies or colleagues.
Third, by focusing on repeatedly delivering a tremendous amount of value, you can control where you are on the Skills Levels scale. Regardless of the formal definitions that exist across the industry. Set up your RAS system with that.
"We are what we repeatedly do" - Will Durant
There are currently no comments