I can see someone in the future watching a program run and asking “wow, is that ai? A PERSON typed those cryptic letters? No way!”
I can see someone in the future watching a program run and asking “wow, is that ai? A PERSON typed those cryptic letters? No way!”
Code is the highest level from which deterministic output can be derived.
It is the unambiguous spec of the application.
I’ve seen talks from people at openAI talking about how you should treat prompts as specs, and that a good spec can generate the code you need, so the important thing to keep is the spec (prompt).
But LLMs are necessarily non-deterministic, it’d be like every time you compiled the code, you got a different app that fulfilled the same purpose. That’s not really useful.
And if you make the spec unambiguous enough that it always generates undistinguishable apps, well then congratulations, your prompt is just as complex as the code is, except you don’t have any kind of static checking and compiling takes orders of magnitude longer. You might as well just be writing code.
Now will coding look very different in the future? Maybe. I hope not, but it’s looking like it will.
But I don’t think we’ll get to a place any time soon where people write prompts and never fuck with code.
“Tell me you’ve never compared what user said they needed vs what they actually needed, without actually saying it”
I fully agree with you, and just like to add my take on how developing will change in the near future:
I think AI can help developers speed up their work. Its easier to find information from a documentation when you can just straight up ask the documentation about something, rather than having to research and find the correct paragraph/term yourself. I don’t think AI will replace documentation, just help you sift through it. Also tools like copilot are pretty useful, I think. It just helps speeding up the process of getting your ideas into code.
Not only does it not speed up work, it actually slows down work: https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/
I prefer to coach my enthusiasm for the productivity improvements.
If all you’re using it for is to find the relevant parts of the relevant documentation, then a vector search would do as well.
What an LLM can do is synthesize readable docs out of poor or missing docs. When it isn’t hallucinating, that is.
But I don’t actually see anyone using LLMs just to cut through the docs, they’re using it to code. And the results I’ve seen are pretty mixed. It does seem to help ramp up in a new area, but it also seems to become an impediment to moving past the ramp-up phase.
Beginners can now produce beginner code at 2x the speed, and senior folks can now produce beginner code at 3x the speed. But nobody is producing senior level code.
Plus, you know… All the ethical and socioeconomic concerns.
There’s nothing about LLMs that force them to be non-deterministic. Given the same prompts and context, they will always output the same probability distribution. It’s then up to you what you decide to do with that distribution. If you decide to always choose the most likely output, then the entire thing will be deterministic. We just don’t do that because it’s less useful than stochastic output.
Yes, that’s why it’s necessary for it to be non-deterministic. Without non-determinism, there is no error recovery if it chooses the wrong token somewhere in the middle of the completion. That’s much less useful.
What’s this error recovery business you speak of?
So you can try your prompt again. Also to avoid getting stuck in loops of repeated text. Getting stuck down a bad line of “reasoning”. Etc.
Low chance of error comes with low chance of error recovery, conversely high chance of error comes with high error recovery ability (mostly just talking about temperature and top k, here)