In the 1980s, Donald Knuth introduced literate programming, a paradigm where code and documentation are interwoven into a single narrative. The idea was simple but radical: write programs as if you’re explaining them to another human — not just to a compiler. His WEB system and TeX showcase were early demonstrations.
Fast forward to today, and we’re seeing a return to that mindset based on the practical demands of AI-assisted development.
Spec-Driven Development: A Modern Twist
To keep tools like GitHub Copilot, ChatGPT Codex, and Claude Code behaving, developers are increasingly writing natural language specifications that guide code generation.
This trend, often called spec-driven development, emphasises writing structured, human-readable descriptions of what software should do — before writing any code.
These specs aren’t just throwaway prompts. They’re version-controlled, reviewed, and treated as first-class artifacts. They are what helps keep the AI on the rails.
The Parallel with Literate Programming
What’s happening here mirrors Knuth’s vision. In both cases, the developer is encouraged to think clearly and write clearly. The difference is that now, the audience isn’t just other humans — it’s also an AI model that can turn prose into functioning code.
Modern tools like Jupyter already blurred the line between documentation and implementation. This hybrid approach is now becoming a valuable way to avoid AI slop.
Why It Matters
This isn’t just a tooling shift — it’s a cultural one. We’re moving away from “vibe-based coding” and toward a more deliberate, explainable, and collaborative process. And in doing so, we’re rediscovering the value of code as a form of communication.
Co-authored with AI (Anthropic Claude Sonnet 4.5).
Normally I don’t publish content that AI helped to write, but I wanted to see how it feels.