It also isn't telepathic, so the only thing it has to go on when determining "what you want" is what you tell it you want.
I often see people gripe about how ChatGPT's essay writing style is mediocre and always sounds the same, for example. But that's what you get when you just tell ChatGPT "write me an essay about X." It doesn't know what kind of essay you want unless you tell it. You have to give it context and direction to get good results.
Not disagreeing with you at all, you made a pretty good point. But when engineering the prompt takes 80% of the effort that just writing the essay (or code for that matter) would take, I think most people would rather write it themselves.
We are all annoyed at clients for not saying what they actually want in a Scope of Works, yet we do the same to LLM thinking it will fill in the blanks how we want it filled in.
I treat AI the same way I've always treated Google: WITH ABSOLUTE DISDAIN Using them as a shove in the right direction and for research purposes to supplement research already being done. ChatGPT for instance is actually pretty decent at figuring out vaguely defined things if worked through. Is it perfect? Hell no. It can help narrow down the options though.
I'm pretty anti-AI but even I'll cop to this one. ChatGPT is good at figuring out what you're trying to describe. Know you need a particular networking concept? Describe it a bit to ChatGPT and ask for some concepts that are similar, and the thing you're looking for will probably be in the list.
Looking for a particular library that you assume must exist even though you've never seen it? ChatGPT can give you that.
You're on your own after that, but it can actually save you a bit of research time.
The problem is this: it's sure it has the answer 100% of the time, but about 30% of the time it gives you a list of nothing but wrong answers and you can go off in the wrong direction as a result.
I'm willing to believe that we can have solid AI software authoring, but I am skeptical that it's gonna be via the raw LLM stuff being done with images and audio and such, where what matters is stuff that looks like other stuff.
Maybe you could use LLMs as a component of a larger system that does effective coding. But I'm skeptical that this alone can be a great solution.
Maybe in very limited situations where the system can reliably validate the code correctness itself. Like, say you want to write a quine. That doesn't take input, and the output is trivial to validate.
But for most software, I'd say that it's not easy for a computer to validate that code is correct.
And in some cases, trying to validate code has got to be worse than doing it yourself. Like, think of multithreaded code absent some sort of elaborate type system that permits fully specifying the constraints imposed by the parallelism requirements, and where such constraints are written and available to you. C or C++ doesn't have such a type system.
Or writing security-sensitive code. Same thing -- absent some kind of type system that permits fully-specifying the requirements of the problem, you can't automatically validate it, and trying to review code to understand whether it's secure...ugh.
I can maybe see some kind of "grammar check", having an LLM looking for code that you wrote that has a portion that is unusual compared to existing code that it's seen.
Programming is basically translation from a list of (precise) requirements to code in a programming language. And LLMs can do translation of human language pretty well. But I expect that a major problem for LLM-driven programming is that there's no training corpus for the requirements, the "source language" for translation.
"Just give me this and I'll do the rest" is actually a pretty great workflow, in my experience. AI isn't at the point where you can just set it loose to work on its own but as a collaborator it saves me a huge amount of hassle and time.
In my experience about 1 percent of suggestions are of that quality, and that's only for snippets of a few lines of code at most. It almost certainly wastes more time than it saves.
Stupid! You should tell it to write the test cases first and follow TDD!
'AI, write the test cases for my project! No! You stupid computer! This isn't testing the features correctly! Ah, no! You're now just printing the string "PASS"!'