Skip to main content

Quoting Unmesh Joshi: Upfront Specification Impossibility

I am giving workshops about agentic software engineering for interested but not-yet-deep-in-the-AI-stuff software developers. They have of course gathered their first experiences with GitHub Copilot or Claude Code, but usually end up with some sort of frustration. Not just because sometimes the agent will produce complicated results, but also because they seem to involuntarily give up their understanding of the code in the process of using agents.

I can relate to that feeling, and it feels bad. I am absolutely sure that we need something like the tactile feedback we had when writing code by hand in order to guarantee good design. This kind of immediate, intuitive feedback leverages our full career experience so much more than prompting agents and then reading their output.

Armin Ronacher summarised it in one sentence:

Agents do not feel pain, only humans do.

https://lucumr.pocoo.org/2026/7/13/the-tower-keeps-rising/

Often when prompting, we think we have the right goal in mind. But after we see the vastness of the agent's output, we are kind of not sure if we really prompted for the right thing. This leads to a realization: Maybe we can never prompt the agent right on the first try (for complex enough tasks), because there are too many unknown unknowns.

Unmesh Joshi put it well with his term Upfront Specification Impossibility:

Progress comes from a back-and-forth rhythm: think a bit, write a bit, step back, and refine what you see. Each iteration sharpens both the code and your understanding of the bigger picture, allowing us to guide the next steps. The very act of “writing code” is often where design decisions crystallize.

In the software world, 'Impossibility Results' are a way to keep us grounded. They help us focus on solutions once we know what the real constraints are, instead of assuming that constraints don't exist. Understanding the basic nature of building software systems and the activity commonly known as 'coding' can happen better if we know 'impossibilities' better.

I like to think of this problem of 'upfront design' in terms of an impossibility result I call 'Upfront Specification Impossibility' (USI).

https://martinfowler.com/articles/convo-llm-abstractions.html (emphasis mine)

I am always looking for solutions to stay in the loop with the changes made and get the feedback we need in order to solve the specification impossibility. Those solutions deserve many more posts in the future.

But before mitigating, we need to realize the problem.

So let's keep USI in mind when working with agents.