Simon is an independent software development consultant specialising in software architecture; specifically technical leadership, communication and lightweight, pragmatic approaches to software architecture. He is the author of two books about software architecture; Software Architecture for Developers (a developer-friendly guide to software architecture, technical leadership and the balance with agility) and The Art of Visualising Software Architecture (a guide to communicating software architecture with sketches, diagrams and models). I’m also the creator of the C4 software architecture model and Structurizr, a web-based tool to create software architecture diagrams.
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?
A consistent, shared vision is essential in order for teams to push in the same direction, but it’s surprising that many teams struggle to effectively communicate the architecture of the software they are building. As an industry we do have the Unified Modeling Language (UML), yet many people favour informal boxes and lines sketches instead. The problem is that such diagrams rarely make any sense, usually need a narrative to accompany them and ultimately slow the team down. Although we can argue whether UML offers an effective way to communicate software architecture, that’s often irrelevant because many teams have already thrown out UML or simply don’t know it. Abandoning UML is one thing but, in the race for agility, many software development teams have lost the ability to communicate visually too.
This hands-on session is aimed at those involved in the software development process and 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 my C4 software architecture model.
Software architecture and coding are often seen as mutually exclusive disciplines, despite us referring to higher level abstractions when we talk about our software. You’ve probably heard others on your team talking about components, services and layers rather than objects when they’re having discussions. Take a look at the codebase though. Can you clearly see these abstractions or does the code reflect some other structure? If so, why is there no clear mapping between the architecture and the code? Why do those architecture diagrams that you have on the wall say one thing whereas your code says another? In fact, why is it so hard to automatically generate a decent architecture diagram from an existing codebase? Join us to explore this topic further.