Dealing with incomplete requirments

A skill to thrive in the reality of software development

I’ve never come across a software development project with truly “complete” requirements.

And I probably never will.

It takes a substantial amount of time, effort, and skill to prepare requirements.

Resources that are often scarce in fast-moving environments.

Even when you invest heavily upfront, new requirements emerge as soon as you start building.

Inevitably, engineers face situations where they must make decisions and fill gaps because no requirement covers that part of the solution.

How engineers handle these gaps has a significant impact on velocity.

If they build a solution that doesn’t meet the business need, it leads to rework.

Waiting for someone else to clarify creates dependencies and slows down the work.

That’s why I think a critical skill for high-performing engineers is the ability to understand business needs.

Being able to ask the right questions and uncover what drives the requirements, not just the requirements themselves.

Understanding of business needs provides context for decision-making to derive requirements and to validate the solution independently.

So they spend less time on the rework or waiting for someone to provide requirements.

Counting on having complete requirements is like trying to cover every inch of a thorny road with leather instead of making sandals.

There’s always more that’s not covered.