views:

187

answers:

5

Referring to this buddy question, I want to know how one can manage specs in Scrum process ? I'm facing this problem while assigning tasks to my team for the sprint. Needless to say - I'm new to Agile/Scrum.

Currently, we are using our own specs sheet to map StoryId to SpecId and vice versa. I'm getting the felling that Scrum is more about project management [getting things done on time] and you need a seperate process to manage specs and requirements.

How do we manage specs in a Scrum process ?

A: 

As I understand SCRUM, it does not take care about specs management. You have to broke/map your specs or specs changes to stories and tasks separately. But you can have a task for this :).

binary_runner
even stories cannot define specs. stories are very abstract and summerized compared to specs.
this. __curious_geek
Yes, but each story is made up of tasks, and each of those takes *should* contain a higher level of detail.
joseph.ferris
I don't see a problem having specs defined both on story and task level. Depends on level of abstraction and details. You can even have specs shared among stories - it's OK when the scopes do not overlap. Also consider that the specs should live much longer than you scrum machinery, therefore I'd avoid to make specs part of it, as a source of information it's sitll OK for me.
binary_runner
The spec cannot appear in tasks, because the tasks are setup by the team! They don't know the spec. The spec can be used for acceptance criteria of user stories. They even can be user stories themselves. -- See it from another POV: The Product Owner got the spec from the customer. He forms his vision of the product and keeps the spec in mind. Afterwards he writes user stories and considers the spec's content.
Peter Wippermann
I don't like the part about keeping in mind. The spec should be written somewhere and stories or task should refer to it.
binary_runner
+1  A: 

I think that the easiest way is to make the specifications a part of the user stories within the tasks, themselves. Clearly list the acceptance criteria in each one (or if your issue tracking software allows you, create them as first class work item types). Let the issue in whatever you use for work item tracking become the living document.

There are drawbacks, such as finding related issues as specs change over time, but this can usually be managed in the work item tracking tooling, assuming your can relate issues to each other.

The way that we do it is that we (actually a BA, not the developers) creates a sign-off deck for the product owner to review and we collaboratively create tasks off of that. If we cannot create a task, or there are open questions, we will go back to the product owner with those questions and update the deck. All of our decks are organized (in SharePoint) so that we can easily find them in the future.

joseph.ferris
A: 

There is a real tension between Scrum and other agile dev methodologies and spec writing. I think there are two big points of tension:

  1. Because agile says everything should be on an index card, that means you have to have stuff planned out enough to fit on an index card. (E.g. you have to know how it's all going to work.)

  2. Some things don't make sense in isolation (what's the use of an upload file page without a manage uploaded files page, for instance.)

You don't have to design the whole app all at once, but you have to have a vision of the whole app. Then, especially if you have a separation of designers and programmers, you do functional design for a sprint-sized chunk at a time. Those designs then have to be broken down to story-sized chunks.

This is a lot of up front functional design, and I think that's overlooked in a lot of the talk about agile methodologies. Perhaps some shops have the devs do more of the design. Also, I think it's a lot easier to use scrum/agile for making changes/bug fixes to existing apps rather than building new ones.

The thing I've found most helpful is to fight back on story size. A lot of organizations have gone crazy, saying stories need to be only a few hours. The original scrum book says 16 hours, I think, which is often large enough to fit an entire screen of a web app. So "implement manage my account" could be a story (as opposed to the hundreds-of-tiny-stories approach of "implement username", "implement password" etc.) Then reference your design doc for "Manage My Account" and make sure to have word-perfect screenshots/prototype/mockup so the dev can look at them and copy/paste the text directly into the code they're writing, and they know for sure which fields need to be there (or which links, or which pictures, or whatever).

Adam J.R. Erickson
I think you got a lot of the things behind agile in general and scrum wrong. Please consider further learning on what is scrum about and how things proposed to be done. -- I don't have enough space to comment in detail. But, "Implement X, Y, Z" will never be a user story. Have a look: http://en.wikipedia.org/wiki/User_story -- It's ok to write down epic stories at first, you only have to break them down, when it comes near implementation. -- Your designers and programmers shouldn't be separated. Teams are supposed to be x-functional. -- No characters left, but still much to comment ;-)
Peter Wippermann
1) Designers and programmers are almost always separated in practice, if not physically or organizationally, then de facto. 2) The user stories that you point to on wikipedia are exactly the kind of "hundreds of tiny stories" things that cause the process to grind to a halt. 3) You're hanging onto my misuse of the word "implement" which, you're right, should have been written in user-centric language. But you're disregarding my larger point that breaking down a vision into hundreds of teeny stories takes up front design and makes it hard to keep them organized.
Adam J.R. Erickson
Hi Adam,I have to agree with Peter here, you seem to be mssing some of the core ideas behind Scrum and Agile.Scrum emphasizes cross functional teams, meaning having a divide between designers and programmers is an impediment to forming a highly productive team. Hand offs produce bottlenecks and waste. You want your designers to be working with the developers on the same team so that you can avoid having to do large amounts of up-front design and handing off detailed design documents.
Todd Charron
This doesn't mean you won't do any up-front design, but the more you can successfully limit it, the quicker you can get feedback from the client on working software and the more successful your project will be.
Todd Charron
+1  A: 

For me the specs is in the user stories. We define the specs and the tasks duing out initial scrum meeting along with the product owner. The specs and tasks are just for the life time of the scrum iteration as everything might change in the next iteration(in the worst case but there will definitively be changes).

We usually keep track of the specifications and task on a spreadsheet just so that everybody know what they are working on. I have also tried a few software to do this and one of the most interesting ones I have come across is from [VersionOne][1] and also from [Rally][2].

But I still find that using a simple spreadsheet is the fastest and simplest solution.

Shivam
Great, I totally agree. The spec influences the stories and is therefore considered in the implementation. The spec is supposed to change frequently. This is not traditional PM, where the spec is something like the ten commandments ;-)
Peter Wippermann
+2  A: 

The short answer is, you don't.

The important question to ask yourself when writing these specs, is why do we do them? What is the value in the spec?

The value in the spec usually comes in communicating the ideas of the business with the development team. Scrum is designed to bring the business (in the form of the Product Owner) to the development team. By interacting with the team frequently (remember, individuals and interactions over processes and tools), and by seeing working software frequently, the business can work hand in hand with developers to produce software that solves business problems better than by trying to spec out the whole thing before you get to try it out.

This is how Agile projects do a better job of delivering the product the business wants instead of the product they requested.

That said, there are certain base criteria that need to be met. We can test for this, and as with any good tests, we can automate it.

Have a look at BDD and Cucumber. In addition to your User Story, it's good to have a basic set of conditions of satisfaction, preferably in the "Give/When/Then" format. These conditions are the minimum set of criteria for the story to be accepted as complete.

For example, "Given I am logged in, when I log out, then I am taken back to the home page".

If you're going to have acceptance criteria, you're going to want to automate it. The worst part of most specifications is they often end up out of date and collecting dust when the project is complete.

Also, you shouldn't be assigning tasks to the team. Scrum teams are self organizing and anyone should be able to grab any task they feel they can work on while respecting the priority of the stories. Swarming is a big part of the performance benefits of Scrum.

You may want to consider bringing in an outside coach to assist with your transition.

Todd Charron