| ▲ | brendanmc6 2 hours ago | |||||||||||||||||||||||||
I think you are confusing the spec as "this is how it must be built", as opposed to, "this is what the software must do and must not do to be acceptable". To me saying "the code is the spec" is like saying "the business wants it this way because that's how the code is written". Which is obviously backwards. Does the business mandate we use a cache for this hot path? No, but the business set performance targets, and the cache was a sensible way to satisfy them. See the difference? I believe that the 'musts' and 'must nots' deserve special attention, and need to be recorded well before I decide on the 'how'. Every team does this differently. I find that writing itemized, functional acceptance criteria is practical way to marry the two domains. I also think the process matters a lot more now, because the temptation to let an agent ship it is increasing and the tedium of maintaining these specs is decreasing. | ||||||||||||||||||||||||||
| ▲ | kibwen 2 hours ago | parent | next [-] | |||||||||||||||||||||||||
> Does the business mandate we use a cache for this hot path? No, but the business set performance targets, and the cache was a sensible way to satisfy them. See the difference? This seems confused. Specs are free to include as much or as little detail as they deem necessary. If a spec only wants to suggest vague performance goals and handwave the details, that's permitted. But if specs want to specify the exact means by which performance will be guaranteed, that's also permitted. And this isn't an anti-pattern, this is often very useful. For example, plenty of APIs in the real world specify algorithmic upper bounds for time and space consumption, which is useful in that they allow downstream consumers to have a greater understanding of what sort of performance their own systems will exhibit despite the API itself being a black box in other respects. So the answer to the original question definitely isn't "no", it's "maybe, depending on the sort of guarantees we want to provide to our users". | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ▲ | 2 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||
| [deleted] | ||||||||||||||||||||||||||
| ▲ | lelanthran 2 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||
> I think you are confusing the spec as "this is how it must be built", as opposed to, "this is what the software must do and must not do to be acceptable". You can't enforce a "do not do this" to an LLM. Just putting it in the context by saying "don't do this" makes it more likely that it will eventually do that. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ▲ | 2 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||
| [deleted] | ||||||||||||||||||||||||||
| ▲ | mpalmer an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||
> I think you are confusing the spec as "this is how it must be built", as opposed to, "this is what the software must do and must not do to be acceptable". You are confusing code with application code. The latter thing you describe is a test, which is expressible in code. | ||||||||||||||||||||||||||
| ▲ | locknitpicker an hour ago | parent | prev [-] | |||||||||||||||||||||||||
> To me saying "the code is the spec" is like saying "the business wants it this way because that's how the code is written". Which is obviously backwards. Not only is it backwards, it is a belief that is completely wrong and detached from reality. More often than not, implementations contrast with business requirements both in terms of bugs and gotchas. Also, it's laughable how code is depicted as the realization of any spec when the whole software development sector is organized around processes that amount to improvising solutions in short iterations. | ||||||||||||||||||||||||||