In most software delivery environments, the question that dominates is “what.” What needs to be built? What does the specification say? What has been accepted in the sprint? These are important questions. They keep teams aligned and deliveries on track. But they are the second and third most important questions in engineering. The most important one is almost never asked with the same rigour.
Why are we building this?
The Gap Between the Spec and the User
Every client brief represents someone’s best understanding of what they need. That understanding is usually accurate from an operational and business perspective. But it is often written from the inside out — from the organisation’s processes, systems, and constraints — rather than from the outside in, starting with the person who will ultimately use what gets built.
This gap between the spec and the end user is where most avoidable engineering problems live. A feature that makes perfect sense for an internal workflow can be genuinely confusing for the person on the receiving end of it. A system that satisfies every acceptance criterion can still fail the people using it daily — and that failure shows up in support tickets, abandonment rates, and the quiet way organisations stop investing in systems that technically work but practically underperform.
At Exaze, we have seen this pattern enough times to have built a deliberate practice around it. Before we write a line of code, we ask who the end user is — not the client contact, not the product owner, but the actual person who will interact with what we build. Then we ask what that person is trying to accomplish, what will get in their way, and what would make their experience meaningfully better.
Why “Why” Changes Everything
The reason we focus on “why” before “what” is not philosophical. It is practical. When a team understands why a feature exists — the real-world problem it is solving for a real person — they make better technical decisions at every level of the build.
Architecture choices look different when the team knows that the system will be used by people who cannot afford to wait for slow response times, or who are working on low-bandwidth connections, or who are using the interface while managing three other tasks simultaneously. Those constraints do not always appear in a specification. They appear when you ask who is using this and under what conditions.
Prioritisation decisions change too. When a team understands the end-user impact of different features, they push back on the right things. They ask whether a technically complex feature is worth the investment if it serves a secondary use case, and whether a simpler solution might serve the primary one better. That is not scope resistance. It is engineering judgment applied at the right level.
The Client and the End Customer Are Not the Same Stakeholder
One of the most important distinctions we maintain is between the client — the organisation that has commissioned the work — and the end customer — the person who will use what gets built. These two groups have aligned interests in many respects, but not in all of them. And when they diverge, the right response is not to default to whatever the client has asked for.
A client might ask for a feature that reduces operational overhead on their side but adds friction for the person using the application. A specification might emphasise internal reporting requirements at the expense of interface clarity. A project timeline might push toward feature quantity at the cost of feature quality for the people who depend on those features every day.
In those moments, the engineering team’s role is not simply to deliver what was asked. It is to surface the trade-off, name the end-user impact, and help the client make an informed decision. Sometimes the client’s position holds — there are legitimate operational constraints that justify the trade-off. But the trade-off should be visible, not invisible. It should be a decision, not an oversight.
Making Things Genuinely Better, Not Just Different
There is a distinction that matters here and that does not get made often enough: the difference between building something new and making something genuinely better for the people who use it. These are not the same thing, and the tendency in technology delivery is to conflate them.
Building a new system is not an improvement if the new system is harder to use than the old one. Adding a new feature is not progress if it makes the existing experience more confusing. Migrating to a new platform is not a transformation if the end customer’s experience is materially unchanged or degraded.
Genuine improvement means the person using the system can do what they need to do more easily, more confidently, or more efficiently than they could before. It means the system gets out of their way rather than inserting itself into their workflow. It means that after the delivery, the people who depend on the system notice the difference — in a positive direction.
We hold that standard explicitly. When we review work in progress, the question is not only “does this meet the acceptance criteria?” It is “does this make things better for the person using it?” Both questions need a yes before something is genuinely complete.
The AGILE Framework in Practice
Exaze’s AGILE delivery framework — Adaptive, Governance-driven, Iterative, Learning-oriented, and Evidence-based — is built around this philosophy. The iterative and learning-oriented components exist precisely to create regular opportunities to validate that what is being built is working for its intended users, not just progressing against a plan.
In practice, this means user validation is not a final-phase activity. It is embedded across delivery. Assumptions about end-user behaviour are surfaced early and tested. Feedback from real usage informs prioritisation in subsequent cycles. Evidence of impact — not just evidence of completion — is what defines progress.
This approach is more demanding than linear delivery against a fixed specification. It requires clients to maintain openness to what the evidence reveals, and it requires engineering teams to be genuinely curious about outcomes rather than focused solely on outputs. But the results are consistently different: systems that people actually use, rather than systems that technically exist.
An Honest Reflection
I want to be direct about something. The practices I have described are not always the path of least resistance. Asking “why” before “what” takes time. Surfacing end-user trade-offs to clients requires confidence and occasionally creates friction. Holding to a standard of genuine improvement rather than just delivery completion is harder to scope and harder to defend when timelines tighten.
We do it because we have seen, consistently, that the alternative is more expensive in the end. Systems built without a clear understanding of why they exist and who they serve are more expensive to fix, harder to maintain, and less likely to generate the value that justified the investment in the first place. The additional rigour at the front creates significantly less rework at the back.
More importantly, we do it because we think there is a responsibility that comes with the craft of engineering. When you build something that other people will depend on, the obligation is not just to the client who commissioned it. It is to the people who will live with it. That obligation is worth taking seriously.
Key takeaways
- “Why are we building this?” is the most important engineering question — and the one asked least often with real rigour.
- The end customer of an application is a stakeholder even when they are not in the room. Their experience must be represented in design decisions.
- Technical correctness and genuine user value are not the same thing — both are necessary, but only the latter creates lasting impact.
- When client interests and end-user interests diverge, the trade-off should be visible and deliberate, not invisible and accidental.
- Evidence of impact, not just evidence of completion, is what defines a delivery as successful.