I’ve seen a lot of projects fail when by all accounts, they shouldn’t have. The reason for this nearly every time, was that the requirements gathering stage of a project was done poorly, or sometimes not at all. Sometimes this is driven by budget or deadline constraints, and sometimes it’s because the people responsible are just unaware of how to go about gathering requirements in a structured manner, and if you’re have faced one of the above stated problems or know one of those people, then please read on.
Requirements exist to make sure that what you think you are building, is the same as what the client or stakeholder thinks you are building. Requirements serve many purposes, but when you strip them down to their core, requirements exist to make sure that what you think you are building, is the same as what the client or stakeholder thinks you are building. Because of this, they should be as easy to read and understand as possible, which things like functional specification documents usually aren’t.
User stories are probably the most popular technique to capture product functionality in an agile context. A story contains a name, a brief narrative, and acceptance criteria. It’s comparatively easy to write, decompose, and refine user stories. But writing good stories can be hard and difficult and writing stories which can be used by the development team to further progress and create a potentially shippable product is more tougher.
All of us who follow Agile and related practices and frameworks are aware on the concept of “Definition of Done”, Which is to evaluate and figure out the work as performed the development Team and understand the readiness of the user stories as committed by the team during the iteration / sprint planning.
During one of my interaction with a client team, I had an interesting experience and the idea discussed was, if the Product Owner and the relevant stakeholders evaluate the user stories on some pre-defined criteria’s (read “Definition of Done”), why do the development team do not get adequate rights to evaluate in a similar manner and fashion the correctness and information as provided in the User Stories. It was a valid point from their side, is what I felt, but led to a higher level element of thinking …. on how do we achieve this.
This led to the idea of innovating a new element in Agile World — “Definition of Ready”, something which would and could be utilized by the development teams to evaluate the user stories and reject if it does not meet the required DoR
DoR would work in a similar manner as DoD, but DoR would be the starting point of the system, where DoD would be used and utilized at a later part in the system. There is quite a bit of thought process already available in the market with respect to writing good and useful User Stories, some of them are “DEEP” and “INVEST”.
The DEEP discussed the following elements in the system:
- Detailed Appropriately. User stories on the product backlog that will be done soon need to be sufficiently well understood that they can be completed in the coming sprint. Stories that will not be developed for awhile should be described with less detail.
- Estimated. The product backlog is more than a list of all work to be done; it is also a useful planning tool. Because items further down the backlog are not as well understood (yet), the estimates associated with them will be less precise than estimates given items at the top.
- Emergent. A product backlog is not static. It will change over time. As more is learned, user stories on the product backlog will be added, removed, or reprioritized.
- Prioritized. The product backlog should be sorted with the most valuable items at the top and the least valuable at the bottom. By always working in priority order, the team is able to maximize the value of the product or system being developed.
The above are a good starting point, but would require a lot more thought process. One other element that is around in the Agile world for a long time is the concept of INVEST in User stories
- Independent The user story should be self-contained, in a way that there is no inherent dependency on another user story.
- Negotiable User stories, up until they are part of a Sprint, can always be changed and rewritten.
- Valuable A user story must deliver value to the end user.
- Estimable You must always be able to estimate the size of a user story.
- Small Small User stories should not be so big as to become impossible to plan/task/prioritize with a certain level of certainty.
- Testable The user story or its related description must provide the necessary information to make test development possible.
Again the above elements are more generic in nature can have a level of difference across team members as to what would be what, the idea is to have quantified elements for DoR and then use them to evaluate the required User Stories to meet the minimum qualification criteria. One cannot be standardizing these ideas, as they would be required to be home grown and adapted to the needs and requirements of the development team (of course in agreement with the Product Owner)
Not everything can be a User Story : Don’t feel obligated to describe every single aspect of the product as a user story. For instance, user interface design ideas are often best captured in form of paper sketches
Finally thoughts … It is through the process of trying to quantify objectives that we probe more deeply into what’s really important