Well-organized and touches on every important topic. Unfortunately the author offers very little help when he discusses architecture challenges that make C++ code messy in the first place (cross-cutting concerns, cyclic dependencies, observers). Without sufficiently deep explorations, this book doesn't present much value for an advanced reader. Slightly less importantly, the author's aversion to exceptions and eager use of dynamic methods are a little out of place in current style.