Software engineering career path: what, why and how
Software engineering career path: what, why and how
The software engineering career path is among the most popular paths in modern organizations. We do a dive deep to understand more about it, how it works and how you can use the path to build your career.
Today we will focus on the software engineer career path itself: beside the classic information you can find everywhere, we will try to understand how this path is changing in the world of SaaS and in a now evolving AI world, where ChatGPT and similar tools like Copilot are somehow changing (and boosting) this career path.
Table of Contents
The typical software engineer career path
The image above represents pretty much what 90% of software engineering career paths look like inside organizations. We should start here and explain, first and foremost, how people become software engineers nowadays.
How do you become a software engineer
The software engineering career path typically starts with junior software engineers who have at least 2 years of experience building software in a team of engineers. From there, software engineers can progress to mid-level positions and eventually to senior positions. The skills, experience, and responsibilities required for each role vary, with senior software engineers often responsible for technical leadership, architecture, and mentoring junior engineers.
Nowadays you have multiple ways to become a software engineer:
Computer Science/Computer Engineering degree
This is still the classic path. It might become less popular over time, but as a software engineer I think there is value in following a proper Computer Science path. It doesn’t matter if you do that online or in person in a university, the point is considering a stronger preparation than other more practical courses that focus on just programming.
Self-preparation with online courses – starting with computer science courses and/or using
You have plenty of online resources: Codecademy, Cloud Academy, Pluralsight, edX, Udemy, Freecodecamp and many others. As I said, I would still consider starting from a classic computer science foundation and then move into specific aspects of programming.
YouTube has hundreds of courses on most topics you will need to learn. Quality varies, but hopefully that’s something we can help you at Anthropos sooner than later.
Using online courses + finding a junior software role
Probably the best option if you want to quickly improve in your software engineering role. You still need to have some basics, but as soon as you feel confident enough (and can work on simple applications), my suggestion is to apply for a junior software engineering role (or even internship) and learn on the job.
Working with more experienced people – while studying – will accelerate your growth by 2x and will expose you to a series of learnings that would take a lot more time without external help.
How standard is the software engineering path across companies?
In my experience the software engineering path is pretty standard across medium and large orgs: we have applied a similar path in our previous company with 250 people and about 60 engineers.
There are companies more focused on the technical aspects of the path (e.g. you are not Senior unless you have this technical aspect in your experience) and others that take into account the ability of a software engineer to add value to the product development team and to the overall engineering/product organization.
If you are about to join a new company as a software engineer, I would absolutely ask to see their career path and a list/concept/description of each step – take into account that large orgs usually have it, startups that are still Series A / B might not have implemented it, so don’t look at that as a potential red flag. You might be the right person to help implementing it.
The classic steps of a software engineering career path
Many of you reading this article will expect something like Frontend Engineer, Backend Engineer etc etc. This is not where I will start for today’s article, mostly because they wouldn’t apply to most companies and they would be too specific to give you a good initial orientation.
Here are the different steps in the software engineering career path – it’s a good way to understand what you should expect at each level. As you become senior, you will see your role shifting a lot more into team management, stakeholder management and product. It’s actually a good thing, and I will tell you more about that after this.
Junior Software Engineer: Junior software engineers typically have at least 2 years of experience building software in a team of engineers. They work under the guidance of mid-level and senior software engineers to build and maintain software applications. Junior software engineers are expected to have a solid understanding of programming fundamentals and be able to work effectively in a team environment.
Mid-level Software Engineer: Mid-level software engineers have more experience building software and are capable of working on more complex systems. They are often responsible for designing and implementing software features and may also be involved in mentoring junior engineers. Mid-level software engineers are expected to have strong programming skills, as well as experience with software design patterns and best practices.
Senior Software Engineer: Senior software engineers have significant experience building software and often take on leadership roles within the team. They are responsible for designing and implementing complex software systems and architectures, as well as mentoring junior and mid-level engineers. Senior software engineers are expected to have strong technical and leadership skills, as well as experience with software design principles and best practices.
Tech Lead: Tech leads are responsible for leading a team of engineers on a project or product. They work closely with product managers and other stakeholders to ensure that software development is aligned with business goals. Tech leads are expected to have strong technical and leadership skills, as well as experience with agile development methodologies. This is probably the most difficult step in this career path: as a lead you will spend a considerable amount of time negotiating and managing people/projects and it might take some time fo you to get used to it, especially if you are still dreaming of something more hands-on.
Engineering Manager: Engineering managers are responsible for overseeing a team of engineers and managing their day-to-day activities. They work closely with other managers and stakeholders to ensure that software development is aligned with business goals. Engineering managers are expected to have strong leadership and communication skills, as well as experience with project management methodologies.
Architect: Architects are senior technical roles that involve focusing on technical strategy and design for a product or project. They work closely with other stakeholders to develop software architectures and designs that meet business goals. Architects are expected to have strong technical skills and experience with software design patterns and best practices. This is the role where you will find amazing engineers that have simply decided not to focus too much on management and stakeholders, but mostly on strong technical solutions. It doesn’t mean you will not work with stakeholders, but it’s usually a role where you are not expected to lead and manage people.
Can software engineers move to other career paths?
The reality is that software engineers that want to transition in another role and departments can take advantage of their analytical skills and use them to solve problems that require or don’t require specific programming skills.
I’ve seen software engineers becoming amazing contributors in almost every part of the organization, almost always taking advantage of their technical skills to change how a department / process works.
You should consider how AI and ChatGPT will change this career path
New technologies like SaaS and AI are changing the software engineering field, with AI-based tools like ChatGPT and Copilot becoming more prevalent. I couldn’t finish this article without answering a question that is becoming more and more common in this field “will AI replace software engineers?” – the answer is “not really and not anytime soon”, but I think it’s worth noticing that it will definitely change this role and its career path.
ChatGPT, in particular, has the potential to revolutionize the way software engineers work, by reducing the time and effort required to write high-quality code. I have friends that are using it to write tests, to fix some parts of their code or simply to speed up their work generating classes and code that otherwise would take a lot of time (without adding particular value to their code).
I will write a separate article about AI and software engineering, ideally talking to a few people that are already experiencing the advantages (and changes) that it introduces.
Do you know what’s your career path? Happy to receive comments and questions on your experience but also on how you can use this path to improve your career.
Artificial Intelligence (AI) is revolutionizing industries and transforming the way we live and work. As more organizations incorporate AI into their operations, the demand for skilled AI engineers continues to grow. I've spent a considerable amount of time in the cloud industry and what's happening right now reminds me a lot of what we saw ...
In my experience, I've seen several people do their best to find a new job just to then slow down and really struggle to make a decision when they finally got an offer. Sometimes they did not know what they really wanted, sometimes it took them a while to understand that no job is perfect ...
Maybe there was an era long ago when we could tell people our job roles and they knew exactly what we did for a living. But that is long gone. Now, you may find that you need to focus more on understanding your real skills. It can be a good thing or a bad thing ...