Before the commitment meeting. You might need some time to do some exploration, so you need to think about what should go into the next release before the committment meeting, and then do the necessary exploration / prototypes etc. do do the estimation.
The stories should be estimated collectively by the development team. All team members should have an understanding of the story.
The splitting up takes usually place in the iteration planning meeting, right after the decision that the story would be part of the next iteration. Because additional questions will come up during the splitting, it will be useful to have the customers right there.
The tasks should be estimated after the splitting, still in the iteration planning meeting. A task should be estimated by the person who takes the responsibility for the task.
Usually it is easier to have engineering-time estimates, and multiply them with the velocity only at the end to get the necessary calendar time. If the relationship to the customer requires it (for example if the customer can't understand a load factor of 3 or 4), it might make sense to include the load factor in the estimates. However, this will make reestimation more difficult, if just the load factor has changed.
It is much more intuitive to define priorities with different piles of paper than on a bullet-list on a sheet of paper or even on the computer-screen (and studies have shown that). Do the simplest thing that could possibly work !
A story should be :
For a typical project of 6-12 months, 50-100 stories would be a good number. If you have too few stories, it gets difficult to define priorities (if you have only 3 stories, the user will never say "ok, we need the third story only in the next release"). If you have too many stories, the handling gets more difficult (the pile of paper gets to high, it will be impossible to order all stories on one table (unless you have a very big table)), to a degree where you won't use them anymore!
A story should take 1-3 weeks to implement (in engineering time).
In engineering time. A typical story takes 1-3 weeks.
In engineering time. A typical task takes 1-3 days. Be aware that you should integrate at least daily (no code should be left unintegrated for more than a day) ! This has the consequence that you will need to integrate for a 3-days task more than once.
All members of the development team, plus the customers who may take the decision to include / postpone stories. Because all development team members will have decisions to make (which tasks to take responsibility for, estimates for these tasks), and because the immediate future of the project is discussed in these meetings, all development team members should be there.
Be careful with measuring system performance. Measuring it too early might lead to unnecessary performance optimization, which might lead to a complexer design / structure too early in the project
If you can find a single metaphor for the whole system, this is of course the best case. But it is also ok to have different metaphors for different parts of the system.
2-3 calendar weeks. This means that with a load factor of 2, 7.5 engineering days per developer can be planned in 3 calendar weeks.
Load factors of 2 to 4 (you need for x engineering days (x * 2) calendar days) are quite common. You should measure your load factor / velocity constantly. You can measure it already during a prototype in the exploration phase.
Try to find the stories. To begin with, just identify the story titles, then add details as necessary (the objective is that everybody knows what the story is about). Then try to answer the following questions :
You will need to find the balance between necessary details for estimating the stories for the committment meeting (release planning) and the necessary details to implement a story (split it up in tasks etc.). You should not have to find all details for all stories before the first committment meeting ! Be aware that additional stories will come up during development, for example new stories, or stories which need to be split up.
To find the stories where you need to do some exploration (maybe a prototype or further investigation) to be able to estimate the story, sort all your stories by risk (by the risk that your estimation will be far off) into three piles. Then look first at the stories in the highest-risk-pile and explore these stories further, until you feel you can estimate the story close enough.
One indicator that you don't know enough about a story (what should be done, how it should be done) is when your estimate for the story is higher than 6-7 weeks. If that is the case, try to split the story, explore the story, write a little prototype. If the estimate for a story is too high, there is more risk in it (that you will recognize only late that you've underestimated the problem etc). Reduce this risk as far as possible.
see this image
All the components of XP are tightly related to each other. The beauty of XP is that you have all the "traditional" concepts of software development like design, analysis, integration and testing; but you switch between them at a very high rate (typically you have all activities during one hour of development). It is like riding a bike. You would not try to keep record of how much time you spend leaning to the right and how much time steering. It is the arrival at your goal without falling which is important.
Often, it is helpful to find two dimensions of a problem. For example, it will be difficult to check each HTML file you produce on-the-fly. But let's say you have a list of tags to fill up. If you can make sure that
you can be pretty sure that you will be able to handle any combination
of the two without having to test each single combination
(do you remember vector calculus ?). Similarly, you will not be able
to test the JTree as a whole. But you can test whether you
can insert an object as a child to an other object of your JTree. This
gives you enough confidence that the tree will work.
A lot of things. Basically, it means that whenever a simple solution is enough for you, you should stick with it. Examples:
This will happen until the whole team is up to speed. It is like walking
with one leg tied to your colleagues leg. But this is the
speed of the team as a whole ! Usually, it takes about 2 months to
bring the whole team up to speed with pair programming. But then, pair
programming will be more efficient than programming alone (in terms of
the resulting quality and amount of production ready code).
Yeah. A "good" XP project is surrounded by a constant buzz (like a cloud above the team). People are communicating. Quite teams are a bad sign. Headphones in particular. You will have to make some re-arrangements of your office which makes you feel comfortable.
last change : 25.08.1999, 14:12, Peter Gassmann