4 questions to ask in interviews to assess codebase health
Tags: codequality, interview, programming, career
Published: 2022-01-13 23:33:34

We all love good, quality code – and if we don’t, we should. Code that is consistent, clean, and easy to understand is essential to a healthy codebase. A healthy codebase is one that’s optimized for testability, maintainability, and scalability. It helps programmers code more efficiently and makes engineering teams more productive. 

The health of a company’s codebase plays a large role in employee satisfaction. Unfortunately, the pressure to quickly add new features imposes harsh deadlines on programmers. The trade-off is a decrease in code quality. This is the reality of the software development world. **We can expect a level of imperfection in any company’s codebase, but the important thing is how responsible a company is about resolving or preventing the damage that results from pushing rapid development.**

When interviewing to find a developer job you love, there are questions you can ask to get a sense of their codebase health. By asking these questions, you can feel more confident about your interest in the company and the long-term sustainability of your work there.
 
**We’ll cover**:
* [Nursing healthy code and managing technical debt](#technicaldebt)
* [4 questions to ask in interviews to assess codebase health](#assesscodebasehealth)
* [Wrapping up and next steps](#nextsteps)


<a name="technicaldebt"></a>

## Nursing healthy code and managing technical debt
To help foster a healthy codebase, companies need to have a regular cadence and strategy with which they manage technical debt. **Technical debt** refers to the time, money, and resources that are lost in exchange for hasty development. This can consist of code debt, design debt, and documentation debt. By asking their engineering teams to churn out functionalities at a rapid pace, any company can expect to incur technical debt. What’s important is that companies take measures to prevent and pay it off.

A developer-centric company must prioritize managing technical debt, not only for their financial gain but for **employee satisfaction and retention** as well. An unhealthy codebase is a thorn in the side of many programmers and software engineers. In a 2021 [study by Stepsize](https://www.stepsize.com/how-codebase-health-impacts-hiring-and-retention-2021-report), 51% of developers confirmed that they had left or considered leaving a company because of technical debt. 

<a name="assesscodebasehealth"></a>
## 4 questions to ask in interviews to assess codebase health
There are questions you can ask in your interview to get a sense for the health of the company’s codebase. Many companies have room for improvement, and these answers don’t have to make or break your decision. While they may not have all the best practices in place, many interviewers would be impressed to have a candidate who is concerned and knowledgeable about matters concerning technical debt.
> **Note**: Be mindful of your tone when asking questions. **Come from a place of curiosity rather than judgment**. You never know where a company or startup is in their growth.
 
### 1. What is your strategy for dealing with technical debt?
This is a high-level question that can give you a sense for how robust a company’s strategy is for managing technical debt. At the very least, your interviewer's answer shouldn’t deny that their company incurs technical debt. At most, it should show that that leadership balances adding new features with repaying technical debt. We hope you’ll hear a well-rounded strategy ranging from code reviews to communication pipelines and incentivizing programmers to clear debt. 

### 2. Do you conduct code reviews? 
Despite being a best practice for maintaining code quality and scalability, not every company conducts code reviews. We hope you’ll hear a *yes*. Code reviews reduce bugs, facilitate optimization, and helps peers share knowledge and skills.

If they conduct code reviews, you can ask additional questions:
* **What does your approach look like?** Some do formal line-by-line reviews, others do informal “check-in buddies,” while others leverage Git to do a code review for all pull requests. It’s worth clarifying if they review code for all projects, as some only prioritize the most “critical” ones.
* **How are priorities determined?** Ideally, the code review’s priorities are informed by a knowledge of the technical debt they’ve recently incurred. The best code reviews will prioritize code quality and coding best practices such as commenting, rather than simple adherence to company or team coding standards. 
* **Who is reviewing the code?** Gold stars can be given if code is given a most objective review by peers who aren’t involved in the project. If not, that’s okay too. Again, we have an ideal world, and a realistic one.

<br>

### 3. Do you have CI/CD pipelines?
Not all companies have CI/CD pipelines, but the most successful software development companies do. In a perfect world, CI/CD pipelines should be consistent across all projects and tech stacks. CI/CD pipelines helps teams ship new features faster, increases visibility and collaboration, and helps ensure continuous reliability. A CI/CD pipeline automates CI/CD, which frees up developers' time to focus on, well, development.

### 4. How much time is spent refactoring code? 
Refactoring code reduces code complexity and supports the maintainability, security, and scalability of an application. Refactoring is an ongoing part of the development process. In addition to writing and testing, refactoring is likely to take  a good amount of your time. Ask this question to get a sense for how frequently it's done and how it's built into the development process.

<a name="nextsteps"></a>
## Wrapping up and next steps
The better the code health of a company, the more productive you and your team members will be. How a company balances adding new features with managing technical debt will be crucial to fostering a healthy codebase. It allows for effective long-term development – and happier and more productive engineering teams. 

To help developers level up in their careers, we’ve gathered all our interview prep resources in one place at [**Interview Prep with Educative**](https://learn.educative.io/interview-prep?eid=5082902844932096). You can find company-specific interview guides, coding interview tutorials, advice from industry experts and more. 

*Happy learning!*

<br>
### Continue learning about interview prep on Educative
* [Why a strategic coding interview prep plan matters](https://www.educative.io/blog/strategic-interview-prep?eid=5082902844932096)
* [A guide to the technical program manager interview](https://www.educative.io/blog/technical-program-manager-interview-guide?eid=5082902844932096)
* [8 job search tips to get a developer job you love](https://www.educative.io/blog/get-a-developer-job-you-love?eid=5082902844932096)

### Start a discussion
What questions would you ask to get a feel for a company's codebase health? How have your employers managed technical debt? Let us know in the comments below!