Regardless of which development method is used for a project, the first step is always to gather the requirements. Just as no builder would try to construct a house without knowing the square footage, number of bedrooms and budget, you must first determine the size, scope and purpose of the finished product.
The requirements gathering phase is where customers and developers interact to determine this information. However, requirements gathering is much different for projects developed under the traditional waterfall method and those developed using agile methodology.
The waterfall method of development requires that all development progress in a forward-moving manner. Once a stage has been completed, going back to make changes can be costly, both financially and in terms of delayed deployment. Therefore, all requirements for the entire project must be clearly defined before the first line of code is written.
With so much information to be gathered and analyzed, this initial phase can take weeks, if not months. Easy wins — the low-hanging fruit that lends itself to a quick fix — must be ignored until the entire project has been mapped out. Such an approach carries the following drawbacks:
Because the client may not see the finished product until a beta version is ready to be tested, the waterfall method carries the risk that many months could be wasted on developing a product that does not do what the client needs. The delayed deployment could result in missed opportunities to expand the business or lost sales due to dissatisfaction with the current system. Although there is no universal law on the issue of who bears the cost of a failed development project, the general rule is that if the client failed to provide accurate, clear and complete requirements, the client must bear the costs of the doomed project.
The agile development method breaks the project into independent blocks, each of which can be completed in a relatively short time — usually less than three weeks. In most cases, all or almost all of the features can be developed, approved, tested and implemented separately.
You can choose to implement features independently to score quick wins and begin realizing a return on your investment. If a requirement has been overlooked or miscommunicated, the oversight can be quickly remedied with minimal delay and cost. Similarly, if business needs change, new features can be added or existing features modified with minimal impact to the project.
Requirements gathering for agile projects is quite unlike requirements gathering for waterfall projects. Instead of trying to detail the requirements for the entire project, the process begins by having the client write user stories that describe the type of user, what the user needs to do and what the user hopes to accomplish from his actions. The following examples illustrate the concept of user stories:
These stories answer three questions:
Once the user stories have been compiled, the developer can begin to build the entire project. Each user story is a brick in the completed project. In most cases, many or all of the user stories can be transformed into a feature. Individual features can be prioritized, with the critical features developed and deployed first. Should priorities change, it is not a major issue to rearrange the order of development, and if new features need to be added, they can be included without incurring excessive costs for modifying the project.
It is important to remember that user stories do not involve the “how” of development. They merely describe what is needed. If a development team knows what a feature needs to do, it can easily determine what tools are needed to accomplish the task.
Some clients may deliver a list of user stories to a developer at the outset of the project. More often, the developer must guide clients through the process. An interview with the client and a large cross-section of the company’s employees can prove beneficial. Developers should encourage users to “brainstorm” freely without considering the technical aspects of the request.
When interviewing users, it is best to ask open-ended questions. Here are some examples of good questions to ask:
Conversely, here are examples of bad questions to ask:
Projects have requirements beyond the user needs. These requirements may include:
Additional requirements may apply to specific projects.
These type of requirements are often called non-functional requirements or system constraints. They must be identified so that developers can keep them in mind when addressing the functional requirements.
The agile and conventional waterfall methods of development are quite different, so it is only logical that the requirements gathering phases are also quite different. The basics are:
There are numerous advantages to using the agile method when developing large projects. However, some benefits can disappear without understanding that requirements gathering for agile projects is not the same as requirements gathering for conventional projects. Although it may take a little time to adapt to the differences, the time spent can pay off handsomely.