In the Previous Chapter
The previous chapter’s focus was selecting the right project management model by evaluating the needs against different factors such as budget, release frequency, client base, client involvement, timeline, market geography, skillset, and team size among other variables.
These factors help decide the most effective way to implement and manage product development, release schedule, and maintenance activities.
In This Chapter
The software industry is exceptionally versatile and volatile, and it must adapt and upgrade to the latest developments and inventions that happen in unpredictable and rapid periods of time. This volatility affects both the way the project is developed and how it is delivered to the market.
There are several different tried and tested project implementation and management models currently practiced in the software industry. While some have overlapping characteristics, a few are distinctive and unique.
Let us focus on two major, widely adapted, and distinct project models: Waterfall and Agile.
Waterfall Project Model
As the name says, if steps followed in the Waterfall model are mapped out on paper, they resemble water flowing from one step to the next in a sequential manner – there is no path for going back a step.
In this model, different phases in the Software Development Life Cycle ideation, design, development, qualification, release, and maintenance happen sequentially with little or no scope for changes in any previously completed phase. A change will be expensive and impractical.
Both the software development and quality assurance teams are typically stalled in waiting mode until design and development, respectively, are finalized. The client does not have a role to play and can only experience the product after it is delivered.
The Waterfall model expects that each previous phase is completely implemented before the next phase starts. If the qualification team finds a major flaw in the design, fixing the flaw expends huge effort, rework, and perhaps even the complete repetition of all the previous phases. Again, expensive and impractical.
However, it is to be noted that the software industry has survived on the Waterfall model for many years and has resulted in many great products and technologies. This model ensures thoughtful design, universal design adherence, a clear picture of the product being delivered, documentation at each phase, and finally, balanced use of the resources required!
Agile Product Model
Agile product models require a different mindset. While the Waterfall is a sequential way of doing things, Agile does it in iterations allowing for dynamic changes at any point of the product lifecycle, increased business value, and the promotion of a fail-fast culture.
With Agile models, you will be able to:
- Keep the focus on individuals and interactions over process and tools. Agile models believe that interactions give faster results than processes!
- Spend more time making the software work rather than writing documentation for it. Working software takes priority over comprehensive documentation.
- Involve your customers. The customer is the champion of what they want, so they will be able to provide timely feedback as the project is shaping up.
- Respond to change. Following a static plan will make responsiveness more difficult.
The increased likelihood of success using the Agile method over Waterfall was measured in a survey of 173 respondents. This survey found that using an Agile method resulted in a 64% success rate compared to that of just 49% when using the Waterfall during software development.
It should be noted that iterations in Agile are not mini waterfalls! Change is possible at any point of iteration too.
Waterfall v. Agile Breakdown
- Speculative requirements
- Upfront planning
- Late feedback
- Late and costly failure
- Scope change is cumbersome and expensive
- No or little customer involvement
- Energy spent on comprehensive documentation
- Evolving requirements
- Incremental planning
- Early feedback
- Fail fast
- Scope change is allowed and respected
- Active customer involvement
- Working software as a final result