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

2023

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.


  1. Software Architecture for Developers (a 2-day introduction to software architecture)
  2. Software Architecture for Developers (a 1-day introduction to software architecture)
  3. 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.


Software architecture diagramming maturity model


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.

Software architecture for developers
The C4 model for visualising software architecture
The software guidebook

Software Architecture for Developers Pro JSP 2 Pro JSP 3rd Edition Professional JSP Tag Libraries Professional Java Servlets 2.3 Professional JSP 2nd Edition Talking with Tech Leads Design It! Clean Architecture Software Architect Elevator

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

Screenshot

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

Resources

Software Architecture for Developers
Workshop slides (~120MB .pdf file)
Software Architecture for Developers
Visualising software architecture with the C4 model
Workshop slides (~90MB .pdf file)
Five things every developer should know about software architecture
Slides (~40MB .pdf file)
The lost art of software design
Slides (~25MB .pdf file)
Modular monoliths
Slides (~10MB .pdf file)