About

I'm an independent consultant specialising in software architecture and 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. Some of the slides from past talks are available to view online/download, and there are many videos of my talks available online, most of which can be found on YouTube.

Modular monoliths
GOTO Berlin 2018 - Berlin, Germany - November 2018

The model-code gap
SCLConf 2018 - London, England - October 2018

Software Architecture for Developers
YOW! Conference - Brisbane, Australia - December 2017


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

Agile and architecture; finally friends
ING Loves IT - Bucharest, Romania - April 2017

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:

2019

Training

I run software architecture workshops at organisations across the globe, the content of which is based upon my Software Architecture for Developers books. These workshops, aimed at software developers and architects, are a guide to modern software architecture that's pragmatic rather than academic, and lightweight rather than "enterprisey". They are occasionally run publicly via training providers or conferences but most are private, on-site workshops held directly with organisations.


Software Architecture for Developers
(~140MB .pdf file)
Software Architecture for Developers
Visualising software architecture with the C4 model
(~100MB .pdf file)

Pricing, logistics and booking

The pricing model is a flat fee based upon location, inclusive of 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 (HDMI or VGA) and some whiteboards/flip chart paper plus marker pens for the hands-on exercises. No laptops are needed, and the timings are flexible. E-mail me for more details, pricing, or to book a workshop.

Workshop #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.

Agenda - Day 1
  • [09:00 - 09:15] Introductions
  • [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
Agenda - 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
  • [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 architure 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

Workshop #2: Visualising software architecture with the C4 model (1 day)

"Visualising software architecture with the C4 model" is a hands-on, half-day or full-day workshop that 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 (an 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. This workshop is best run as a full-day session, but the half-day version is sufficient for learning how to use the C4 model.

Agenda (full-day version)
  • [09:00 - 09:15] Introductions
  • [09:15 - 11:00] Software diagramming exercise
  • [11:00 - 12:30] Review and feedback
    • Diagramming anti-patterns and typical problems
    • The "model-code gap"
  • [12:30 - 13:30] Lunch
  • [13:30 - 16: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
  • [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
    • Extracting software architecture information from code and "architecturally-evident coding styles"
  • [16:45 - 17:00] Discussion, questions and wrap-up
Agenda (half-day version)
  • [09:00 - 09:15] Introductions
  • [09:15 - 10:15] A summary of current diagramming practices
    • Diagramming anti-patterns and typical problems
    • The "model-code gap"
  • [10:15 - 12: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
  • [12:15 - 12:30] Discussion, questions and wrap-up

E-mail me for more details, pricing, or to book a workshop.

Writing

I've authored and contributed content a number of books, as well as being a technical reviewer on others. I've also written articles for places like InfoQ, Voxxed, Methods & Tools, NLJUG, etc.

Software Architecture for Developers: Volume 1
Software Architecture for Developers: Volume 2

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