Short Answer – "NO" But WHY? Product development is complex where we deal with many unknowns, and learning happens throughout the Product Lifecycle. When one says learning, this learning can be on the business side and the technical side. Over time, developers evolve on their technical skills and practices, which requires refactoring for the Products. If not done or partially done, or delayed refactoring leads to Technical Debt and hence the legacy code. During the initial stages of Product Development, the team sometimes takes the conscious choices to knock the quality for early time to market.
These choices require constant refactoring once the Product takes its position in the market, but these usually get ignored due to the constant features additions to the Product. As a result of this, the Product becomes unstable or unreliable. Once the Product starts to mature, the code it carries becomes legacy code. The technology evolves, and this also leads to technical debt, because Products do carry the burden of old technology. The evolving Definition of DONE of the Product also leads to technical debt. The Product evolves by learning from the market, and the DoD evolves to purvey these learnings. Consider the DoD started to evolve Sprint after Sprint, and then all the previous Sprint deliverables lead to the technical debt, which requires refactoring.
Adding new functionality or features to the Product and ignoring quality standards practices could lead to technical debt. For a Product to keep its market presence or existence requires innovation and considerably new functionality. The Product, when it starts to go through this cycle, leads to the technical debt in the Product. It is now evident that one cannot get rid of the technical debt, which creates a long-term impact on the Product's total cost of ownership with high maintenance and development costs.
As a Product Owner, it is a point of consideration to control the technical debt as early as possible. To lower the total cost of ownership, the Product Owner must allow the team to refactor the Product code from time to time. In the upcoming articles, I will explain how to measure and control the technical debt.