I agree with you and share the same opinions.
For discussion sake I will add that, using AI I have became so fast at creating "units of code" or restructuring. I ask it to solve a narrow narrow scope and introduce constraints (like conditional variable and which parameters, initial conditions). And it does. I have the experience validate by reading and to piece together the units of code but now my productivity near tripled.
I don't write comments anymore. I write what I neeed, ask it to comment the function, maybe I'll add something that is project specific.
And getting started with new technologies is easier as long as, like you said, keep the scope small.
AI will not replace programmers. Programmers that use AI will replace programmers who don't.
Valid point. Again for the sake of discussion, technology evolves quickly. New tools are made out of the shortcoming of others. If docker evolves and a new tool - Kocker - is born, AI will need training data from best practices which should be generated by people.
This could unfold in many ways. For one there could a small group of people pushing technology forward. But people will need to be around to create requirements, which takes experience.
More likely, majority of engineers will likely just move up to a higher level of abstraction, letting new tools do the lower layer stuff. And any innovations in the lower levels of abstraction will be done by a small group of people with niche skills (take CPUs for example). This is the trend we saw historically.
Assembly -> compilers -> lower languages -> interpreted languages -> scaling bare metal systems -> distributed systems -> virtual machines -> automation -> micro services
etc etc