I'd recommend starting with a problem you are confronted with on a day to day basis. For example if your laptops usb port is flaky & connecting an external device works only after five or six tries take a look at the kernel code for usb or even a usb driver. Utilize your c/c++ skills to read the code. From there you will probably have a better insight into why your usb port isn't working & it will place you in a position to modify a small piece of the kernel code if needed. I'd refer to this method as hacking to learn. Have fun!
As the wars in Iraq & Afghanistan are winding down the government "especially the republican party" sees the need for a new war. What better way to grease up lucrative contracts between the U.S gov & it's most successful companies than a "cyber" war. The Google breach is clearly an intel/political issue. The technical aspects are minimal & we all knew that great firewall compromised any chance of IT security there yet the story is portrayed as a technical one. Oh my! google was hacked by the chinese. They must need technical government support. Rarely is the story portrayed simply as an international policy issue. It's war I tell you & the economy loves a good fight.