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 π±