I'm reading the chapter in Code Complete about design (http://cc2e.com/page.aspx?hid=141).
Three points have struck a chord with me:
- Design is about tradeoffs
What are our priorities?
- Design involves restrictions
What are we limiting?
- Design is emergent
Can we set out some guiding principles and let the design grow from there?
My current thinking is the priority in application design is a fast application.
We limit features based on their effect on our performance.
We build in a modular way so we can easily turn features on and off.