A sufficiently comprehensive spec is not (necessarily) code
12 hours ago
- #LLMs
- #software_development
- #specifications
- A comprehensive specification describes a set of possible implementations, while code is a single implementation from that set, so they are distinct unless the set contains exactly one program.
- A specification is sufficient if it requires no further refinement; it's acceptable as long as any implementation within reason satisfies the specifier, even if it isn't fully detailed.
- Specifications are abstractions of code, and more precise specs correspond to fewer possible programs, with refinement meaning a spec narrows the set further.
- Non-programmers often struggle to write formal specifications, as seen with tools like Cucumber, highlighting that creating good specs still requires programmer skills.
- Even with LLMs generating code from specs, language vagueness and LLM non-determinism mean a spec might not consistently produce the desired program, underscoring the need for precise, code-like specifications.