The last contract that I finished up was very trying on many fronts. One of the things that they sold me on during the hiring process was the fact that they were following Agile practices. On arrival it was pretty apparent to me that their definition of Agile was quite different from mine. One of the tasks that I took on during the year I was there was to try to bring more agility to the process.
During the year I fought to try to get the test team into the iterative process so that we could say that a feature was complete once both development and testing were complete. On that front I failed in glorious fashion. I also worked hard to get the results of each iteration to be released to the acceptance testers (product owners who were power users). I was never able to get the delivery and our iterations to synch up.
Looking back, I’d suggest that these were the two biggest things that make me consider my attempts at making the project more agile a failure. There were numerous reasons to why I never managed to make those things happen, none of which I’m going to talk about here. Looking at it now, what I was saying was that success (or agility) had only been achieved if all things were implemented successfully.
I’ve been watching a great video of a presentation on Tuning Scrum by Jeff Sutherland that is available on Google Videos. It’s worth watching the whole presentation, but the thing that caught my eye is near the end of it. Agility is incremental. In the presentation they talk about Type A, B and C Scrum. There’s a whole matrix explaining what each type of Scrum requires to have been considered implemented. Type A requires that the Development Team be engaged, but nobody else. Type A also requires that releases are occurring every 4 to 6 iterations. It also suggests that new feature requests take 4 - 6 months to be delivered.
If I use those there metrics, I was able to get our project to meet the requirements for Type A scrum. In my mind I was trying to get to Type C, which has much more rigorous requirements to be considered implemented (which we definitely didn’t meet).
So maybe the time that I spent working on the project’s methodology during that contract wasn’t a complete waste. We managed to get an engaged Development Team, release to acceptance testers on a much more frequent basis than the team before and we decreased the amount of time that the client had to wait to see a new feature. None happened to the extent that met my aggressive metrics, but they moved in the right direction.