views:

717

answers:

4

I am attempting to manage my projects a little better so I am looking at attempting to apply some of (eventually all) the features of scrum.

Looking at user stories specifically the high level format seems to be:

As a User I can Feature Description

or

Artifact is Doing Something

How would I write "Upgrade the Database"?

Is it simply Upgrade the Database?

I think I am being thrown off as there is no specific actor/customer and that the customer is the IT department.

+3  A: 

Upgrade the database may be one of the tasks involved in implementing another story that brings direct value to the user, for example I as a user can add a new foo to my bar.

If adding a foo to a bar requires a database upgrade behind the scenes, then you would include that work in implementing that user story.

User stories are worded this way to help ensure that any work directly benefits the end user in some way.

GraemeF
What if the story is our db platform is too old and I want to upgrade it because I don't want to use a 10 yo db and some of the new features of a 5 yo db would come in handy
John Nolan
if you have some new features of a new db, then you have your action in the user story.... As a [user],[dba] I want to use [fancy new feature] so that I [get this business value]. One of the tasks could then be upgrade the database.
Paul Rowland
If the new features come in handy for implementing something that brings value to the end user then do it as part of that user story.
GraemeF
+1  A: 

It's simply "Upgrade the Database" or maybe "When the new version is installed, there must be a way to migrate the existing database". If you already know more details about this step, then include them. But the story mostly exists to make sure something isn't forgotten; it's not to be detailed.

Later, when you get to implement this story, you can flesh it out (which tables, do we need one or more backups, is there a fall back scenario, etc).

OTOH, if the project is more complex, this can become a "tag", like a post-it notice which must be attached to many stories. That means you must include this as a "sub story" to all stories which change the database. As you can see, these "project-spanning stories" are a bit hard to track with agile methods.

Aaron Digulla
+8  A: 
AS A [person/role]
I NEED TO [do something] 
SO THAT [provides business value].

For your example a user story might look like this:

AS A user of the XYZ application
I NEED TO get reports of ABC faster
SO THAT we can increase our conversion rates.
ACCEPTANCE CRITERIA - The database reliably completes transactions on average in 2 seconds.

I've added an acceptance criteria because without this you will never know when the job is done. Now at this point, you have a business case for upgrading the database. This story would be decomposed into a story where the role is the IT department or DBA, like so:

AS AN administrator for the database server
I NEED TO upgrade to the latest version of FancyDB 11.7
SO THAT we can improve the average transaction time for XYZ users to 2 seconds.
ACCEPTANCE CRITERIA - the new version starts successfully, the XYZ developers sign off on the test installation of 11.7, data migration is successful, we have cut over to the new db

If you add story decomposition to your box of tools, then you always start with a story where the user is a real part of the business, and the "so that" leads to a real business value. Then decompose it into one or more stories in which internal users do things "so that" those real users get the benefits they have asked for.

Here are a couple of articles that talk about Story Decomposition:

http://www.agileproductdesign.com/blog/the%5Fshrinking%5Fstory.html

http://www.cognitive-edge.com/ceresources/articles/56%5F1999%5F11%5FParadox%5Fof%5FStory.PDF

Michael Dillon
+4  A: 

Scrum is not very prescriptive and there is nothing in Scrum that forces you to use User Stories for your Product Backlog Items (PBIs). You can definitely do Scrum without capturing requirements/features as user stories, user stories are just one way to do it. Actually, stories do work for many teams, especially web development teams, but this doesn't mean that they work in all cases and on every project (many projects are web development but not all, like in your case). There is no consensus about using stories.

That said, the recommended template for User Stories is actually As a <role>, I want to <action> so that <benefits>. I don't mean to be picky but, if you choose to use stories, I'd warmly suggest to use it as is, without removing any part. First, using a role do help (a same user/person can have several roles) to discover stories. Then specifying the benefits is really important to expose the business value of a story in order to prioritize them well. Regarding the value, you should think of it as end-user/customer ("put on customer glasses" --Mary Poppendieck). It is really not always that easy to express the benefits, but some tools might help and my preferred one is the 5 whys (which is used for root cause analysis).

In your case, this could lead to something like: As the IT department, I want the database to be upgraded so that users can benefits from the latest features of the application and [do a better job|have a better user experience] (not very satisfying though, use the 5 whys).

But personally I don't find that user stories are the best medium for technical tasks even if it is clearly possible to use them and if they have their strengths. Theoretically, stories capture the essence, not the details and should be a support for the discussion. I may be wrong but I don't find that technical tasks offer much room for discussion and creativity. So, depending on who will read them, what the should convey, I might use them or not. Another option could be to mix stories with another formalism for your PBIs. As I said, the point is not to use stories, the point is to have a list of prioritized and estimated items.

Pascal Thivent