When people ask how to improve their programming skills invariably they are told
to write more code, to dive into open source projects or to build a replica of a
well known piece of functionality. All of those tips are great but at the same
time they can reinforce bad