← Writing

Systems books I still use

Brooks, Karwin, Kleppmann, Feathers, and Martin. Books I still go back to.

I read a lot of technology books. Most of them age badly within a few release cycles. The ones I still mention when a friend asks for reading beyond blog posts and release notes earned their shelf space by teaching judgment, not by predicting platforms.

The Mythical Man-Month, Frederick Brooks

The hardware examples are dated, but the human lessons have not moved.

Brooks is blunt about why adding people to a late project makes it later. I watched that play out on a shipping deadline years ago. Leadership brought in contractors to help. The codebase did not grow simpler, the coordination cost went up, and the release slid anyway. Brooks had already named the failure mode. I was just late learning the vocabulary.

He also separates design from typing. On a LAMP box I administered, PHP was the part people could see. MySQL was the part that quietly decided whether the site stayed up. Schema choices made in a hurry outlast every template refactor. Brooks does not mention mysqli or PDO. He does not need to. The hard work happens before anyone commits a line.

SQL Antipatterns, Bill Karwin

Karwin writes for people who learned SQL on the job and never got a second opinion. I was one of them. I spent years on mysql_* calls in PHP before mysqli and PDO became the obvious path forward. The queries worked until they did not, usually under load or after a schema change nobody documented.

The book names the patterns: overly wide tables, ambiguous nulls, identifiers stored as strings. None of it is glamorous. All of it saves a week of guessing.

Designing Data-Intensive Applications, Martin Kleppmann

If you build something that stores or moves data, and that covers almost everything now, this is the modern backbone text. Kleppmann connects databases, streams, consistency models, and operational trade-offs without pretending one architecture fits every workload.

When someone proposes new data layers in a single afternoon, I want to know which problem each layer solves. The book gives me language for that conversation before we pick tools.

Working Effectively with Legacy Code, Michael Feathers

Feathers teaches change under uncertainty in legacy code. He shows how to carve testable seams into tangled code so a system survives long enough to be rewritten properly.

In an era of generated patches and quick migrations, the book is a reminder that maintainability is a decision you make when you are tired and tempted to ship the hack.

The Clean Coder, Robert C. Martin

This one is about professional conduct more than syntax. Martin argues for saying no when the schedule is fiction, for leaving time to think, and for owning an estimate you can defend.

I find it useful when a team confuses velocity with motion. Shipping daily and learning nothing is still failure. The book does not solve politics. It gives you phrases for the conversations you were going to avoid.

The industry will keep shipping new nouns. These titles teach you which questions still matter when the nouns change.