Asking the Right Questions
The program isn’t working. The customization you built is not doing what we want. Why is the report missing these records? This will probably sound familiar if you’ve worked on a software consulting project. There are several possible explanations: It could be a bug, an error made by the developer when coding, or not asking the right questions when gathering the requirements. We’ll be talking about the latter in this post.
All development projects start with a new requirement. Sometimes, it can be as simple as a single sentence stipulating what they want to build or enhance in their current system. The decision you make after receiving this requirement will indicate whether you succeed or fail when delivering the final solution. You have two choices. You can either start writing code right away or you can take time to analyze the request, review the requirement, and clarify exactly what the customer is looking for. As a developer, we have an urge to start coding, it’s in our nature, but sometimes this might not be the best decision, especially if you haven’t yet asked all the right questions. If you were a construction worker, coding before designing and reviewing would be like building the walls of a house without floor plans, expecting to guess the number of walls required. You can be sure this won’t have a happy ending.
What I’ve learned working in consulting is that before writing the first line of code, I need to be clear of what the customer wants and what their expectations are. Understanding the request from beginning to end is critical. Here at Mayan Technologies we call this step “discovery call”. On the discovery call, we meet with the customer and flesh out all the questions or doubts we have regarding the requirements. Customer time is valuable and we need to use it wisely. We cannot waste time with unproductive calls or emails. We need to be smart and know which questions to ask.
Now, the million-dollar question: How do we know which questions to ask? How do I know if I’ve asked all the necessary questions to have a bug-free solution? These questions help developers structure their thinking process and clearly develop a plan to extract key information. Collecting and considering all the information will help you, as a developer, generate complete design documents as well as help your customer plan for different scenarios that might not have been in the picture at the beginning of the process.
Gathering and clarifying requirements is not an easy task. I, personally, spent an entire semester in college studying different techniques on gathering and analyzing information, which reflects how critical and important this step is. Most techniques rely on interviewing all key actors in the process, watching the users go through the manual processing, understanding their process, and presenting “what-if” scenarios. A good checkpoint to know if you have a clear understanding of the requirements is to have a peer review. If you can explain the requirements in detail and answer any doubts your colleagues might have, you are good to move on to the development phase.
Unfortunately, you can’t be sure you will deliver bug-free code. However, if you take the time to ask the right questions to completely understand the request and perform a peer review of your design document, you will have a robust and solid foundation which will help you minimize the risk.