I read Andrew Binstock occassionally in SD Times and in the most recent issue he posted a list of guidelines (which in turn was excerpted from 'The Thoughtworks Anthology') for learning to write "real" object oriented code. Read Getting the knack of OO Coding and see what you think...