Simon is an independent consultant and helps organisations to build better software by adopting a lightweight, pragmatic approach to software architecture. He is the creator of the C4 software architecture model and the author of Software Architecture for Developers - a developer-friendly guide to software architecture, technical leadership and the balance with agility. Simon regularly speaks at software development conferences around the world and, in 2013, he won the IEEE Software sponsored SATURN 2013 "Architecture in Practice" Presentation Award for his presentation about the conflict between agile and architecture. Simon lives in Jersey (the largest of the Channel Islands) and his client list spans over 20 countries, including organisations ranging from small technology startups through to global household names. He still codes too.
I believe that a lightweight approach to software architecture is pivotal to successfully delivering software, and that it can complement agile approaches rather than compete against them. After all, a good architecture enables agility and this doesn't happen by magic.
In a nutshell, my lightweight approach to software architecture includes doing "just enough" up front design to understand the significant structural elements of the software, some lightweight sketches to communicate that vision to the team and ensuring that the highest priority risks are identified and mitigated. I use a technique that I call Risk-storming as a visual and collaborative way to identify those risks. The code doesn't tell the whole story, so I deliver a lightweight software guidebook as supplementary documentation. The video of my "Software Architecture & the balance with agility" talk from the "Software Architect 2013" conference provides a good overview of my approach to software architecture, while my "Simple sketches for diagramming your software architecture" article summarises my "C4 model" for describing, visualising and communicating software architecture.
I've spoken at events and/or have clients in the following countries.
I regularly deliver sessions about software architecture at conferences, user groups and organisations around the world; including opening keynotes, closing keynotes, conference talks, panel sessions and workshops. In 2013, I won the IEEE Software sponsored SATURN 2013 "Architecture in Practice" Presentation Award for my talk about the conflict between agile and architecture.
All of the slides from past talks are available to view online/download.
I run training courses about software architecture, technical leadership and the balance with agility. The full set of slides from the training course is available to view online/download.
My courses include a 1-day software architecture sketching workshop and a full 2-day "Software Architecture for Developers" training course. Most courses are private, on-site courses for organisations around the world, but there are usually a small number of public courses each year. The software architecture sketching workshops are often run at conferences too.
An online version of my "Software Architecture for Developers" training course is also available via Parleys. This includes the same content as a regular 2-day version, except for the hands-on software design and sketching exercises.
My Software Architecture for Developers e-book, a developer-friendly guide to software architecture, is available to buy from Leanpub. You can read a sample online. A Chinese translation is available.
I've also authored and co-authored a number of books about enterprise Java, and contributed to others. I write about software architecture on the Coding the Architecture blog and write articles for places like InfoQ, Methods & Tools, etc too.
Most of my career has been spent working for consulting companies in London and, although I predominantly built software for our customers, I have also performed a number of consulting roles. These included software architecture reviews, software archaeology, architecture strategy work, technical due diligence, process engineering, being a trusted advisor, developer mentoring and coaching, rescuing failing software projects, performance testing, creating technical career frameworks and training plans, etc.