I f you're at all like me, you've spent a lot of time thinking about what makes " good design " good. Most software developers become preoccupied with this question at some point in their careers, usually after witnessing the effects of bad design first hand. At that point, we start to reflect. We go through a stage where we feel we know what good design is but can't really define it. Then we l...