Simon Brown
Speaking | Workshops | Writing | Resources
I'm the author of Software Architecture for Developers; a developer-friendly guide to software architecture, technical leadership and the balance with agility. I'm also the creator of the C4 software architecture model and the founder of Structurizr, a collection of tooling to help software teams visualise, document and explore their software architecture.
Speaking
I speak at software development conferences, meetups and organisations around the world; delivering keynotes, presentations, training courses and workshops. In 2013, I won the IEEE Software sponsored SATURN 2013 "Architecture in Practice" Presentation Award for my presentation about the conflict between agile and architecture. Many of the conference talks that I've presented can be found on YouTube.
Visualising software architecture with the C4 model
Agile on the Beach 2019 - Falmouth, England - July 2019
C4 models as code
Devoxx Belgium - Antwerp, Belgium - October 2023
Five things every developer should know about software architecture
Jfokus - February 2024
The lost art of software design
Agile meets Architecture - Berlin, Germany - September 2022
Modular monoliths
GOTO Berlin 2018 - Berlin, Germany - November 2018
Expert Talk: DevOps & Software Architecture • Simon Brown, Dave Farley & Hannes Lowette
GOTO Copenhagen - Copenhagen, Denmark - October 2021
Although most of the work that I do is on-site with organisations (I have clients in over 30 countries), I do speak at a number of public events. Here is my recent and future public speaking schedule:
2024
Software Architecture for Developers in Amsterdam, Netherlands [November 20th-21st; workshop]
GOTO Copenhagen in Copenhagen, Denmark [September 30th-October 4th; masterclass & talk]
DevBcn in Barcelona, Spain [June 13th-14th; talk]
GOTO Amsterdam in Amsterdam, Netherlands [June 10th-12th; talk & masterclass]
Jfokus Training Camp in Stockholm, Sweden [May 28th; workshop]
International Software Architecture PhD School (ISAPS) in Leiden, Netherlands [May 20th-24th; lecture]
DevSum in Stockholm, Sweden [May 16th-17th; talk]
SDD in London, England [May 13th-17th; talk]
Devoxx UK in London, England [May 8th-10th; demo]
Devoxx Greece in Athens, Greece [April 18th-20th; talk]
Learning Actors in Athens, Greece [April 17th; workshop]
Oslo Software Architecture Meetup in Oslo, Norway [April 3rd; talk]
Voxxed Days Bucharest in Bucharest, Romania [March 27th-29th; talk]
Jfokus in Stockholm, Sweden [February 5th-7th; talk]
Breakfast seminar with Bouvet in Oslo, Norway [January 18th; talk]
2023
Software Architecture for Developers in Amsterdam, Netherlands [November 15th-16th; workshop]
NDC Porto in Porto, Portugal [October 16th-20th; talk]
ITARC in Stockholm, Sweden [October 17th-18th; keynote]
Devoxx Belgium in Antwerp, Belgium [October 2nd-6th; hands-on lab and talk]
International Software Architecture PhD School (ISAPS) in Leiden, Netherlands [June 5th-9th; lecture]
Devoxx Poland 2023 in Krakow, Poland [May 31st-June 2nd; talk]
DevSum in Stockholm, Sweden [May 26th; talk]
NDC Oslo in Oslo, Norway [May 24th; talk]
Full Stack Meetup Budapest in Budapest, Hungary [May 17th; talk]
Craft Conference in Budapest, Hungary [May 16th-19th; workshop and talk]
- 🎙 OOP 2023 [February 8th; talk]
Workshops
I offer a number of workshops related to software architecture and the C4 model for visualising software architecture, and have run over 100 workshops at organisations in over 30 countries. Workshops are usually run privately for your team/organisation, but they are occasionally run publicly via training providers or conferences too; see Speaking - 2024 for a list of upcoming events.
- Software Architecture for Developers (a 2-day introduction to software architecture)
- Software Architecture for Developers (a 1-day introduction to software architecture)
- Visualising software architecture with the C4 model (a 1-day hands-on software architecture diagramming workshop)
The pricing model for in-person workshops is a flat fee based upon location, inclusive of the my travel and accomodation, rather than a fee "per attendee". The recommended number of attendees is between 10 and 20, but there is no class size limit. From a logistics point of view, all we need is a room with a projector/large TV (with a HDMI conmector) and some whiteboards/flip chart paper plus marker pens for the hands-on exercises. No laptops are needed, and the timings are flexible. I don't run fully remote workshops, but it is possible to run a hybrid in-person/remote workshop from a location where in-person attendance will be highest, with the remainder of the participants joining via Zoom/Teams/Meet/etc. Please contact [email protected] for further details, or to book.
1. Software Architecture for Developers (2 days)
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.
Day 1
- [09:00 - 09:15] Introduction
- [09:15 - 09:45] Architecture
- What is software architecture?
- Architecture vs design
- The importance of software architecture
- [09:45 - 10:15] Architectural drivers
- Requirements
- Quality attributes
- Constraints
- Principles
- Agility
- [10:15 - 10:45] Morning break
- [10:45 - 12:30] Software design exercise
- Software design exercise
- Design exercise review #1
- [12:30 - 13:30] Lunch
- [13:30 - 14:30] Architects
- A definition of the software architecture role
- Technical leadership and the different leadership styles
- Technical skills
- Soft skills
- Software architecture and coding
- [14:30 - 15:00] Afternoon break
- [15:00 - 16:15] Visualising software architecture
- Design exercise review #2
- Diagramming anti-patterns and typical problems
- The "model-code gap"
- [16:15 - 16:30] Discussion, questions and wrap-up
Day 2
- [09:00 - 10:15] C4 model - core diagrams
- 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
- [10:15 - 10:45] Morning break
- [10:45 - 12:30] Software design exercise
- Software design exercise
- Design exercise review #3
- [12:30 - 13:30] Lunch
- [13:30 - 14:00] C4 model - supplementary diagrams
- C4 and UML
- System Landscape diagrams
- Dynamic diagrams
- Deployment diagrams
- Frequently asked questions
- [14:00 - 14:30] Documenting software architecture
- The importance of documentation
- Writing lightweight supplementary documentation using a "software guidebook" or arc42
- Architecture decision records
- [14:30 - 15:00] Afternoon break
- [15:00 - 15:30] Tooling
- Diagrams vs models
- Extracting software architecture information from code and "architecturally-evident coding styles"
- [15:30 - 16:15] Software architecture in the delivery process
- Quantifying and prioritising risk
- Identifying risk with risk-storming
- Design exercise review #4
- Waterfall, RUP, agile, etc
- The conflict between architecture and agile
- Approaching software architecture in a pragmatic, lightweight way
- How much up front design is enough?
- [16:15 - 16:30] Discussion, questions and wrap-up
2. Software Architecture for Developers (1 day)
This is a condensed version of the 2 day workshop above, covering the same topics in less depth.
Day 1
- [09:00 - 09:15] Introduction
- [09:15 - 09:45] Architecture
- What is software architecture?
- Architecture vs design
- The importance of software architecture
- [09:45 - 10:15] Architectural drivers
- Requirements
- Quality attributes
- Constraints
- Principles
- Agility
- [10:15 - 10:45] Morning break
- [10:45 - 11:45] Architects
- A definition of the software architecture role
- Technical leadership and the different leadership styles
- Technical skills
- Soft skills
- Software architecture and coding
- [11:45 - 12:30] Visualising software architecture
- Diagramming anti-patterns and typical problems
- An overview of the C4 model
- Notation and tips for better diagrams
- [12:30 - 13:30] Lunch
- [13:30 - 15:30] Software design exercise
- Software design exercise
- Design exercise review #1
- [15:30 - 16:00] Afternoon break
- [16:00 - 16:45] Software architecture in the delivery process
- Quantifying and prioritising risk
- Identifying risk with risk-storming
- Design exercise review #2
- Waterfall, RUP, agile, etc
- The conflict between architecture and agile
- Approaching software architecture in a pragmatic, lightweight way
- How much up front design is enough?
- [16:45 - 17:00] Discussion, questions and wrap-up
3. Visualising software architecture with the C4 model (1 day)
This hands-on, 1-day workshop focusses on the visualisation and communication of software architecture using the C4 model. The core of this workshop can be based upon a simple case study (my "Financial Risk System" architecture kata) or your own software systems. This workshop will give you some pragmatic, practical, and lightweight techniques that you can apply to your work the very next day. You'll learn why most software architecture diagrams are meaningless, how to critique them, how to fix them and how to use the C4 model to create a simple yet powerful set of developer-friendly diagrams to describe software architecture.
Abstract
It's very likely that the majority of the software architecture diagrams you've seen are a confused mess of boxes and lines. Following the publication of the Manifesto for Agile Software Development in 2001, teams have abandoned UML, discarded the concept of modelling, and instead place a heavy reliance on conversations centered around incoherent whiteboard diagrams or shallow "Marketecture" diagrams created with Visio. Moving fast and being agile requires good communication, yet software development teams struggle with this fundamental skill. A good set of software architecture diagrams are priceless for aligning a team around a shared vision, and for getting new-joiners productive fast.
This hands-on workshop explores the visual communication of software architecture, and is based upon years of experience working with software development teams large and small across the globe. We'll look at what is commonplace today, the importance of creating a shared vocabulary, diagram notation, and the value of creating a lightweight model to describe your software system. The workshop is based upon the "C4 model", which I created as a way to help software development teams describe and communicate software architecture, both during up-front design sessions and when retrospectively documenting an existing codebase. It's a way to create maps of your code, at various levels of detail. Static structure, runtime and deployment diagrams are all covered, so you'll be able to tell different stories to different audiences.
Day 1
- [09:00 - 09:15] Introduction
- [09:15 - 10:30] Software diagramming exercise 1
- [10:30 - 11:00] Break
- [11:00 - 12:00] Review and feedback
- Diagramming anti-patterns and typical problems
- The "model-code gap"
- [12:00 - 13:00] Lunch
- [13:00 - 14:00] C4 model - core diagrams
- 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
- [14:00 - 15:30] Software diagramming exercise 2
- [15:30 - 16:00] Break
- [16:00 - 16:30] C4 model - supplementary diagrams
- C4 and UML
- System Landscape diagrams
- Dynamic diagrams
- Deployment diagrams
- Frequently asked questions
- [16:30 - 16:45] Tooling
- Diagrams vs models
- Structurizr DSL demo
- [16:45 - 17:00] Discussion, questions and wrap-up
Writing
I've authored and contributed content to a number of books, as well as being a technical reviewer on others. I've also written articles for sites such as InfoQ.
Articles, interviews, and podcasts
GOTO: Software Architecture for Developers (Teaser)
March 2021
GOTO: Software Architecture for Developers (part 1)
March 2021
GOTO: Software Architecture for Developers (part 2)
March 2021
Mozaic Works: Agile Challenges - Architecture, Design, and C4 Model
September 2020
ZDNet: "What we've lost in the push to agile software development, and how to get it back"
August 2020
Microsoft 425 Show - Software architecture, security and design with Simon Brown
July 2020