Usage of Agile Methods for software Development has caught on like wildfire. Every organization wants to follow Agile methods for software development projects to gain all or some of the following advantages.
- Faster Software Delivery
- Continuous Customer Feedback and Optimization
- Improved Software Quality
- Improved Communication with Users and Business Sponsors
- Accommodation for Continuous Changes
- Early Return on Investment
- Continuous Visibility on Features Being Developed
- Optimized Risks
Though usage of Agile Methodology has caught on, software development organizations have implemented Agile methods as per their own convenience and suitability by tweaking existing waterfall processes. Hence the term Water-Scrum-Fall. Through this article, I will take a look at how Agile methodology is adopted in software development organizations and what modifications are made to the pure Agile processes to suit the adopting organizations to get optimum benefit. I will explore the topic through existing literature and my own experience of working in the IT industry.
Software development organizations adopt Agile methodologies based on various factors. Some of the factors are listed below.
- Benefit from the method and maintain leadership position
- Pressure from competition
- Risk of losing out on the latest methods and trends
- Client Demand
- Internal cost pressures, Agile methods might be a win-win solution
Some organizations embark on the journey to adopt Agile methods by following the classical and complete method of adoption. The stages of adoption followed by these organizations are shown in Figure 1.
Figure 1 – Stages of Agile Methodology Adoption
As can be seen from Figure 1, the standard process of adoption starts at pre-adoption phase with inception and goes all the way thru Execute-Deliver, gaining Insights along the way by learning about measures, data and feelings. Organizations learn through the process during initial iterations for pilot projects. The learnings are applied to future iterations of the process and process matures. Organizations continuously perform analysis of return on investment and perceived gains from Agile method adoption. This helps them to make any changes to adoption method to optimize the gains.
Agile transformation methods and experience gained through Agile methodology adoption is very well depicted through the following Youtube Videos-
So far, the discussion in this article focussed on the traditional way of Agile methodology adoption. Does every software development organization use the standard Agile methodology for the full lifecycle of software development? Do organizations invest in required training and infrastructure to implement Agile for the complete software development lifecycle?
A look at the industry trends reveals that some organizations use an approach with a combination of waterfall and Agile methodologies. These organizations take baby steps in Agile methodologies adoption. The Agile methodology is tweaked as per the need of the adopting software development organization. Figure 2 shows the model of pure waterfall process adopted by a software development organization.
Figure 2 – Steps of pure Waterfall Model
Steps indicated in Figure 2 are executed in sequence to execute a software development project and achieve the desired business objective. As per the adaptation practised by a software development organization, certain steps of the waterfall cycle are implemented using the Agile method. The adaptation is solely dependent on the organization and how it sees the process change fit for the project under execution.
Figure 3 shows the adaptation of standard Agile methodology as modified for an organization in the financial industry for a development project for a Large Retail Bank. The adoption was necessitated by this particular project where design and build activities were to be iterated based on changing requirements. The approach allowed necessary flexibility to implement varied design approaches and pass them quickly to build phase to avoid large-scale changes once the complete design was done. Some part of testing activities were also iterated, however, most of the testing followed waterfall methodology as unit testing was covered along with build activity. Unit testing done in an iterative manner helped generate stable delivery of code from build phase to the testing phase thereby allowing the project to maintain waterfall approach for testing and resulted in a very few testing defects.
Figure 3 – Water-Scrum-Fall used for project in Large Bank
Another aspect of Agile is how it is perceived by persons performing various roles. Developers and Testers have most work during the middle phase of the project. Independent studies have proven that developers and testers are very quick to adopt new practices. Developers and Testers are also very keen to adopt Agile practices. Primary reason could be that Agile practices provide them with more opportunities to collaborate. This could be one of the primary reasons for the success of Water-Scrum-Fall.
In my work experience in Information Technology industry, I have also come across examples of the approach outlined above as Water-Scrum-Fall being used. It allows the flexibility of Agile with the right tweaks needed to make it effective for a particular software development organization and a specific project. I have seen this approach being extensively used in regulatory and legal compliance projects for software development for Banking and Telecom industry clients. These projects usually have Designed, Build and Test activities done with an Agile approach. Some projects even include Releases in the Agile approach and adopt phase-wise releases. This approach proves to be more beneficial as the final product is also developed iteratively and has more flexibility to adapt to changes in the life of the project.
I have covered all elements of standard Agile adoption process and steps followed by software development organizations to adopt Agile methodologies. Some organizations tweak Agile processes to adopt them for some part of software development life cycle, thereby giving rise to the term Water-Scrum-Fall. Organizations have found their own way of adopting Agile methodologies by the way of Water-Scrum-Fall. Experts, however, warn that Water-Scrum-Fall is fine as a starting point but it should not be the end goal of the Agile journey of an organization. The full potential of Agile can be realized with complete Agile adoption by truly embracing Agile manifesto (http://agilemanifesto.org/) and its guiding principles. However, Water-Scrum-Fall is a reality and is here to stay as organizations have found benefits from adopting the methodology.