More pondering as I contemplate my previous consulting gig. This time, I'm considering requirements discovery. Pre-agile, people would write large requirements documents, hoping to document all the requirements needed for the developers to build a system that would satisfy the customers. Unfortunately, this view of discovering all the requirements ahead of time is awfully naive. Things change. Requirements go undiscovered. Requirements that are captured are not thought out as well as we would like and when it comes time to implement the requirements in software, the requirements don't make sense or are plain wrong. Thus, large efforts to capture all the requirements has some amount of wasted effort. This effort focuses most of the conversations at the beginning of the project. Conversations after the requirements document has been written and signed off is discouraged; it's viewed as evidence that there are errors in the requirements document. There doesn't seem to be any room for learning with requirements documents.
Now we have agile methods and the user story. User stories are not requirements. They're a planning tool for the agile team. They are a statement of value that the business would like built. There may or may not be acceptance criteria associated with the user story, depending on where the user story is in its lifecycle. The most important part of the user story is the conversations that need to happen to flesh the story out so the feature value can be realized in the product. This detail seems to escape a lot of people trying to use user stories to build products. User stories give me the freedom to have conversations with all interested parties regarding the statement of value. I learn just-in-time about the requirements as I implement the feature. The business learns about how those requirements they communicated manifest themselves in a product. And we both have the freedom to adjust, learning about the product along the way.
The above statements about user stories does not preclude one from using prepared, written documentation to feed the conversation. My previous gig, we have a lot of federal government documentation regarding reporting and calculation requirements. These requirements are set in stone by the government. Yet, there needs to be conversations as to how those requirements will be accomplished across releases and sprints. This is where the conversations come back to the forefront.
User stories allow me to deliver value to the business or customer in bite-size portions. Value is delivered in small increments, thus I can deliver these more frequently and solicit feedback from the business or customer. When I have short feedback loops in place, I can nimbly change my course if I need to.