For quite some time there have been a debate on "what story points really are". To some extent there have been insightful discussions about important things to consider when sizing stories. However, the "really are" part of the debate just leaves me tired.
To discuss the true nature of story points is pretty pointless: they are a construct, created by us, and can be given any arbitrary meaning. It does not matter. What matters is whether that construct is useful for a purpose. This is the core of pragmatism.
In other words, the relevant question is not "what story points are", but "what story points are useful for". Please excuse the pun, but rephrased "What is the point of story points?"
If I try to pry things apart I can distinguish four different situations where I have found story points useful. Basically they cover the questions "Is it small enough?", "What does it cost?", "Which should we do first?", and "When can I have it?".
Small Enough
One of the cardinal faults a team can do is to start working on a story that is way to big. If they do, they will surely fail to finish it within the sprint, and having a demo with nothing to show is pretty depressing. Having a lot of half-finished work also tie their hands of what they can do next sprint. No good.
A mature team might have developed a gut feeling of how big a bite they can take and still eat it. The stories considered too big are simply sent back to product owner for delimitation or splitting.
A less mature team might see that bites have different sizes, but have not yet the insight of how big a bite they can take without choking.
Here story points can come in useful. The team can size the stories as 13, 20, 3, 8 etc. But they need not to know their limits. Instead we can observe the velocity over a few sprints and see what "small enough" means. For example, if the team have a velocity of 18, I would advice to set the limit to 9 (half velocity). So, the stories sized 3 and 8 are small enough, and those of 13 and 20 will need some more pre-sprint work to make them manageable.
It can be handy to reserve the top of backlog for stories that are small enough, a "backlog shortlist" of ready-to-develop stories. Or, if you prefer the kanban style to have one stage "delimit and split" followed by a "ready-to-develop" queue before pulling them into active development.
Cost
Whether we like it or not, the question about money always come up. It can be hard to just look at a requested feature and say how much it would cost to develop it. In a lot of development efforts the dominating cost is the cost of labour. Either the work will tax the amount of available work by the employees, or there will be contractor bills to be paid.
Here story points can come in useful. Someone probably knows what the team costs per week, or can calculate it. If you have some historical velocity data you can make a rough estimate of what each point costs. So, if you know roughly the size of the story, you can calculate the cost.
Say that your team costs EUR 27 000 a week, you run two weeks sprint, and your sprint-velocity hoover around 18. Then each point costs around EUR 3 000. So, a story of size 40 will cost roughly EUR 120 000.
Well, not all of the time will be "pure development work". There will be meetings, phone calls, administration (filling out time reports) etc. But, that does not matter. Pulling through a story of size 40 will take roughly two sprints and during that time the team will cost that amount of money.
Of course, in practice you will rather want to give an interval than a precise number. The velocity might be within 17-19 (with 90% confidence) and a "40" story can be anything from 21 to 40. So the cost will rather be in the range EUR 60 000 - 130 000. Still, it will be a figure good enough for business to decide if it is remotely interesting to proceed or not.
Priorities
A misconception among business side "customers" is that they should set priorities on business value. Well, but "economics" is really about alternatives - the cost of a bar of chocolate is that you cannot get two lollipops. In the same way, for the product owner to make a wise balance between what different stakeholders want, she must be able to compare their cost.
Interesting enough, to make priorities, we do not need to know the absolute cost of each story. It is enough to know their relative cost.
Here story points can come in useful. If feature A is size 20, feature B is 8, and feature C is 13, then we know that we can swap out feature A from a release and switch in feature B and C instead. And in doing so we do not need to care about the details of how much money it is about - all we need is aid in choosing.
Planning
Business need to look ahead to synchronize different parts of their work. E g there are some benefits in having a marketing campaign at the same time as you release some new feature of your software. But, waiting for the software to be complete before ordering the marketing will obviously make you loose market-time.
Here story points come in useful. If you observe the velocity of the team over some time you can apply some not-too-advanced statistics to predict how much work will be completed at some future point of time. Of course, each such prediction will have a probability to fail, and the surer you want to be, the lower you must set the prediction.
For example, if you have observed the velocities 36, 28, 36, 38, 24, 35, 32, 35 and you have five sprints to go, you can calculate the average and predict the team will finish 165 points. However, that prediction is just a prediction - the real result will be as likely to be higher as it is to be lower. In other words, your prediction has a confidentiality of 50 % - or a 50 % risk of failing.
If you want to make a safer prediction, say taking just a 5% risk of failing, you can calculate an interval with 95% confidentiality. In this case it will be the interval 144-186. Now you can mark the backlog, colouring all stories up to 144 as green (very likely to be delivered), those from 144-186 as yellow (totally "depends-on") and those from 186 and up as red (very unlikely to be delivered).
In Summary
It is very hard to talk about the "true nature" of story points. They are abstractions that say something about development work. And, the question of "what they really are" is not a very interesting one. Working with story points is a model, and a model should not be evaluated on "how true" it is - but on how useful it is.
Story points might be useful for a team to decide whether a story is small enough to fit in a sprint, of if it should be pushed back to the product owner - if they cannot do it by gut feeling.
Story points might be useful in assessing the cost of developing a story - if it is questionable whether its value justify the cost.
Story points might be useful for setting priorities - if it is difficult balancing the stakeholder interests.
Story points might be useful for planning at release level - if the organisation need to synch the work of different departments or groups
Apart from these four points, story points might be useful in doing other useful things - if it helps the organisation to act more wisely.
It might well be that in your particular setting, none of the "ifs" apply - and in that case story points are not useful to you. And if they are not useful, they steal time and attention from other things that would serve you better - i e they are waste that should be discarded.
In the end "what story points really are" is not as interesting as "what is the point of story points".
Yours
Dan
ps Story points being helpful for planning is of course key to why release planning works.
pps If story points help in planning it is interesting to see what factors drive high story points. For planning, it is the amount of effort that differs, but that is to a large extent driven by the complexity.
ppps Unless you are really good at making statistical computation, it helps to have a spreadsheet to aid in the planning.
pppps One way to ensure team does not embark upon developing something "too big" is to make a backlog shortlist of the top part of the product backlog.
ps Story points being helpful for planning is of course key to why release planning works.
pps If story points help in planning it is interesting to see what factors drive high story points. For planning, it is the amount of effort that differs, but that is to a large extent driven by the complexity.
ppps Unless you are really good at making statistical computation, it helps to have a spreadsheet to aid in the planning.
pppps One way to ensure team does not embark upon developing something "too big" is to make a backlog shortlist of the top part of the product backlog.

