Earlier quoted context omitted.
I think on the whole peoples reaction to Code Complete is very much connected to when in their coding career they first come across. If you come across it early in your career while still inexperienced it can completely change your approach to coding for the better. If you come across it later in your career it just seems like a collection of obvious ideas that you already know.
I came across it pretty early, though admittedly I'd read quite a few suggestion articles & management articles prior to it. It's still largely obvious, and super management-oriented. Even the little check-lists at the end of each chapter reek of a manager looking over someone's shoulder, tsk-ing, and marking "flaws" in code, rather than actually being a useful metric of any sort to measure quality against. I can't g…
The thing is, it is absolutely correct for some definitions of X, Y and Z. There are plenty of programmers in the workplace who just suck at constructing code. They don't know how to write good comments, format their code logically and consistently, use good variable and function names, etc. It goes even further: they do not understand why these things are important. I still see plenty of code like this:
bool nothingToDo; // Is there anything to do
....
if (nothingToDo) {
// We don't need to continue
return;
}or
if (time.elapsed() > 10) // If ten seconds or more have passed
{...}
Requests to refactor such code are often met with "This is trivial, just step through the code and figure it out", sometimes from senior programmers (at least in title). And these are not necessarily stupid people, they are often good programmers but not very good software engineers. Have you ever read some of the code open sourced by Google and found yourself thinking "Sheetz, this code is ultra clean"? I bet the people responsible for Google's coding guidelines have read Code Complete. I have been involved in writing coding standards a few times and I referred to Code Complete in each of those instances.
I also completely disagree that this book was written for managers. A manager with no technical background is very likely to dismiss refactoring or code layout as wasted time.