What makes a good programmer?
makecheck: Someone for whom programming is a passion, and not just income.  Someone considerate enough to help the next programmer who will look at the code.This type of person then naturally picks up good practices with experience.  For example: using multiple languages (and not being afraid to use the one best suited to a task), testing carefully, documenting responsibly, and favoring clarity over cleverness and optimization most of the time.