https://www.youtube.com/watch?time_continue=1&v=pW-SOdj4Kkk&feature=emb_logo
Jonathan Blow always criticize software development. I mostly agrees with him although I find some abstractions (like memory management) quite useful.
This talk, however, brings a different perspective. He said that because software developers are so used to "high level" abstraction, maybe in a few generations the knowledge about low level programming will be lost.
He gives example like game engine. Almost nobody programs game engine anymore, most people just use Unity/Unreal. And when the current generation will retire, the only person working on Unity/Unreal will be young and inexperienced programmers.
Another example that already happened is space. America landed on the moon in 1969, but now we simply can't do it anymore.
Another example is about shrines. In Japan, every 20 years they destroy and rebuild shrines to not lose this knowledge.
The transmission of knowledge to one generation to another is not automatic and can be lost. And you don't have to wait 200 years, 100 years are enough to lose knowledge.
Again, another example he gave was what happen if countries decide to block their internet because of war (or something else). Or if China decides to not produce CPUs/etc. anymore? Will we be able to do it?
And so it comes back to the current state of the web, where most websites are dead after a few years. We don't currently have a good way to save data. It should be easy to create and save knowledge. And until then, we will slowly but surely lose knowledge.
Another interesting thing that he said was that the OS is actually restrictive. Because most computers have the same architecture (Intel/AMD + Nvidia/Radeon) if you target directly the hardware, your software will run perfectly fine. But because of the OS this is not the case (see Casey Muratori's talk below).
Recommended references by Jonathan Blow: