While this was the result of necessity, I think it helps a ton to have the harness fit your specific dev experience, like an IDE full of the specific plugins you'd want - just not an ide, because ides are OVER.
You have to build the spec as you build the code. The processes cannot be separated. I do the usual up-front design conversation with the AI, and then ask it to write just the TL;DR and exercises sections of the next chapter. After that, I pair-program with the AI to implement it, following the TL;DR, writing notes as we go to clarify what was unclear, steering the AI in real time towards my design.
Once the new code passes all the exercise graders, only then do I ask the AI to read the notes, voice.md file, and write the body of the chapter. Then, I have it launch a student to see if it can write the code purely from the chapter and graders.
At the end of this process, I'm the expert, and I don't even need to review the code.
Code is simply the result of executing the right specification. Just another artifact of the compiler.
Stop vibe-coding. Become the expert by pair-programming with the AI as you build to code, and then build the specs from what you did to build the code. Don’t document the code to build. Document the process, lessons learned, and why you built it this way. You can’t do that up-front.
If you don’t know how to pair-program with the AI, well, you can always try running Ensemble, and listening to the AI as it works. It won’t call tools until you’ve listened to every word the AI says, and the AI isn’t allowed to silently call tools.
I know this is hard for all of you folks with good vision. Get over it. Just do it.
However, Ensemble can be customized to your needs as easily as I customized it to mine.
IMO, the most impressive demo takes about 3 sayds, where I give the book and graders to an AI coding agent, and it builds a new AI coding agent from the book. It does take 3 days, but IMO, is a hell of a demo.
> This results in an executable specification: give it to an AI coding agent like Ensemble, and it will execute the specification autonomously, creating a new version of the code.
Why do you need to create a new version of the code "you"'ve just written?
1) The quality has increased significantly each time. 2) Until Ensemble regenerated Ensemble, the loop ahd not closed.
Really?
That's partly why I switched from Go to C# in the 3rd edition (third time executing the book, including the first time when I pair-programed with the AI to created it).
The quality of the codebook is either improving ore degrading. I believe so far, I've managed improving.
Since you mention it in your repo, perhaps the more interesting discussion is about how you work with reduced vision. I noticed you use a screen reader: https://www.youtube.com/watch?v=IGtAZGLtvXw
I built CodeRhapsody (an internal Google project) for me, to make it possible for me to create at the speed my brain works.
Here's the honest story, and I don't fucking care if I get fired for it.
I tried to open source CodeRhapsody, my awesome AI coding agent that I built with the AI to help me and other low-vision coders. Fucking TK, or VP in charge of Cloud hates giving anything away for free, so my weak and stupid directors and VPs rejected it.
So, I wrote Ensemble. It is not only better, but it is forever. They can claim ownership of the code, fine. It only takes 3 days to execute the book, and create an even better version of Ensemble.
So, yeah, it talks to me, exactly how I want it to.
I spent a significant part of the last 18 months learning this at high speed. You're welcome.
Our roles change. We no longer write code, but instead encode knowledge, which the LLM is incapable of learning.