Training

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.

Australia Australia
Belgium Belgium
China China
Czech Republic Czech Republic
Denmark Denmark
Finland Finland
France France
Germany Germany
Guernsey Guernsey
Hungary Hungary
Ireland Iceland
Ireland Ireland
Italy Italy
Jersey Jersey
Latvia Latvia
Lithuania Lithuania
The Netherlands The Netherlands
New Zealand New Zealand
Norway Norway
Poland Poland
Portugal Portugal
Romania Romania
Spain Spain
Sweden Sweden
Switzerland Switzerland
Ukraine Ukraine
United Arab Emirates United Arab Emirates
United Kingdom United Kingdom
United States United States


Software Architecture for Developers

The Art of Visualising Software Architecture

Software Architecture for Developers

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.

Agenda

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.

Day 1

  • [09:00 - 09:15] Introductions and setting the scene
  • [09:15 - 10:00] What is software architecture?
    • Defining software architecture.
    • Is software architecture important?
  • [10:00 - 12:30] The software architecture role
    • Seeing the big picture.
    • The software architecture role and coding.
    • Soft skills.
    • Technical leadership.
    • Implementing the role.
  • [12:30 - 13:30] Lunch
  • [13:30 - 14:30] Designing software
    • Requirements.
    • Constraints.
    • Principles.
    • Designing software.
  • [14:30 - 16:30] Software design exercise (iteration 1)
  • [16:30 - 17:00] Software design exercise review
    • What was challenging?
    • Review the diagrams.

Day 2

  • [09:00 - 10:00] Communicating design
    • We have a failure to communicate.
    • Ineffective sketches.
    • Effective sketches.
    • The C4 model.
    • Software architecture vs code.
    • Software architecture as code.
    • The value of sketches.
  • [10:00 - 12:30] Software design exercise (iteration 2)
  • [12:30 - 13:30] Lunch
  • [13:30 - 14:30] Documenting software
    • The need for documentation.
    • The software guidebook.
  • [14:30 - 16:30] Agility and the essence of software architecture
    • Software architecture in the software development life cycle.
    • Agility.
    • Firm foundations.
  • [16:30 - 17:00] Discussion, questions and wrap-up

The Art of Visualising Software Architecture

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.

A software architecture sketch

Have you abandoned UML and switched back to "boxes and lines"?

A software architecture sketch

Do your software architecture diagrams look like this?

A software architecture sketch

Do your diagrams get out of date quickly?

An automatically generated UML class diagram

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

Agenda

Here's an indicative agenda. Again, although not listed, we do have 15-30 minute breaks mid-morning and mid-afternoon too.

Course materials

Here are links to download all of the slides and handouts that we use during the training courses.

Slides

Software Architecture for Developers - slides

Slides

The Art of Visualising Software Architecture - slides

Case study

The financial risk system case study

Context diagram

The techtribes.je context diagram

Container diagram

The techtribes.je container diagram

Component diagram

The techtribes.je component diagram

Are these "death by PowerPoint" style courses?

Certainly not! Both courses are interactive; with a combination of presentation, group discussion and group working.

Training

Is there any coding?

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.

Book a course

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.