Perhaps that was true 50 years ago, but in an increasingly complex technological world, problems simply cannot be solved without increasingly advanced engineering skills.
"So what kind of programming work would be the opposite of this?
* Problems are ill-defined and poorly-scoped
* Solutions are difficult to verify
* The total volume of code involved is massive
In my view, this is describing legacy code: feature work in large established codebases."
If you have used cursor.ai to try to create a moderately sized project you'll see this happen even with newly generated code.
In my experience, if you limit yourself to generate not well thought through prompts and do not work on getting a deep understanding of the generated codebase,
the LLM will start duplicating the same code flows in different ways, many time forgetting some of the behaviour already implemented.
Kind of like having dozens of developers working on the same codebase clueless about what each other has done and re-implementing the same functionality until the code turns into a pile of spaghetti code.
It can be done but:
* You must have a deep understanding of the code
* You need to think hard about what you are doing and give very detailed instructions to the AI
It works for trying a quick prototype but when moving on to production grade code you need to slow down and "program" step by step providing precise instructions as you go.
You'll have to design the changes to the minor detail and then
you can let the AI do the grunt work.