| ▲ | jumploops 3 hours ago | |||||||
In my experience with “agentic engineering” the spec docs are often longer than the code itself. Natural language is imperfect, code is exact. The goal of specs is largely to maintain desired functionality over many iterations, something that pure code handles poorly. I’ve tried inline comments, tests, etc. but what works best is waterfall-style design docs that act as a second source of truth to the running code. Using this approach, I’ve been able to seamlessly iterate on “fully vibecoded” projects, refactor existing codebases, transform repositories from one language to another, etc. Obviously ymmv, but it feels like we’re back in the 70s-80s in terms of dev flow. | ||||||||
| ▲ | yes_man 3 hours ago | parent | next [-] | |||||||
> In my experience with “agentic engineering” the spec docs should be longer than the code itself. Natural language is imperfect, code is exact. The latter notion probably is true, but the prior isn’t necessarily true because you can map natural language to strict schemas. ”Implement an interface for TCP in <language>” is probably shorter than the actual implementation in code. And I understand my example is pedantic, but it extends to any unambiguous definitions. Of course one can argue that TCP spec is not determimistic by nature because natural language isn’t. But that is not very practical. We have to agree to trust some axioms for compilers to work in the first place. | ||||||||
| ||||||||
| ▲ | stanac 3 hours ago | parent | prev [-] | |||||||
> The goal of specs is largely to maintain desired functionality over many iterations, something that pure code handles poorly. IMHO this could be achieved with large set of tests, but the problem is if you prompt an agent to fix tests, you can't be sure it won't "fix the test". Or implement something just to make the test pass without looking at a larger picture. | ||||||||