FOSE Podcast Cover

FOSE Podcast

This Podcast will teach you the fundamentals beyond coding, from maintainability to architecture to career growth.

Listen

Watch

E11 - What Is Software Architecture


Watch Episode

In this episode of Fundamentals of Software Engineering, Nate and I dig into the question the whole show is named after and the one our book only had a single chapter for: what software architecture actually is. We start where Neal Ford and Mark Richards start, with architecture as the things you cannot Google, and we work out why that definition holds up. By the time a decision reaches an architect, the easy answers are gone. Nobody escalates a variable name. What gets escalated is whether this should be a modular monolith, a set of microservices, or something event driven, and none of those have an answer that survives being lifted out of your context.

From there we get into the part that makes architecture uncomfortable: it is trade-offs all the way down. We talk about quality attributes, the ilities that routinely conflict with each other, and why a manager asking for all of them at once is asking for something that does not exist. We cover architectural malpractice, the habit of picking a pattern because it is fashionable rather than because the problem demands it, and what happens when a whole platform gets rewritten around one team's favourite language. We also talk about legacy systems and why reimagining beats dragging, about evolutionary architecture and fitness functions, about the difference between design and architecture, and we close on what we would tell an engineer who wants to grow into the role.


__________________________________________________


Key Highlights

🔎 Architecture is the things you can't Google: Neal Ford and Mark Richards coined it and it holds. The answer always depends on your constraints and the forces you are actually up against.

🏛️ No easy answers reach the architect: If a question had an obvious answer, it would have been solved further down. What lands on your desk is what is left.

⚖️ The ilities conflict with each other: Scalability, maintainability, simplicity and the rest pull in different directions. Prioritising them is the job, not a failure to deliver all of them.

🚨 Architectural malpractice: Reaching for microservices because they are in fashion, when the team shape and the actual demand say otherwise, is malpractice rather than ambition.

🐍 Don't replatform a whole team for one capability: If your people are strong on the JVM, moving the organisation to Python to reach one library is rarely the trade you think it is.

🔄 Reimagine legacy, do not drag it: Carrying every old defect and unfixed feature into the next system is a choice, and usually the wrong one.

🌱 How to grow into the role: Talk to the architects around you about how they got there, what they like, and what they do not. Ask what the path looks like before you try to walk it.


__________________________________________________


Resources & Next Steps

📚 Building Evolutionary Architectures by Neal Ford, Rebecca Parsons and Patrick Kua (second edition out now)

📖 Software architecture writing by Neal Ford and Mark Richards

🖥️ Fundamentals of Software Engineering on YouTube for the video version

🎤 Catch Dan and Nate at KCDC, Devnexus, Dev2Next and QCon San Francisco


__________________________________________________


YouTube Chapter Timestamps


00:00 Cold open: reading Carnegie is as useful as another framework


03:19 Conference season: what is coming up


06:53 Dev2Next and Venkat's conferences


07:36 QCon San Francisco and some good news


09:31 Today's topic, and where to find the book


10:28 Why one chapter on architecture was never going to be enough


11:36 Three shelves of architecture books and what they have in common


13:31 By the time the question reaches you, the easy answers are gone


14:30 Architecture is the things you can't Google


16:43 Knowing which questions to ask, and how to get answers


18:36 Does this problem actually require Kafka


20:34 Structure, teams and what architecture you can realistically run


23:21 Architectural malpractice, defined


24:43 Designing for scale you do not have yet


27:23 AI on the JVM, and not replatforming a team to chase a library


28:48 New leadership, rewrites, and the defects you carry across


31:34 Who should be an architect these days


34:45 Where design ends and architecture begins


42:29 Evolutionary architecture and fitness functions


46:23 The ilities, quality attributes and real trade-offs


55:46 Advice for engineers who want to grow into architecture


Hosted by

Dan VegaNate Schutta