Now please consider this: the reason why so many devs are disenchanted is because they are being told that the software industry is like that 1%, when in fact, 99% of it isn't.
With this in mind, perhaps we should teach people about this "software engineering" vs "software plumbing" distinction. I suspect we are doing a bad job of orienting young professionals because of some outdated status hierarchy such that "engineering is for nobles" and "plumbing is for the pleb", which leads us to present software engineering as the ideal to strive for. Rather, we should identify the people who show an appetite for the noble profession of plumbing and steer them in that direction. While we're at it, we can paint a more realistic picture of their economic prospects, job security, work-life balance, etc.
There is no need turn this into yet another theory-vs-practice debate. That's a false dilemma. The best work gets done when both players collaborate.