The point was specifically that that obvious intuition is wrong, or at best incomplete and simplistic.

You haven't disproved this idea, merely re-stated the default obvious intuition that everyone is expected to have before being presented with this idea.

Their point is correct that defining a spec rigorously enough IS the actual engineering work.

A c or go program is nothing else but a spec which the compiler impliments.

There are infinite ways to impliment a given c expression in assembly, and doing that is engineering and requires a human to do it, but only once. The compiler doesn't invent how to do it every time the way a human would, the compiler author picked a way and now the compiler does that every time.

And it gets more complex where there isn't just one way to do things but several and the compiler actually chooses from many methods best fit in different contexts, but all of that logic is also written by some engineer one time.

But now that IS what happens, the compiler does it.

A software engineer no longer writes in assembly, they write in c or go or whatever.

I say I want a function that accepts a couple arguments and returns a result of a math formula, and it just happens. I have no idea how the machine actually impliments it, I just wrote a line of algebra in a particular formal style. It could have come right out of a pure math textbook and the valid c function definition syntax could just as well be pseudocode to describe a pure math idea.

If you tell an ai, or a human programmer for that matter, what you want in a rigorous enough format that all questions are answered, such that it doesn't matter what language the programmer uses or how the programmer impliments it, then you my friend have written the program, and are the programmer. The ai, or the human who translated that into some other language were indeed just the compiler.

It doesn't matter that there are multiple ways to impliment the idea.

It's true that one programmer writes a very inefficient loop that walks an entire array once for every element in the array, while another comes up with some more sophisticated index or vector or math trick approach, but that's not the definition of anything.

There are both simple and sophisticated compilers. You can already right now feed the the same c code into different compilers and get results that all work, but one is 100x faster than another, one uses 100x less ram than another, etc.

If you give a high level imprecise directive to an ai, you are not programming. If you give a high level precise directive to an ai, you are programming.

The language doesn't matter. What matters is what you express.