“Gathering Requirements” is one of the most dreaded phrases in software development. Before starting a new project you have to go through the “gathering requirements” phase. When you’re “gathering requirements” it means you can’t start building yet. It means you can’t do any of the fun stuff like buying servers or writing code. Or downloading new frameworks that all the cool developers are using. It means you have to stop, sit down and think hard about all the things that could go wrong. It means discussing with the customer what they actually want. It means thinking with the end in mind and determining the path the entire journey will take, with error checking and documentation. It means stop daydreaming about how great this will be and actually come up with a plan.
It means you have to answer all the following questions:
- Who is it for?
- What is the cost?
- What exactly should this project/item do?
- How much time will it take?
- What is the expected outcome?
- What could derail our plans?
- How will we finish if something doesn’t work out?
- Is this the best use of time/money/effort?
The reasons for doing this are as obvious as they are boring. First, if you start all your adventures with only a half baked idea about what you need you’ll waste too much time and money. You’ll quit half way through because it’s taking too long. You’ll discover you don’t have enough money. You’ll discover you didn’t need to print CDs. You’ll discover that the expensive producer you hired didn’t want to work that hard and now you’re half done and out of money. Or just as bad, you finished something that doesn’t meet your requirements in the first place.
“Gathering requirements” isn’t the thing you do before “the project” can start. It’s the most important part of “the project”. The thing that makes the rest possible. So don’t dread it. Go get those requirements.