Code for Humans and Machines | Adam Tornhill | Substack

Code for Humans and Machines

Designing AI-aware software in practice through practical refactoring patterns and principles.

By Adam Tornhill

Compressed Cognition: The Cost of Faster Coding

Agentic coding collapses the timeline of software decisions. What we gain in speed, we pay for in decision density and mental energy. Here's a deep dive…

May 7•Adam Tornhill


An opinionated (and mainly correct) guide to naming

Naming in software goes way beyond any aesthetics. Good naming minimizes reconstruction work. Here is the style and habits that I've picked up.

Jun 23•Adam Tornhill


Hidden Design Decisions: Refactoring Control Coupling

Boolean flags often compress important design decisions into hidden behavior, leading to the classic problem of control coupling.

Jun 16•Adam Tornhill


CLEAR: Software Design Principles for the Agentic Age

Traditional design principles optimize for human maintainability. CLEAR optimizes for safe evolution through explicit structure under AI-assisted…

Jun 9•Adam Tornhill


Why Merge Conflicts became the new Agentic Bottleneck

Revisiting some techniques from Your Code as a Crime Scene in the light of agentic coding. Specifically, how a socio-technical fit becomes even more…

Jun 2•Adam Tornhill


A Blast from the Past: SDD and the Illusion of Known Scope

Implementation was never just typing. It's discovery and learning. Tooling changed, human problem solving didn’t.

May 28•Adam Tornhill


Make the Domain Explicit: From Procedural Mess to Local Reasoning

The more code hides, the more humans and agents have to reconstruct before making a safe change. In this article, we break apart a complex procedural…

May 21•Adam Tornhill


How Much of my Writing is AI-Generated?

Writing is learning. LLMs remove that component.

May 19•Adam Tornhill