
Fundamentals of Software Architecture: An Engineering Approach

C’s of architecture: communication, collaboration, clarity, and conciseness.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
It’s really through collaboration with the development team that the architect is able to gain the respect of the team and form better solutions. The more developers respect an architect, the easier it will be for the architect to negotiate with those developers.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
If a developer disagrees with a decision, have them arrive at the solution on their own.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
By not saying “you must” or “you need to,” the architect effectively turned the demand into a simple statement of fact (“this means…”).
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
When convincing developers to adopt an architecture decision or to do a specific task, provide a justification rather than “dictating from on high.”
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
This is a classic example of the Ivory Tower architecture anti-pattern.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
The reason for this key expectation is that almost every decision a software architect makes will be challenged.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
the last being the expectation that a software architect must understand the political climate of the enterprise and be able to navigate the politics.
Neal Ford • Fundamentals of Software Architecture: An Engineering Approach
Figure 22-13. Providing guidance for the layered stack In Figure 22-13, an architect would provide examples