"The tragedy is that as soon as you frame internal quality as tradable, you've lost." - Martin Fowler.
Tradable quality hypothesis
How many times have you heard or even said the following:
- "There is no time to invest in _______ now. It will slow us down" (fill in the blanks with a refactor, automated tests, CICD pipeline)
- "We will do it once we ____" - (fill in the blanks with complete the MVP, meet the next deadline)
The mindset behind those words is that quality can be traded-off for cost. Instead of investing in quality, you can use that effort to produce more value/features.
How can leaders influence this mindset?
In my role as a VP of Engineering, I interact with both stakeholders and Engineering Managers that attempt to do this trade-off between quality and something else. Here are some things I find helpful for influencing this mindset:
Discuss the impact of not investing in quality:
Educate your team and the stakeholders that investing in quality is in the interest of the customers.
The cost of not investing in quality is not only the cost of fixing the problem. You also need to consider the impact on the customer and your reputation as a software provider. Speed depends on stability, and good IT practices give you both.
Design for testability
Will your team be able to test what you're building?
If you don't consider testability from the design, you might end with a feature you don't know how to test. Add some slack time for refactoring and automated testing to your estimations. Consider if your changes require updates to the CICD pipeline.
Provide customers and stakeholders with a place to demo your changes
Enable your customers to test the functionality and provide feedback, even if it's not production-ready.
Show your stakeholders what the team is building and provide visibility of the progress. Explain that it's in their best interest not to put it in production until you support it. Remain firm on having time to deliver it with quality.
Making room for investing in quality
Leaders can influence their team and stakeholders to make room for quality by changing their mindset, but most of all, accept that quality is not a project that we can deliver. It is something that we must build on a day-to-day basis. I hope these tips can help you create the space for quality that your team needs.
Follow me on Twitter for more articles on leading software engineering teams. I publish twice a week.