Is that a design flaw or a tooling flaw? The dev experience is usually left till the very end of some proof like this.
(And then your IP is thrown away so the next startup also has to get both right...)
A good example of this is abstracting SIMD instructions for vector multiplication, or CUDA with torch. Normal people don’t care how it’s done, only that it’s done, as fast as can be done.