Contents

Contents

Specification-driven Development

Contents

The idea that machines can be programmed without detailed coding is not new. “Application Development Without Programmers” by James Martin came out in 1981 (44 years ago!), exploring 4GL programming languages.

Today, people are either excited or weary about using natural language as a programming language for AI agents. But specification languages have existed for a long time. All the current debate about how to construct prompts reminds me of controlled natural languages (CNLs), researched for decades.

So the idea of feeding instructions to an “intelligent” agent and getting outcomes is hardly new.

I’m experimenting with spec-driven development with AI. The starting point is a six-pager design document for a simple flight booking system. I ask the “Elephant Carpaccio Agent” to generate a list of vertical, granular, independent user stories from the general specification.

Then I instruct the “ATDD Agent” to run strict acceptance-test-driven development, as a continuous stream of red-green-refactor cycles. At the end of each cycle, I inspect the tests and code, and I can accept, reject, change or redirect.

Not only it works, but I have the luxury of throwing away entire portions of the code and tests, and even the initial stories, if I need to refine the instructions for the agents. Throwing artefacts away and reconstructing everything has never been easier. Code is becoming a highly disposable artefact.

It’s a rediscovery of declarative programming, not a brand new paradigm, and it’s extremely powerful. I’m convinced we’ve already stepped into a new level of abstraction.

We’ll need to adjust, but the story is familiar: programmers will have to learn new languages, techniques, patterns and principles to construct effective instructions. And as technology moves forward, the need for low-level coding will fade.

Hopefully by then I’ll be retired… 🥴🫠🙃

Originally posted on LinkedIn.