Bookshelf

Books that changed how I design, build, or lead—and the idea I carry into practice.

Systems

Designing Data-Intensive Applications — Martin Kleppmann

Reliability, scalability, and maintainability are not product adjectives; they are properties created by specific data and operational choices. I use its vocabulary when comparing storage, replication, partitioning, streams, and batch systems.

Thinking in Systems — Donella Meadows

Optimising one component can degrade the whole. Look for stocks, flows, feedback loops, delays, and the incentives that drive behaviour.

Site Reliability Engineering — Google

Reliability becomes manageable when expressed as objectives and error budgets. The central lesson is to turn operational intuition into explicit policy.

Software design

A Philosophy of Software Design — John Ousterhout

Complexity is what makes change difficult. Deep modules, good information hiding, and deliberate interfaces matter more than the number of classes or services.

The Pragmatic Programmer — Andrew Hunt and David Thomas

Small professional habits compound: automate repetition, make knowledge visible, use tracer bullets, and keep systems easy to change.

The Design of Everyday Things — Don Norman

When users repeatedly make the same mistake, inspect the design before blaming the user. Interfaces should communicate possibility, state, and consequence.

Leadership and decisions

High Output Management — Andrew Grove

A leader’s output is the output of the organisation under their influence. Meetings, one-to-ones, and planning are production processes and should be designed as carefully as software.

The Fifth Discipline — Peter Senge

Teams improve when they can surface mental models, learn together, and see the system producing repeated outcomes.


This is a working shelf, not a completed-reading trophy case.

>