- Design Goal
- meets requirements
- reliable
- scalable
- operable (sustainable delivery of valuable, working software)
- Design it twice
- write down two designs, each with pros and cons, then perhaps there
will appear a third design with combined pros and less cons
- Architect great design rather than just working codes, then writing
comments should be fun since that’s how you identify the best
design
- reduce complexity by adding or removing abstraction