Reading code and tech papers
People get very good at games like chess and Go by studying master games. Software design and coding is similar in that we learn patterns and new ways of approaching problems.
I really enjoyed reading the paper on Google's map reduce library this morning. A great way to increase programmer productivity by abstracting away details of handling huge data tuple sets. The paper is detailed enough to make me feel like I could implement their ideas (given the Google file system infrastructure).
While good technical papers make us better at strategy (to keep up the chess and Go metaphor), reading other people's code helps develop good tactics.