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.