Skip to main content

What can prevent or reduce product instability?

In addition to practices already mentioned in "What can cause product instability?", the following practices can help Scrum Teams reduce the risk of their product becoming unstable or unusable:

  • Invest in a product architecture that localizes changes. Modular architectures are like bulkheads in a ship: they prevent problems in one area of the product from affecting other areas of the product. This isolation of concerns reduces product instability.
  • Design for replaceability. Sometimes a Scrum Team will need to change decisions based on empirical feedback. Anticipating this by using interfaces and abstraction allows implementation details to be changed without having the changes ripple throughout the code. Keeping track of architectural decisions is also important to help a Scrum Team understand what might need to change when a decision needs to be reversed.
  • Invest in automated regression testing and continuous delivery practices. Thorough regression testing that is performed every time a line of code is changed helps a Scrum Team prevent defects from creeping into their product.
  • Refactor code continuously to improve quality and reduce technical debt. Refactoring is like re-packing a suitcase or re-organizing a garage or shed until things fit neatly. It is a technique for improving the quality of code without changing its external behavior. When a Scrum Team sets aside some time every Sprint to refactor their code, they can reduce technical debt and improve the quality and maintainability of the code, as well as improving the readability and maintainability of the code.
  • Employ pair programming to spread knowledge and to improve quality. Pair programming is a technique in which two Developers work together on the same code. Typically, one Developer is more experienced and the other is learning. The technique can help increase cross-functional skills across the team and improve the overall dispersion of knowledge about the code base. In addition to improving the code by expanding the perspectives about the problem solving approaches the team uses, having more people look at the code can reduce errors by catching them at the point where they are inserted into the code.
  • Use static analysis to catch errors in the code. Static analysis is a technique that scans the code to detect common coding errors, including missing documentation, poorly structured code, and code that violates defined standards and guidelines. It can be a useful way for a Scrum Team to better understand the quality of the work they are producing.



Blog Post
A lack of defined engineering practices, standards and tooling is an often observed problem in software development, regardless of whether Scrum is used. It reflects the appalling lack of attention to technical excellence in our software development industry. In a context of Scrum, it is even more e...
5 from 1 rating


Blog Post
Join Jeff and Mike as they unravel the complexities of spikes, transitioning from uncertainty to wisdom in Agile, and the essential mindset shift needed for teams to “get things done”.
0 from 0 ratings


IntroductionThe primary purpose of Continuous Delivery is to enable organizations to deliver any type of changes such as new features, configuration changes, bug fixes and experiments into production or in the hands of the users in a safe, rapid and sustainable way through the automation and streaml...
3.2 from 3 ratings



What did you think about this content?

Included In

Learning Series
Scrum Teams deliver value to customers in product Increments. Product stability is vital as each Increment builds on the last.