Simon Brown

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 I built Structurizr, which is a collection of tooling to help software teams visualise, document and explore their software architecture.

Visualise, document and explore your software architecture
OpenSlava - Bratislava, Slovakia - October 2017


Visualise, document and explore your software architecture
NDC London - London, England - January 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

Award-winning speaker

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. I've spoken at events and/or have clients in the following countries.

Australia Australia Belgium Canada China Czech Republic Denmark Finland France Germany Greece Guernsey Hong Kong Hungary Ireland Ireland Italy Jersey Latvia Lithuania Macedonia The Netherlands Norway Poland Portugal Romania Slovakia South Korea Spain Sweden Switzerland Ukraine United Arab Emirates United Kingdom United States

Writing

I've authored and co-authored a number of books about software architecture, Java, 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

I've also contributed some content to the following books, as well as being a technical reviewer on others.

Talking with Tech Leads Design It! Clean Architecture

And I've written articles for places like InfoQ, Voxxed, Methods & Tools, NLJUG, etc.

Speaking

I deliver sessions about software architecture at conferences, user groups and organisations around the world; including opening keynotes, closing keynotes, conference talks, panel sessions, training courses and workshops. All of the slides from past talks are available to view online/download. Here is my recent and future public speaking schedule.

2018

  • United States DevNexus 2018 in Atlanta, United States [February; talk and workshop].

2017

Lanyards

The 'Architecture in Practice' award from SATURN 2013

Videos

There are many videos of my talks available online, most of which can be found on YouTube.

Information for event organisers

Here's some information about my speaking fees, along with my current bio and talk abstracts. I've done many different talks related to software architecture in recent years, so please get in touch if you'd like something slightly different from what you see here.

Speaking fees

I receive a large number of speaking invitations each year, and it's unfortunately unfeasible to accept all of them. If your invitation proposal doesn't include travel and expenses as a minimum, it will likely be declined. My speaking fee is dependent upon a number of factors such as the event type (open, closed, commercial, community, not-for-profit, etc), location (Europe vs further afield), date and proposed participation (keynote, talk, workshop, etc).

Please contact me for further details.

Simon Brown

Independent Consultant

Simon is 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). He is also the creator of the C4 software architecture model, which is a simple approach to creating maps of your code. Simon is a regular speaker at international software development conferences and travels the world to help organisations visualise and document their software architecture.

Simon Brown

Software architecture for developers

Duration: 45-60 minutes

The software development industry has made huge leaps in recent years; with agile, lean, software craftsmanship, evolutionary design and microservices being just a few of the buzzwords we throw around. Despite this, software development teams are often more chaotic than they are self-organising, with the resulting code being more of a mess than was perhaps anticipated. Successful software projects aren't just about good code though, and sometimes you need to step away from the IDE for a few moments to see the bigger picture. This session is about that bigger picture and is aimed at software developers who want to learn more about software architecture, technical leadership and the balance with agility. This talk will debunk some of the common myths as we look at five things every developer should know about software architecture; a guide to software architecture on modern software projects that's pragmatic rather than academic and lightweight rather than "enterprisey".

Maps, travel guides and source code

Duration: 45-90 minutes

"We value working software over comprehensive documentation" is what the manifesto for agile software development says, with the typical misinterpretation of these few words being "don't write documentation". Of course, that's not what the manifesto says and "no documentation" certainly wasn't the intent. It seems that many software teams have lost the ability to communicate what it is they are building and it's no surprise that these same teams often seem to lack technical leadership, direction and consistency. Join us for a journey, as we navigate through maps, travel guides and source code to visualise, document and explore our software.

Modular monoliths

Duration: 45-60 minutes

If you want evidence that the software development industry is susceptible to fashion, just go and take a look at all of the hype around microservices. It's everywhere! For some people microservices is "the next big thing", whereas for others it's simply a lightweight evolution of the big service-oriented architectures that we saw 10 years ago "done right". Microservices is by no means a silver bullet though, and the design thinking required to create a good microservices architecture is the same as that needed to create a well structured monolith. And this begs the question that if you can’t build a well-structured monolith, what makes you think microservices is the answer?

Training

I run software architecture training courses at organisations across the globe, the content of which is based upon my Software Architecture for Developers books. These courses, which are aimed at software developers and architects, are a guide to software architecture on modern software projects that's pragmatic rather than academic and lightweight rather than "enterprisey".

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.

Software architecture for developers

Duration: 2 days

This is my full software architecture training course, based upon the content of my Software Architecture for Developers books.

Agenda - Day 1
  • [09:00 - 09:15] Introductions
  • [09:15 - 10:00] What is software architecture?
    • A definition of software architecture.
    • The importance of software architecture.
  • [10:00 - 12:00] The software architecture role
    • Software architecture and the ideal software development team.
    • Technical leadership and the different leadership styles.
    • Technical skills.
    • Soft skills.
    • Software architecture and coding.
  • [12:00 - 12:30] Architectural drivers
    • Requirements.
    • Quality attributes.
    • Constraints.
    • Principles.
  • [12:30 - 13:30] Lunch
  • [13:30 - 15:30] Software design/diagramming exercise (iteration 1)
  • [15:30 - 17:00] Software design/diagramming exercise review
Agenda - Day 2
  • [09:00 - 10:00] Visualising software architecture
    • Diagramming anti-patterns and typical problems.
    • UML.
    • The "model-code gap".
    • Creating a shared vocabulary and a ubiquitous language.
    • The "C4 model".
    • Static structure diagrams.
    • Dynamic/behavioural diagrams.
    • Infrastructure and deployment diagrams.
  • [10:00 - 12:30] Software design/diagramming exercise (iteration 2)
  • [12:30 - 13:30] Lunch
  • [13:30 - 14:00] Documenting software architecture
    • The importance of documentation.
    • Writing lightweight supplementary documentation using a "software guidebook" or arc42.
  • [14:00 - 15:30] Tooling
    • Types of tooling used for visualising and documenting software architecture.
    • Bridging the "model-code gap" with architecturally-evident coding styles.
    • Software architecture as code.
    • Exploring the static structure of a codebase.
  • [15:30 - 16:30] Agility
    • Building software systems that have agility as a characteristic.
    • Approaching software architecture in an agile, lightweight way.
    • How much up front design is enough?
  • [16:30 - 17:00] Discussion, questions and wrap-up
Learning outcomes

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

Software developers and architects; all levels of experience.

Pre-requisites

Some experience building software; no laptops needed.

Visualising software architecture with the C4 model

Duration: 1 day

This is a hands-on, 1-day workshop that focusses on the visualisation and communication of software architecture. The core of this workshop can be based upon a simple case study (an architecture kata) or your own software systems

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 a decade of my experiences 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. We'll wrap up the day by looking at the tooling landscape and diagram automation to keep your diagrams in sync with your source code.

Learning outcomes

This 1-day 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.

Target audience

Software developers and architects; all levels of experience.

Pre-requisites

Some experience building software; no laptops needed.

Slides and handouts

The slides and handouts for both training courses are available to download.

Pricing

The pricing model is "per day" rather than "per attendee", based upon my availability and travel. The class size is flexible; I've run courses for between 5 and 150 people, although I'd recommend between 10 and 30. 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.

Interviews and podcasts

I've been interviewed for a number of magazines and podcasts.