Software Architecture

22 articles Β· all categories

June 2026

Code is the easy part, or how we refactored half the business to fix a janky script

This is a classic startup war story: Someone had built a leaky rowboat. It worked! Then we started flying the rowboat as a Cessna. What we needed was an aircraft carrier.

November 2025

*People* detangle a ball of mud

Ball of mud is the world's most popular software architecture. The one we all use at work. But it sucks to work with. So what do you do?

May 2025

Software architecture IS Conway's Law

Can you even have architecture before there's a team?

DRY – a common source of bad abstractions

The worst and hardest to maintain code that I've seen or written has been in pursuit of DRY

Why websites and webapps are different

The website vs webapp debate is at least as old as my career. And it keeps coming up. One camp says "React is too complex you don't need any of that", the other camp goes "I don't understand how you live like this". Both are right.

April 2025

re: The Industrialization of IT

I guess if AI is what it takes to finally get people to care about architecture and team structure then mission accomplished?

January 2025

Build the abstraction first

Hardcoding logic when you're tight on time doesn't need to make a mess. You can build the abstraction first!

December 2024

Empirical evidence for code modularity

Few of your engineering decisions matter long-term. Software is soft. You can change your mind. But how you structure your components is here to stay.

November 2024

Big Ball of Mud – the world's most popular software architecture

Forget Gang of Four, here are the 7 architectural patterns real programmers use:

September 2024

The Laws of Software Evolution

Manny Lehman was one of the first to notice that software is never done. It just continues to evolve forever.

Why software projects fail

5 common themes

July 2024

DRY – the common source of bad abstractions

Swizec reveals the hidden pitfalls of overusing the DRY principle in coding, leading to bad abstractions. Discover how to write adaptable, efficient code that avoids these common traps.

Scaling Fast, my talk on lessons from tech startups

This talk from C3Fest summarizes the key lessons I've learned in the past ~15 years of working in tech startups. It's a high level overview of a new book I'm writing (60% done).

You can't side-quest a product

Here's a trap that talented engineers fall into all the time. It creates frustration, burnout, and the genre of tweets that read like "Why don't people care about the amazing work I'm doing".

March 2024

Architecture is like a path in the woods

You're doing too much. Sit back, relax, see how people *want* to use the code. THEN build the abstraction.

October 2023

Solve the problem, not a different more difficult problem

Solve the problem at hand, not the one you imagine might come next. A simple fix now often beats a complex one later.

June 2023

Why taming architectural complexity is paramount

Unravel the hidden costs of architectural complexity in software engineering and learn practical strategies to tackle it. Boost productivity, reduce defects, and improve staff retention with insights from an MIT PhD thesis.

May 2023

Two types of complexity and their impact

Complicated code slows down junior devs, while complex systems impact senior devs more. Focus on managing system complexity & dependencies, not just simplifying code.

You can't fix the wrong abstraction

Unlock the secrets to combating architectural complexity in software development and learn to identify and fix the wrong abstraction. Boost productivity, reduce bugs, and retain more staff.

April 2023

DRY vs SoC, a difficult choice

What is the essential difference between DRY and SoC principles in software engineering and how do you balance the two

May 2022

The Italian foods theory of bad software design 🍝

Spaghetti code – unstructured Ravioli code – too structured Lasagna code – layered wrong Minestrone software – unclear domains

December 2021

Why null checks are bad

Every null or undefined check doubles the number of tests you need 😱