Career progression is something that most of us care very deeply about.
All of our childhood and adolescence is about progressing and improving, all with the aim of setting ourselves up for the future. When that future begins, it’s natural to want to segment it with the same sorts of milestones and markers that were so rigidly laid out growing up. Sadly, once you leave the rigor of education, it can feel like you’ve been jettisoned into a mess of meetings, deadlines, and endless comparisons to those around you.
To counter this, we use titles like junior, mid-level, senior, principal, and staff to denote where we are in our career and what’s next for us. Each step comes with new expectations, new responsibilities, and more money, but, unless you are at a company with a well-defined career framework, you might be in the dark as to what exactly separates these levels. Is it merely technical skills, or are there other things involved that you need to work on?
First, let’s get a good understanding of what a junior developer is.
Looking to hire the best remote developers? Arc can help you:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)
Try Arc to hire top developers now →
What is a Junior Developer?
The only expectations employers should have of a junior developer is that they are willing and able to learn and have basic coding abilities.
A junior that comes in thinking they know it all and are the team’s new rock star will either need to adjust their attitude or find themselves out of a job pretty quickly. Likewise, employers who think a junior can be dumped in the deep end from day one need to readjust their expectations.
Beyond this foundation here is the summary of what would make someone a junior developer:
- Writes code with light supervision when the task is pre-defined and well scoped.
- Asks questions when stuck after some independent debugging and/or researching.
- Learns from their mistakes and doesn’t repeat them.
- Understands they are part of a team and communicates well with them.
- Is keen to learn and improve.
- Understands that there is more to software development than just writing code.
With the above in mind, we can now start to extrapolate how someone goes from junior to mid. Let’s break this down into three sections: technical skills, personal skills, and team skills.
Read More: How To Use Thought Leadership To Level Up Your Developer Career
Technical Skills
This is where most juniors will want to focus their time and efforts given that writing code and building systems are the core activities of being a developer.
Initially, your improvements will come through time spent writing code, making mistakes, and learning from more senior developers. How technically strong you are will depend on your route into the field, of course.
If you wrote your first line of code when you were 12 and have coded daily ever since, there is a strong chance your skills are already into the mid or even senior level. However, if you are fresh off a boot camp and have less than a year at the keyboard under your fingertips, things will look very different.
In both cases though, if you are in your first developer job, then there will be things to learn. I had been writing code for 12 years before I had my first full-time developer job. While I knew how to debug asynchronous race conditions and modify an .htaccess
file to get rid of .php
, I had no idea how to handle version control in a team or anything about DevOps.
Before moving on to being a mid-level developer, you should be able to fill most or all of this list of technical requirements:
- Confidently make large changes to the codebase without breaking other functionality.
- Able to merge and/or rebase their work in coordination with other team members.
- Able to do a full deployment of the app or system that they work on to a production or production-like environment.
- Confident adding tests to validate their code.
- Independently track down and resolves most bugs in their code but also asks for help where required.
- Cognizant of error handling and non-happy path situations.
- Able to debug issues in unfamiliar parts of the codebase and work with others to solve issues.
Read More: What’s the Difference Between a Lead Developer vs Senior Developer?
Personal Skills
This is the first part of the set of skills often described as soft skills, a term I really dislike, but one that we are stuck with. The reason I dislike calling them soft skills is that it diminishes their importance by implying that the technical skills are “hard” and therefore more valuable. In reality, these soft skills are the other side of the same coin and equally important to your career progression.
You can write the best code in the world, but if the following skills are a shambles, it’s unlikely you will be promoted in line with your abilities:
- Write appropriate documentation alongside the features you make and bugs you fix. “Appropriate” here indicates that there is a middle ground between too little and too much that depends on the needs of you organization, But, it’s for you to determine what appropriate means.
- Able to manage your time effectively and balance writing code with attending meetings, team obligations, and professional development.
- Understand how to prioritize incoming work and requests so that urgent things get done in a timely manner, but important things don’t get delayed indefinitely.
- Able to estimate the size, complexity, or time of a task (well, at least no worse at this than any of the rest of us are, estimation is not easy!).
- Identify when work is too large and break it down into smaller units to maintain a consistent delivery of value to the codebase.
Read More: How to Network: a Guide for Remote Software Developers & Engineers
Team Skills
You could say that software is the largest thing we still make by hand. If code were made with physical materials, then a blog would be a house, a web app a town, and Facebook or Amazon a city or country.
With this in mind, it’s no surprise that the vast majority of software is written by teams rather than individuals. As a result, a lot of time and effort is spent coordinating the work of developers and helping them to be effective. A great developer is one who recognizes this and embraces methods and approaches for helping their team deliver faster, even at the expense of their own individual delivery.
The skills you need to develop here are:
- Mentoring – Part of working as a team means raising everyone’s abilities and not just focusing on your own deliverables. Being able to communicate with and develop other juniors that join after you is a great way to develop yourself as a software developer. Even if you’re not actively mentoring, it’s worth remembering that we influence people with our actions all the time, and you never know who is watching. Someone is always learning from you.
- Talking to users and/or clients – Many companies will shield developers from users or clients and use a product owner as that liaison instead. Whatever the structure they have, start to make sure you can communicate the relevant technical details in a way that these important, non-technical stakeholders can understand.
- Helping other teammates – This goes hand in hand with mentoring but is more specific. If someone asks you for help, then offer it freely. Don’t make them feel like you’re rushed, and stay until they say they don’t need you anymore. Being available and approachable is a key part of a good senior developer, so practice it from the start of your career. No matter how early-stage you are, there will be someone you can help.
- Code reviews – This is a big part of working as a team. While you might not feel you are qualified to review someone else’s code, nothing is stopping you from reading through open pull requests and seeing how other, more senior members of your team solve problems. By the time you are considered a mid-level software developer, you will need to be confident conducting code reviews. So, again, start early!
Read More: 5 Ways to Stand Out & Get Noticed in Your Current Development Job
You can also explore HireAI to skip the line and:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+ with no manual screening
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)
Try HireAI and hire top developers now →
Leveling Up
We’ve covered the main skill requirements that we believe differentiate a junior developer from a mid-level developer.
However, there is another side to this story, and that is how you use the terms junior or mid-level. It’s all well and good laying out a dry list of requirements, but we need to consider the scenarios in which we care the most about them and how to confidently deploy them.
Some would say that you are a junior for a set number of years and then you are mid. But, as we have already discussed, someone with 10 years of solo coding might come in only needing to develop the technical aspects of working on a team and could do that in six months.
Others may have had a product or testing background previously, and, so really it’s only the raw technical coding skills they need to develop. Do they really have to serve two years before they make that change? Of course not. Everyone progresses at their own speed. It’s a balance between how you feel and how your employer perceives you.
Let’s look at some different perspectives so we can coordinate.
The employer’s perspective
Cynically, we could argue that an employer would want to keep you pigeonholed as a junior for as long as possible. Juniors are cheap, after all!
However, if you realize you’ve been held back for a year longer than necessary, you will understandably start looking for another employer who values your skills properly. It behooves your employer to make sure you are appropriately compensated and recognized for the value you bring to the team.
They invest in you over time, and as your skills grow so does the value of that investment. A good employer should be reviewing you against an internal framework on a regular basis to give you direction and keep you motivated. Ideally, you should be promoted when covering most of the requirements. If you need to cover all of them, they have left it too late.
Read More: 10 Ways to Improve Leadership Skills (& Advance Your Developer Career)
The market’s perspective
Hiring a software developer is notoriously difficult. There is a vast array of technical concepts you need to know, and, as we go through this digital revolution, there is a huge demand for developers of all calibers.
With that in mind, it is understandable that in times of plenty the market may take a different view on what is required to be called a mid-level developer. It might be simply that you have had one developer job, that you’ve passed your probationary period with an employer, or that you went to a top-tier school or coding boot camp.
Another key component in the market is recruiters. Many see them as a bit of a necessary evil. However, I see them as an amazing ally for developers. They know the market much better than you, they speak to thousands of developers a year, and they communicate with hundreds of companies. Thus, they are well placed to determine your most accurate title.
Recruiters get paid based on a percentage of whatever salary you get offered. Meaning, it’s in their best interest to get you the highest salary possible. If they can get you an offer as a mid-level developer with an annual salary of $85,000 rather than $60,000 as a junior, you can bet they’ll represent you as a mid-level software developer!
Your perspective
Finally, we need to consider how you perceive your abilities. Imposter syndrome is very real, especially in the early stages of your software engineering or development career, and you need to factor this in when reviewing yourself.
No one knows everything or is good at everything, but that doesn’t mean you haven’t left the realm of the junior developer. If you are confident writing code independently as part of a team and have examples to show that you meet many, or all, of the points above, then it doesn’t matter how long you have been developing, for you are probably a mid-level developer.
If you are in any doubt, then speak to other developers who you consider to be around your skill level, those who you perceive as slightly ahead or slightly behind you. Ask them where they think you are and where they consider themselves to be.
Frame the conversation as one about general career progression and how hard it is to benchmark. Keep things abstract if topics like this make you feel uncomfortable. If you reference the framework we’ve laid out here and use that as a starting point, you’ll soon gain new insight.
Read More: Ready to Take On a Senior Role or Leadership Position as a Developer?
Summary
To circle back to the start, we care about the differences between junior, mid-level, and senior developers because it denotes where we are in our career, how much we are paid, and the type of work and responsibility given to us.
In the early stages around the junior and mid interface, I wouldn’t worry too much about accurately labeling yourself. You probably don’t have the required experience to identify where you fall on the continuum, and, ultimately, the market is going to determine which roles it thinks you’re ready for based on your experience.
Don’t lie on your resume! Give accurate answers to questions without inflating your abilities. Read all software developer job descriptions with a discerning eye on how you measure up, and you will soon find out where you are on the spectrum.
A junior developer is still a developer, after all. If someone asks why you don’t have junior prefixed on your LinkedIn headline or job title given your short work history, simply say the boundary is blurry and you’re open to conversations about roles at any appropriate level. Don’t filter yourself out of roles, but rather let companies do that based on their own appraisal mechanisms.
Well, we hope you found this post helpful! If you have any questions, feedback, or other advice for making the move from junior developer to mid-level developer in your title, leave us a comment below. Thanks for reading, and best of luck with your career progression!
Read More: When You Can Call Yourself a “Senior” Software Developer
You can also explore HireAI to skip the line and:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+ with no manual screening
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)