Everyone is excited one way or another about the "vibe programming" with AI. Will it replace the professional programmers? In short, I'd say, probably not. Will it improve productivity? I think, probably yes, but maybe not in the ways that people envision it now. Will it allow non-programmers write programs without involving professionals? Definitely yes (and observing such an experience is what prompted me to write this post) but probably not in the industrial settings.
My personal experience of using the AI is not really successful. But that's probably because I'm not asking it to build the simple things. I ask it things when I get stumped, as a shortcut instead of digging through piles of code or searching through (often non-existent) documentation. And the reality is that when I get stumped, the AI gets stumped too. It offers solutions but they don't work, like referring to some non-existing libraries. But it's still useful, because this shows the at least semi-working examples and points to a direction for further digging, either in the code or in the documentation, and happens to work better than a simple search.
The real important part here is the generated examples. Note that the previous version of programming-without-understanding has been to search and copy-paste the examples from Stackoverflow and such. And the same works even in your own code: it's always harder to write some new thing from scratch, but once you have an example of something similar in your codebase, you can copy and modify it very quickly and easily. Over 25 years ago I've had an argument about a man page: I've been saying that we should add an example of usage of the function at the end of the man page, and a more senior engineer was telling me that no, the examples don't belong in the man pages, they should only contain the descriptions. The experience of the following 25 years definitely proved me right: it's much easier to understand the usage of a function from an example and copy-paste that example than by reading a lengthy description and trying to figure out all the fine points and all the ambiguities in it. When we write APIs, we write them with some specific usage in mind (with some exceptions like a bunch of Enterprise Java APIs, but that's the reasob why these are horrible). And it's much better and easier for everyone to provide the examples of this usage. The "test-driven programming" is another example of the importance of examples: it tells us to start by writing the examples of usage, and only then the implementation. The name of "test-driven" is actually misleading, since the examples are not tests. The point of examples is to show the typical usage, the point of the tests is to show the corner cases in a much more detailed and elaborate way. So if you take that name at face value and think that the examples are the tests, or start by writing the actual tests, you're going to have a bad time. But if you think of it as "example-driven programming", it's great. And that's basically what the AI-generated code is: the examples on steroids, fine-tuned to your own case but not necessarily fully correct.
By the way, if you think that the programming ability comes to the AI naturally, you're mistaken. There are companies that specialize on producing the labeled datasets for AI training, and they provide the specialized datasets for programming too. Moreover, they do the fine-tuning, running sessions through corrections and modifications to analyze the errors and make the code work, with these sessions incorporated into the training data (and yes, the same kind of fine-tuning happens for the non-programming subjects too).
And, well, this is also how it works for the non-professionals: the AI supplies them with tailored examples that often work correctly for the simple problems. An important point is that the problems might be logically simple but require a wide knowledge of a huge library that would take a professional programmer a long time to learn the old-fashioned way. So that's also a great way for the professional programmers to start using and learn the important parts of an unfamiliar library. But also what is trivial for a professional, isn't trivial for someone who doesn't know much about programming. This definitely brings programming to the masses. And if in some professional settings these people (say, quantitative analysts) can hire professional programmers for help, there are lots of people who could use the programming casually but can't hire a specialist. The AI is a great resource for them. But does it threaten the professional labor market? Probably not, because these are mostly people who couldn't afford to hire a professional in the first place. Although it probably would affect the low end of the market, where people hire a barely competent programmer for specialized repeated tasks. However setting the problems for AI is also a skill that isn't equally mastered by everyone, so there will be a new market for people who specialize in managing the AI.
The problem that the non-professionals have with the AI-generated code is that even the small errors stump them. Accidentally lose or insert an extra backslash in a regular expression, and nothing works any more, and someone who doesn't know the regular expressions will never be able to tell why. Perhaps the AI could be trained to do the debugging by offering the things to try and paste back the printouts. Like, you know, when in the 1960s a programmer instructed a non-professional client over the phone. This AI-assisted debugging would also come useful for the professionals.
How about the more general predictions for the rest of us? Will it run us out of business? My guess is that it will change the relative value of the skills similarly to how the introduction of the compilers changed them. The wider use of AI will probably devalue the specialized knowledge of various libraries, making them easier to learn by example. It would probably also create the better code analysis tools, being able to expand on the fly all the "auto" declarations into actual types and where did this variable come from. There probably will be new AI-oriented programming languages too. The human-oriented programming languages are built towards reducing the redundancy, making things easier to express in a concise way, manageable for the limited attention span of a human mind. The AI-oriented programming languages would probably have a lot more things spelled out explicitly as a way to catch more errors in the AI-generated code. Perhaps even the the same languages will have the human and AI versions, with all the explicitly spelled-out redundant statements either hidden or expanded. And the expanded form would also be a great code analysis tool for the humans.