coding is a story, debugging is another story.
c++ programming is only the most fundamental knowledge you must have. then when you come to the most tedious part is to read the assemblies (reverse engineering). i have 10 years plus c++ programming knowledge, but i still take a lot of time to read machine codes (even asking in forums)... even then, many programmers still tried hard to understand the deassembled functions...