Software Engineers retention: career paths, skills matrix and common mistakes
Software engineers are always in high-demand – no matter what the economy says. How do you retain them in your company? We have written a guide to walk you through actionable things you can start implementing today in your team and company.
By Stefano Bellasio
11 min read
Introduction: how will this guide benefit me?
Years ago when I started my first digital business I did not know how difficult it would have been to build a strong team of software engineers and most importantly, I had no clue of how difficult it would have been to work on software developers retention.
Almost 20 years have passed since and I have learned a lot about managing software engineers turnover and retention, building a few more businesses and in particular scaling Cloud Academy to 250+ people globally with more than 70 technical people. Most importantly I’ve seen the role of software engineers becoming probably the most resilient ones in our society: no matter the status of our economy, companies are always willing to hire and promote software engineers in a world where technology is a must for every single company.
There is also something that we couldn’t see just 10 years ago: software engineers are everywhere, mostly because every company needs to build and adapt to a digital-first world. From automotive to retail, every single industry had to invest in hiring and building software development teams. With AI being a new trend and the cloud being already a consolidated trend in the enterprise, I think we are just at the beginning of a trend that will see the request for software engineers skyrocket in the next 10 years.
While hiring software engineers is difficult, retaining them in your organization – given the high demand in the market, is likely an order of magnitude more difficult. The reason why I decided to write this guide at Anthropos is actually because I’ve experienced the importance of having a strategy and investing time and money in retaining your software engineers. Without retention – and due to the nature of building digital products – is truly difficult to build digital solutions that can be competitive and can accelerate your business.
This guide will tell you what to do and where to start to build solid programs to retain software engineers. If you are new to management and you are in the difficult position of building a new team of software engineers and retaining them, this guide will give you the knowledge you need to understand how to track data, how often to communicate with your people, and what do to both to prevent turnover in your software engineering and how to deal with things when people are leaving or you don’t know what to do.
Contents
1
2
3
Salary is often not the main reason while there are easy issues to spot and fix.
4
The way you hire your software engineers has a strong impact on their retention.
5
Every manager had to face this while managing engineers – let’s discuss what are your options.
6
Your tech stack is a key point in retaining software engineers. Learn why and how to think about it.
7
An introduction to career paths and why implementing them is the best investment to retain your software engineers.
8
An additional tool to let software engineers know exactly what are the skills required in your organization.
9
A playbook to partner with your HR team to retain your software engineers. A fundamental aspect of every retention strategy.
10
From skills mapping to the definition of career paths, an overview of how we help companies retain their software talent.
11
CEOs can influence the retention of their software teams. This is what you should focus on.
Throughout the guide I suggest approaches that you can immediately apply simply relying on your engineering team or involving also your HR leadership. While you might see results in a few months, everything you can do to improve retention for your software engineers will show results in 9-12 months in my experience. Don’t be impatient and just think that everyone and every company goes through this!
Needless to say, this is what we help companies with at Anthropos – this guide doesn’t talk about our solution, but if you want to learn more about our platform, you can book a demo with us here.
1. Who is this guide for and how it will help you retain software engineers as a manager, tech lead or entrepreneur
I am writing this guide for the entrepreneurs, managers and executives who find themselves in the difficult position of building a solid strategy for software developers retention: compared to other guides online, this wants to be as direct and practicable as possible so that you can walk away with a good idea of what you want to try with your team of developers.
While my main target for this guide are CTOs, VPs, Directors of Engineering and Product leaders. More broadly, this is written for technical managers that find themselves managing small or large teams of software engineers.
I am also adding a lot of context for HR and L&D professionals that find themselves helping and collaborating with the technical leadership. In my experience having a strong collaboration between HR and Engineering/Product leadership is the first step to reduce your turnover.
2. The really key things you need to know to retain software engineers (hint: software won’t help)
Not sharing enough information and not being clear on expectations are the two most common mistakes managers make while managing software engineers.
In the long run this is often also the reason why their teams experience turnover and don’t understand the reason why that happens. Salaries are usually the culprit that managers like to use as an excuse of why they lose people, but that’s rarely the main reason why software developers cannot be retained. While salaries that are too far from the market rate do create retention issues, the reality is that an environment where software engineers are constantly in the loop (with a clear vision from the company, and clear and well-explained reasons of why things are changing or need to change) are usually the ones that have the best retention rates for software engineers. More than anything else, software engineers stay in companies that have clear growth trajectories and can give them real learning opportunities.
When I talk about clarity I refer mostly to the vision of what you are building and the potential challenges of it. Every team, no matter how small or big, goes through difficult moments due to changing priorities, struggling businesses or difficult customers: teams that keep performing under these conditions are the ones where everyone knows why that’s happening and what’s the plan to overcome it.
Building software is complex and requires several iterations – and that’s why setting expectations with software engineers is something as important as clarity. Expectations go from clear requirements and customer needs to the ability to communicate what is the timeline to work on projects and why that matters. Setting expectations is key for every team but in my experience, it’s critical for software teams: they constantly need to make decisions on how to build features while balancing needs and timelines and not having clear expectations is usually a big source of frustration. It’s the reason why so many software projects never succeed.
The last important thing to keep in mind is that software and tools don’t solve for software developers retention. I’ve seen managers trying to fix the retention issue by buying more software for their engineers (with the conviction that they were lacking specific tools or technologies to be happy and yet Confluence from JIRA or an Enterprise version of Github did not solve that) or simply building new processes and new layers (a typical example are scrum ceremonies or additional processes that try to “protect” the engineers from other parts of the company). While both things can help, they contribute little to the overall ability to retain software developers inside a company. And your software engineers will not be influenced by those types of investments in their decision to leave or stay.
Great engineers are usually motivated by doing great work with great people: clarity and well-set expectations are the two most important things you can work on to build a thriving environment where they want to stay and keep building.
In-depth articles
3. Why do software engineers leave companies?
Should we start with this?
I think so. If you don’t understand why developers leave your company and your software engineers retention is not good enough, you will never succeed or it will take years before you figure it out.
This chart comes from a survey done in 2021 (source is here) which was definitely a different time for developers and for the entire economy. Looking at the reasons, though, I am pretty aligned with them and I think they are still very valid today.
Look at how important it is for developers to work on new technologies and to have clear growth opportunities: one or the other companies are usually making mistakes in these areas. Everyone knows that if your underpay it will be difficult to retain software developers, but not many companies are investing heavily in designing career paths for their people or are thinking about modernizing their stack to avoid losing people.
Always from the same survey it’s clear that learning and development are two big areas here. If you want to learn a lot more about these topics you should spend 30 min reading some Reddit channels like CSCareerquestions and you will find a lot of these topics constantly being discussed and addressed in the community.
Again, you can find a lot more data online but it’s key that you understand why your software developers are leaving the company.
4. Reducing software engineers turnover rate: why it all starts with the hiring process
When you are losing software engineers in your team it’s usually too late and everything you do will require at least a few months to start producing results. Software engineers, compared to other functions, tend to value even more their colleagues and that’s why too many mistakes in the same team sometimes lead to an exodus of software engineers in a matter of just a few months. Remember what I told you initially: great software engineers want to work with great people and once they see them leaving they wonder if that’s time for them too to consider something new.
I’ve lived that on my skin a few years back while Cloud Academy was going through a rough period where we lost more software engineers than we could afford to – we tried a few things but nothing fixed things in the short term and it took us a lot more time to solve the issue.
I am telling you this because after that we did something that we ignored up until then: we reviewed our hiring process. It’s not something I would suggest if you are experiencing turnover in your team right now, it’s more something to work on to avoid having such a shock in the future for your company.
This is what we changed in our hiring process and what ultimately allowed us to have a stronger and better retention rate for our software engineers and avoid hiring mistakes.
a. Definition of your engineering culture and expectations
It turned out that the people we were losing were simply not fully aligned with our culture and our vision for the product. Did we skip that part in their onboarding process or we simply confused them in the hiring process? I don’t know, but we simply put a strong focus on having our HR team setting clear expectations on the job and sharing as much as possible on our culture and values.
Ownership and getting things done were critical aspects of our engineering culture: explaining that openly in interviews was attracting the right candidates but was also helping us in saving precious time with people that were not ok with those values or the way we implemented them in our organization.
Several managers and companies will say what the software developer wants to hear and will then see that person losing motivation and commitment after a few months.
b. Present and share career paths with your candidates
This is probably one of the most important things we have done and the merit went to our VP of Engineer who decided to build a clear career path for the entire organization: titles, skills, responsibilities, and expectations were clear for everyone in our team. Most importantly, they were shared also with the candidates we were interviewing.
They were not only happy but also surprised by the fact we were sending them a clear career path. It helped our HR team find strong candidates and recruit them even when our offer was not the highest they received.
The reason why that worked is simple: showing them a well-detailed career path demonstrated not only that we were dead serious about their growth but also that we had a clear and meritocratic approach to it. Software engineers loved the idea of joining a place where it’s clear what you can do and where you don’t have to constantly wonder what might be next.
c. Let your candidates talk to other departments
Sometimes we had a product manager interviewing software engineers and some other times a leader from another unit, almost always technical. It helped us validate candidates from different perspectives (e.g. Product people were focusing on assessing product thinking and collaboration as critical skills for engineers) and at the same time it gave our candidates another point of view on our company and how we operated as a team.
By the time you as a candidate were meeting with someone who was not an engineer, it was already clear that our culture was about working together across multiple teams and functions. That’s not the case in several companies and is something that software engineers like to see: if the company is introducing more people in the process it means that software (and software engineers) are important for the company.
5. Our software engineers want to leave. What now? Should we offer more money?
Let’s take a break here and focus on something I’ve heard many times from managers and other entrepreneurs. When your software engineers quit – in my experience – things cannot be fixed anymore and money is just an excuse that might work for just a few more months. This is true for every employee in your organization.
I have a simple principle: never counteroffer unless the person you are losing is extremely critical for the team. Even in that case, it should be an exception and not the normal approach you keep and I highly recommend you explain to the team why you decided to act that way.
If a software engineer has already decided to leave, that’s rarely because of money (assuming you pay market rates) and offering more money will simply delay your problem if he decides to stay. It will also create a major problem in your organization: everyone now knows that they can simply try to quit to get a raise. Everything you have done to define career paths becomes useless.
I’ve made this mistake and I might be doing that again but every single time it creates more issues than it solves.
If someone in your software engineering team is quitting, in 90% of the situations it’s too late to save him. Focus on understanding why they are leaving and how they got there. Ask them questions, set up exit interviews with your HR team and actively brainstorm the reasons they give.
A lot of engineers (and to be honest, a lot of employees in general) will simply tell you that they are leaving because of a higher salary but they loved things in your organization and there was nothing else that did not work for them. They are lying – there is always something else beside the economics involved. Set up a proper exit interview process and ask your HR team to help you find those reasons, they know how to do it and are particularly good at it.
6. Software developers retention and technology stack
Attracting and retaining software developers in environments that run on old technologies and best practices is always challenging. You will meet several software engineers that turn down job offers because of the technology stack and this is quite understandable for a role that thrives on staying constantly up to date with the market and the latest technologies.
In 2012 when we started working with cloud computing it was difficult to find software engineers that had experience working with Amazon Web Services or other cloud solutions, but just 5-6 later that was normal and companies that were not adopting modern DevOps and cloud technologies were definitely struggling to attract software developers.
There are not many solutions here, investing in modern technologies is a must if you intend to attract (and retain) the best software developers: if you find yourself in a situation where you need to upgrade your technology stack and invest in modernizing it, that’s a great opportunity to retain your current developers involving them in the process as much as you can.
7. Software engineers career paths: growth and constant development are great retainers
Software engineers want to invest and stay in companies that will make them grow and advance with their skills and experience. After years of working with digital technologies and tech teams, I think this is probably the most important aspect if you want to retain, attract and motivate the best software developers. It’s right up there together with the ability to build great products and using modern technologies.
Big salaries without any growth opportunities and a lack of development will always push people to leave – often just after a year or so. I’ve seen this often when we have lost great software developers attracted by companies with deep pockets but little opportunity to grow and learn new things.
A lot of the software engineers that you hire in their 20s and 30s will likely want to move to roles that are less focused on writing code and more on product, strategy, and management over time. This is a key issue for all the companies that nowadays have a young cohort of software developers and want to retain them and something that you can solve with well-structured career paths.
I briefly talked about the importance of defining career paths, let’s dive deeper into them and if you are interested in learning more I wrote a blog specifically about the career path for software developers.
a. Where to start with career paths
Defining career paths might be more difficult for very large organizations. For simplicity let’s say you have more or less 100 people in your software engineering organization. I am also considering roles like DevOps Engineer, QA Engineers, Product Managers and other roles that are not strictly engineering.
These are the steps you should follow:
Map your roles / job titles
This is simply about counting how many unique roles you have in the org. Let’s say 15 roles (e.g. Junior Software Engineer, Sr. Software Engineer, Tech Lead Engineer and so on). Each company has different roles and strategies on how to map them.
Define the most common skills for each role
Now for each role you should define and map the core skills you need – both technical and soft skills. For instance, a tech lead will need to have a lot more soft skills listed in the role. In my experience, these should be a comprehensive list that is easy to understand and explain to your people and something you can easily refer to what’s expected of them in their daily job.
Define the relationship between roles and how you move to the next one
One of the advantages of career paths is the ability to let people know what the future could look like and let them evolve and study to go into a specific career path. That’s why it’s important to have options. For software engineers, it might be about staying into a technical role or getting into management. Even better, if you collaborate with Product or other departments you might consider offering them even opportunities in other technical roles across the organization. Software engineers are a great fit for several tech roles in sales or customer success, more about leaving software engineer career path here.
Select internal and external content that is relevant to each role
The last step is about building a proper list of content for each role. The idea is that your people will be able to prepare for specific roles autonomously so each path should have an ordered list of content related to your organization or coming from external sources (YouTube, Linkedin Learning, Pluralsight, and so on).
The most important thing to keep in mind is to make your paths as real as possible for people in your organization: they should have 30-50% of the content coming from your documentation and be focused on your culture and business. That’s key to letting people feel like they are learning how to grow inside your organization and are not just acquiring skills that are too generic.
Set a salary range for each role
This is key in my experience and will strongly contribute to building trust with your software engineers and ensure retention. For each role, there should be a visible and public salary range.
b. How to present career paths to existing employees and candidates
For your existing software engineers the best way is to have your VP of Engineering or Engineering manager present it and go into the vision and strategy of it. This is always well received by the team and it creates a great sense of trust with the company.
Candidates that are applying for your software engineering roles will love to learn about it even before the interview so I would mention it in the job description and I would send a copy/access to it to everyone you decide to interview. Your talent acquisition team is usually the one explaining it during the first interview.
b. How to present career paths to existing employees and candidates
This is a common question that I am sure your leadership will bring up at some point. The logic is simple: if you tell people that they can get promoted into new roles if they have the skills and experience for it, they will then pretend that.
The reality is that career paths are never a way to automate promotions. First, consulting companies are the only ones that have that type of approach (and even there, it’s not automatic), second because the career path is not something you just need to assign and wait for people to be ready, you should use it to create a culture of growth, trust and meritocracy. Once assigned and explained the managers need to spend time talking about it in their 1to1s and set the right expectations with software engineers.
Your software engineers know that a career path is not an automatic promotion pass but it’s critical for them to know exactly what will be expected in the future and what they can start preparing for – with clarity on skills and content they can use to get there.
Implementing a career path at my previous company has been one of the most successful things to improve our retention. It saves us tens of thousands of dollars per year spent replacing engineers with recruiting fees and time involved and most importantly it allowed us to establish a very transparent engineering culture where people would know that joining our company was also about very clear opportunities for the future.
d. How to measure the success of your career paths
Two parameters: turnover and number of people promoted in new roles. These are the two most important ones and it will take 6-12 months to see them in your software engineering organization. Turnover should drop while you should start having the first people promoted into a new role – ideally one that you were looking for.
A third one you might want to consider is the number of successful hires. This is more difficult to track but when we implemented paths we have also seen a better conversion rate in our hiring with more offers getting accepted.
8. Adopting a skills matrix to be more meritocratic and set the right guidelines
As your team expands you should consider not only mapping skills for each job role for your software engineers but also assign a specific competency level required for that skills. This is about describing, for each role in the career path, the list of skills with their level (e.g. Python might be a must for Sr. Software Engineers with a level of at least 3 over 5).
Adding this level of detail allows the team to know exactly what will be considered enough for a specific role and how they compare to that. It creates more meritocracy in the way people get promoted and prepare for their next step but it also gives them an understanding of where they are in terms of competencies.
This is a nice template in Google Sheets that has been built by CircleCI and has a list of skills and seniorities. There are several different templates and approaches to building a skill matrix, so don’t look for a single way of doing it and try to create something that works for your organization.
9. How to build a great relationship with your HR and talent team to retain engineers
Partnering with your HR team is usually a great way to discover why your engineers are not staying in your organization and build a proper strategy to solve for it. Sometimes engineering managers and technical leaders tend to act as lone wolves and avoid open collaboration with their HR counterparts. That’s a mistake.
I made that mistake in my early career treating HR as a separate team that had to be involved only in specific situations (and mostly when things were going south with our people).
How HR professionals can help you retain software engineers:
- Build a better relationship with software engineers – as a manager – can’t. And due to that they will discover things that you completely ignore. This is usually something to consider while things are going well. Have your HR business partner spend time with the team from time to time and build a relationship of trust.
- Keep a pulse on market trends and data: they talk to thousands of people and candidates and can spot things that you are not aware of.
- Establish common goals: you both care about retaining your people and build the best culture possible for your engineering team. Start with that and define clear goals and KPIs you can review monthly.
- Evangelize your vision and strategy: back at the beginning of this guide we talked about the importance of setting a clear vision and set of expectations while sharing information with your software engineers. HR can be a strong partner and help you amplify your message. The starting point is involving them in your meetings and be as transparent and clear as you want to be with your software team.
- Career paths definition: this is a must. Of course they can help build it (and most likely they will have more experience than you) but they can also help your organization explain and evangelize the career paths across the entire employee life cycle, starting with the hiring process.
10. How Anthropos can help your organization with software engineers retention
Anthropos is a comprehensive solution to map and develop your entire organization of software engineers with a modern approach that gives you constant trends and data and to them a platform that advances their skills and careers.
When you invite your software engineers into Anthropos we create a profile for each single person and give them access. With that we also automatically map all their skills and help you visualize them in our Workforce Intelligence tool: it automatically categorizes skills on the most common job roles and helps you identify the most critical collaborators in your team.
After that, you can start using Anthropos to create a full set of career paths for your software engineers, based on your job structure and the skills you need. You don’t need to reinvent the wheel with Anthropos: you can build every single path with your proprietary content or connect courses and content you have in other libraries (like Udemy or Pluralsight). Everything is connected by skills so it’s easy to quickly see who among your engineers is progressing and who needs help. And they don’t need to start every time from scratch, our systems know what content they will have to learn and what is not needed because they already have the right skills for it.
This system helps you have a clear understanding of your skills and abilities in the software engineering organization but it also helps give it a clear career path that they can navigate, get assigned to (if you like), and start learning with.
If you want to see how Anthropos can help you, just schedule a demo with us.
11. Bonus section: how to talk to your software engineers as a CEO and/or entrepreneur
A few weeks ago I was talking to a CEO who wanted to understand why their software engineers were not always open with him and had challenges openly sharing what they did not like inside the company. I’ve been there a few times in the past and I could easily relate to what he was experiencing.
I immediately told him he had to try different ways to build a relationship with their software engineers and be aware of how people looked at him as the CEO of their company. I believe that the CEO – or the company owner – should spend time to share with developers the vision and the company strategy and let other people in the management deal with more delicate conversations (hint: your engineering managers, HR leaders etc.). Nobody feels good about telling their CEO what doesn’t work and why, especially if it involves them. When you force developers to do that they simply share less. Even in small companies with a strong and open culture, it’s rare for CEOs to play such a role.
Your objective is to align your team around the same vision and strategy: explain to them what you envision for the future, and share as much information as possible about your company goals and why they matter. It’s something that only the CEO can do authentically and powerfully and it will have a strong impact on your team of software engineers.
Authenticity is your secret power. Don’t shy away from sharing not only your vision but also the challenges you see to get there and how solving them will enable the business to advance. Your software engineers want to know where the company (and the product) is headed, as much as any other role in the company.