I was recently having a conversation where I speculated that with how bad some programmers are at naming things, some code reviews might actually be easier if you ran them through a code obfuscator first, so you can focus on what the code does rather than being tricked into making invalid assumptions by misleading names.
This gives me a great inspiration for a programming puzzle and learning method:
Replace all variable/function names with generics. Your only job is to give names to every variable (trying to figure out what each does). After you're done you can compare to de-obfuscated names to see if they do what you expected (if they're named sensibly).