Home > agile, bug management > Bugs Source #1: Unclear User Stories

Bugs Source #1: Unclear User Stories

I think unclear specifications is #1 source of bugs. If you deliver something that was not intended, there will be many complaints from customers. In customer’s opinion almost all these complaints are bugs. Also, without instant communication it is very easy to miss important details and release an un-polished user story with a number of small glitches.

Agile development is very rapid. In many cases the path from idea to user story in progress is extremely short, it may be even 1 day. With this hard pressure on,  it is very easy to make errors in user story description. Product Owner may miss some important details and as a result the story will do something wrong, something that was not expected.

This is the first question you must ask… is it a bug, or is it a change? I’ve seen a lot of bugs that have come up that were “We asked you for x, never thinking about y, so could you please change the system so that y is covered?” It’s a business scenario, so there’s no reason to expect a developer or tester to anticipate/test it. I know where we’ve struggled is in injecting items into the product backlog, we tend to classify it as a bug and so we end up with a lot of bugs, but not a lot of change in the back log. That’s exactly what I think we’re supposed to be avoiding in Scrum or any other agile methodology. As we see change, we should be taking it on as a feature and prioritizing it accordingly. Only when it’s something broken should it be called a bug.— Jim Leonardo

The best solution to this problem is communication.

Clarification meeting

The important thing in software development is to put everyone on the same page. Developer, Tester and Product Owner should run a small meeting about user story, thus forming a mini-team. If a user story has several developers and several testers, all should participate.

The goals of the meeting are:

  • Ensure that everyone understands what should be implemented.
  • Brainstorm acceptance tests/test cases and create a check list.
  • Reveal and eliminate all discrepancies in story description/specification.

We have these meetings at TargetProcess and they are very efficient and helpful. Recently there have been some stories  with no meetings, and as a result the stories had more defects and a longer cycle time. Side effect of the meeting is that Product Owner receives less questions about functionality later, thus having less interruptions (which is good).

Stories should be ready before iteration start

It is a good idea to have all user stories described with good details before iteration start. Thus testers and developers will have time to review them and prepare questions to the iteration meeting. It may trigger a much better discussion and reveal some interesting problems that were unclear initially.

There is a danger to document more user stories than required, and it will be a form of a waste. Product Owner should maintain good balance here.

  • Hear hear, I couldn't agree more! Writing good user stories puts everything else in good stead from the outset. I've written quite a lot of posts to help people write good user stories. You can see them all here:

    http://www.agile-software-development.com/search/label/user%20stories

    Or alternatively, this post 'Writing Good User Stories' sums it all up in a nutshell!

    http://www.agile-software-development.com/2008/04/writing-good-user-stories.html

    Kelly Waters
    All About Agile
  • Serge Van Kampen
    I'm now doing my 2nd scrum project and we don't start any user story before it goes through a functional analyse phase. This sometimes reveals remarkable new insights and consequences if a user story would be carried out as described. So my advise would be: don't start on a user story without an analysis phase.
  • Is there a Linux version?

  • Wille :

    If developers do not clearly understand what has to be done and/or find logical inconsistencies in conditions of satisfaction, they should simply refuse to take in the story into a spring until it has either been clarified or removed.




    Totally agree!
  • I wrote about almost the same thing.

    I think one more point/approach that can be added to the toolbox is during sprint planning: If developers do not clearly understand what has to be done and/or find logical inconsistencies in conditions of satisfaction, they should simply refuse to take in the story into a spring until it has either been clarified or removed.
  • @Cobus Nice application of Pareto principle :) However I think it is more complex. It is a kind of 60 - 20 - 20. 60% before development start, 20% after development ends and 20% after the demo to end user.
  • Cobus
    I try and think of it as follows:
    A story represents at most only 80% of the complete functionality. The remaining 20% is only thought when the user actually gets to see the software after the iteration...
  • @Joseph Ours Definitely you may (should?) replace specification with communication and if it is possible - just do it. I believe it is VERY hard to create complete user story specification without increments. Increments may look like this:

    1. Very brief story description in format "As [role]..."
    2. More detailed story based on customers talks (communication)
    3. More detailed story based on PO+Dev. Team evaluation (iteration planning meeting or other event)
    4. Add more details when required based on story development feedback

    As I see, communication should be constant on all levels.
  • So, to play devil's advocate, the #1 source of bugs is not unclear (insert your favorite guiding document name here) - specifications. It is a lack of communication. At the end of the day, if you don't communicate, and agree on common oracles, you will always incur more work to overcome a lack of communication; because, software development is always collaborative no matter how hard you try to fight it.
  • Nancy McCall
    I have always maintained that the best way to find out what a user really wants is to give him exactly what he has asked for. Clarifying exactly what I want from a piece of software requires that all the assumptions in my mind are spelled out. Spelling these assumptions out -- or drawing them out of a user or product owner -- is simply another skill to be acquired and honed.
blog comments powered by Disqus