A practical, pragmatic and lightweight guide to software architecture, specifically aimed at software developers
Software Architecture for Developers is a practical and pragmatic guide to modern software architecture, specifically aimed at software developers. You'll learn:
- The essence of software architecture.
- Why the software architecture role should include coding, coaching and collaboration.
- The things that you really need to think about before coding.
- How to visualise your software architecture using the C4 model.
- A lightweight approach to documenting your software.
- Why there is no conflict between agile and architecture.
- What "just enough" up front design means.
- How to identify risks with risk-storming.
Software Architecture for Developers
(slides - 53MB; PDF)
YOW! Conference - Brisbane, Australia - December 2017
Five things every developer should know about software architecture
Back in 2010, I wrote an article titled Are You a Software Architect?, which looked at the difference and transition between being a software developer and being a software architect. Although the industry has moved on in many ways during the past 8 years, it seems that software development teams are still struggling with some of the basics, especially those aspects related to software architecture. These are arguably more important than ever before, given the distributed nature of the software systems we’re now building, and the distributed nature of the teams building them. As a short introduction to the topic and to debunk some myths, here are five things that every software developer should know about software architecture.
Volume 1: Technical leadership and the balance with agility
A developer-friendly, practical and pragmatic guide to lightweight software architecture, technical leadership and the balance with agility.
This book is a practical, pragmatic and lightweight guide to software architecture, specifically aimed at developers, and focussed around the software architecture role and process.
- Part 1: Software architecture
- What is "software architecture"?
- Architectural drivers
- Part 2: The software architecture role
- The software architecture role
- Technical leadership
- Software architects and coding
- The skills and knowledge of a software architect
- Part 3: The process of architecting
- Managing technical risks
- Software architecture in the delivery process
Agile and architecture, finally friends after 15 years
SwanseaCon - Swansea, Wales - September 2016
Agile and architecture; finally friends
ING Loves IT - Bucharest, Romania - April 2017
Volume 2: Visualise, document and explore your software architecture
A short guide to visualising, documenting and exploring your software architecture.
This book focusses on the visual communication and documentation of software architecture, based upon a collection of ideas and techniques that thousands of people across the world have found useful. The core of this is my C4 software architecture model and the software guidebook. You'll also find discussion about notation, the various uses for diagrams, the value of creating a model and tooling.
- Part 1: Visualise
- We have a failure to communicate
- A shared vocabulary
- The C4 model
- Level 1: Context diagram
- Level 2: Container diagram
- Level 3: Component diagram
- Level 4: Class diagram
- Diagrams must reflect reality
- Other diagrams
- Part 2: Document
- Software documentation as a guidebook
- Functional Overview
- Quality Attributes
- Software Architecture
- Infrastructure Architecture
- Operation and Support
- Development Environment
- Decision Log
- Part 3: Tooling
- Sketches, diagrams, models and tooling
- The C4 model with other notations and tools
- Exploring your software architecture model
Visualise, document and explore your software architecture
OpenSlava - Bratislava, Slovakia - October 2017
The art of visualising software architecture
Voxxed Days Athens - Athens, Greece - May 2017
I run a 2-day software architecture training course at organisations across the globe, the content of which is based upon my Software Architecture for Developers books. The agenda is as follows.
Agenda - Day 1
- [09:00 - 09:15] Introductions
- [09:15 - 10:00] Architecture
- What is software architecture?
- Architecture vs design
- The importance of software architecture
- [10:00 - 11:00] Architectural drivers
- Quality attributes
- [11:00 - 12:30] Software design exercise
- [12:30 - 13:30] Lunch
- [13:30 - 14:30] Review and feedback
- Does the solution satisfy the architectural drivers?
- [14:30 - 16:00] Architects
- A definition of the software architecture role
- Technical leadership and the different leadership styles
- Technical skills
- Soft skills
- Software architecture and coding
- [16:00 - 17:00] Visualising software architecture
- Do you understand the diagrams?
Agenda - Day 2
- [09:00 - 12:30] Visualising software architecture
- Diagramming anti-patterns and typical problems
- The "model-code gap"
- Abstractions and creating a shared vocabulary with a ubiquitous language
- An overview of the C4 model
- Notation and tips for better diagrams
- System Context diagrams
- Container diagrams
- Component diagrams
- [12:30 - 13:30] Lunch
- [13:30 - 14:30] Documenting software architecture
- The importance of documentation
- Writing lightweight supplementary documentation using a "software guidebook" or arc42
- [14:30 - 15:30] Managing technical risk
- Quantifying and prioritising risk
- Identifying risk with risk-storming
- [15:30 - 16:30] Software architecture in the delivery process
- Waterfall, RUP, agile, etc
- The conflict between architure and agile
- Approaching software architecture in a pragmatic, lightweight way
- How much up front design is enough?
- [16:30 - 17:00] Discussion, questions and wrap-up
This 2-day workshop will give you an introduction to a pragmatic and practical approach to software architecture; including technical leadership, communication and how to balance up front design with agile approaches.
Software developers and architects; all levels of experience.
Some experience building software; no laptops needed.
The exact timings are flexible, but most courses are typically 09:00-17:00, with a 20-30 minute coffee break mid-morning and mid-afternoon, plus an hour for lunch.
Slides and handouts
The slides and handouts are available to download.
Download the full set of slides
The pricing model is "per day" rather than "per attendee", based upon my availability and travel. The class size is flexible; although I recommend between 10 and 20 people. From a logistics point of view, all I need is a room with a projector and some whiteboards/flip chart paper. I occasionally run public workshops at training providers or conferences but most are private, on-site workshops held directly with organisations.
Please e-mail me for more details and pricing.