martinfowler.com logo Home Blog Articles Books About Me Contact Me ThoughtWorks

FivePoundBag agile 13 October 2005 Reactions

You can't put ten pounds of shit into a five pound bag

--Anyone who has tried

When Kent and I wrote Planning Extreme Programming, we included this whimsical quote to help get the essence of what planning is about. One of the big problems with software development is that people have little sense of what can actually be done in finite time. Too often we see lots of functionality rammed into a bag with no understanding about whether it will fit. Human desires being what they are, the bag is usually too small. One of the things I really liked about Kent's planning approach was the simple mechanism to try to deal with this.

The principle is really very simple. You divide up the project's time into iterations. You divide up the requested functionality into features (or stories, as XP likes to call them). You estimate how much work each feature takes to do. You keep track of how much you get done in each iteration, and you don't put more features into an iteration than will fit. XP's release planning is about deciding which features go in which iterations.

Like many things, this is a human process. At a recent conference talk my colleague Tim Mackinnon described co-locating a few traders with the development team made a huge difference in helping them get a realistic sense for what could be built. The traders still did their trading full time, but the informal communication that happened through co-location made all the difference.

People often characterize agile methods as being anti-planning. Yet it was the quality of the planning that was one of the most impressive things about Extreme Programming when I first came across its larval state. In particular the simple nature of the plan made it hard to slip extra features into the project without having to face their consequences. This is the essence of the adaptive planning of agile methods - the plan changes frequently but in a controlled manner. If you want to add a feature you always have to ask 'what do I take out to make room?' So if you see features added to an agile project without that thinking, without space being made for them; you can safely conclude that the planning is being done badly.


Links
home
bliki
feed 
Translations
Japanese
Spanish
Korean
Chinese
Thai
Categories
agile
design
dsl
leisure
refactoring
ruby
thoughtWorks
tools
uml
writing
Blog Roll
ThoughtBlogs
TW Alumni
Nicholas Carr
Steve Cook
Brian Foote
Simon Harris
Gregor Hohpe
/\ndy Hunt
Ralph Johnson
Patrick Logan
David Ing
Brian Marick
Jeremy Miller
Jimmy Nilsson
Samuel Pepys
Keith Ray
Johanna Rothman
Kathy Sierra
Dave Thomas

© Copyright Martin Fowler, all rights reserved