Sunday, October 11, 2009

Agile vs. Waterfall: The NetFlix analogy

The following is a fable to compare traditional waterfall projects to agile/lean projects...

Announcing my new movie rental service, NetPix! Here's how it works.
  • You get 60 movies each year, delivered on DVD in the mail.
  • When you first sign up, choose 60 movies you want. When you finish choosing your movies, we'll confirm that it's really the list you want.
  • Over the next 12 months, NetPix will tirelessly collect your 60 DVDs, and at the end of the year, we'll deliver all 60 movies to your home!
  • Price: $60 per year (just $5 per month!)
The fine print:
  • DVDs will be delivered 12 months after you complete and confirm your list of 60 movies. 
  • After confirming your movie list, any changes you make to the list in the first 6 months will incur a charge of $2 per movie. 
  • Any changes in your movie list during months 7-12 will result in a charge of $3 per movie, and a delivery delay of 1 month per movie changed. (We have to lock down the list at some time, after all!)

Now suppose I order, say "Weekend at Bernie's", both I and II, on the advice of my high school buddy, Steve. A year later, I watch "Weekend at Bernie's" (the first one), and I hate it! Steve usually has good taste, so I trusted him, but he must have been smoking crack when he recommended this one. I don't even wanna watch "Weekend at Bernie's 2", but I already paid for it and it's sitting in a cardboard box next to my DVD player. Damn!

And to top it off, eight months into the year the studio released a remastered, Director's cut, collector's edition of my all-time favorite movie "Blazing Saddles", with never-before-seen outtakes! If I want that it'll cost me an extra $3 (5% more) and I'll have to wait an extra month for all of my DVDs! Double damn!

Would you buy this? "No," you say? Well why not? This is the way software customers have been buying software for decades! Customers have to figure out everything we want before we even start working on it, and they can't change their minds later without paying dearly for it!

Alas, much to the chagrin of NetPix, along comes an upstart disruptor, NetFlix! Now customers can get the features (DVDs) they want every month instead of waiting a year! And they can change their priorities (movie list) at any time! And they can watch "Weekend at Bernie's I" before deciding if they want to invest 90 irrecoverable minutes of their lives watching the sequal. The demise of NetPix is written on the wall!


Raja said...

clearly explained... thanks

Bruno Spinelli said...

Hi Folks,

I believe the secret is adaptation, for the situations you can’t avoid working with strict constraints, I believe Agile methodologies can be adapted.

If you need to deliver something, in a fixed time and budget , you have no time to loose and no money to waist. In other words: “You better completely and precisely understand the requirements written on that RFP (Request for Proposals) otherwise you are going to get burnt.”

The best way to make sure that you are achieving the expected results without spending time and money with unneeded efforts is to make the stakeholders aware of every significant piece of software built as soon as possible so the unavoidable mistakes of any project are always corrected before is too late.

I see iterations, incremental releases and constant reviews as essential tools to support this scenario and meet the requirements effectively. Agile methodologies leverage all these factors naturally and natively, and that’s where I think they have so much to contribute to any project, even the ones with so many restrictions.

I invite you all to take a look on the post "Agile for Fixed Price and Time Projects:


Bruno Spinelli.

Anonymous said...

It's somewhat confusing why Agile proponents are still drawing caricatures of the Waterfall development model even though most people have adapted the original Waterfall model 20 years ago (see spiral model, and Rational Unified Process).

And just for fun, here is a caricature of the Agile model:

I want to build a house. So I hire a contractor. He uses the newest building process: Agile. He asks me what I want, and why I want it. I mention that my current house has a really old bathroom. So he promises a house with a beautiful modern bathroom. Two weeks later he takes me on a tour. The bathroom is stunning. I love it. And everything works already, the water, the light, everything! Wow. This guy knows his stuff. Then I point out that I would love to have this exact bathroom … on the second floor. For a few moments the contractor looks at me in silence. I ask whether there is a problem. Then he says “No, not at all, we just refactor.”

Brad Swanson said...

Constructing a building is, in most ways, not a good analogy for building software. You're absolutely right that some design decisions are very difficult and very expensive to change later - and a good software architect should be able to determine which ones those are, and ensure the architecture supports them while allowing for future extension. The foundation and load-bearing walls need to be done right the first time. While you can't easily decide to move the bathroom to a different floor, you could be laying the foundation before you decide what type of cabinets to put in the kitchen.

The fundamental issue with many software projects is that customers often don't know exactly what they want at the beginning. Iterative and incremental development gives us the opportunity to better meet customer needs and deliver sooner, which gives customers a competitive advantage in many cases.