As recounted here, I had the team circle the wagons and pump out a bunch of user stories for an integration project. It was the first time we'd tried user stories as a means to express requirements, but things felt solid and complete, and the product backlog was full of stories organized by system component and user role, perfect for developing in vertical slices.
The project was considered top-priority and had the undivided attention of the company for the time being. In the rush, I skipped estimating the backlog items and scheduled the sprint kickoff meetings.
Over the product backlog meeting, we iterated through each user story, reading it aloud and discussing in enough detail so everyone understood the feature and the value it brings to the user, but leaving out implementation discussions. At least, that was my expectation. The team members uninitiated in the project got flustered with the lack of specificity in the stories. Some team members seemed to panic, like we had missed a big part of the picture; others got frustrated at the level of intimidation in the room.
The sprint kickoff was a bazillion times worse. During the product backlog meeting, the product owner hadn't expressed a desire to see a specific set of user stories first, so individuals took the sprint kickoff in their own direction and were adamant to work on features that were obsoleted or purposefully left out of the product backlog. There was no common ground to be found. At the end of that sprint kickoff meeting the team had no goal, no milestones, no tasks ... we couldn't even set up the time for our daily scrum.
I've spent a lot of time decrypting what exactly happened. There were things under my influence, and others outside of my control. Here's where I think I failed, and what I've taken away from it....
Failure: The product backlog meeting was the first time the entire team had come together to discuss the project. In particular, it was the first time any of the developers were exposed to the feature list.
Lesson: Expose representatives from each team to the relevant product backlog / user stories before the kickoff.
Lesson: Have the team estimate the complexity of each story, to elicit discussion if nothing else. Ensure that representatives from development and testing are present.
This seems really obvious, but after a week of daily 3- to 4-hour story workshops I was feeling like the team was familiar with the stories. Usually there is a lot more effort put on the product backlog than what we did for this project. The product backlog should be treated like a pet requiring daily attention and affection to remain healthy, but instead we just chain it outside with an open bag of food. Consider that the team would normally help the stakeholders evaluate priorities by providing rough estimates of the stories in the product backlog. If one story has a high business value but would take 6 weeks of work, while 3 stories with a greater total value would take one week of work, it may make more sense to tackle the 3 stories in one week first. Congealing the team on those estimates requires discussion of the features. We didn't do this estimation because of time pressures - but in so doing (or, I guess, in so not doing), we neglected ourselves of that vital team conversation.
Failure: The user stories varied in specificity from hazy to anal; some overlapped each other; some were really just acceptance test criteria for another story.
Lesson: Focus each story on a user role, a feature, and a business value. Don't repeat the combination in another story.
Lesson: Express detail and acceptance test criteria as story notes, not as separate stories.
Lesson: Spend the time to refactor the stories and organize the product backlog.
A lot of the frustration in the product backlog meeting stemmed from the fact that some features had a single story, while others had multiple stories, all of them nearly identical save one bit of detail or acceptance criteria. The perception was that little to no thought had been given to those sparse stories. I think most, but not all, of this frustration could have been avoided if I had worked with the product owner and customer representative to consolidate and organize the stories before bringing them to the team.
Failure: The sprint kickoff meeting started with a goal vacuum.
Lesson: Force the product owner to prioritize milestones for the sprint before the product backog meeting.
After all, that's the point of the product backlog meeting, right? To get the team to commit to a specific set of goals delivered at a fixed time. Not having that goal means the story buffet is open, and each team member will want to do what they think is the most important thing on that backlog.
And last in my list, but certainly not the last mistake I made...
Failure: While the testing, customer representative, and product owner understood the nature of this new user story beastie, the development team did not.
Lesson: If you expect the team to participate in a new thing, make sure they understand its nature.
It's completely reasonable for someone to get frustrated with a process if their expectations of the process haven't been managed. If I had simply reiterated to the development team that these stories were really placeholders for conversations about the feature that we'd have during the sprint kickoff, it probably would have stemmed a lot of the frustration at the product backlog meeting.
All in all, it isn't just vinegar; a lot of sugar came out of us trying user stores, which I'll explain in pt3: Two Steps Forward.