Prototype-Driven Development
I’ve been working on Fang for almost 2 months now (time flies, wow), and it’s actually been getting quite close to some semblance of feature-completeness.
But, something I have known for most of the time I’ve been working on it is that what Fang looks like right now isn’t 100% going to be its final form.
A programming language is rather complicated, even with the restrictions I put on myself for Fang, and without a considerable amount of intuition and experience, getting the design right on the first attempt is unlikely.
So what I’m building now isn’t “Fang”, but “Fang-0”, the first iteration of this language. Once Fang-0 exists, I can use it to guide the design of the language as a whole.
I may discover that something is missing, or that parts of it are sharper than I intended (even if Fang is meant to be sharp), but until there’s something tangible to try out, that would have been impossible to predict.
In my opinion, a lot of projects and products have this property. You have to have something to really evaluate if it’s fit for purpose. Up until that point, everything is guesswork.