If
you are a senior C++ technical lead or a C++ project manager, you've
encountered this problem over and over again: You have a talented
staff, but you're faced with hard deadlines and a seemingly
insurmountable
learning curve. You may be fortunate enough to have a core of C++
experts, but the majority of your technical staff consists of
a) Domain experts who are expert C programmers, but who have only
basic
knowledge of (and perhaps some animosity towards) C++, b) Talented new
hires direct from university who have an academic
appreciation
for the C++ language, but little production C++ experience, c) Expert
Java programmers who have little C++ experience, and who
have a
tendency to program in C++ the way one would program in Java, or d) C++
programmers with several years of experience maintaining
existing
C++
applications, but who have not been challenged to learn anything beyond
the basics required for maintenance.
The "Common Knowledge" material is the
product of identifying,
facing, and
filling these knowledge gaps over a period of many years of consulting
and training for dozens of clients and thousands of students.
These items include essential intermediate and advanced level C++
language
features,
coding techniques, and design patterns that are commonly missing from
C++
programmer's toolkits. By the end of the course, every member of
your C++ programming team will share the common knowledge required to
write professional, production-quality, expert-level C++ code.
But that's only half the story. Interleaved with material on how to use C++ properly are guidelines on how to avoid and correct the most common and destructive C++ design and programming errors, the dreaded "C++ Gotchas." Students will discover how to escape both common and complex traps associated with C++ and produce reusable, maintainable code.