UNDERSTANDING SOFTWARE DESIGN : A GROKKING STRATEGY