What are Requirements?
Requirements, also known as use cases, are the conditions or capabilities that must be met by the project to successfully satisfy the agreement or specifications.
Why is effective requirements gathering so important?
Yearly spending worldwide for IT projects were nearly four trillion dollars just a few years ago. With such a large amount of money invested in IT projects, these projects are still highly likely to fail or not meet their original goals, with a reported number of only 39% of attempted IT projects being reported as successful (defined as being delivered on time, on budget, with required features and functions). When use cases or requirements are not defined well, rework is usually required. According to a study published by Robert B. Grady (Author of Successful Software Process Improvement) rework can consume up to half of software development project costs. He also noted that fixing a potential defect in the requirements phase can average being thirty times less expensive opposed to fixing the same defect after it has been developed. Because of their importance to project success, properly collecting, managing, and validating user stories are essential elements to delivering successful projects.
1.) Define the Problem
Think about what problems exist with the current product or process and how is it affecting the user? At Homes.com we use various forms of research such as user testing, heat mapping, and click tracking to help us identify difficulties our users are having. Once we identify the problems, we start brainstorming, prototyping, and diagramming. These activities allow us to identify all the problems and their potential solutions.
2.) Tackle 1 Use Case at a Time
When writing use cases or a fully detailed spec it is crucial that you tackle requirements one at a time. In doing so you can break the project down into simple tasks. I leverage user stories in order to build out my longer more-detailed specifications. Writing out a user story for everything I want the users to be able to accomplish helps me:
A project with a clearly defined scope helps developers, product managers, and all the other stakeholders understand the goals of the project and the timeline for reaching those goals.
3.) Validate Your Use CasesKeeping users involved in your development process not only builds rapport with your user base, but also can be used to validate user stories. If you are building a new solution for a user’s problem, it would be extremely important to have an actual user interact with a prototype prior to starting development. This helps with the process because it is less expensive in time and resources to fix an error or assumption during the requirements phase compared to testing or post release. By continuously validating the work incrementally throughout the project, we save ourselves the time and frustration of changing or scrapping requirements after they have been developed and we also continue to get feedback directly from our users.
While the tips I have written out have been working for me it’s important to remember that there are a ton of approaches for writing software requirements and every person has to find what works for them. Feel like I missed anything? Comment below and let me know what tips you have for writing good requirements.