Sunday, October 6, 2013

CIO as Agility Leader: Agile vs. Waterfall

 Agile and Waterfall is not opposite, but complementary.


There seems to be the polarization between Waterfall and Agile when in reality there is more of a continuum between them. Some more enlightened practitioners are developing ways to use both! Agile and Waterfall are not opposite, they are complimentary.

  • Waterfall phase-by-phase vs. Agile evolutionary life cycle: "Waterfall" is the term most widely used in reference to a project life-cycle where the characteristics of the product of the project are progressively elaborated phase-by-phase. For example, a typical waterfall might involve concept, requirements, design, development, and turnover. Agile projects have an evolutionary lifecycle. Agile has three characteristics: Incrementalism, Iteration, Improvement. As Agile is more about the mindset shift upon keeping iterative communication, cross-functional communication, customer satisfaction and faster delivery. Agile is ALL ABOUT rapid feedback loops and minimizing waste. 

  • Linear vs. Iterative: Waterfall is linear where the value is generated at the end of Project whereas Agile is iterative where the value is generated periodically. Waterfall typically means sequential work. “Waterfall" is not about planning, not about PM, not about PMO, but about a specific form of the project life-cycle, where Requirements, Design, Implementation, Test are rather executed in sequence. Agile breakdown large project to small works. Agile is focused on team and the team interaction now how we get programs completed; Agile doesn't attempt to control all the variability, but rather chunks up the project into small "work" then "measure" phases. Conduct early reviews, provide releases and gather early feedback (iterative, responsive, handle change).
  • Formal structure vs. self-management: Waterfall weighs heavily on formal structure model (where the manager is the boss) and the Agile principles mandate self-managing teams (where the manager is the facilitator) If the discussion is about the process or the life-cycle, the waterfall approach goes phase by phase whereas the Agile approaches limit the work in progress. Scrum limits it by a Sprint, Kanban limits it by the number of work items and some other approaches use a combination of both.
  • ‘Waterfall can mix Agile philosophy; while Agile takes Waterfall’s structure: Even in Waterfall model if the Project can be split into phases and for every Close Phase (phase exit) value is generated then Waterfall is also some sort of Agile methodology. Scrum meaning a short sprint and is part of software development methodology. One of the key ideas behind agile is that the client can cancel the project at any time if they are not happy with the results of the work (software) to date. This is somewhat harder to do with waterfall because you might be in the development phase before the client really sees anything that is useful or working. Waterfall users may deal with this through prototyping or simulation.  
  • Every methodology has its strength, no methodology is perfect. Which methodology one needs to select is situation-driven:
When to use Scrum:
- Team members have knowledge of the domain.
- All team members have been trained on Scrum prior to the start of the project
- The Product Owner has AUTHORITY to make product decisions on behalf of stakeholders.
- You need an incremental feedback cycle (done at the end of Sprints) for User Stories/Features so that adjustments can be made.
- Fixed time and budget project, but project sponsor knows not every possible feature will be implemented. (Not fixed scope)

When to use Waterfall
- A project that’s required to comply with regulations, where they need to be cross referenced with requirements and features.
- Projects that have a fixed price, time, and scope.
- You need formal sign off of requirements before work can begin.
- Team members do not have adequate domain knowledge and need a detailed requirements document.

In many cases, perhaps the practical approach is to mix Waterfall and Agile techniques. Use Waterfall for the requirements’phase and an iterative/Scrum-like approach to development, in order to manage software project with the right level of discipline and flexibility.





7 comments:

In our organization the team I am on is trying to mix Agile methods in to our existing structure. Our outgoing director saw a lot of benefit in Agile and gave us all the freedom she could to bring Agile methods and mindsets in. What has resulted is something that looks like a bunch of mini-waterfalls with more feedback, openness, and flexibility than would normally be seen in waterfall. It is also more restrictive to change than would normally be seen in Agile. Our hope was to do our next project as an all-out Agile project, but things are up in the air now with a new director coming in.

Regardless of our final project structure I believe that an Agile mindset is important to help achieve the greatest success possible.

There are clear benefits that are at the core of Agile that can be used in Waterfall. Chief among those is frequent feedback from the customer/product owner. One of the major downfalls of Waterfall has been the lack of customer feedback throughout the process. It typically ends after requirements are gathered and then reappears when the project (near completion) is shown to the customer.

Conversely, Agile can benefit from a clearer understanding of the desired features of the system. More attention and time to gathering and reviewing capabilities (i.e. requirements) would aid in understanding scope and setting customer expectations.

I agree that there is no one perfect approach. Our world continues to evolve.

Waterfall is only feasible if one can know all the requirements up front. Otherwise, it is not the right approach. This is because waterfall requires a comprehensive up-front requirements phase and up-front design phase. Changes during the process are inherently difficult and result in a lengthened schedule, because there is no continuing check as to whether some requirements can be discarded as not really important, and so every new requirement just adds on - nothing gets substituted.

That said, organizations that are accustomed to waterfall cannot simply adopt agile overnight. Waterfall requires that all of the functions that support projects - e.g., QA, security, enterprise architecture, hosting, etc. - all work in a step-wise manner, whereas agile requires these support functions to operate in an as-needed, just-in-time manner. Thus, even if one realizes that one should be using agile, one cannot just start using agile across the board. The transition is long and painful.

Waterfall also embeds another peril: there is no limit implied in project size, and so many think that one can have a waterfall project of arbitrary size. However, the data is overwhelming that project failure rate increases dramatically with project size. Projects of about $1M in size have a 90% chance of success, whereas projects of $10M in size have about a 10% chance of success. In other words, waterfall does not scale - nor does agile. To scale, one has to decompose work into lots of small projects that can succeed on their own.

Hello,
The Article on comparison of Agile Vs Waterfall Model is amazing, gives detailed information about it. Thanks for Sharing the information about the Agile and Waterfall Model For More information check the detail on the Waterfall testing here Software Testing Company

Hi,
that is very nice and well informed. A complete demontration is given by you. One can find some more information waterfall methodology vs agile

Waterfall method is the traditional approach to software development. Scrum methodology takes feedback from the product owner and stakeholders.


Scrum methodology

wonderful discussion going on regarding this topic its is worth of sharing, eventually thanks for sharing.Nyc blog go for create-an-app-like-uber.
create-a-dating-app-from-scratch.
common-mistakes-mobile-app-developers

Post a Comment