Recently I found I had good success with what I dubbed text-driven development. I was always a little bit fond of the idea of behaviour-driven development with its core idea of specifying application behaviour in natural language, but still trying to nudge people towards gathering examples, in the interest of making things as little ambiguous as possible. Well, I think it’s a neat idea, but anyways.
Now, another thing I think can be handy are to have an up to date natural language documentation of an application, and since one can also argue that specification is nowadays as much worth as working code thanks to LLMs, I thought why not write prompts in such a way that they are fully human readable, but keep the structure of tests, which “tell a linear story” of various aspects of an a system.* Here is what this would look like github.com/eighttrigrams/tracker/meeting-series.md.
Now all good and well. Long story short is that I did not feel much desire of keeping this up. A couple of months ago I was all about writing my own little software factory, a pipeline of steps which you feed tickets and which spits out code, but in controlled ways and with considerable quality, due to all sorts of machinations. It find it quite exciting to participate in something akin to unexplored territory, where you are in the same position as everyone else basically. But the truth is, these models are good, and are getting better, and all that extra feels completely unnecessary at the scale I develop, apps primarily for my own use. I have yet to come across an instance where I feel I have to actually pay for my technical debt. Maybe I’m just super-talented!
Ok, jokes aside, I think it definitely pays off when you know what you are doing and have all that experience under your belt. In the same way that a free jazz musician almost cannot sound bad even if he literally hits all the wrong notes. Whereas the vibecoder who can one-shot space invaders but gets stuck easily one shotting his own functioning app for his business or whatever would be more like a total music noob hitting the keys in random manner. That doesn’t sound the same. But anyway, with my explorations I also feel like a youngster who just overdoes things, but — seen favourably — precisely as a matter of developing judgment.
* The idea of so called cross-cutting concerns is related. I always find it a little misguided, as I think all concerns are cross cutting and it is the purpose of tests to manage this complexity by narrative means. Btw., there existed an idea of “literate programming,” which you can look up.