Updated: Oct 22, 2019
Prior to developing at ISS, every project that I had been part of included a stabilization phase. The stabilization phase is a period of time, allocated at the end of a project, that focuses on fixing bugs, and addressing other technical debt. Debt is characterized as accumulated work that has been deferred due to priorities and deadlines. Nonetheless, in order for a product to be considered market ready, all debt must be completed.
In my professional opinion, solely dedicating the final stages of development to stabilization produces poor code. I believe it is more advantageous to test and debug at the end of every sprint (a planned amount of work that is expected to be completed in a certain time frame). This method allows the development team to avoid massive amounts of debt and, ultimately, produce higher quality projects. If it is not done this way, and, stabilization is exclusively left for the end of the project, the resulting time and resources required to find and fix bugs can have an adverse effect on the overall quality of the product. Through a series of chain-of-events, you may be left with unsatisfied customers.
To optimize efficiency, and, ensure the best quality for each product, stabilization needs to be integrated within the development cycle.
Here at ISS, our development team debugs right away. This limits the amount of debt that is accumulated during the development cycle. We use the best development practices to ensure that our code is secure, scalable, and maintainable. This diligence continues to help us produce quality our customers love.