Here’s the scenario. I have created, or identified, two (or more) user stories, and I have decided that the two are not really independent of one another. They are two different people expressing the need for the same feature. Each derives a different benefit from the feature, and communicating their different perspectives to the developers is important to me, as the product owner. Or, perhaps we just realized that they are duplicates. This is a feature that everybody needs, but how many people realize that they need it?
Here’s how this plays out:
The ideal digital tool
I have selected the two (or more) story cards in the view. I right-click one of them and select ‘merge’. Done. The different story texts are viewable from the one story record, the different test cases are visible from the one, if there are any, and if there are no field conflicts, the records merge without prompting. If there are conflicts, I get to see them both, and I get to resolve the conflicts right then. History is preserved.
Usability: Very High Downside: None
The 3×5 card method
I hold the two in my hands. I decide they are really the same story. I grab a stapler and staple them together. Done.
Usability: High Downside: card in back has less visibility
The Excel method
Move the two rows so they are adjacent. Resolve any field conflicts. Copy the story text into the target row. Delete the one that is no longer needed.
Usability: High Downside: can not treat as two different stories as far as role grouping goes. Easy to screw something up.
VersionOne
Add key fields to your view, and make them editable, so you can resolve conflicts in place. Display the Order field so you can re-order items in place. Drag the two so that they are side-by-side in the list of stories. Make sure that you update the important fields in the story that you are going to keep based on the values from the story that you are merging in. Hover over the story you are merging in to display the details. Highlight and copy to the clipboard. Open the story you are merging into. Paste the story text in with the existing story text. Select the Show Tasks/Tests option, and expand the story you are merging in. One by one, drag tasks or tests and drop them on the story you are merging it into. When you are done, delete the obsolete story.
Usability: Medium Downside: tedious, especially if there are tasks and tests to transfer over.
Rally
If you use the new Beta Backlog screen, you can drag the two so they are side-by-side, add fields to the display, modify editable fields to resolve field conflicts, hover over the ID so the details pop up, highlight, copy to clipboard, edit the target story, paste the story text in, and save the changes. To deal with related tasks/tests, you need to make the story that you want to keep a child of the one you are merging. This will push all of the relationships down to the leaf node of the tree. Then, you have to change the parent of the one you want to keep to be something other than the one you are merging with. Otherwise, you have to go into every task, update it, and change its WorkItem to be the one you are keeping, which is very tedious.
Usability: Medium-Low Downside: the technique is either non-intuitive, or extremely tedious.
AgileOnDemand
If the stories are not already in the same epic, you must go to the Planning area (across the top), where you can drag and drop the stories into the necessary epic. However, once there, you can not drag-and-drop them within the epic to make them side-by-side, no matter what view you use. But you can add important columns, then edit them in place to resolve conflicts. Then you must go in to a story (there is no hover-popup) in order to select the story text and copy to the clipboard. You will then have to go BACK into the story to get the Acceptance Criteria, as they are separate fields. That, or you must copy/paste into Notepad (or equivalent). Tasks can be drag-and-dropped from one story to another to re-parent them, but they must be done one at a time. The tool lets you multi-select, but it won’t let you re-parent them in a single action. The tool does not have Tests as a class of task, though you could easily use “Test” as part of the task name. However, since tasks have two different owner fields, one for Development and one for QA, managing the testing effort is not seen as part of the tool’s domain.
Usability: Medium-Low Downside: even more work than the others
Mingle
This tool is a totally generic tool. How you configure it has a lot to do with how it functions. Using the Agile Hybrid template, you switch to the Planning Tree view, and you drag and drop tasks from one story to another. That part is easy. Then, from the All tab, you can add/remove columns. However, it doesn’t look like you can edit them in place. This makes resolving conflicting field values very hard. One thing you CAN do, however, not that it is necessarily recommended, is have a hierarchy that treats User Stories separate from backlog items. Then, you can associate multiple user stories with the same backlog item, without having to modify the text. When you pull up the ‘cards’ that tell the story from one user’s perspective, you can get ONLY the story from that user’s perspective, something you can’t do with any other tool. Cool, but is it worth it?
Usability: Low Downside: ultra-tedious to merge conflicting fields
Usability Comparison Summary on a scale of 1 to 10
| Tool | Merge | ||
|---|---|---|---|
| Ideal Tool | 10 | ||
| 3×5 Cards | 9 | ||
| Excel | 8 | ||
| VersionOne | 6 | ||
| Rally | 4 | ||
| AgileOnDemand | 3 | ||
| Mingle | 2 |
Thankfully, this isn’t something you have to do every day. Next, let’s look at something you DO have to do a lot when initially creating your backlog.