
The Power of "Why?"
The most expensive code is the code you didn't need to write.
The most important question I’ve learned to ask after 25 years of software development is “Why?”. How much complexity are we building because we never asked the right question?
Consider this:
Initial Request: “We need a real-time dashboard showing current warehouse inventory levels, updating every 5 seconds.”
The Why Chain
Developer: “Why does it need to update every 5 seconds?”
Customer: “So warehouse managers can see stock levels instantly.”
Developer: “Why do they need instant updates? What decisions are they making that require 5-second freshness?”
Customer: “Well, they need to know when to reorder stock.”
Developer: “How often do they actually make reorder decisions?”
Customer: “Usually twice a day, morning and before end of shift.”
Developer: “And what’s the consequence if the data is 10 minutes old when they check?”
Customer: “Honestly? Nothing. Items don’t move that fast. We just assumed real-time was better.”
The Outcome: Instead of building WebSocket infrastructure with live updates (complex, expensive, harder to scale), they built a simple dashboard that refreshed every 10 minutes with a manual refresh button.
- Delivered faster
- Reduced technical complexity
- Worked perfectly offline with cached data
- Could handle significantly more concurrent users without infrastructure changes
The Real Win: “Real-time” was a solution masquerading as a requirement. The actual need was “current enough to make good reorder decisions” which turned out to be “within the last 10 minutes” not “within 5 seconds.”
Asking "why?" is not about challenging the need for the thing being asked for, but because without proper context of the problem or task being addressed, it can be significantly harder, for all parties, to achieve the desired outcome. When we don't have the context a request originates from, especially in software development where there is a need to bridge business concepts with technical implementation, assumptions can be made and intention can be lost in translation.
I ask the "why" of things to better understand what is being asked for, "why" it is needed and "why" it has been requested to work in a particular way or as part of a given process. It's not about being difficult or dismissive of the request, it is about understanding what the person making the request is truly trying to achieve, which in turn leads to better understanding within the development team and ultimately, better delivered outcomes.
It's not only when working with customers that "why" holds power. Equally important is understanding the context of technical decisions and choices within our team.
I previously worked on a data platform which ingested a large amount of log data from manufacturing processes and made the data available for reporting. I had done a lot of work with Apache Kafka, a big-data streaming technology, and thought it would be a good fit for the requirement of capturing the log flows. We brought in another senior-level developer with a fresh perspective and they asked the question "Why the complexity and cost of Confluent and Kafka over something like ElasticSearch?".
It was a perfectly valid question and having not had the same exposure to ElasticSearch and its processing capabilities we almost over-engineered ourselves into complexity.
The Outcome:
- Avoided $20k+ annual Confluent Cloud spend
- Delivered first working report in 2 weeks vs estimated 6+ with Kafka
- Native .NET client vs complex Kafka integration
The Real Win:
Kafka would have been detrimental to the project both in terms of cost but also technical implementation as we didn't NEED real-time data streaming, we needed log aggregation, indexing and search.
The challenge isn't asking 'why' - it's asking without triggering defensiveness:
- Frame the question, e.g. "To make sure I correctly understand what you're asking, can you tell me why ...?" - Explain why you are asking to preempt a defensive response
- Keep ego out of it - Remember, you're not testing the other person, you're seeking information to guide decision making
- Know when to stop - three 'whys' usually gets you to the root cause. Beyond that, you're annoying.
When we don't ask the questions about "why" a thing is perceived to be needed, we rob ourselves of critical information we use in our decision making processes. Next time a stakeholder asks for real-time updates, calendar syncing, or blockchain integration, pause. Ask why. Not to be difficult - to be effective.
The best solutions often emerge from understanding the problem behind the proposed solution.
Written by
Andy Gibson
Principal Consultant & Solution Architect