Tuesday, January 8, 2008

For the record

This is not Scrum:

  • Planning
    • Release planning
    • Backlog creation
    • Architecture and high-level design
  • Development sprints
    • Design
    • Code
    • Test
  • Conclusion
    • System integration
    • System test
    • Release

This is Scrummerfall, where we still do a phase-based waterfall model, but do iterations during the "development" phase.  I hear the word "hybrid" thrown around a lot in the above model.

This isn't the cool kind of hybrid, like a Prius or a Liger (pretty much my favorite animal).  It's more of the Frankenstein hybrid, where it looks good on paper, but in the end you need the village mob with pitchforks and torches to drive it away.  Afterwards, the villagers have a bad taste in their mouth regarding science, so they banish it instead of booting out the mad scientist.

One of the key benefits of agility is the ability to respond to change through feedback.  If the backlog is set in stone before my "development sprints" start, how do I change the backlog once business requirements and priorities change, which they inevitably will?  There is no mechanism to respond to change in Scrummerfall, dooming your project to quick failure, but now you get to blame Scrum.

Another disaster waiting to happen is waiting until the end to do system integration.  I think everyone learned that "it works on my computer" doesn't fly very far once you start collecting a paycheck.  Customers demand the software works on their machine, not yours.  So why wait until the very end to do the riskiest aspect of development, when cost of failure is at its highest?  It pretty much guarantees failure and some exciting blamestorming meetings.

I think these models come about from those who think Agile and Scrum are just another process, a cog to switch out.  Agile isn't a process, it's a culture, a mindset, a belief system, a set of values, principles, and practices.  Treating it like just another process gives rise to tweaking and leads to hideous hybrid Frankenstein monsters, roaming the countryside and spreading failure.


terry said...

That's how Optaros runs their agile methodology. I'm not sure they used the word hybrid, but those are the exact steps and phases that the projects go through.

That said, I'm not sure you can entirely avoid some of the pre-planning and pre-destined development time when you're working with clients who know exactly what they want, when they want it, and how much they're going to pay for it.

Since it's a value and culture issue, you could say you're going to turn those clients down, but then again, if it's 30% of your quarterly projected revenue, you'll probably bend the rules.

Jimmy Bogard said...

I guess I should have been more clear, the assumption in the Scrummerfall model is that the backlog content and priorities don't change throughout the project. That tends to lead to unhappy customers, as want they want now isn't what they wanted 6 months ago when the list was finalized.

Pre-planning and preliminary architecture are fine, but should be appropriately scoped to acknowledge the lack of precision in their accuracy. You still do release planning, but waiting until the last responsible moment to do concrete design decisions.

I'd say unless the project is small (1 iteration length or less), fixed-bid contracts are tough to make everyone happy. The client may think they know what they want, but it's almost guaranteed to change once they've seen the working software.