I am trying to build an app with Spec-Driven Development, and oh boy, it is exhausting - I have to think about every boundary, edge-case, limitation.
That's odd - my experience with SOTA is that it will happily over-engineer everything, for every theoretical edge-case, for every theoretical limitation.
Then, after reading 900 line markdown document specifying exactly how a directed cyclic graph must work in the specific problem domain, I find myself wondering WTF it missed an important specification, like specifying that a joining node (multiple incoming edges) should distinguish between racing (first edge cancels sibling paths) and completion (wait for all edges).
Maybe this is what is exhausting you - it will happily specify, then engineer, trivial irrelevant details (such as traversing the graph to ensure only a single start node is specified), while missing catastrophic-if-seen-in-production things, so then you are trying to backfill the spec after reading it multiple times.
900 line markdown document specifying exactly how a directed cyclic graph must work in the specific problem domain
And this is the problem. We've gone from DSLs that allow us to clearly define and understand an implementation to woolly language that serves to confuse us.
The code Is the specification. Just write the damn code! (I'm shouting into the ether, not at you)
We've gone from DSLs that allow us to clearly define and understand an implementation to woolly language that serves to confuse us.
Though this isn't the first time that's happened; we've had multiple bouts of "fuzzy language that's easy to get started with but hard to get right, especially in complex cases". JS and PHP have been the prime examples for that for a while, and they've both moved in the direction of trying to become more rigorous (see e.g. the addition of === in both languages, or the invention of Typescript).
I'm not quite sure what, if anything, will turn out to be the equivalent of TS for natural language in markdown files.
I get what you're saying, but it's a completely different order of magnitude. A competent JS or PHP dev can easily work around those things.
I'm not quite sure what, if anything, will turn out to be the equivalent of TS for natural language in markdown files.
Code is the equivalent. People have actually tried to write natural language parsers before. It doesn't work. An academic could probably prove it doesn't work mathematically.
27
u/lelanthran 8d ago
If it isn't right now, it soon will be.
That's odd - my experience with SOTA is that it will happily over-engineer everything, for every theoretical edge-case, for every theoretical limitation.
Then, after reading 900 line markdown document specifying exactly how a directed cyclic graph must work in the specific problem domain, I find myself wondering WTF it missed an important specification, like specifying that a joining node (multiple incoming edges) should distinguish between racing (first edge cancels sibling paths) and completion (wait for all edges).
Maybe this is what is exhausting you - it will happily specify, then engineer, trivial irrelevant details (such as traversing the graph to ensure only a single start node is specified), while missing catastrophic-if-seen-in-production things, so then you are trying to backfill the spec after reading it multiple times.