Of all the techniques mentioned, I've found code review to be the most important to my own growth. It's also the only tactic that is hard to do on your own if you don't have a mentor. It is nearly impossible to find someone more knowledgeable than yourself who is willing to look at every line of code you write and give you constructive criticism. And the better the reviewer, the more you learn.<p>I had a fantastic experience working under an ex-google-research fellow who gave me both high level architecture and line-by-line reviews; I wouldn't be the programmer I am today without their help. The nice thing with code review is that it's in each party's interest to do their best possible work: the mentee wants to impress their mentor; the mentor wants to teach the mentee; neither of them want to waste time; both want good code in production.