So what, then? Not doing what they say means failing, and doing what they say means only mediocre success. Where's the middle ground here?
The correct solution here is similar to what I discuss in Chapter 40, Users Have Problems, Developers Have Solutions, but it has a few extra pieces. Using this method, I have not only solved significant underlying problems in vast codebases, I have actually changed the development culture of significant engineering organizations. So it works pretty well, when done correctly.
The first thing to do is to find out what problems the developers think they have. Don't make any judgments. Go around and talk to people. Don't just ask the managers or the senior executives. They usually say something completely different from what the real software engineers say.
Go around and talk to a lot of people who work directly on the codebase. If you can't get everybody, get the technical lead from each team. And then yes, also do talk to the management, because...