My number one favourite? Not estimating them at all!
Instead, ensure stories do not exceed an agreed size that ensures they fit easily within a sprint (ok - I agree that's estimating, but it's much simpler estimating than tee-shirt sizes (S, M. L or/and too big) or points (1, 2, 3, 5, 8, and too big). Then spend the time you've saved estimating the size of stories on estimating the number of stories in the various epics in your product backlog. Measure velocity in stories not points (or use only two sizes: 1 point and too big) and forecast the completion of epics and minimum-marketable-features based on the throughput of stories (velocity) and the number of stories.
As well as saving a ton of time, it turns out your forecasting will be just as accurate as if you'd spent ages agonizing over each story! See for example +Vasco Duarte's blog about the evidence for improved forecasts from this approach.
The key question - as +Neil Killick points out in his recent "People Need Estimates" - is what problem are we trying to solve with our estimating?
I was working with a team recently who were concerned that they had missed their forecast for the second sprint in a row. The retrospective meeting came up with several suggestions about how they could improve their forecast for the next sprint. I asked the team whether there was anyone (outside the team themselves) who was interested or concerned about their forecasting ability. The last few sprints were running at a throughput that was over double the average for the previous year. If the team continued to focus on the improvements they were making, the business could easily adjust to this higher efficiency. The business did not need (or probably believe) the over-optimistic forecasts that the team were making. Shown the evidence of actually completed work, the business will adjust to the new opportunities the improvements open up.
Urdu poetry, Urdu shayari, Sad poetry, love poetry, sad shayari, urdu sms, hindi sms, Most updated urdu poetry website, Most updated Hindi poetry website
Showing posts with label Effort. Show all posts
Showing posts with label Effort. Show all posts
Friday, 19 April 2013
Friday, 12 March 2010
Precision and accuracy in estimating
The difference between precision and accuracy has always been important to engineers and it is vital to understand too in the context of estimating for software projects. One approach to estimating a project is to create a detailed work breakdown structure and estimate each task, say in person-hours. A friend told me recently she had consulted on a project which had estimated its size as 135,213 person-hours! The precision in this case is 6 significant figures. As to the accuracy however, previous projects had errors or between 10 and 200%. The precision actually gets in the way of understanding the estimate, particularly as crucial business decisions involving significant proportions of a company's revenue may be based on such numbers. While three-point estimating (3pe) provides one way of capturing risk estimates along with the estimate themselves, the main contribution of agile methods in this area is the tight feedback loop from measured velocity timebox by timebox. Check out some of the links below to see how xProcess supports these concepts.
Thursday, 14 May 2009
What is an "overhead" task?
When starting to use xProcess there are a number of terms that may be unfamiliar. What for example is an "overhead" task?
In general terms an overhead task is one which does not directly result in the modification or qualification of a required project deliverable. Under this definition most management activities, meetings, planning and monitoring are overheads, while specifying, designing, coding, documenting and testing are "payload" activities.
In xProcess there are 2 ways of specifying how a task will be scheduled: date-based or effort based.
Date-based tasks are generally more applicable to overheads. They run from a date to a date (the date may be derived from other dates such as project start and end or target dates) and have a specified time (or percentage of available time) to determine the effort required per day. If there are no resources available to carry out the task the start and end date are not changed - they will just consume less time in the schedule.
Effort-based tasks are the more normal type of task in xProcess. They have a specified size and required effort (see this link for the difference between size and effort). Their start and end dates are derived from the effort required and the availability of suitable resources (people who have matching role types and skills).
You don't have to use overhead tasks in your process - for example you could include in your estimates the time that will be required for these other activities. However it is useful to get a view from the time booked to overheads of the efficiency of your process and where improvements might be made.
In xProcess there are 2 ways of specifying how a task will be scheduled: date-based or effort based.
Date-based tasks are generally more applicable to overheads. They run from a date to a date (the date may be derived from other dates such as project start and end or target dates) and have a specified time (or percentage of available time) to determine the effort required per day. If there are no resources available to carry out the task the start and end date are not changed - they will just consume less time in the schedule.
Effort-based tasks are the more normal type of task in xProcess. They have a specified size and required effort (see this link for the difference between size and effort). Their start and end dates are derived from the effort required and the availability of suitable resources (people who have matching role types and skills).
You don't have to use overhead tasks in your process - for example you could include in your estimates the time that will be required for these other activities. However it is useful to get a view from the time booked to overheads of the efficiency of your process and where improvements might be made.
Friday, 22 February 2008
Calculating team velocity
Why is it that agile methods use timeboxes containing broadly similar sets of activities - as opposed to phases favoured by more traditional methods, which contain different types of activity in each phase through the lifecycle? A key reason is that stakeholders in the project get quicker and more effective feedback on the progress and direction of the project. As a consequence planners can judge more accurately the effectiveness of the project and what it is likely to achieve over its full duration. One of the most useful metrics planners get from each timebox is the velocity of the team. Scrum projects usually use the velocity from previous sprints to forecast their likely progress - a technique often referred to as "yesterday's weather" since it effectively assumes the next period will be broadly the same as the previous. In this article we discuss what velocity is, how to calculate it in xProcess, and how to go beyond "yesterday's weather" by calculating and using simple productivity for improved forecasting.
Velocity is defined as the amount of required work delivered per time period. In the Scrum process for example, required work is called the Backlog, and its component parts, the Backlog Items, are individually sized and prioritised. The size of an item is not the same as the effort required to complete it, though size and effort are related and may - once the velocity of the team is known - be derived one from the other (see here for further discussion of size and effort). The size of backlog items is usually estimated in a team-specific measure called points (sometimes called Story Points, Feature Points or, if related to the amount of work a team member could carry out in a full uninterrupted day, Ideal Days). The size estimates therefore really only give a relative size for the backlog items. However once a timebox has been completed - in Scrum timeboxes are called Sprints - the team has a measure of how many points they were able to complete and so have the first reading for velocity in Points per Sprint.
When using xProcess for Scrum you can see the velocity of completed Sprints from the burndown chart. For example in the Sprint shown below you can see that a total of 91 points were completed, giving the team a velocity of 91 points per sprint.
Using the principle of yesterday's weather it might be natural for the team to commit to a similarly sized set of backlog items in the next sprint. Before doing so they might be wise to look at all the history on the project. Here are the burndown charts for the previous two months, first Sprint 02 and then Sprint 01...

As we can see from the respective velocities of 40 points per sprint and 73 points per sprint, velocity is not always constant and, if we look at the reasons behind this, we may be able to forecast the velocity for the next sprint more effectively. Why did Sprint 02 for example do so badly?
Well one clue is in the dates for this Sprint. This won't be the only team to have discovered their productivity was lower between mid-December and mid-January! All the team were on holiday for at least some of the Sprint, and when they were in they probably discovered someone they needed to speak to was away, or that there were other activities they had to attend to which were not related to the sprint backlog. Another factor was that this sprint had a number of items that had been worked on but not completed at the end of the sprint. Since they are not finished they cannot be counted in the size of work "done". Backlog items like this do not necessarily get done in the following sprint since other priorities may be introduced to the team at that point. However if they are carried forward (as they were in this case), there will be considerably less work left to complete in the following sprint. This at least partially explains why Sprint 03 was such a productive one.
So what velocity should the team predict for Sprint 04? This is where other information from xProcess comes in very handy in the planning process. xProcess allows team members to record when they were working on overhead tasks (like management meetings, email and admin, training courses and office parties) as opposed to backlog items themselves. xProcess also give us information about the amount of time spent on backlog items that were not completed in the sprint.
The key metrics we want to derive in order to better predict the next sprint are these:
Simple productivity for a given period (a sprint for example or the whole project) takes into account all the non-overhead tasks booked to during the period. It also takes into account tasks which were incomplete at the start and end of the period. Once the simple productivity factor has been calculated for previous sprint (or for the project so far), the value can be use to set new effort estimates based on size using the Set effort to match size UI Action described in a previous article.
The simple productivity currently being used on this project is 1.0 - in other words a backlog item estimated as size 1 will be scheduled with an estimated required effort of 1.0 ideal person-days. Using this factor the current state of the burndown chart for Sprint 04 is as shown below.

However using the history from the previous 3 sprints, xProcess can calculate the actual productivity in points per ideal person-day. In this case it was found to be 0.91 - in other words historically a task of size 1 has taken on average about 8.8 person-hours to complete. Using the Set effort to match size action, we can quickly adjust the estimates of all the open tasks in the project to reflect this factor. Once all this is applied (see burndown chart below), the state of Sprint 04 now reflects the true situation that certain tasks are at higher risk of not completing.
Velocity is defined as the amount of required work delivered per time period. In the Scrum process for example, required work is called the Backlog, and its component parts, the Backlog Items, are individually sized and prioritised. The size of an item is not the same as the effort required to complete it, though size and effort are related and may - once the velocity of the team is known - be derived one from the other (see here for further discussion of size and effort). The size of backlog items is usually estimated in a team-specific measure called points (sometimes called Story Points, Feature Points or, if related to the amount of work a team member could carry out in a full uninterrupted day, Ideal Days). The size estimates therefore really only give a relative size for the backlog items. However once a timebox has been completed - in Scrum timeboxes are called Sprints - the team has a measure of how many points they were able to complete and so have the first reading for velocity in Points per Sprint.
When using xProcess for Scrum you can see the velocity of completed Sprints from the burndown chart. For example in the Sprint shown below you can see that a total of 91 points were completed, giving the team a velocity of 91 points per sprint.
Well one clue is in the dates for this Sprint. This won't be the only team to have discovered their productivity was lower between mid-December and mid-January! All the team were on holiday for at least some of the Sprint, and when they were in they probably discovered someone they needed to speak to was away, or that there were other activities they had to attend to which were not related to the sprint backlog. Another factor was that this sprint had a number of items that had been worked on but not completed at the end of the sprint. Since they are not finished they cannot be counted in the size of work "done". Backlog items like this do not necessarily get done in the following sprint since other priorities may be introduced to the team at that point. However if they are carried forward (as they were in this case), there will be considerably less work left to complete in the following sprint. This at least partially explains why Sprint 03 was such a productive one.
So what velocity should the team predict for Sprint 04? This is where other information from xProcess comes in very handy in the planning process. xProcess allows team members to record when they were working on overhead tasks (like management meetings, email and admin, training courses and office parties) as opposed to backlog items themselves. xProcess also give us information about the amount of time spent on backlog items that were not completed in the sprint.
The key metrics we want to derive in order to better predict the next sprint are these:
- simple productivity (size of work done in points per ideal person-day)
- overhead percentage (what proportion of people's time is applied to non-backlog-item tasks)
- availability (when are people available to the project)
Simple productivity for a given period (a sprint for example or the whole project) takes into account all the non-overhead tasks booked to during the period. It also takes into account tasks which were incomplete at the start and end of the period. Once the simple productivity factor has been calculated for previous sprint (or for the project so far), the value can be use to set new effort estimates based on size using the Set effort to match size UI Action described in a previous article.
The simple productivity currently being used on this project is 1.0 - in other words a backlog item estimated as size 1 will be scheduled with an estimated required effort of 1.0 ideal person-days. Using this factor the current state of the burndown chart for Sprint 04 is as shown below.
However using the history from the previous 3 sprints, xProcess can calculate the actual productivity in points per ideal person-day. In this case it was found to be 0.91 - in other words historically a task of size 1 has taken on average about 8.8 person-hours to complete. Using the Set effort to match size action, we can quickly adjust the estimates of all the open tasks in the project to reflect this factor. Once all this is applied (see burndown chart below), the state of Sprint 04 now reflects the true situation that certain tasks are at higher risk of not completing.
Wednesday, 20 June 2007
Set size to match effort
I explained in another entry that size and effort are distinct metrics for tasks. However it's useful to keep the overhead of estimating two closely related items to an absolute minimum. This is why the patterns in the "Simple Process" uses the user's input of a size metric (in "ideal days") to automatically complete the effort estimates (usually displayed in person-hours or person-days). They can be changed subsequently though and if you want to re-synchronize them at some point - say when you a re baselining a plan - a utility for doing so is useful.
Here's a simple Action that you can define in your process (make it a "UI Action" by setting this field to True).
Action Name: Set size to match effort
Expression: setSize(getEffortIncludingChildren()/480.0)
Applicable to: Task
UI Action: True
Parameters: (none)
Having done this you can expand your task hierarchy in the explorer, select the tasks you wish to set size on, and then right-click and select UI Action -> Set size to match effort .
Note: From version 2.9 of xProcess this action is included in the Simple Process.
Here's a simple Action that you can define in your process (make it a "UI Action" by setting this field to True).
Action Name: Set size to match effort
Expression: setSize(getEffortIncludingChildren()/480.0)
Applicable to: Task
UI Action: True
Parameters: (none)
Having done this you can expand your task hierarchy in the explorer, select the tasks you wish to set size on, and then right-click and select UI Action -> Set size to match effort .
Note: From version 2.9 of xProcess this action is included in the Simple Process.
Labels:
Actions,
Effort,
Estimating,
OGNL,
Simple Process,
Size
Friday, 30 March 2007
Estimating size and effort - Why are they different?
A common question I get asked about estimating in xProcess (after three-point estimating of course, which is another popular question!) is: "What's the difference between a task's estimate for size and its (three-point) estimate for effort... and why do I need both?".
There are several ways to answer this, but perhaps a starting point is to ask why we think they're the same. If I ask you the size of your swimming pool you're more like to give me an answer in feet or metres that to reply with the number of person days it took to build the pool. (Building swimming pools is an xProcess application by the way - but that's another story!) When we are discussing the planning of a project the first thing to consider is the size (in whatever units are appropriate) of the deliverables of that project. Then we need a function (based on previous experience) to map from size to the estimate of the effort and consumables required to provide those deliverables.
Because the size of the things we want to deliver are measured in many different units, all of which we want to map eventually to an estimate of effort, it is common for projects to estimate directly in effort units such as person-days, person-hours or person-years. However if we do this, we lose a very important measure of the effectiveness of the project. Questions of team velocity or productivity become somewhat meaningless (except as a correction factor on original estimates of effort, compared to actual effort expended).
So if we can agree size is an important metric for projects, the next question is what units should it be estimated in, and can we compare the estimates with actuals at the end of the project. Software projects in particular are notoriously difficult to find an appropriate measure for size. Lines of source code is commonly used (because they are easy to count) but they don't readily map either to effective functionality delivered nor to effort required to develop them. Function points is another option and more recently "story points" (for an XP user story) or simply "points" have gained popularity where these are arbitrary units that are comparable only within the single project where they are being used. Another useful measure is "ideal-days" - in other words the amount that can be produced by a typical team member in a completely uninterrupted day. We rarely get such days (if ever) so it will take most of us more than a day to implement an ideal-day's worth of size. Nevertheless it is an understandable and reasonably verifiable measure of size.
In xProcess the units of size are common to the whole Data Source (they can be set in Data Source Preferences) and the value is used in several important places. When creating tasks the size value is often used in process patterns to set initial values for three-point estimates. The size units are used in burndown charts and earned-value plots to show progress of a project towards creating its deliverables. And size is also used to calculate productivity measures such as team velocity and software productivity.
There are several ways to answer this, but perhaps a starting point is to ask why we think they're the same. If I ask you the size of your swimming pool you're more like to give me an answer in feet or metres that to reply with the number of person days it took to build the pool. (Building swimming pools is an xProcess application by the way - but that's another story!) When we are discussing the planning of a project the first thing to consider is the size (in whatever units are appropriate) of the deliverables of that project. Then we need a function (based on previous experience) to map from size to the estimate of the effort and consumables required to provide those deliverables.
Because the size of the things we want to deliver are measured in many different units, all of which we want to map eventually to an estimate of effort, it is common for projects to estimate directly in effort units such as person-days, person-hours or person-years. However if we do this, we lose a very important measure of the effectiveness of the project. Questions of team velocity or productivity become somewhat meaningless (except as a correction factor on original estimates of effort, compared to actual effort expended).
So if we can agree size is an important metric for projects, the next question is what units should it be estimated in, and can we compare the estimates with actuals at the end of the project. Software projects in particular are notoriously difficult to find an appropriate measure for size. Lines of source code is commonly used (because they are easy to count) but they don't readily map either to effective functionality delivered nor to effort required to develop them. Function points is another option and more recently "story points" (for an XP user story) or simply "points" have gained popularity where these are arbitrary units that are comparable only within the single project where they are being used. Another useful measure is "ideal-days" - in other words the amount that can be produced by a typical team member in a completely uninterrupted day. We rarely get such days (if ever) so it will take most of us more than a day to implement an ideal-day's worth of size. Nevertheless it is an understandable and reasonably verifiable measure of size.
In xProcess the units of size are common to the whole Data Source (they can be set in Data Source Preferences) and the value is used in several important places. When creating tasks the size value is often used in process patterns to set initial values for three-point estimates. The size units are used in burndown charts and earned-value plots to show progress of a project towards creating its deliverables. And size is also used to calculate productivity measures such as team velocity and software productivity.
Subscribe to:
Posts (Atom)