You nailed it. I focus on code reviews and I agree that its the best way to teach programing. It teaches them how to structure their code to be maintainable. Just getting it to work is not good enough, you have to think about the engineer who is going to take over your code one day.