My experience with generative-AI has been that, at its very best, it is subtly wrong in ways that only an expert in the relevant subject would recognise. So I don't worry about us creating super-intelligent AI, I worry about us allowing that expertise to atrophy through laziness and greed. I refuse to use LLMs not because I'm scared of how clever they are, but because I do not wish to become stupider.
I will say one thing for generative AI: since these tools function by remixing/translating existing information, that vibe programming is so popular demonstrates a colossal failure on the part of our industry in not making this stuff easier. If a giant ball of statistics can mostly knock up a working app in minutes, this shows not that gen-AI is insanely clever, but that most of the work in making an app has always been stupid. We have gatekeeped programming behind vast walls of nonsense.
We seem to have largely stopped innovating on trying to lower barriers to programming in favour of creating endless new frameworks and libraries for a vanishingly small number of near-identical languages. It is the mid-2020s and people are wringing their hands over Rust as if it was some inexplicable new thing rather than a C-derivative that incorporates decades old type theory. You know what I consider to be genuinely ground-breaking programming tools? VisiCalc, HyperCard and Scratch.
You know what? HyperCard was a glorious moment in time that I dearly miss: an army of non-experts were bashing together and sharing weird and wonderful stacks that were part 'zine, part adventure game and part database. Instead of laughing at vibe-coders, maybe we should ask ourselves why the current state-of-the-art in beginner-friendly programming tools is a planet-boiling roulette wheel.
On the gripping hand, if you're a trained programmer using vibe-coding because of a perceived increase in your productivity, or pressure from management to increase your productivity, I would refer you to my first post in this thread…
I've seen lots of posts in the last couple of days about how quickly one can write lots of code with AI. I feel perplexed by this as I hate large programs. The largest thing I have written in the last decade is Flitter. It's only 30k lines and I believe very strongly that it is. Still. Too. Big. Even there, I wrote it purposely to allow the stuff I write *in* it to be very smol: mostly no more than 100 lines. That is the maximum I want to write in a day.
To me, all these people crowing about having written 10k lines of code in a day are idiots. If you need to write that much code in a day, you are manifestly working at the wrong level of abstraction to solve your problem.

@jonathanhogg
On one hand, I'm inclined to agree about the barrier to entry issue - boilerplate sucks, and having more people understand programming would be great.

But on the other hand, it feels like the amount of software in existence is already unmanagable, and the average quality is relatively low.

You say to move a layer up to avoid writing 10k lines, but the current way to do that results in huge dependency trees with 10s of thousands of lines of someone else's code.

1/

@wolf480pl it is the current way of moving up a layer that I object to. We should be thinking of new ways of programming and instead are stuck making new frameworks. We imagine adding more cruft will somehow make it better. Eg., Arduino and Processing imagined that you could take a language wildly unsuited to beginners and make it palatable with a library
@jonathanhogg @wolf480pl To me it looks like Arduino largely succeeded at that.

Note however that it was more than a library. It was also a specialized tooling for that one use case that made it simple. It was also an ecosystem of user-provided libraries that made many tasks simple, typically driving a specific piece of hardware.

And a community of people who wrote about what they did and how to the greatest detail to the point that anyone who could read could replicate it.

And yes, a company seeding and promoting this tooling and libraries at the start to promote their hardware.
@bunny but it’s never been easy to learn if you’re not a programmer, and believe me I’ve tried to teach it; C++ is just fundamentally unsuited to beginners
@jonathanhogg That's the thing. It's difficult to learn all of C++.

To follow a tutorial you would only need to understand a comment saying // I am using pin 3, replace with the pin number you want to use.

And yes, once you wanted to add your own logic you would need to learn some C++. And while taking a very formal approach with some text book or course on everything C++ there is always the option of piecing something together by looking at multiple different examples.

Arduino uses very small subset of C++, and for many use cases you need even much smaller subset to adapt an example you found to do something slightly different.

All the power of C++ is there but you do not need most of it most of the time.

And sure, many people will look at C++ with the bracers an be like "This looks like something I don't understand, I can't do anything with that, look at all those bracers, it reminds me of math". On the other hand, many will try to poke it it and see what happens, especially when they don't know what bracers are anyway, and see them only as a funny squiggle.

I think the really annoying part for people trying to modify a C++ program without knowing what C++ is that in most IDEs including Arduino it's possible to write syntactically invalid code. And I have yet to see a solution for that problem that does not get in the way of writing code. Maybe it would be possible to do something like switching between raw text and WYSIWIG that you get in a lot of web applications that use markdown or similar.
@bunny best thing I’ve used for teaching embedded programming is Microsoft MakeCode, which is explicitly designed to avoid the pitfalls of syntax errors. It’s basically Scratch for microcontrollers