Features vs Stories
I realized today that I hadn't made explicit the difference in my mind between features and stories and it's an important difference. Essentially, a feature is a group of stories that are related and deliver a package of functionality that end users would generally expect to get all at once. For instance, inline table resizing is a feature (note: this is the ability to drag to resize tables, rows and columns – try it in Word). In the first pass, you'd probably have a single story for inline resizing of tables, but it would be too big to estimate. So you break it down into three stories, resize columns, resize rows and resize the table itself.
Now we have three stories – three things to develop which add value to the product and can be done fairly quickly (we're currently aiming for the biggest of our stories to take a day). There is value in being able to resize columns but not rows or the table itself – it allows users to distribute space between columns more easily to make the table look good. In fact, it covers 90% of the use cases for inline table resizing – people rarely resize the overall table or the height of rows, usually they just want to make column widths fit the data better. Despite that, shipping just that story out to users would cause confusion and complaints to support because it sets up the expectation in user's minds that they can resize tables so why can't they resize the rows or the table?
The feature is all three stories put together, and to be able to ship without confusing our users we really want to make sure all three stories are completed before we ship – however we can still release to internal users as part of our dog-fooding program or to beta testers before we have all three, so there is value in doing just one of the stories.
There are two key advantages to breaking down features like this. Firstly, it makes estimation easier and more accurate – things that take a long time tend to be very difficult to estimate. Secondly, it allows us to track progress on the feature accurately. One of the first rules of tracking project progress is that you only ever track tasks complete, and not partial tasks because people are really bad at estimating how close to completion they are. With small stories you can track progress just based on the number of complete stories without losing too much accuracy.
Breaking down stories is pretty hard though because you have to make sure that they still deliver value. We had one story recently to develop a particular properties panel that would become part of a larger dialog. Unfortunately we were given the panel story before the overall dialog story so we developed a panel that the user couldn't possibly access. Worse still, we wasted time beginning to create a dialog just for that panel because we assumed it was required – we should have picked up on the lack of value in the story and asked the client about it before we started work – we probably would have done the create the dialog story first, thus making the panel story suddenly have value.

January 10th, 2010 at 3:49 am
thank you for this. I wasn’t sure why features came first. I’m new to agile/xp/scrum, etc. and thought features and user stories was just double work.
March 12th, 2010 at 7:41 am
Hi!
A great summary! I have been working with Scrum for a couple of years, but we have left out the distinction between user stories and features, and often ended up with the problems you describe:
* Too big user stories
* Many good work items
* But a problem to monitor real progress, as it’s hard to monitor how close we are to completion, as our user stories are too big!
I will definitely take this into consideration in our next sprint!
Thanks!
April 9th, 2010 at 3:34 pm
Good summary, however I link a feature to a real business requirements. The questions that I ask is “what is the value added to the business by this feature?”
Do you think its valid?
September 21st, 2010 at 10:15 pm
Hi Adrian,
I was giving some thought to this as well! I think your point of view is valid, although I would generally tend to break up User Stories (which represent the value added to the project from a business point of view) into one or many Features (which usually represent functionality).
Although, I think there is some occasions (like your example) when one feature (one functionality) may be big enough to break it up into smaller groups of tasks, that add some value by themselves, therefore having the case where a functionality is broken up into user stories, though in my opinion, this is not so common.
I used to think that there was a 1:1 relation between features and user stories, but after I took an agile programming workshop (that lasted a semester or so) we used the “break up user stories into features” approach, and this seemed to work pretty much fine.
July 24th, 2011 at 5:09 am
Would it not be the same to have the feature and then break down the feature into tasks who will be assigned those tasks? why break the feature into stories?
thanks
Can u email me ur response. thanks
July 26th, 2011 at 7:31 am
Generally features break down into stories and then stories break down into tasks. The stories need to be small enough to fit into a single iteration, and quite often you can’t fit a whole feature in. By breaking the feature down into separate stories, you can deliver the feature incrementally and with some careful choice of breakdown deliver the value incrementally as well.
Tasks on the other hand should be about the minimum testable step you can take towards completing a story. On their own they probably don’t provide any business value and sometimes they will leave the software in a state that wouldn’t be ideal to release (a new feature without updating the user manual or a partly finished new dialog etc). You don’t want to leave the code broken obviously, but sometimes stories require one step backwards to make two steps forward.