To me, the design stage is the most intellectually stimulating part of the software development cycle. After all, the design decides what the code will
* Usability
* Scalability
* Maintainability
* Extensibility
* Reliability
* Security
* Portability
* ...
It is often said that software architects deal in "ilities". There are many "ilities"