That's true, but that's also just the general populous, who weren't ever contributing to open source anyways.
I don't think the quality of coders (professional or hobby) has really declined that much.
oh it definitely has. I've been in the industry since last century, the actual poke everything, do this for fun, invest yourself, wild jockey type...well we're a dying breed.
I think it mostly explained by that in earlier days most people who dived into programming did it because it interested them. Then it became one of most lucrative career path, and naturally it saw surge of people, who do not share same interests. Relative amount of people invested in dive bombing into meaty details dropped, but it quite possible that absolute amount have not declined by much.
And life is more enjoyable, for me at least, being able to branch out into multiple interests even if only one of them is the money earner. My hobbies all revolve around nature and art/creativity.
I don't see a reduced number of CS students that enjoy poking around.
I see an increase in the number of students that are there only for the good salary.
Making the poking type into a smaller percentage.
My type is a dying breed too, the guys who do their best to write robust code and actually trying to consider edge cases, race conditions, properly sized variables and efficient use of cycles, all the things that embedded guys have done as "embedded" evolved from 6800 to Pic, Atmel and then ESP platforms.
Now people seem to have embraced "move fast and break things" but that's the exact opposite to how embedded is supposed to be done. Don't get me wrong there is some great ESP code out there but there's also a shitload of buggy and poorly documented libraries and devices that require far too many power cycles to keep functioning.
In my opinion one power cycle is too many in the embedded world. Your code should not leak memory. We grew up with BYTES of RAM to use, memory leaks were unthinkable!
And don't get me started on the appalling mess that modern engineers can make with functional block inside a PLC, or their seeming lack of knowledge of industrial control standards that have existed since before the PLC.
IMO I think that's more a reflection of business decisions rather than innate programmer skill.
Programmers used to do that because they had to do that, so the businesses valued it. Now they don't have to do that, so businesses don't allow them room to develop those skills.
I think that rate that people actually developed unnecessary skills outside of work likely remains the same, just the skills that people desire are different to the ones from back then.
That's a valid point, the dev cycle is compressed now and customer expectations are low.
So instead of putting in the long term effort to deliver and support a quality product, something that should have been considered a beta is just shipped and called "good enough".
A good example I guess would be a long term embedded OSS project like Tasmota, compared to the barely functional firmware that comes stock on the devices that people buy to reflash to Tasmota.
Still there are few things that frustrate me like some Bluetooth device that really shouldn't have been a Bluetooth device, and has non-deterministic behaviour due to lack of initialization or some other trivial fault. Why did the tractor work lights turn on as purple today? Nobody knows!
I've not been a dev for that long, but I've been a dev for 15y or so. For the most part it seems to me like that is an effect of business decisions; workers will learn the skills that get recognized. Which skills those are has changed over time.
I don't see older devs have that quality particularly more then younger devs, what I see is businesses that don't value that type of behavior. And having worked with "wild West cowboy" coders before, the businesses may be right; they often make a real mess things and just rely on other people to clean up after them.
From what I've seen, there are lots of young people who invest in themselves and have passion for the craft, when the business allows them room to grow and doesn't treat them like a code-producing machine.
I wish I had one manday a week to contribute to the libraries my company uses. I usually do it in my work hours when I find a serious bug or need a new feature.
That's like saying they don't have enough comfort and free time to do art. Actually, the statements are identical. We create not because we can but because we must.
Every artist sacrifices other things so that they can do art. I get that we have less to sacrifice than we used to but in objective, absolute, historical terms, we are still sooooo fucking wealthy and have so many opportunities and resources at our disposal. And I say this as someone with a 13k annual income who contributes to FOSS projects.