Yesterday Mark and I double teamed on a webcast overviewing DAD to a university class. After the webcast we got the following question:
I am wondering if it would make sense to entirely eliminate the word “phase” from DAD’s vocabulary. What about simply talking about different types of iteration? For instance, inception could become something like “pre-construction iterations”, construction could become “construction iterations”, and transition “transitions iterations”… That may be a bit cumbersome, but the word phase does scare people away.
Yes, the word phase might scare some people away. We’ve thought long and hard about the terminology that we use and were also a bit worried about the word “phase” at first. For some reason phase has become one of those dirty words in the agile community, along with other words such as governance or documentation. The primary concern seems to be that phase implies a serial approach, something many agilists believe to be foul and evil. Yet the reality is that projects do in fact proceed in a serial manner. There are some project initiation activities at the start. Then there are construction iterations/sprints one after the other in yes, a serial manner. Then there is an effort to deploy/release your solution into production. This is clearly “serial in the large”.
But, why the term phase? Why not iteration? Or season for that matter season (Gary Evans has a very coherent argument for that term)? Because phase is accurate (albeit an agile swear word). In the various IT surveys that I’ve run over the years I’ve found that the average agile team spends about 4.5 weeks performing initiation efforts, has construction iterations that are about 2 weeks in length, and takes an average of roughly 4 weeks to release their solution into production. So perhaps these initiation and release efforts could each be thought of as two iterations (on average, your mileage may vary) but they really aren’t iterations in their own right usually. Maybe they’re different length iterations? There are several ways of thinking about it, but notice how the application of the term iteration doesn’t really make perfect sense. Then we have numbering issues. Is the initiation effort iteration/sprint 0? If it’s two iterations would they be -1 and 0? Sigh.
One thing that we have done which some may feel to be radical is we’ve chosen to adopt phase names from Unified Process (UP) – Inception, Construction, and Transition. We could have made up different names, such as Initiation, Development, and Release respectively. Or adopted Start Up, Construction, and Hardening (yuck, there’s more to Transition than hardening and frankly I would consider a late “hardening” effort to be a clear sign you’ve likely got a process problem you need to deal with). And I have no doubt that there are many other options for each phase name. Whatever names we choose someone isn’t going to be happy, and why not give a bit of a nod to a proven software development framework such as UP?
Another interesting thought is that by having named phases it makes it clearer where potential governance points in the lifecycle are. In the diagram below you can see how several of the suggested light-weight milestones – Stakeholder vision, Sufficient functionality, and Delighted stakeholders – corresponds to the end of a phase. Or perhaps more accurately, fulfilling the milestone is an indication that your team is moving from one phase to the next.
In the end, I think we’re pretty clear that when you tailor DAD that you can use whatever terminology you like. In fact one financial institution that adopted an early version of the DAD basic lifecycle, the one based on Scrum, reworked the diagram to use Scrum terminology. I think it’s a bit goofy but it works for them.
The term phase might in fact scare a few people away. But, it’s hard to imagine that anyone that concerned about what something is named will be flexible enough to be successful at DAD anyway.