In my last post, I covered my recent efforts at software programming after a self-imposed hiatus. As a follow up, I wanted to talk about the development cycle. More specifically, the software development lifecycle. The most traditional development method is the Waterfall method. As it’s name implies, the lifecycle flows across phases with the result being a finished product that is tested to satisfy design requirements.

Deployment methods I have used include Waterfall and Agile among others and hybrids of these. As shown in the image, there is a feedback loop with testing that can introduce new/revised requirements. That starts the cycle over again, from the beginning. From my experience, there are two phases that seem to get short shrift. One or both of these typically get compressed due to project constraints and are sacrificed in order to stay on schedule. Those phases include Design and Test. What I have also found is that if you accelerate either of those, the project will reap a short term benefit. But, ultimately the project will not stay on track. Instead, the project will re-visit one or both phases, which causes waste, and any gains in time expected are then not delivered.

As a programmer, I admit I have squeezed several phases. My advice – whatever process you employ, don’t cheat it. Having a solid design ensures requirements are addressed and adequate testing provides confidence for success at launch. Whatever method you use, adhere to the diligence in each phase and then keep progressing forward. Each phase should be sized according to the project goal. Changes to existing code base can be minimal and have little design impact. Great! Testing should then focus on regression impact to ensure everything is working with new changes integrated cleanly.