1- Everything in software architecture is a trade-off "If an architect thinks they have discovered something that isn’t a trade-off, more likely they just haven’t identified the trade-off yet." "To understand important trade-offs in architecture, developers must understand some basic concepts and terminology concerning components, modularity, coupling, and connascence." 2- Why is more important than how.