In the conversations with users or customer we ask many questions. Some of them are about how the solution should work, some of them are about what functions should solution provide, and if we are really good with questions about “why” this solution is needed. In case of Scrum we also ask questions about priorities. Which story or epic do they want first to be delivered.
Forgotten questions are about the frequency of usage. For example:
- How often are company details (reference data) changed?
- How often do you need to print list of all companies?
- How many people are going to use this?
- May I observe you during your work while using the existing system? I would like to see how often and in which order you use certain functions.
Besides prioritisation, an important reason for answering these questions is design. For example, if certain reference data is changed only once a year, then it might be cheaper to have reference data hardcoded instead of a database table. The first option is much simpler to implement and performs much better. Also a common example is implementation of messaging systems. A very expensive message queuing system, SOAP processing, or even an ESB is placed just to process one message a day on average, and with max of 5 messages occasionally. Email was maybe good enough.
Another reason might be migration path. Sometimes, it is acceptable to postpone implementation of certain features in order to choose a less risky path, and still go in production. Making a right choice of implementing or temporarily not implementing features when migrating from one system to another can be extremely complex. This can be reduced by knowing how often certain capabilities are needed.
Maybe the greatest reason of all is the validity of building something. Sometimes a system should be not built at all simply because the features are rarely used. It happens quite often that business owner wants to spend money on a solution based only on assumptions about how much time and accuracy is really lost in all the manual work that will be replaced by a costly system.