There is a lot of advice out there for how to write requirements. There is not as much discussion about why to write requirements. Spend some time thinking about why you write requirements before you make decisions about how to write your requirements.
Why Write Requirements?
Whether you communicate requirements through conversation, user stories with acceptance criteria, or traditional structured requirements and use cases, or diagrams and commentary, you are sharing them as a means to an end – creating the right product. Don’t just follow some prescription and go through the motions of documenting requirements. Take a step back and consider the following goals for your requirements-writing.
- Improve your understanding of what your market needs (from you).
- Decide on the sequence in which you will deliver what you choose to build.
- Collaborate with (and set expectations for) your engineering team.
- Manage expectations with your stakeholders.
- Improve the efficiency of your product-creation process.
- Remember why your team created what they created.
Every team will place different emphasis on each of the above goals, depending on their unique situation. Each of the above goals could be the most urgent goal for your team. All things being equal, IMHO the goals are in order of descending importance.
Understanding Your Market
Understanding what your market needs is the most important goal supported by writing requirements, although writing requirements only indirectly contributes to your understanding. There isn’t a single standardized structure for capturing market understanding, every product manager has their own approach, ranging from “in your head” to sticky-notes and back-of-the-napkin drawings to canvases, mind maps, wikis, and big documents. What they have in common is that they all help the product manager with synthesis and analysis of information, informing decisions about what is important to deliver.
Throw-it-over-the-wall processes are flawed not only because they inhibit change, but because they impede feedback loops. The simple act of documenting requirements based on your understanding of market needs will identify opportunities to improve your understanding of your market. As you apply the rules of requirements completeness and correctness, you will discover that you are missing some information, and that some of your analysis is incomplete or flawed. Writing requirements creates the feedback loop that forces you to revisit and improve your understanding of your market.
Develop a point of view about what is important and what will be important to your market, specifically to your customers and prospective customers. Combine that with a vision or strategy for your company, specifically how your company intends to serve your market. Mix in a perspective about the competitive landscape, specifically how your competitors (alternative solutions your customers could choose) compete and will compete.
When your documentation of requirements identifies who’s goals you’re addressing, how much addressing that goal is worth to them – and to you, and the relative strategic importance, that documentation tells you the relative value of each “thing” you intend to build. This is a key contributor to the sequencing of what you build.
Collaborating with Delivery
I love the name of Jeff Patton’s company – Comakers. It communicates that discovering which problems are worth solving is a collaborative effort between the product manager and the engineering team. It is the solving of valuable problems that is interesting, not just the discovery of valuable problems worth solving. Requirements, expressed verbally, pictorially, or in prose, are part of that collaboration and communication. The intersection of value with feasibility, timing, and cost is what defines what your team can accomplish.
Note that sequencing decisions are usually tightly coupled with solutioning decisions. In other words, you cannot solve “when” and “how” independently, you have to solve for both, in the context of “why” simultaneously.
Stakeholders are better served when they know what to expect. Part of knowing what to expect is knowing the scope of what you intend – ideally communicated in terms of market needs, more commonly shared in terms of “what” and “how.” The requirements you communicate are a reflection of the “why” and are a key component of managing expectations. There is a lot more than this to managing expectations (for example, predicting “when”), but being able to say “these are the problems we intend to address” is a great place to start.
Teams that start building without knowing why they are building will, by definition, build stuff that isn’t needed. Teams that ignore opportunities to get smarter about changing needs will also, by definition, build stuff that isn’t needed. The requirements you document enable teams to focus their efforts on what is needed. The cadence by which you update those requirements as you get smarter (learning more about your market, adapting to changes in your market, etc) and your team consumes those updates will impact the team’s ability to stay focused on a – by definition – moving target. The clarity of how you document and communicate your requirements impacts the effectiveness of your communication. All of these factors contribute to the efficiency of your team – and therefore to their capacity to create value. My experience has been that (with caveats for diminishing returns) small amounts of additional time following the rules of requirements avoid large amounts of time clarifying and re-communicating, freeing up more time for me to “get smarter” about my markets.
Enterprise software folks know full well that software applications can live for decades. We also know what it’s like to have no idea why a particular capability exists in a product, who uses it, how much value it provides, or what would happen if we improved (or removed) it. Now that software-as-a-service has gained traction, more and more consumer-facing products will have similar long life-cycles. When you document requirements – at the time of building things – don’t throw them out. Keep those requirements around, they will provide context later, after you’ve forgotten why you built something. This is particularly important for whoever takes over your job after you get promoted, or leave for a greener pasture.
Conclusion and More
Keep in mind why we write requirements. When considering how you will write requirements, think about the impact of different techniques on the goals that matter to you.
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.