Software development is prone to fads, going back to the days of "goto Considered Harmful." One current fad goes under the general name of " Agile methods;" some of its variants are extreme programming, the SCRUM methodology and Alastair Cockburn's Crystal Clear Methodology.
Now, I'm the last guy to run down Agile methodologies, but...let me tell you a story.
About two years ago, I joined a project to build an appliance to Do A Good Thing. I'm changing the names and details to protect, well, primarily me, but innocents were involved. In any case, the details of what we were doing are unimportant; what matters is how we did it.
All of us team members were survivors of another much larger project. That project had been done with outsourcing to a CMM Level 5 organization, with great care in the methodology at our end and with careful detailed project management overall. The project consumed tens of millions of dollars and years of overtime. It failed utterly.
The whole experience was traumatic. None of us wanted to repeat it. Some of us advocated adopting Agile methods, which had generated plenty of good reports. Since it was clear that the last thing anyone would have said about the last project was that it was "agile," adopting Agile seemed like a good idea.
We couldn't adopt an Agile methodology whole, though. We had to adapt to our corporate environment. User stories or use cases sounded like a great idea; we'd do use cases. Continuous integration would be great. Incremental development was a good idea too, so we'd do that. And extreme programming uses a morning " stand up meeting," which some of us had used before; we'd have a standup meeting.
The problems started when we tried to integrate these methods into our existing environment. First, management demanded that we estimate-and commit to-a schedule and budget. You can't do that without knowing what you'll be doing, so we built our use cases and created a schedule. Several months later, we had hundreds of use cases, and the local Microsoft Project wizard had a schedule estimated down to the day.


















Comments