Julius Robert

Architecture Patterns with Python

Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices

by Harry J.W. Percival & Bob Gregory
February, 2026
📚📚📚

Nothing new if you’ve read some of the other books on software architecture you can find here. But it’s very approachable. Using Python as an example language gives you all the principles without having to squint through the more verbose ones like C# or Java.

The foundations the book builds upon are strong, and it gives you tools to structure your application from whatever situation you’re in into something maintainable. However, the authors skip over some very complicated topics like the difficulties of distributed systems. The good thing is that they are explicit about this, and tell you where to read about it.

I enjoy brownfield development much more than greenfield. The constraints and limitations of the specific situation you’re in make it much more interesting and difficult. Developers often call for rewrites when an application becomes unwieldy, under the guise that it’s going to be “better” if it can be designed from the ground up using best-practice principles. This is not the case.

A rewrite is almost never going to solve these problems. I’ve seen it happen a few times. Unless you’re forced to learn how to turn an unmanageable mess into something changeable, you’re most likely going to make the same mistakes again. You’ll end up where you started but perhaps in an even worse position than before. Meanwhile your clients aren’t getting the features they need.