I have spent a major part of my IT career practicing the traditional software delivery method known as Waterfall. I have dabbled with Agile for almost three years, so I am proud to consider myself an Agile evangelist who has fallen in love with the Agile way of software development. Agile is not another software development life cycle (SDLC) method, but it is a mindset that encompasses various frameworks, such as Extreme Programming, Scrum, Kanban, feature-driven development, and Crystal. For the sake of full disclosure, so far I have been exposed only to Kanban and Scrum.
I have personally seen teams reap huge benefits by being Agile. Based on my experience and after countless, meaningful conversations with various ScrumMasters and Agile coaches, here are some of the benefits that teams can derive by embarking on an Agile journey and implementing Scrum as one of the most popular Agile frameworks.
Deliver solutions faster
As the team works from a prioritized backlog or wish list, it strives to complete the items at the top of that wish list in a fixed timebox called a sprint (usually two to four weeks), with the sole aim that the completed work is potentially shippable or is ready to be rolled out to production. The real beauty lies in reducing the feedback loop. Compared to a more traditional method of software development in which it will be at least months before a working product can be seen, at the end of the Agile sprint, even if an entire solution is not being delivered, a chunk of working software can be demoed. This results in ameliorating the shared understanding of what is being developed and what problem the solution being developed is going to solve.
This shared understanding is built on the underlying Agile principle that says, "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software," and acts as a catalyst to deliver faster. I was fortunate to learn from some of the best coaches, such as Mike Bowler
and Jeff Morgan
. Both of these men were passionate about inculcating Agile technical practices within the teams I was associated with. It was mind-boggling for me to learn from them that companies such as Amazon, Facebook, and Google deploy code to production several times a day and sometimes thousands of times a day. This kind of speed and reduced time to market was not thought of prior to the Agile revolution.
Deliver quality code
Because the customer is available throughout the project instead of being available only when the requirements are being elicited, the product delivered or demoed at the end of the sprint is of high quality. That is possible only because the feedback is constantly elicited and incorporated into the final product. Even if the code is not working, in the Waterfall method it would have taken at least months to figure this out in the testing phase, whereas in Scrum, even if we fail, we are encouraged to fail fast so that a corrective action can be taken or an alternative solution can be explored. When you see code being deployed several times a day, quality has to be baked into every iteration or every step of the way. Adopting Agile engineering practices, such as test-driven development and behavior-driven development, helps improve the quality.
Ability to manage changing priorities or requirements
Scrum is nimble and allows you enough flexibility to address the changing needs of the business. In Agile, we welcome changing requirements even late in the development cycle, sans the guilt and nightmare formerly associated with change requests. This allows the team to respond to change to meet the changing needs of the business. In the real world, requirements often change as the result of the customer looking at the working product and identifying the few things that were missed initially, which usually happens after development begins. Emergence dictates that it is impossible to know all the requirements in advance. It helps to be aware that every project has some emergent requirements.
Deliver a product that meets the end user's needs
When the end user is involved or embedded in the entire SDLC and not just during the requirements elicitation, it has been proven time and again that the end result (or the product) better meets the end user's needs. This shows that having the business ability to provide feedback during every iteration and incorporating that feedback ensures that a valuable product is delivered with the end user's needs in mind.
Eliminate waste and reduce cost
Toyota was able to reduce car prices by reducing the manufacturing cost. To achieve this, Toyota identified processes in their assembly line that did not add value to the customer and then eliminated them altogether. Recently, I helped a health and hygiene IT team set up their Kanban board, which depicts the processes that the team uses to resolve the incident tickets and some discretionary work to keep the lights on. By setting up a visual Kanban board and managing the work flow, the team figured out that a few columns or processes were no longer needed, and they were not adding much value. The team decided to eliminate them, allowing us to reduce waste and gain efficiencies. Agile helped create the transparency that can be used to eliminate waste and reduce cost.
Create a competitive advantage
When implemented correctly, Agile can prove to be the biggest differentiator; it can give an organization a competitive advantage. In this day and age, software development teams need to be nimble enough to enable the businesses they support to react quickly to the emerging opportunities before their competition does. Jeff Sutherland, one of the founders of Scrum, had these words about Spotify, a company that has embraced Agile: "Spotify's competition is Google, Amazon, and Apple, any one of whom could crush them in a nanosecond, unless they're faster, better, cheaper. And they have to stay that way. They have to keep on running out ahead."
I have painted a pretty picture of why more organizations need to adopt Agile, but also keep in mind that Agile is not a silver bullet that will solve all your problems. Organizations or executives should not assume that they will flip a switch and next day they will be Agile. Some organizations just adopt basic Scrum practices or Scrum events, such as Daily Scrums/stand-ups, iterations/sprints, retrospectives, or sprint planning, without staying true to Agile values and principles. They fail to reap any benefits, and the failed adoption turns out to be another horror story of Agile gone wrong.
Please don't consider this post to be anti-Waterfall. I have worked on some kick-ass projects that were delivered by using traditional methods. Not everybody is cut out for Agile, and that is OK. Adopt the method that works best for you to solve the problem at hand, given your constraints.
There are many pitfalls in Agile implementation as well; lots of things can go wrong, but I will reserve it for another article. I would like to leave you all with the words of Michael Hugos: "Agility means that you are faster than your competition. Agile time frames are measured in weeks and months, not years."