[Home]EstimationPlanning

HomePage | RecentChanges | Preferences

This page briefly describes the three kinds of planning commonly done in XP - the Planning Game, Release Planning Meeting, and the Iteration Planning Meeting.


There are several levels of estimation in an XP project - the Planning Game, the Release Planning Meeting, and the Iteration Planning Meeting. The Planning Game estimates the whole development time, the Release Planning Meeting estimates a single release (usually consisting of a few iterations), and the Iteration Planning Meeting estimates a single iteration.

During the Planning Game the goal is to get a coarse estimate on how long it takes to develop the User Stories your customer gives you. These estimates are generally done by a few members of the software development team, probably some of the more experienced developers, so as to give the customer an idea of the scope of the whole project. It also allows the customer to begin assessing his development priorities. The estimates are generated by the team by intuitively estimating how long it would take, by comparing the development complexity to a similar task done before, or by using experience gained from the spike solution. Note that these estimates are generated by a team of software developers, those that will do the work, not by a manager. Note also that these estimates are reported in "perfect development time", therefore do not contain buffers for unexpected problems, meetings, etc. The customer is also given a velocity, that is a conversion factor to take the "perfect development time" to "actual development time". This velocity is determine scientifically by past experience. If no experience has been developed yet, use a factor of 2 weeks to develop 1 perfect development week's worth of code. Then as the project progresses, track each developer's velocity and use this in future estimations.

During the Release Planning Meeting these estimates are revisited, this time by the whole development team. If the team is large, the developers probably should be broken into several groups of 3 or 4 developers. Each group estimates the time to develop each story. If different groups differ on their estimates, then the group's should discuss their differences to make sure why each group came up with a different estimate. A final answer should be established. The results of these estimates allow the customer to establish priorities for each release and begin focusing on those that should appear in the first iteration.

During an Iteration Planning session, these time estimates will be revisited and made more precise. The customer comes to the meeting in which all the developers are attending and describes each user story that he wants in the current iteration. The developers break up each story into tasks that should take about 1-3 ideal man-days. After all the user stories have been broken into tasks, developers sign up for tasks that they want to work on. Generally the developer should pick all the tasks within a user story, though this may not always be possible and should be tolerated. Each task should then be estimated by the developer themselves. Each developer's velocity should also be reported. Then it is quickly possible to reallocate tasks if developers cannot fit their desired tasks within the allotted time for the iteration. Other developers can take up the slack if they have extra capacity. If there is no capacity left available for any developers, then the customer needs to be informed and one or more user stories assigned to the next iteration.

The goal of XP is to only do as much planning as necessary to get from one stage of development to the next. Doing any more planning in a rapidly changing environment will only incur unnecessary planning costs that must be thrown out or dramatically altered.


HomePage | RecentChanges | Preferences
Edit text of this page | View other revisions
Last edited March 29, 2005 9:19 am by 65.121.3.22
Search: