In this book Simon Brown goes through the mindset of software architecture. I found the book to have pragmatic agile view of software architecture. Simon’s main argument is that software architecture is still important and that teams that do too much or too little software architecture put themselves in a dangerous position. I recommend this book to anyone wanting to get a better understanding of modern the software architecture role.
What is Software Architecture
- Architecture, regardless of the domain is about structure and vision
Difference between
- Application Architecture - decomposing application into classes & components, design patterns, etc.
- System Architecture - how different applications interact, one step higher than application architecture.
- Software Architecture - the combination of application & system architecture.
- Enterprise Architecture - how to organise and utilise people, process and tech to make an organization work.
Architecture vs Design
All architecture is design, but not all design is architecture - Grady Booch
- Architecture represents the significant design decisions that shape a system, where significance is measured by cost of change.
- The siginificant decisions are architecture, everything else is design.
- The architect decisions are those that you can’t reverse without some degree of effort.
Software Architecure Role
6 main areas…
- Architectural Drivers - understanding goals, challenging requirements
- Designing Software - creating the technical strategy and roadmap
- Technical risks - identifying, mitigating & owning the technical risks to ensure the architecture works
- Architecture Evolution - continous leadership and ownership of tehcnical aspects of system
- Coding - involvement in the hands elements of software delivery
- Quality - introduction and architecture to standards, guidelins, and principles
Collaborate or fail
Should Software Architects Code?
- Yes.
Some organizations things that having an architect code is expensive, and that less paid people (developers should do coding), would not recommend you take this approach, but on the other side you should not be coding all the time as this will prevent you from focussing on non-coding areas.
Software Architects should be master builders
Here he goes on to explain what a master builder is, and how this would include “engineering” and “architectural” roles if we looked at building houses. In modern society this has separated so that building architects and engineers are two separate roles.
Comparing software architecture to building architecture is an unfortunate metaphor.
Broadening the T
Software architectus are specilising generalists
Soft Skills an Architect Needs
Goes through various soft skills…
A happy team is a team that delivers
Does Agile need architecture?
Explains that agile almost took the extreme case of “not” needing architecture saying everything is emergent. This is probably not a safe place to be, and there is a happy medium somewhere in between.