Hi Dan--
ReplyDeleteNice blog post. I especially agree with your emphasis on pragmatism, something which seems missing from too many debates.Regards,
Mike Cohn
I'm confused here... All this could be done with hours or days too. "Small enough", "cost", "priorities" and "planning" are all things that are based in time, and all you say is that story points can be converted to time.
ReplyDeleteWhy not use time in the first place? One point in story points is that you by tracking velocity might see how many points you do in a sprint. But you could aswell use time and be tracking how much estimated time you manage to finish during the sprint.
Hi Dan,
ReplyDeleteNice job.
The obsessive need to introspectively refine and endlessly re-define the deliberately flexible notion of story points both frustrates and disappoints.
This post is a refreshing change from the over-indulgent and self-promoting posting going on with the similar LinkedIn groups discussion.
Jon
well said and simple practical philosophy.
ReplyDelete-mouneer
Dear Mike
ReplyDeleteGlad you liked it. Since "The Pragmatic Programmer" it has been "en vouge" among developers to be "pragmatic". Unfortunately, it is often forgotten that Pragmatism is not just a phrase - it is serious philosophy - and it is the philosophy the agile movement is based on IMHO.
Yours /Dan
Dear Tommy
ReplyDeleteYou do not sound confused to me. On the contrary it is totally correct that "hours and days" (or "time") is another model that probably can be used to aid answering the same questions.
However, to make your model clear, you should make it a little bit clearer what you mean with "time". You might not mean "physical time" (i e duration) , so what does your model "hours and days" look like?
I must also point out that "small enough", "cost", "priorities" and "planning" are *not* all "things that are based in time". "Small" is about risk, "cost" is about money, "priorities" are about alternative costs, and "planning" is about calendar time.
Please do not confuse that "your model, which is based on time can handle the questions" with that "the questions are essentially about time".
So, back to the very valid question "what is the advantage of story points vs time (days and hours)" - and let us for a moment put aside the difficulty in defining "time".
My experience is that using story points takes very little effort. Within an hour with the team I can get pretty good estimates for five or six stories - of which some might be pretty big. The corresponding exercise using "work hours" often take much longer.
So, adhering to pragmatism - if one model can give me the same usable result but with less effort - then it is better.
Still, be aware that this observation is highly personal and contextual - even though there are many that report similar experiences. So, it might not apply to your specific situation.
Yours /Dan
Dear Jon
ReplyDeleteI am sorry to hear your frustration. Still I agree that there are a traits of authoritative dogmatism that I do not feel comfortable with.
Yours /Dan
Dear Mouneer
ReplyDeleteThat is exactly how I like my philosophy: simple and practical - which in itself is pragmatism applied. Thanks!
Yours /Dan
Hi Dan,
ReplyDeleteGood writing, as always!
As developers we are used to work with abstractions, and the finer details. Story points is an abstraction that makes it easier for us. But for people with less experience of thinking in abstractions, I often see the urge for mapping story points to "work hours" or something similar, that is more concrete or physical.
The important thing here for us is to explain to everyone involved that this is another model - be clear an precise about its purpose and benefits. I really like what you wrote about "Costs", since this is often where "work hours" goes head-to-head with story points.
Regards, Tommy Malmström
Hi Dan!
ReplyDeleteI still think that "small" is based in time, since it's if you think it takes short time you'd consider it small. If there's a lot of risk I wouldn't estimate it to a very short time.
Also "cost" is based in time, since, at least where I am, money buys time. When I estimate a function I do that not only to know how long it will take, but also how much it will cost - which is the time * hourly fee.
Where you say "alternative costs" I don't know what you mean, but in the blog entry you said "priorities" was about fitting methods in a sprint depending on how big they are - which I'd find just as easy to do with time. And before there's a lot of previous sprints to tell our velocity I'd find it a lot easier to fit stories in a sprint if they are estimated in time.
About "planning" I agree that it is about calender time and not estimated time - it's important to separate them. Altho, as in previous paragraph I'd say its a lot easier to come up with a guess about calendar time if your stories are estimated in time rather than story points - very much so early in the project where velocity is unknown.
Do you do task break down? Do you estimate tasks? Do you estimate the tasks in story points too?
I usually estimate in days, which is very much quicker than hours. Hours I consider micro managment and people seem to believe they can adequately estimate on that level - which ofcourse they can't, it always turns out wrong. When I decide the estimate should be 0 days, 0.5 days, 1 day, 2 days and so on.
A day I define as 6 pph (perfect programming hours), even tho we work 8 hours a day where I am. There's always distractions, better count them in to start with. But then ofcourse the estimates won't match calender time anyway, but it will be in the same ballpark at least.
Hi Dan,
ReplyDeleteThis post is excelent, I agree with you, but I'd want to expose another stuff.
Sometimes is useful try the feature toogle concept. Martin Fowler discusses about it on his site: http://martinfowler.com/bliki/FeatureToggle.html.
In general, we use that concept when we have a big requirement and we cannot separate in springs.
What do you think?
Ops, I wanted to say sprints instead of springs!
ReplyDeleteHi Dan,
ReplyDeleteI forgot say this concept also is known as Feature Bit or Feature Flag. Here is a video on Feature Bit under Scrum: http://www.infoq.com/presentations/Feature-Bits.
Dear Tommy (TM)
ReplyDeleteThanks. And I like the phrasing "makes it easier for us" - that is what all this "model as a set of useful abstractions" is really about.
Yours /Dan
Hi Tommy
ReplyDeleteIt might well be that "small" is based in time. However, "small enough" which was my question is a question about risk "Are there a significant probability that this story will blow up and by doing so crash the sprint?".
You seem to be arguing that all these questions can be answered by using "time" as an aid. I do not argue against that. "Time" is a model that can be used.
However, I strongly disagree with the conclusion that the questions thus are "based in time". No, they are not about time *per se*. Do not confuse the model (time) with what is modeled (a complex development process).
"Story points" is another way to model that complex development process. And that model is useful to answer some interesting questions. But it is neither more, nor less, "true" that the model "time".
Whether one model is better then another must be judged be how much effort it takes to answer the interesting questions using the respective model.
My experience is that using "story points" it takes less effort to reach an acceptable level of confidence, that it takes to use "time" as model.
Yours /Dan
Hi Tommy
ReplyDeleteYou asked about whether and how I do task breakdown and estimation.
To start with - it varies, and it varies a lot. I try to use a tool (like task breakdown) if it aids the development in a significant way. Otherwise it is waste and should be discarded off.
As the needs of a team is different from team to team, and from time to time, I have no fixed answer but: use a tool, evaluate if it is helpful, get rid of it if it is not, and keep experiment with it is.
From time to time I find it helpful to do task breakdown. This happens especially when sprints are longer. During a one week sprint, the stories are often small enough so it is obvious what should be done - then you can do task identification "on the fly" instead. However, it is harder to know if you are on track if the sprints are longer.
I very seldom do task estimations. As long as the tasks are pretty equal size (within a binary magnitude or so), it works pretty well to just count the number of post-its to get a gut feeling whether you are "on track" (which I assume is the significant question you want to answer).
As of the size of tasks I share your experience that a task smaller than half a day is to high granularity, and a task larger then two days is to course granularity.
I have never felt that sizing tasks in story points would help me answer some significant question, so I have not done that.
Yours /Dan
Hi André
ReplyDeleteI too find feature toggle a very helpful tool to use when developing things over time - it makes you able to release at every sprint-end without risking "getting half finished things to the users".
I have also used it as a permanent solution when having the same user interface accessed by people in different roles. Then you can connect the toggling to the access control system instead of a static "per env" file.
Thanks for the links.
Yours /Dan