Software developers and product managers have always needed to pick two out of three Software Metrics – Time, Quality & Features while delivering a software product. Now we see that, companies are under much more pressure to deliver high quality working software in shorter time-frames and also meet budget targets. Few companies have adopted Agile to improve their release cycles. But is this enough? Here are a details of a Large MNC which has been able to achieve all the three metrics of releasing a software product on Time, on Budget and will the required features.
In the waterfall model, the software product development were divided into stages. These were Design, Code, Test and Maintain. Each stage would come after the completion of the previous stage. Now most of the companies are moving towards Agile, including very large enterprise companies. They are moving from a 12-18 month release cycle to a single month release cycle. They have also been able to improve the quality of their software products in the process. To be able to shorten the release cycles from years to just a few months. How have they been able to do this, is it just agile, there is more. One of the key reasons for even very large enterprise companies being able to shorten their release cycles and deliver high quality code is, make small teams accountable to be able to deliver working code each month and forming Lean Teams with testers part of the development team.(borrowed from Lean Manufacturing techniques by Toyota). This resulted in making the team responsible for delivering high quality working software each month and shorting the release cycles. Even getting the Testers into the small eight member teams and giving flexibility to the team members in the roles they play has resulted in much more productive team, where the software testers are in sync with the development teams. The summary of how these larger enterprise are accelerating their release cycles is
- Forming 8-10 Member Product Teams, responsible for delivering working software each month
- Getting the Software Testers into the development team, removing the designation of Software Testers. So they would contribute to Automation, UI testing and even learning development and contributing to the code base.
- Having a single point of responsibility for the team. i.e. one Product Manager responsible for many such lean teams
- Holding the teams responsible for the quality of the working software.
This resulted in the organization, going from 12-18 month release cycle to 3 month release cycles, with sprints in each month. The organization would pick features to implement from a large list compiled by talking to customers as what is important for the customer in that release. Now what is driving most companies to move from large release cycles to shorter release cycles with quality built into the products? well, the answer is customers. Customers are driving the changes when they are not ready to wait for for 18 months to get their features and by the time a company delivers the product, it is already out dated. This results in the situation where, companies are running faster and faster just to stay in the same place. The larger trend is to shorten release cycles, move from water fall model to Agile development and integrating the testing and development teams to build quality into the product, rather than test the quality after development. Do share your thoughts on the on going changes in your own companies and industries.