Exploration Through ExampleExample-driven development, Agile testing, context-driven testing, Agile programming, Ruby, and other things of interest to Brian Marick
|
Tue, 06 Feb 2007Shifting work to the product director I realized recently that we on the development side of the Agile house have shifted work onto the already-overworked product director. Once upon a time, the business gave the development team a big chunk of work to do. They also asked the team to estimate the work. The team's estimates were almost always wildly wrong. Badness. A solution appeared: break the chunk down into small stories. (I like them to be half a day to three ideal days long.) Not only will the individual estimates be off by a smaller percentage, a sort of law of large numbers will cause the errors to average out, making the estimate for a whole iteration accurate. That's good for estimation, but programmers tend to think of system building as getting the infrastructure right and then popping features onto it. You can't take three weeks—or months—to build infrastructure if you have to finish the story in three days. So programmers wonder why the result of small stories isn't a big, unwieldy pile of disconnected code. I answer that there are tricks and tools to help: refactoring, the removal of duplication, IDEs that make large renamings and restructurings safe, reduction of code ownership, and so on. It is possible, I say, for the end result of small-story development to be a system that looks as if it had had an infrastructure designed in from the start. Swell. But something's been lost. In the old days, it was (somewhat) easy for the business representatives to wrap their heads around the release. They could talk about it as a large conceptual piece that hung together from the point of view of an end user. To some extent, the programmers were responsible for living up to that conceptual vision. Now, they no longer are. It's the product director who must keep track of all the small pieces and make sure they add up. Moreover, she must do that not all at once, but continually as the product grows throughout a release cycle. I think that's hard. The tools and tricks for doing it are not nearly so developed as are refactoring, etc. (There are some, such as Jeff Patton's span planning and feature thinning.) So we on the development side have made our estimation job easier by shifting work onto the business. Nice trick. |
|