Posts Tagged ‘user story’

Before Agile, We Never Called It Waterfall…

October 31st, 2011 by clucca

A funny thing has happened over the last couple of years…. we started calling waterfall software development… er… “waterfall”. By this I mean, we never had a name for the process… waterfall was just called “software development”. There was no distinction or name for what we were doing- there was only one way. This is a draw of agile, it’s something different.. and it’s the only new development methodology to actually get attention in the last 10 years.

So, what’s the deal?

#1) Agile is an umbrella term for several methodologies.
Agile encompasses a lot of different things; it can mean different things to different people. This might be why people have such a hard time understanding it. So comparing “waterfall” to Agile isn’t entirely accurate, or possible, since it’s like comparing one NBA team to all of MLB. Agile encompasses several methodologies (such as XP, Scrum, Kanban), which are all iterative in nature… that brings us to…

#2) Agile is iterative.
Yes, agile is an umbrella term, but all of the methods in agile share common core values: The fundamentals are to incorporate iterative development and to have continuous feedback so that you can always improve. This means you continuously plan, continuously test, and continuously integrate so you can adapt when needed.

#3) Agile is adaptive, not predictive.
Do you remember what “waterfall” was like back in the day? We spent months gathering business requirements, writing specs, and designing, and then spent the next 10 months coding. Since we spent the first few months trying to predict what the next 10 months would entail, we could never accurately estimate how much work a task was supposed to be, and heaven forbid the requirement changed half way through! Agile is an attempt to shorten that cycle so we don’t have to waste 10 months before find out something was wrong.

#4) You can pick and choose what methods you want to implement.
It’s funny. I ask people all the time, “How agile are you?” They typically say “Well, we’re somewhat agile, but not fully agile.” People tend to measure some sort of agile “zen” in their head, and that doesn’t exist! If you’re practicing some agile methodologies, you’ve won half the battle.
You’ve won half the battle if you are practicing:
·         Continuous Integration
·         Agile Workflows
·         Test Driven Development
·         Short Iterations
·         User Stories
There’s no out of the box way to do this, but if these methods work for you… then you’re there.

#5) The genius Of Agile is in the name.
Since the word “Agile” can’t be traced back to a specific methodology like “waterfall” we probably won’t ever think of it as “development”. In addition since it’s not a prescribed method of doing things (ex: Watefall.. requirements->design->implementation->verification->maintenance) it just can’t fail… whatever methods we use can always be improved and adapted to best suit our needs.

Breaking Down User Stories

June 28th, 2010 by damonpoole

There’s a lot of excitement about getting to shorter iterations. But with a shorter iteration comes a higher degree of difficulty. One of the problems with shorter iterations is getting all of your user stories to fit into them. For many stories it is no problem, but then there are the stories that seem to only be doable in the time it would take to do two or three iterations. What can be done? Is it even possible to fit all stories into a short iteration?

Before we get too far, consider this. Prior to Agile, what was the incentive to break a large task down into smaller chunks? If you thought it might take 2 months, why not take two months? After all, the release isn’t for 6 months. So, prior to Agile, even if something could be broken down, there wasn’t really any reason to do so. As a result, we’ve had few reasons to build up our bag of tricks for breaking tasks down. Rest assured, there are many techniques for breaking big user stories down into smaller user stories and in this post I’ll show you one of those techniques.

Fitting User Stories into a Short Iteration

New Picture1 300x196 Breaking Down User Stories

The diagram above represents a story that has a certain amount of value. In order to get that value, we have a bunch of work to do. That work cuts across the front end, the middle layer and the back end. An obvious way to split up the work is to do it a layer at a time.

But a user story is only a user story if it provides value to the user. Splitting a story up into “As a user I want the backend for X,” “as a user I want the middle layer for X,” and “As a user I want all of the UI for X” does not provide value until all three stories are complete. Stories need to provide value on their own.

New Picture 11 300x176 Breaking Down User Stories

Instead of breaking a story up into layers, try splitting it up by value. In this diagram, the original story has been broken up into three separate stories, each of which holds value in and of themselves. As a result, each story requires less work to implement. This process can be repeated (if desired) until you can no longer derive stories that still provide user value. At that point, each story is already as small as you currently know how to make it.

A typical example of breaking down a user story is “As a user, I want a calculator function.” This might be for a mortgage application, where the user wants a handy calculator that they can use as part of the application process. One might be inclined to provide a full-function calculator right out of the box. But it may turn out that all the user really needs is to be able to cut and paste numbers out of mortgage forms, into the calculator, add them together or subtract them, and then paste them back into the form.

If you are concerned that the calculator won’t have enough functionality at release, consider that (at least in this contrived example) they can always do what they want another way. But for some subset of users, you will have provided just what they needed. Based on user feedback you can then provide the next level of functionality. In just two short releases you will have provided more of what the end users really need than if you had predicted usage and done just one larger release.

You don’t need to split stories indefinitely, you only need to split them until they fit into your desired iteration length. As you split more and more stories, you will find that it gets easier and easier, and you will start to think in terms of smaller units of deliverable user value.