DEV Community

Cover image for Another reason why developers leave their jobs: to escape from a bad codebase
Alex Omeyer
Alex Omeyer

Posted on

Another reason why developers leave their jobs: to escape from a bad codebase

Recently, we have surveyed 200+ Software Engineers from different industries to learn how codebase health impacts Engineering hiring and retention.

In this article, I’ll share some of the key stats from the survey, why investing in a codebase is crucial for businesses, and questions you can ask on the interview as an Engineer to learn about the company’s codebase health.

You can download the full report here.

Here is what we found out:

  • 51% of Engineers left or considered leaving a job because of technical debt.
  • 82% believe that lack of proper development practices affects their job satisfaction.
  • 62% consider code quality as an important factor when choosing a new job.
  • For 21% of engineers, excessive amounts of technical debt have been the number one reason for changing a job.
  • Both junior and senior developers equally consider codebase health to be an important factor when choosing a new job.

Today, hiring and retaining developers is one of the biggest challenges for tech companies. And while recruiters, hiring managers, and leaders are focusing on attracting new tech talent, they might be ignoring one of the biggest reasons they are losing them in the first place — codebase health.

Technical debt leads to employee churn

More than half of the Engineers (51%) have left a company or considered leaving a company due to large amounts of technical debt, and 20% of Engineers say that technical debt is the primary reason for them to leave the company.

As discovered in The State of Technical Debt 2021 Report, technical debt has a huge impact on developer team morale, causing frustration and hindering innovation.

Given how much it costs to hire new engineers, companies need to keep their staff turnover as low as possible. And the best way to do that is to carefully manage technical debt to maintain a healthy codebase.

What do Engineers care about when looking for a new role?

Salary, technical challenges, and remote work opportunities are the 3 most important factors that Engineers pay attention to during their interview process.

Compensation and workplace flexibility is at the top of the list for engineers when they’re looking for a new job. But 62% admit that they also consider code quality as an important factor.

Image description

Code health or code quality refers to the characteristics of the code, such as clean, consistent, easy to understand, testable. Engineers often feel pressure to sacrifice code quality to meet deadlines and ship features fast which leads to frustration and decreases team morale.

"Code quality definition is very unique for each engineering team and product. However, every engineer wants to write code that is scalable, performant, reliable, and most of all easy to maintain for future engineers,” says Shamma Pathan, Senior Software Engineer at LinkedIn.

10 questions engineers ask to get a gauge of your codebase health

Unlike salary and remote work opportunities, understanding the state of the codebase and software development practices can be challenging.

Engineers suggest asking the following questions during the interview process:

• What are the complexity metrics, defect metrics, and coding standards of the codebase?
What does the workflow before deployment look like?
• Do all projects for each tech stack have consistent and identical CI/CD pipelines?
• How is refactoring built into your development process?
What does the code review process look like?
• Do you dedicate time to fixing technical debt?
• How do you balance building new functionality and resolving technical debt?
• How much time does the team spend on refactoring?
• What processes are set up to ensure the company uses all the modern/latest stack?

Job satisfaction

When it comes to the job itself, 82% of Engineers admit that lack of proper development practices plays a crucial role in their job satisfaction.

“The mess slows developers down and sometimes even prevents them from doing their actual job. Technical debt can make it difficult to be proud of the work you’re doing, as a lot of time is lost dealing with annoying obstacles,” says Maarten Dalmijn is the head of product at Rodeo.

Image description

The right way to fight technical debt is to talk about codebase-related issues across the whole company so that everyone can understand why it’s vital to manage it carefully.

Discussion (7)

Collapse
rammina profile image
Rammina

This was a great read!

It's sad to see companies who don't place much emphasis on creating good documentation. There are also those who failed to see the importance of having robust testing in place.

They try so hard to pump out projects but waste so much time bug fixing/firefighting.

Collapse
lgrammel profile image
Lars Grammel • Edited on

Thanks for the great study! One of my main challenges as an engineering leader was getting product management and other company functions closer to the customer to understand this. In my experience, they mostly care about feature output and customer-perceived quality and are not aware of the hiring/onboarding cost and effort. This blog post will help with that in the future!

Collapse
cubikca profile image
Brian Richardson

Certainly it is great to join an organization with a clean, logical codebase. You can also take a messy, chaotic codebase and make it a good one. That's a long battle, but a worthwhile one. It's probably your best opportunity to work for an organization that has a good codebase.

I've worked in the industry long enough to realize the business drivers that take away from refactoring and documentation are frequently growth drivers with very tight deadlines. Telling the business that they can't grow because the code is getting messy is pretty much a non-starter. But, you can improve things incrementally, even in large legacy codebases.

It takes personal investment as well as organizational investment to get there. Personal, because you will have to take initiative and get support from management yourself. Organizational, because you can't do it yourself. It's good to point out the lack of organizational support, but don't forget to take initiative yourself! :)

Collapse
endymion1818 profile image
Ben Read • Edited on

Great article, this subject is of great interest among businesses today. Although I'm quite concerned that when I signed up I didn't get a download of the report but a request for me to call you.

If you haven't completed the report I'd like to know where you're getting that data.

Collapse
skolev profile image
Svetoslav Kolev

Great article! 🔝

Collapse
cathalmacdonnacha profile image
Cathal Mac Donnacha 🚀

Great insights 👍

Collapse
maddy profile image
Maddy

Interesting article, thanks! 😊