I think that coding by hand is largely not going to occur anymore. What that does to the learning of new developers + the stagnation of old developers? I do not know.
I believe that what makes a good developer (a great developer, really) is the ability to do something at the smallest level "perfectly" or close to it. Chaining those tiny building blocks together. Understanding the entire flow of data + logically. Making something as fast as it can be. When you put more and more of those tiny blocks together, things get a little more imperfect - but a fantastic developer can keep them all perfect for a long time.
We're jumping way above that level. That small, perfect logic process, that visibility is now completely hidden from us, some of us wouldn't even know how to do it anymore. And juniors of today will never learn to.
And maybe they don't need to. Perhaps we will just build "bigger" software so that the level of imperfection becomes less noticeable. Larger systems, more functionality, more security.
I think the brain atrophy is going to hit us HARD though. It feels too fast to rip away the one thing that taught us all of this. Building something piece by piece was the way most of us learned. Then you can jump into bigger and bigger projects and your brain creates those pathways. Previous generations had months / years to learn new tooling - and now we threw ALL of the tooling away and said "use this instead". I think good developers will always find a way to learn and grow, but man is it going to take some time, we completely shifted the way the entire industry produces the machine in the matter of 12 months.
I still believe that code is the best way to represent a sufficiently complex specification, natural human language feels very ambiguous sometimes, like extra lossy compression (whatever that is worth).
It's really interesting to the vagueness of natural language and the fact that it's actually impossible to express a single concrete meaning in natural language. That is to say their is always a set of possible interpretations one can never simple refer to one single thing and a program in a programming language is always only one thing (I know that you could argue that compiling to different machine code means their is vagueness since it might produce a x86-64 binary or a powerpc binary and the issue of UB but you see my point).
I do think that if one simply 'vibe codes' something they can never really understand the program even if they prompted it unless they study the source in detail. In natural language you can only ever point to a set of things that containing a subset of thing(s) you want.