Simon Brown

Workshops

The following workshops are typically run privately for your team/organisation at your own offices, but I occasionally run public (open enrolment) workshops via training providers or conferences. See Speaking for a list of upcoming public events.


1. Visualising software architecture with the C4 model

A 1-day hands-on software architecture diagramming workshop

2. Software architecture for developers

A 2-day introduction to software architecture, aimed at developers/engineers

Why?

Software development has changed immeasurably since the creation of the agile manifesto, but attempts to optimise team performance will still fail if good engineering fundamentals are not in place. I've had the privilege of visiting hundreds of organisations over the past 15+ years, spanning almost every industry sector, in almost 40 countries. From startups and small country specific businesses, to scale-ups and global household names. Despite the huge leaps made in the industry, a number of recurring themes have emerged from my conversations with the engineering managers, CTOs, directors of architecture, etc I've met:

Workshop information

1. 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, providing 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.


Target audience

The C4 model is designed for engineering teams and the workshop includes a software design exercise, so the majority of attendees should be engineers or have an engineering background. You're more than welcome to bring along solution architects, enterprise architects, DevOps, infrastructure engineers, technical testers, technical writers, etc too since they will also benefit from the shared language that the C4 model brings.


Options

There are two options for this workshop:


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.


Agenda

  • [09:00 - 09:15] Introduction
  • [09:15 - 10:15] Software diagramming exercise 1
  • [10:15 - 10:45] Review and feedback
  • [10:45 - 11:00] Break
  • [11:00 - 11:30] Diagramming anti-patterns and typical problems
  • [11:30 - 12:00] Abstractions and creating a shared vocabulary
  • [12:00 - 13:00] Lunch
  • [13:00 - 14:30] C4 model - core diagrams
    • An overview of the C4 model
    • System Context diagrams
    • Container diagrams
    • Component diagrams
    • Notation and tips for better diagrams
    • FAQ part 1 (additional abstractions, message-driven architectures, microservices, etc)
  • [14:30 - 14:45] Break
  • [14:45 - 16:00] Software diagramming exercise 2
  • [16:00 - 16:15] Review and feedback
  • [16:15 - 16:45] C4 model - supplementary diagrams
    • System Landscape diagrams
    • Dynamic diagrams
    • Deployment diagrams
    • FAQ part 2 (C4 at scale, etc)
  • [16:45 - 17:00] Discussion, questions, tooling, wrap-up

2. 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.


Target audience

This workshop is designed for developers/engineers with an aspiration to move into tech lead/architecture roles, and tech leads/architects who are new to the role.


Maximum class size

30 people.


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

Slides

Visualising software architecture with the C4 model
~90MB .pdf file
Software Architecture for Developers
~120MB .pdf file