Blog
Notes from a fractional tech lead: software architecture, code reviews, AI harnesses, design systems and leading small dev teams.
Multi-tenancy: the four levels of data isolation
A SaaS handling sensitive data has to keep each customer’s data apart. Four levels, from a tenant_id column to dedicated infra, and the one I usually pick.
Why I am going all in on the one-day-a-week developer
In a few weeks, five near-identical profiles asked me for the same thing: a developer who watches their back, but not full-time. I am making it my job.
The developer market is shifting
Large dev teams are shrinking because of AI. Meanwhile, small businesses are starting to build their own internal tools and will need experts a few days a month.
What is a "Model"? Two things that have nothing in common
"Model" means both an ORM Model and the DDD domain model. Confusing them makes you think you modelled your business when you only described your tables.
Functional Core, Imperative Shell: the end of mocks everywhere
Gary Bernhardt's 2012 talk Boundaries is still some of the best testing advice around: separate decisions from actions, and pass only values between them.
Experience-based daily rates no longer measure anything
Daily rate grids were built on years of experience because the keyboard capped the gap between good and bad developers. With AI, that bottleneck is gone.
dependency-cruiser: a computational sensor for your AI agents
dependency-cruiser maps imports and fails CI when a boundary is violated. A sensor for AI agents that only works if the architecture is clear enough to describe.
AI harnesses: guides and sensors, the four boxes to fill
A harness is everything in an agent that is not the model. Two axes, four boxes, and a painful conclusion about the harnessability of a codebase.
Building a product is easy. Distribution is the hard part.
Developers often forget that building a product depends on them. Selling, onboarding and keeping customers does not. A simple plan for technical founders.
Your tests are green, but that proves nothing: mutation testing
Coverage measures lines run through, not lines verified. Mutation testing measures whether tests detect bugs, essential once agents write the tests.
The part-time senior developer: a new freelancing model
In companies where the product only supports the business, vibe-coding hits a wall fast. A senior developer a few days a month is often enough to lift it.
Vertical Slice Architecture: organise code by request
When adding one field touches six files in four folders, the feature lives nowhere. Jimmy Bogard's Vertical Slice Architecture flips the way code is organised.
The next bottleneck in software development is RAM
AI moved the bottleneck from writing to reviewing. The next one is hardware: running five agents in parallel needs a machine not everyone will have.
How many of your architecture rules break the build?
With AI, a standardised architecture becomes an asset: every rule a machine can verify is a constraint. The others are only intentions.
Dummy, stub, spy, mock, fake: five test doubles, one question
The five kinds of test doubles are easy to mix up. One question asked of the double, borrowed from Meszaros, is enough to tell them apart for good.
Three questions to pick the right tool for your next test
Pure unit test, integration test, a Fake, or a double that records calls: a simple three-question strategy for choosing without hesitation.
"A depends on B": what exactly are we talking about?
A dependency can be seen by the compiler, by a test, or by nobody. Three questions to stay precise, with developers and with an AI.
What is a "layer" in software architecture?
Abstraction, technical role, call flow, dependencies, deployment: "layer" names five ways of slicing a program, and yours probably has all of them.
Clean Architecture is one rule: the Dependency Rule
What Robert C. Martin extracted in 2012 from Hexagonal, Onion and friends: a single rule you can verify in the code, the Dependency Rule.
Onion Architecture: business code at the centre
What Jeffrey Palermo proposed in 2008 with Onion Architecture: a single dependency rule so that business code stops paying for every technology change.