Architecture
Introduction
The term "software architect" has become sadly maligned of late, probably as a result of developers working with architecture astronauts—http://www.joelonsoftware.com/items/2005/10/21.html who communicate through PowerPoint-Driven Development. Simon Brown has written a book called Software Architecture for Developers—https://leanpub.com/software-architecture-for-developers; check it out for a complete discussion of the responsibility of a software architect. The focus of this chapter is on the incremental differences between thinking about a problem as code and as architecture that supports the code. It's also about some of the things to think about as you're designing your application, when to think about them, and how to communicate the results of such considerations to other people on the team.
Non-Functional Requirements Are Essential
I'd almost go as far as to say that the primary indicator of success for...