We run two training courses about pragmatic software architecture, technical leadership and the balance with agility. The first is Software Architecture for Developers (a 2-day introduction to software architecture) and the other is The Art of Visualising Software Architecture (a 1-day software architecture sketching workshop).
Most training 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. Here's the list of countries we've visited and/or have customers in.
The 2-day "Software Architecture for Developers" training course covers the same content you'll find in both books, Software Architecture for Developers and The Art of Visualising Software Architecture. You'll learn:
A lightweight approach to software architecture is pivotal to successfully delivering software, and it can complement agile approaches rather than compete against them. After all, a good architecture enables agility and this doesn't happen by magic. The course will teach you how to create firm foundations by doing "just enough" up front design to understand the significant structural elements of the software, visualising this using some lightweight sketches to communicate that vision to the team and ensuring that the highest priority risks are identified and mitigated.
Here's a breakdown of what we cover on the course but the timings are indicative rather than set in stone because we like to foster discussion rather than cut it short. Although not listed, we do have 15-30 minute breaks mid-morning and mid-afternoon too.
Software architecture diagrams are a great way to explain and document how a software system works. Static diagrams, whether drawn on a whiteboard or with a general purpose diagramming tool such as Microsoft Visio, tend to get out of date quickly and often don't reflect the structure of the code. On the other hand, automatically generated diagrams, such as UML class diagrams created by reverse-engineering the code, typically show far too much detail, limiting their usefulness.
Have you abandoned UML and switched back to "boxes and lines"?
Do your software architecture diagrams look like this?
Do your diagrams get out of date quickly?
Do you feel overwhelmed by automatically generated diagrams?
Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer to communicate the software architecture of a software system using diagrams and you'll likely get a confused mess of boxes and lines. I've asked thousands of software developers to do just this over the past decade and continue to do so today. The results from these software architecture sketching workshops still surprise me, anecdotally suggesting that effective visual communication of software architecture is a skill that's sorely lacking in the software development industry.
Of course, as an industry, we do have the Unified Modeling Language (UML), but asking whether this provides an effective way to communicate software architecture is often irrelevant because many teams have already thrown out UML in favour of much simpler "boxes and lines" diagrams. Abandoning UML is one thing but, perhaps in the race for agility, many software development teams have lost the ability to communicate visually. This workshop explores the visual communication of software architecture based upon my experience of working with software development teams across the globe. We'll look at what is commonplace today, the importance of creating a shared vocabulary, diagram notation, the value of creating a model plus how to use tooling and static analysis techniques to automate diagram generation.
The 1-day "The Art of Visualising Software Architecture" training course covers the same content you'll find in the book, The Art of Visualising Software Architecture. This hands-on session, primarily aimed at software developers and architects, is about improving communication. You'll see some patterns and anti-patterns related to "boxes and lines" diagrams, and you'll learn some lightweight techniques for communicating software architecture using simple sketches and the "C4 software architecture model".
Here's an indicative agenda. Again, although not listed, we do have 15-30 minute breaks mid-morning and mid-afternoon too.
Certainly not! Both courses are interactive; with a combination of presentation, group discussion and group working.
In a word, no. The purpose of the training course is to look at the bigger picture elements of the software design process so there's no focus on writing code. We certainly talk about code and technology plus their relationship to software architecture though.
We run private courses at organisations across the globe. All we need is a room large enough for the attendees with a projector and some whiteboards/flip chart paper. The suggested maximum class size is ~30 people, but if you have the room then we're flexible.
"Really surprising training! I expected some typical spoken training about someones revolutionary method and I found a hands-on training that used the "do-yourself-and-fail" approach to learn the lesson, and taught us a really valuable, reasonable and simple method as an approach to start the architecture of a system. Highly recommended!" (an attendee from the software architecture sketching workshop at GOTO Amsterdam 2014)
Contact simon.brown at codingthearchitecture.com for more details or to book a course.