On the other hand what I still find evil is when people code their projects with no comments. C++ can be buried in layers of abstraction if the coder so chooses, Trying to unravel what they've written can be soul killing.
I always find it better to architect the structure better than spend time trying to document it. Writing the documentation and updating it when the bad code changes is soul killing as is having to map what the documentation says to the bad code.
If a developer can't choose descriptive class/variable/method names and lay the structure out in a sane way, then any documentation they write is going to be worse. If you've got good documentation, then it's likely the person isn't a developer at all and you might as well throw the code away.
The only time documentation is useful is for libraries, where you don't necessarily have the source to hand or an example of how you're supposed to call it.