Let’s say your company has a great software application. It could be a revenue-generating product or an internal workgroup solution. Either way, the business is asking for an enhancement — not just any enhancement. They want to implement a completely new feature set.
You ask lots of questions to determine basic information like:
- Target users
- Information sources
- Analysis algorithms
- Data volumes
- Reporting needs
In the end, it becomes clear that the business doesn’t have all the answers. They know they need to do something to remain competitive, keep customers, and reduce costs but the details are murky. What should you do?
- Keep asking questions. Cast a wider net and involve more people. More business analysis should deliver a better definition. Makes sense but could eat up lots of time. Time you probably don’t have. [This is not very agile.]
- Conduct competitive analysis coupled with focus groups. It might work as focus groups are frequently used to help determine software characteristics. Unfortunately, they won’t help if the users don’t know what they don’t know. [This is not agile either.]
- Take your best shot. Write an elaborate requirements document; develop detailed use cases; get the business to sign-off; build it; ship it; done. While this approach is quite common, there is a high risk of delivering what the business requested but not what the business needs. [This is anti-agile.]
- Employ a minimalist approach. Zero in on the highest-priority and best-defined needs. Deliver the essential feature set and call it “beta”. Gather test feedback and refine the solution. This will work if you can get real people to run the beta software in real situations. [This is not exactly agile, but getting closer.]
- Go with #4 but skip the “beta” label. Get the essential feature set out fast. Listen intently to the user feedback and keep delivering refinements every few weeks. [This is the most agile approach.]
Is #5 the right choice for every situation? No, but it can be your first choice in every situation. Get the business to rationalize why the most agile approach won’t work.