Assuming said programmers have already made the mistake of attempting to learn C++:
Mistakes
- Not using STL.
- Trying to wrap everything in classes.
- Trying to use templates for everything.
- Not using Boost. (I know Boost can be a real PITA, and a learning curve, but C++ is just C+ without it. Boost gives C++ some batteries).
- Not using smart pointers.
- Not using RAII.
- Overusing exceptions.
Controversial
- Moving to C++. Don't do it.
- Try to convert C stdio to iostreams. Iostreams SUX. Don't use it. It's inherently broken. Look here.
- Using the following parts of the libstdc++ library:
- strings (beyond freeing them for me, go the hell away)
- localization (what the hell does this have to do with c++, worse yet, it's awful)
- input/output (64 bit file offsets? heard of them?)
- Naively believing you can still debug on the command line. Don't use C++ extensively without a code crane (IDE).
- Following C++ blogs. C++ blogs carp on about what essentially boils down to metadata and sugar. Beyond a good FAQ, and experience, I've yet to see a useful C++ blog. (Note that's a challenge: I'd love to read a good C++ blog.)