Software Development and Asking Good Questions
The days of the solo programmer who would sit in isolation and write code are long gone. In the past decades, the software development industry has seen the adoption of agile and scrum methodologies, which value collaboration and communication and help accelerate software development cycles significantly.
However, if you don’t have a clear picture of the end goal, going faster won’t help. The saying “Don’t confuse activity with progress” encapsulates the idea well and developing the skill of asking good questions will be of great value for making sure that you understand the big picture.
Good questions confirm assumptions, keep projects on track, prevent you from polishing the wrong feature and keep everyone on the same page.
I believe that every software developer (or anyone working in IT!) should be intentional about developing this valuable skill and with the advancements in AI tools, it will be even more critical: most of our work as software developers is going to be creating prompts to get something done by AI. Having a clear picture and a critical mindset is what turns a developer into an indispensable problem-solver.
Below are a few quick notes on sharpening that skill:
What are we doing here?
When I worked in technical support - and later as a technical business analyst, my job was to uncover what clients truly needed, not just what they asked for. The difference is not always clear! (and just a reminder here that even if you are a software developer who never talks directly to end users, you still have a lot of clients: your peers, your manager, the project and/or product manager, the leadership, and so on)
Ask questions like these to spot expectation gaps:
- What is the end goal?
- Does it add value for the end user?
- Is this the simplest solution to the problem?
- Are the end users asking for or interested in this feature or is it coming from someone else (a product owner, a manager, etc)?
What am I doing now?
Requirements are cleared and work is assigned. Most times this is usually covered in triage or planning, but before you start working, make sure you ask yourself:
- Do I have all the requirements, assets and/or permissions I need to work on this task?
Then, as you work on your task, avoid getting sidetracked. Sometimes, people get easily distracted with “good-but-not-now” side-tasks: you are tasked with adding an attribute to an existing API endpoint but you decide to refactor the whole data model and serializers. Three migrations later and now you are searching for “The operating system returned error 21(The device is not ready.) to SQL Server during a read at offset 0x00000000000000” or something along those lines. Maybe, just maybe, you need to take a step back and ask:
- What is the end goal?
- Am I working on the right thing?
- Does it meet the requirements?
- Is this the simplest solution to the problem?
I need help!
It happens to everyone: we all get stuck. Asking for help, be it from a peer or an LLM, will get you to the answer faster if you know how to frame your question. Providing context is one way to get a better answer. Try to frame your question as the following:
- This is what I am trying to achieve and this is what I tried so far. I got this error/message/output
If you are just doing a plain browser search, pasting error messages is usually the best approach as long as you are sure that you are solving the right problem!
Speaking of solving the right problem, being aware of the XY Problem communication problem will help you with taking a step back and asking the right questions too.
Collaborating with AI tools
The questions I outlined above are still valuable when you are using AI tools; you might not directly ask those questions to LLMs but knowing the answers to them will help you be more efficient when collaborating with AI.
AI tools are evolving at a very fast pace and I believe that the way we interact with these tools will keep changing. However, for the time being, here are some effective ways to approach the issues you need help with - used in isolation or combined:
- I want to solve problem abc (bug | feature ). What are the possible approaches to solve this? Highlight 3 possible solutions for this problem
- Explain the trade-offs of
<possible solutions for your task>
- Make a plan to solve bug ABC and run it by me first (Claude’s team recommends this strategy (see clip))
Takeaway
I hope it’s clear: every developer should try to get better at asking good questions.
Clear communication (asking good questions, describing desired outcomes, giving context and explaining attempted solutions) is a critical skill to have, even more so as we interact with AI tools.
Do you have suggestions for other good questions to ask when working on a project? Let me know on X.
Thank you for reading!
I'd love to hear your thoughts — let's keep the conversation going on X: @Flavia_SBastos