As with all careers, there’s a hierarchy of levels in software engineering. As we know, it’s based on experience, technical knowledge, and leadership skills. Now if you are reading this you are probably not super clear on where these lines exist. For example, junior vs senior developer or entry-level vs junior developer. It’s a bit of a blur, especially when companies have their own sets of criteria for judging these developer types.
As you progress in your career you’re going to get to a point where you’ll want to jump to the next stage. Each stage comes with its own expectations, skill requirements, and salary. I’m going to try my best to break down each level; entry, junior, senior, and tech lead based on the criteria I just mentioned. Now, this isn’t gospel, but it should hopefully guide you in the right direction and towards the correct growth path. So let’s jump in!
1. How to become an entry-level/junior engineer
I’m going to come right out and say it, this is probably going to be the hardest stage in your career! Getting your foot in the door isn’t an easy task for everyone (me included). We call come from different educational backgrounds and even countries, which influence our job opportunities. For example, coming out of a Bootcamp isn’t going to be the same as a full university degree with an internship.
It’ll be daunting at first but don’t worry we’ve all been there and with some grit and persistence, you’ll land that first job! If you’re at this stage and struggling, lower your expectations a tad and try for an internship or startup — put your skills to practice as soon as you can and start building that portfolio.
What to expect
For the most part, you’ll be relying heavily on your team and mentor to guide you and help you grow. There might be a bit of imposter syndrome but try your best to put it aside, your company and team don’t expect you to know everything. They’re probably aware that much of your time will be spent learning and asking questions.
A lot of entry-level engineers’ responsibilities surround learning the technical environment they will be working in and learning the processes of an engineering team. When you’re up to speed, you’ll be expected to enter a codebase and make additions (minor) to it without tons of issues.
Expect to learn the intricacies of the project you are joining, while using the fundamentals you’ve learned to get this role. You’ll be spending your time, reading requirements, understanding the codebase you’re working in, and creating these changes within a specific time frame.
Throughout iterations of features and bug fixes that you complete, you will learn how the software development life cycle operates and how your project operates. Software development lifecycles tend to be quite similar between companies. Most companies typically follow some sort of request —> design —> business fit —> and implementation structure to their projects.
You will likely be amongst other engineers, some more experienced and tenured than you. These engineers, typically the more senior ones, will be responsible for helping you learn and being a contributing member of the team. Treat this as an opportunity to learn skills from them and help you advance in your career.
Take a deep breath… remember entry-level engineers will not be expected to “hit the ground running”, a team will expect to mentor you and help you grow. You’ve probably heard this a million times but seriously, don’t be afraid to ask questions. This can’t be stressed enough, everyone senior was once a junior, and letting yourself aimlessly struggle on problems will not help you grow. Timebox your problems and when you feel stuck, reach out for help.
Education and skills
As an entry-level engineer, you’ll probably be fresh out of college or a boot camp graduate. In this day and age where degrees tend to not always be an accurate measure of someone’s ability, being an entry-level engineer really boils down to your skill set and the amount of ACTUAL experience you have.
Entry-level engineers should understand the fundamentals of the technology they are working with, alongside the environment they are in. A high-level understanding is a big part here, you should know a little about a lot of different parts of the software stack you are joining, enough to have an idea about where you need to learn more, the knowns and unknowns.
Additionally, you should have an understanding of how git works as a version control system, and bonus points if you understand branching strategies. Finally, if you have experience making pull requests/merge requests this is great because you will be making a lot of them as a member of a team.
Junior Engineer salary
You’ve probably already searched on Glassdoor or LinkedIn, which will give you a fairly accurate range based on your location. From my experience, you’ll be looking at anything between $65-75k, but again, starting salary will depend on education, experience, and skills. Also, keep in mind salaries are higher in the United States compared to Europe or elsewhere. This can also vary greatly by the technology you are working on, so be sure to do more specific research for your area, company, and technology.
2. How to become a mid-level engineer
Mid-level engineers sit between junior and senior developer titles. As a mid-level engineer, you’re starting to get the hang of things. You won’t require much hand-holding or guidance, and you’ll have experience across multiple projects in a professional setting.
It’s hard to put a number to it, but a mid-level developer most likely has a couple of years of experience and hours and hours of coding under their belt. You might have even changed companies and worked on a different codebase.
What to expect
Mid-level engineers are engineers who’ve worked for a few years or may have gone into their second engineering role. A company’s going to expect that you have a good understanding of the software development life cycle and are able to take on work without much direction a majority of the time. It’s totally acceptable to ask context questions around your work and clarify the work, however, a mid-level engineer will tend not to struggle with the technical implementation of a feature.
A mid-level engineer’s scope of knowledge will be highly centred around the applications they support and the entire flow within their applications. These levels of engineers should be able to receive a feature of higher complexity and complete it in a reasonable amount of time.
A mid-level engineer should also be able to implement completely new features from scratch and work through the integration of these features with the rest of the codebase. Additionally, they will have the experience in development to know when certain features should be broken up into more consumable pieces, as well as a high-level idea of how to approach a technical problem.
A great way to jump from junior to mid-level engineer is to simply spend a good amount of time on the same project, learning how it works, and having experience in many different aspects of the codebase. Exposure to different parts of the codebase and lots of heads downtime within the code will help you accelerate your development career. Code code code.
Education and Skills
Take the same type of education as an entry-level, but add more in-depth knowledge behind the technologies you are working on. For example, if you work in React, you may now be much better at understanding the advanced concepts behind React and begin to understand how to break down a UI element into many different parts to create, bonus points if you can make them reusable for other engineers on your app.
Additionally, you should start keeping up to date on industry trends and emerging technologies here. The tech industry is constantly evolving and improving and there are more and more solutions to yesterday's problems.
Mid-level Engineer salary
Again, I’m repeating myself, but the salary range is going to vary from company to company, and location to location. Let’s say a mid-level engineer has a minimum of 2-3 years of experience, you’ll be able to aim for some around $80-90k. Remember though, salary expectations at Facebook are going to be way different from a startup. But you’ll probably find a compromise through equity or additional benefits.
3. How to become a senior engineer
This is the next big step, becoming a senior engineer! It’s definitely a very exciting title to step into and a huge benefit towards autonomy and market value (every company wants a skilled senior dev so get ready for an onslaught of LinkedIn DMs).
The senior title shows expertise, a proven track record of success across multiple projects, and the leadership skills to mentor junior and mid-level developers. In this role, you’ll need to be a jack of all trades and an expert beginner. So be prepared to be flexible and agile when it comes to your day-to-day. You’ll be leading and mentoring, tasked with solving complex software issues and acting as the source of all knowledge (no pressure).
What to expect
As a senior engineer, you will begin to work with leads/managers to design new systems and estimate the work needed in the overall project. Senior engineers should also be capable of presenting multiple solutions, understanding the benefits and drawbacks of each, and finally, be capable of articulating which solution is the best for the team. Senior engineers can also tend to spend less time actually programming and more time mentoring, designing, and leading.
A senior engineer tends to be a bridge between project managers, engineers, and management. By knowing the application, the architecture it resides in, and the approximate complexity of upcoming work, a senior engineer can help keep a project on track and provide support where needed.
This sometimes leads a senior engineer to be more of a supportive role to the rest of the team, being able to fill gaps where needed and resolve blockers for other engineers. Additionally, senior engineers will have experience and foresight to see where team members may run into roadblocks and proactively remove them. A team’s trust for a senior is important, as other team members will look to them to solve the problems they aren’t sure how to solve and effectively teach the team during that process.
Outside of the team, a senior engineer will also find opportunities for improvement within the organisation or business. They may begin to support shared code libraries for other teams to consume and support these codebases. They seek to find opportunities to remove duplicated work, remove tedious work, and increase the efficiency of teams. Perhaps certain teams are re-inventing the wheel and there is an opportunity for shared code amongst teams to make processes easier. These opportunities can sometimes be vague with high-level requirements, but a senior engineer should be able to take these vague situations and narrow them down to solutions without guidance.
Education and skills
Due to the supportive nature of this role, soft skills become highly important. Knowing how to communicate with fellow teammates, respectfully discuss challenging topics, and interject to prevent conflict. By building relationships and soft skills within a team, a senior engineer can use these skills to help engineers who may be struggling with an issue.
On the technical side, a senior engineer will be well versed in the technologies in use on a project as well as the big picture architecture for a project. Design patterns, architectures, and performance-enhancing tactics for applications should begin to become second nature. It’s hard to get more specific than that without knowing your specialty, but I think you get the idea!
Senior Engineer salary
So at the top of the developer ladder, you’ll have the most opportunities and be able to secure a really comfortable salary. In the US a salary for a senior engineer should start around $100-110k, but again, this will depend on your city and company.
4. How to become a tech lead
The next logical step after becoming a senior engineer is into management. Management obviously isn’t for everyone, but if this is where you are at, let’s find out what you can expect.
You’ll be moving from an individual contributor into the people and project side of the business. The amount of coding for this type of role tends to be much smaller since being a manager you’ll rely on your team to build what the project requires.
What to expect
Leaving the individual contributor (IC) side of the business isn’t for everyone. Some senior engineers never make the jump to management because of the change of pace and style of work. Managers and leads will begin to rely more on their interpersonal connections, relationships, business skills, and previous experience to help them lead a team towards success on different projects.
You’ll need to lead your team and equally important, advocate for your team. Your job will be to keep your team on track towards the tangible delivery of items. This can mean providing your team with the resources they need to create new features or removing roadblocks that prevent them from completing their tasks.
This type of environment means as a manager you also need good knowledge about how your company’s business model so know who to talk to when certain issues arise. A strong manager should be capable of knowing who to contact and rely on to solve specific issues for a team.
In addition to the project side, a manager is also a role where you are responsible for helping your team members feel satisfied in their role and giving them opportunities to grow. You will help them achieve the goals they want, guide them through difficult situations within their team, and maybe even handle interpersonal conflicts between team members. This also means you’ll need to handle situations with team members who are underperforming and help them get back on track. Expect to utilise soft skills heavily in a managerial role.
Education and skills
Depending on the organisation, management may require degrees in management or experience in management to achieve a role like this. More often than not, senior engineers can move into management roles because of their understanding of a company and their track record of success. Regardless of a company's requirements for a managerial role, soft skills are incredibly important.
Understanding people, building relationships with people, calm and collected mannerisms during team conflicts, and difficult conversations tend to be the norm here. Continued learning on industry trends and continued practice of soft skills can help a manager succeed.
Tech lead salary
Just like every other salary range...it varies :) There tends to be an overlap here between Senior Engineers and Managers, however, a starting salary of around $110k and $120k is expected.
Becoming a software developer has many different phases. It starts in a very heads-down environment, developing individual debugging and development skills by learning from others. This leads to a more individual contributor role within a team, where they can be trusted to deliver a feature, of varying complexity, within the project timelines.
The track record of proven execution leads a developer to mentor others, find areas for efficiency, and lead teams towards success. In great teams, software developers help each other learn and grow and challenge each other in a supportive way. Teams that help each other grow, execute great products, and continue to innovate in the fast-paced and ever-changing world of software development.