| ▲ | grunder_advice 6 hours ago | |
Exactly. At some point, the specification becomes so complex, it's easier to just write the code yourself. It's why famously, programmers always say, the code is the documentation, because writing detailed docs is very tedious and nobody wants to do it. | ||
| ▲ | bonesss 5 hours ago | parent [-] | |
There are middle-ways. Behaviour Driven Development or Spec Driven Development are, loosely, forms of Test Driven Development where you encode the specification into the code base. No impedance, full insight, formality through code. I think people get really dogmatic about “test” projects, but with a touch of effort a unit test harness can be split up into integration tests, acceptance tests, and specification compliance tests. Pull the data out as human readable reports and you have a living, verifiable, specification. Particularly using something comparable to back-ticks in F#, which let test names be defined with spaces and punctuation (ie “fulfills requirement 5.A.1, timeouts fail gracefully on mobile”), you can create specific layers of compiled, versioned, and verifiable specification baked into the codebase and available for PMs and testers and clients and approval committees. | ||