"If five people tell you there's a problem, they're almost certainly right. If they tell you how to fix it they're almost certainly wrong."
Getting feedback from the compiler is like this in spades.
While the act of trying to change, or even understand code which you wrote a while ago, will very likely to reveal it to be overly-engineered, incomplete, confusing, or some combination of all of these, it's very unlikely to come with a message saying, "And if you change it like this, all of these problems will go away."
You only get that by reading design advice and trying to apply it to your own work, and by looking at code which turns out to be better than yours and working out where the differences lie.
What is harder is dealing with architectural issues but I'm not convinced they are that easy to avoid in a team environment either.
Reporting a bug takes work. Doing it clearly takes more work. Some percentage of people will do work for free. Relying on it is a choice with tradeoffs.