Earlier quoted context omitted.
That's why experience + cost effective model is IMO the best combination. Experience allows you to design the skeleton where the implementation details are often inconsequential. There are relatively few scenarios where an LLM would need more guidance to render an outcome, but even dumb local models can do that. Building a simple UI component vs an efficient multi-threaded bidirectional socket implementation (both ex…
> Experience allows you to design the skeleton where the implementation details are often inconsequential. Expanding on this thought a little more: it is possible to set up scaffolding that make incorrect implementations inconsequential. If the LLM can detect when the implementation is wrong, it can retry with the errors feeding back into the loop. This is shored up by up-front investments in tests, API definitions,…
I have had great success with contract driven development workflows in this regard.
LLMs being effectively very knowledgeable jr engineers, slot right into those patterns.
Another interesting thing is that Rust _really_ shines with LLMs. The compiler gives very helpful messages which the LLM bounces off very effectively. If it compiles, it works, you just need to double check the logic is correct.
By contrast, with something like Go, you'd need to be on the lookout for nil pointers, race conditions and so on. Node.js / TypeScript is less dangerous, but you still have memory leaks that aren't possible in Rust and lack pattern matching so must be vigilant about type discohesion.