Introduction to Algorithms
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
The problem it solves. You pick data structures and algorithms by gut feeling and cannot prove why one solution beats another. CLRS gives you the vocabulary and the proofs to reason about it.
MIT Press·2022·1312 pg.·ISBN 978-0262046305
- Who it is for
- Developers with some experience who want solid foundations: computer science students, people preparing for roles where complexity matters, anyone who needs a reference.
- Who it is not for
- Readers looking for copy-paste code or a first programming book: algorithms are in pseudocode and the maths is dense.
- What it contains
- Sorting, searching and complexity analysis with asymptotic notation
- Data structures: heaps, hash tables, balanced search trees
- Dynamic programming, greedy algorithms and amortised analysis
- Graph algorithms: shortest paths, spanning trees, flows
- NP-completeness and the limits of efficient computation
- What you will be able to do
- You can estimate the complexity of a solution, choose the right data structure and recognise when a problem is intrinsically hard.
Read next, or instead:Algorithms, Concrete Mathematics
Structure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman
The problem it solves. You can use languages but do not really grasp what a program, an abstraction or an interpreter is. SICP rebuilds those ideas from scratch.
MIT Press·1996·657 pg.·ISBN 978-0262510875
- Who it is for
- Readers who want to understand programming deeply, not just syntax: curious students and developers with a few years of experience who feel the limits of framework-only knowledge.
- Who it is not for
- Anyone who needs a skill they can bill tomorrow on a trendy stack: the examples are in Scheme and the payoff is long-term.
- What it contains
- Procedures, recursion and computational processes
- Data abstraction and programming with state
- Modularity, objects and streams
- Metacircular languages: writing an evaluator for the language itself
- Register machines and the principles of compilation
- What you will be able to do
- You break problems into clean abstractions and, above all, you can write a small interpreter: frameworks stop looking like magic.
Read next, or instead:Introduction to Algorithms, Gödel, Escher, Bach
The Art of Computer Programming, Volume 1
Donald E. Knuth
The problem it solves. You want to know how lists, trees and memory allocation really work, with rigorous cost analysis. Volume 1 of Knuth is the foundation of the series.
Addison-Wesley·2011·652 pg.·ISBN 978-0201896831
- Who it is for
- Readers who love the mathematics of algorithms and have time for slow study: researchers, advanced students, people who enjoy rigour.
- Who it is not for
- Anyone who must solve a work problem this week: it is a reference to study, not a quick guide, and it uses a teaching assembly language (MIX).
- What it contains
- Basic concepts: induction, mathematical tools and the MIX teaching machine
- Information structures: stacks, queues, linked lists, trees
- Dynamic memory allocation
- Graded exercises, with solutions, of widely varying difficulty
- What you will be able to do
- You can analyse the cost of a data structure in detail and read the classic algorithms literature without tripping over the notation.
Read next, or instead:Introduction to Algorithms, Concrete Mathematics
Algorithms
Robert Sedgewick, Kevin Wayne
The problem it solves. You want to learn classic algorithms by watching them run, not just by reading proofs. Sedgewick and Wayne implement them in Java and measure them.
Addison-Wesley·2011·976 pg.·ISBN 978-0321573513
- Who it is for
- Readers who know Java (or a similar language) and want a more practical route than CLRS: students, self-taught developers, interview candidates.
- Who it is not for
- Anyone who does not write Java and does not want to read it, or who wants the deepest theoretical treatment available.
- What it contains
- Fundamentals: bags, stacks, queues, union-find and performance analysis
- Sorting and priority queues
- Searching: binary search trees, balanced trees, hash tables
- Directed and undirected graphs, shortest paths
- Strings: tries, substring search, regular expressions, compression
- What you will be able to do
- You implement the core algorithms yourself, time them, and choose between alternatives with data in hand.
Read next, or instead:Introduction to Algorithms, Cracking the Coding Interview
Concrete Mathematics
Ronald L. Graham, Donald E. Knuth, Oren Patashnik
The problem it solves. The formulas needed to analyse a loop or a recurrence look like tricks. Here they become a method: sums, recurrences, generating functions.
Addison-Wesley·1994·672 pg.·ISBN 978-0201558029
- Who it is for
- Readers studying algorithm analysis, cryptography or number theory who want to handle discrete maths fluently.
- Who it is not for
- Anyone after direct applications to everyday code: the link to programming is real, but it goes through a lot of algebra.
- What it contains
- Sums and recurrences
- Integer functions and number theory
- Binomial coefficients and generating functions
- Discrete probability
- Asymptotic analysis
- What you will be able to do
- You solve the recurrences and sums that appear when analysing an algorithm, instead of guessing the order of magnitude.
Read next, or instead:Introduction to Algorithms, The Art of Computer Programming, Volume 1
Gödel, Escher, Bach: An Eternal Golden Braid
Douglas Hofstadter
The problem it solves. You wonder what recursion, self-reference and "understanding" mean for a machine. GEB tackles it with dialogues, music and logic.
Basic Books·1999·777 pg.·ISBN 978-0465026562
- Who it is for
- Readers curious about the foundations of intelligence and formal systems who enjoy long, playful reading.
- Who it is not for
- Anyone looking for techniques to apply at work: it is not a manual and it is long. The aim is a different way of thinking, not an immediate skill.
- What it contains
- Formal systems and Gödel's incompleteness theorem
- Recursion and self-reference in logic, music and art
- Dialogues between Achilles and the Tortoise that open each chapter
- Reflections on mind, meaning and artificial intelligence
- What you will be able to do
- You gain a richer mental model of recursion and of the limits of formal systems, useful for reading the AI debate critically.
Read next, or instead:Structure and Interpretation of Computer Programs, Concrete Mathematics
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
The problem it solves. You keep redesigning the same solutions to recurring object-oriented design problems. The GoF catalogued and named them, so a team can discuss them in one word.
Addison-Wesley·1994·395 pg.·ISBN 978-0201633610
- Who it is for
- Developers who have written object-oriented code for a while and want a shared vocabulary for design discussions.
- Who it is not for
- Beginners in OOP: the style is dense and the examples are in C++ and Smalltalk. For a first pass there is Head First Design Patterns.
- What it contains
- 23 patterns split into creational, structural and behavioural
- For each pattern: intent, structure, participants, consequences, implementation
- A case study designing a document editor
- UML diagrams and sample code in C++ and Smalltalk
- What you will be able to do
- You recognise a pattern in someone else's code, name it in a review and know when NOT to apply it.
Read next, or instead:Head First Design Patterns, Patterns of Enterprise Application Architecture
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Robert C. Martin
The problem it solves. The code works, but every change breaks something and the framework is everywhere. Clean Architecture shows how to separate business rules from details.
Prentice Hall·2017·432 pg.·ISBN 978-0134494166
- Who it is for
- Developers and tech leads building applications meant to last years, with several people on the code.
- Who it is not for
- Anyone building a two-week prototype: separating layers has a cost and on a small project it may not pay off.
- What it contains
- SOLID principles and component cohesion and coupling principles
- The dependency rule: dependencies point towards the business rules
- Entities, use cases and boundaries between layers
- Databases, web and frameworks treated as replaceable details
- What you will be able to do
- You design an application where domain and use cases do not depend on the database or framework and can be tested without starting anything.
Read next, or instead:Domain-Driven Design, Clean Code
Domain-Driven Design: Tackling Complexity in the Heart of Software
Eric Evans
The problem it solves. The software does not mirror how the business thinks, and developers and domain experts speak different languages. DDD builds a shared model.
Addison-Wesley·2003·560 pg.·ISBN 978-0321125675
- Who it is for
- People working on complex domains (finance, healthcare, logistics): senior developers, architects, analysts.
- Who it is not for
- Anyone building simple CRUD or a showcase site: DDD has a modelling cost that does not pay off there. The text is also long and abstract.
- What it contains
- Ubiquitous language and the domain model
- Model building blocks: entities, value objects, aggregates, repositories
- Bounded contexts and context maps
- Strategic design and domain distillation
- What you will be able to do
- You design a model that expresses business rules in code and know where to draw boundaries between parts of the system.
Read next, or instead:Clean Architecture, Building Microservices
Building Microservices: Designing Fine-Grained Systems
Sam Newman
The problem it solves. You want to split a monolith or design independent services without building a distributed monolith. Newman discusses costs and alternatives.
O'Reilly Media·2021·616 pg.·ISBN 978-1492034025
- Who it is for
- Architects and developers evaluating or running a service-based system, with basic experience of APIs and deployment.
- Who it is not for
- Anyone with a small application and one team: a well-structured monolith is often the answer, and the book says so.
- What it contains
- Modelling services and decomposing a monolith
- Communication styles: synchronous, asynchronous, event-driven
- Building, deploying and testing microservices
- Observability, resilience and security
- Scaling and organisational aspects
- What you will be able to do
- You decide with explicit criteria whether and where to split out a service, and you know the operational costs you take on.
Read next, or instead:Domain-Driven Design, Designing Data-Intensive Applications
Patterns of Enterprise Application Architecture
Martin Fowler
The problem it solves. You are unsure how to organise domain logic, data access and the web layer in a business application. Fowler catalogues the solutions with their trade-offs.
Addison-Wesley·2002·560 pg.·ISBN 978-0321127426
- Who it is for
- Backend developers designing applications with a relational database and an object model.
- Who it is not for
- Anyone working only with frameworks that already hide these patterns and who does not need their origin; the examples are in Java and C#.
- What it contains
- Organising domain logic: Transaction Script, Domain Model
- Data access: Active Record, Data Mapper, Table Data Gateway
- Object-relational behaviour: Unit of Work, Identity Map, Lazy Load
- Web presentation: MVC, Front Controller, Template View
- Offline concurrency and session state
- What you will be able to do
- You understand why an ORM behaves the way it does and choose deliberately between Active Record and Data Mapper.
Read next, or instead:Clean Architecture, Domain-Driven Design
Enterprise Integration Patterns
Gregor Hohpe, Bobby Woolf
The problem it solves. You need different systems to talk through messages and are unsure how to structure channels, routing and transformations. The book gives you a precise vocabulary.
Addison-Wesley·2003·736 pg.·ISBN 978-0321200686
- Who it is for
- Architects and developers working on integrations, message queues and events.
- Who it is not for
- Anyone building a single application with no external integrations. The pattern language dates from 2003: the ideas hold up, the products mentioned are dated.
- What it contains
- Message channels and message construction
- Routing: routers, filters, splitters, aggregators
- Message transformation and endpoints
- Management and monitoring of messaging systems
- What you will be able to do
- You design an asynchronous integration flow using named patterns and document it in a shared language.
Read next, or instead:Building Microservices, Designing Data-Intensive Applications
Head First Design Patterns
Eric Freeman, Elisabeth Robson
The problem it solves. The GoF book feels unreadable and patterns slip away from you. Head First explains them with pictures, everyday examples and exercises.
O'Reilly Media·2020·672 pg.·ISBN 978-1492078005
- Who it is for
- People meeting design patterns for the first time who write Java or another object-oriented language.
- Who it is not for
- Anyone wanting a concise, rigorous reference: the style is deliberately chatty and repetitive.
- What it contains
- Strategy, Observer, Decorator, Factory, Singleton and Command patterns
- Adapter, Facade, Template Method, Iterator, Composite, State and Proxy
- Exercises, quizzes and diagrams in every chapter
- The object-oriented design principles behind each pattern
- What you will be able to do
- You recognise the most common patterns, can explain them to a colleague and can then tackle the GoF with less effort.
Read next, or instead:Design Patterns, Clean Architecture
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin
The problem it solves. Your code works but nobody, you included a month later, can change it with peace of mind. Clean Code teaches names, functions and classes that read well.
Prentice Hall·2008·464 pg.·ISBN 978-0132350884
- Who it is for
- Developers who have written their first real projects and want to raise everyday code quality.
- Who it is not for
- Anyone wanting indisputable rules: some prescriptions (tiny functions, no comments) are debated and must be weighed against context. Examples are in Java.
- What it contains
- Meaningful names, small functions and comments
- Formatting, objects and data structures, error handling
- Unit tests and classes
- A catalogue of code smells and heuristics
- Case studies of cleaning up real code
- What you will be able to do
- You spot signs of hard-to-maintain code and improve it in small, verifiable steps.
Read next, or instead:Refactoring, The Pragmatic Programmer
The Pragmatic Programmer: Your Journey to Mastery
David Thomas, Andrew Hunt
The problem it solves. You work well but lack the habits and reflexes of the craft: how to debug, automate, communicate and avoid drowning in duplicated code.
Addison-Wesley·2019·352 pg.·ISBN 978-0135957059
- Who it is for
- Developers at any level, though it rewards a few years of experience.
- Who it is not for
- Anyone wanting a book about a specific language or framework: this is about craft, not particular technology.
- What it contains
- The DRY principle, orthogonality and reversible decisions
- Tracer bullets and prototypes for exploration
- Debugging, defensive programming and design by contract
- Automation, tooling, editors and the shell
- Personal responsibility, communication and career growth
- What you will be able to do
- You get a repertoire of concrete habits to adopt right away at work and a yardstick for assessing your own.
Read next, or instead:Clean Code, The Effective Engineer
Refactoring: Improving the Design of Existing Code
Martin Fowler
The problem it solves. The code has poor design but touching it is scary. Fowler shows how to improve it in small steps without changing behaviour.
Addison-Wesley·2018·448 pg.·ISBN 978-0134757599
- Who it is for
- People maintaining existing code who have at least a test net to rely on.
- Who it is not for
- Anyone without tests who still has to write them: start with Working Effectively with Legacy Code. Examples are in JavaScript.
- What it contains
- A catalogue of code smells: when it is time to act
- A catalogue of refactorings with step-by-step mechanics (Extract Function, Move Function, Replace Conditional...)
- The role of tests as a safety net
- A guided example from start to finish
- What you will be able to do
- You carry out a refactoring as a sequence of small, reversible steps, with green tests at each one.
Read next, or instead:Working Effectively with Legacy Code, Clean Code
Code Complete: A Practical Handbook of Software Construction
Steve McConnell
The problem it solves. You lack an overall picture of how quality software is built, from choosing names to designing routines. Code Complete is the encyclopaedia of construction.
Microsoft Press·2004·960 pg.·ISBN 978-0735619678
- Who it is for
- Developers who want to consolidate their craft and have a reference to come back to.
- Who it is not for
- Anyone short on time: it is almost a thousand pages. The edition dates from 2004, so modern tooling and languages are absent, but the principles hold.
- What it contains
- Design in construction and the use of classes
- Variables, control structures and defensive programming
- Debugging, refactoring and code tuning
- Style and layout, code quality, collaboration
- Managing complexity as the unifying theme
- What you will be able to do
- You have explicit criteria for daily code-construction decisions and a language to discuss them with your team.
Read next, or instead:Clean Code, The Pragmatic Programmer
Working Effectively with Legacy Code
Michael C. Feathers
The problem it solves. You inherited untested code nobody dares touch. Feathers defines legacy as "code without tests" and teaches how to make it safe.
Prentice Hall·2004·456 pg.·ISBN 978-0131177055
- Who it is for
- People maintaining old systems who must change them without breaking anything.
- Who it is not for
- Anyone starting a new project from scratch. Examples are in Java, C++, C# and C: the value lies in the techniques, not the language.
- What it contains
- Seams: places where behaviour can change without editing the code
- Characterisation tests to pin down current behaviour
- Techniques for breaking dependencies
- Sprout and wrap: adding features without rewriting
- Strategies for giant classes and long methods
- What you will be able to do
- You put a slice of legacy code under test and change it with measurable risk.
Read next, or instead:Refactoring, Clean Code
The Mythical Man-Month
Frederick P. Brooks Jr.
The problem it solves. The project is late and the temptation is to add people. Brooks explains why this often makes things worse and what software complexity really is.
Addison-Wesley·1995·336 pg.·ISBN 978-0201835953
- Who it is for
- People who manage or estimate software projects, and anyone wondering why certain mistakes repeat after fifty years.
- Who it is not for
- Anyone seeking current practices (agile, CI/CD): the book comes out of 1960s projects and shows the roots, not today's tools.
- What it contains
- Brooks's law: adding people to a late project makes it later
- Conceptual integrity and the architect's role
- The second-system effect
- The "No Silver Bullet" essay in the anniversary edition
- What you will be able to do
- You can argue against unrealistic deadline pressure with a solid reference and estimate more realistically.
Read next, or instead:Peopleware, The Effective Engineer
Effective Java
Joshua Bloch
The problem it solves. You write Java that compiles and runs but is not idiomatic: fragile APIs, wrong equals/hashCode, misused generics and streams. Bloch collects the rules.
Addison-Wesley·2018·416 pg.·ISBN 978-0134685991
- Who it is for
- Java developers with solid basics who want to write robust, maintainable code.
- Who it is not for
- Anyone learning Java from scratch, and anyone who does not use it: the items are specific to the ecosystem.
- What it contains
- Object creation and destruction, methods common to all objects
- Classes, interfaces, generics, enums and annotations
- Lambdas and streams
- Methods, exceptions and concurrency
- Serialisation and its pitfalls
- What you will be able to do
- You design safer Java APIs and spot classic mistakes in equals, generics and concurrency during review.
Read next, or instead:Clean Code, Code Complete
Eloquent JavaScript: A Modern Introduction to Programming
Marijn Haverbeke
The problem it solves. You want to learn JavaScript without skipping the fundamentals. Haverbeke starts from programming and gets to the browser and Node.
No Starch Press·2024·472 pg.·ISBN 978-1718501874
- Who it is for
- Motivated beginners and developers from other languages who want to understand JavaScript properly.
- Who it is not for
- Anyone wanting a framework tutorial or a quick reference: the book teaches the language and the way of thinking.
- What it contains
- Values, functions, data structures and higher-order functions
- Objects and object-oriented programming, error handling
- Modules and asynchronous programming
- The DOM, events, HTTP requests, Node.js
- Hands-on projects that consolidate the chapters
- What you will be able to do
- You write modern JavaScript knowing what you are doing, async code included, and move to a framework with the basics in place.
Read next, or instead:You Don't Know JS Yet, Effective TypeScript
Programming Rust: Fast, Safe Systems Development
Jim Blandy, Jason Orendorff, Leonora Tindall
The problem it solves. You want fast, safe systems code without a garbage collector, but ownership and the borrow checker block you. The book explains them starting from the reasons.
O'Reilly Media·2021·738 pg.·ISBN 978-1492052593
- Who it is for
- Programmers experienced in C, C++ or a managed language who want to work in Rust.
- Who it is not for
- Anyone who has never programmed: Rust's learning curve is steep and the book assumes systems concepts.
- What it contains
- Ownership, references and borrowing, lifetimes
- Traits and generics, closures, iterators
- Error handling and collections
- Concurrency and asynchronous programming
- Unsafe code and interoperability with other languages
- What you will be able to do
- You write Rust the compiler accepts for reasons you understand, concurrent code included.
Read next, or instead:The C Programming Language, Learning Go
Learning Go: An Idiomatic Approach to Real-World Go Programming
Jon Bodner
The problem it solves. You come from other languages and write Go with an accent: interfaces, errors and concurrency do not follow community conventions. Bodner teaches the idiomatic style.
O'Reilly Media·2021·375 pg.·ISBN 978-1492077213
- Who it is for
- Experienced developers moving to Go for backend services and cloud tooling.
- Who it is not for
- Anyone who has never programmed. The edition listed on the card is the first: check whether a newer one exists covering recent language changes.
- What it contains
- Types, functions and pointers
- Interfaces and error handling
- Goroutines and channels
- Testing, tooling and the organisation of modules and packages
- What you will be able to do
- You write Go the community recognises as idiomatic and use concurrency without falling into common traps.
Read next, or instead:Programming Rust, The C Programming Language
Fluent Python: Clear, Concise, and Effective Programming
Luciano Ramalho
The problem it solves. You write Python that works but does not exploit the language: you do not know the data model, protocols, generators and concurrency tools. Ramalho explains them in depth.
O'Reilly Media·2022·1012 pg.·ISBN 978-1492056355
- Who it is for
- Python developers with a few years of experience who want to go from "works" to "idiomatic".
- Who it is not for
- Anyone learning Python right now: the book assumes the basics and goes deep, at about a thousand pages.
- What it contains
- Python's data model and special methods
- Sequences, dictionaries, sets, text versus bytes
- Functions as objects, decorators, closures
- Object-oriented programming, protocols and types
- Iterators, generators, concurrency and asyncio, metaprogramming
- What you will be able to do
- You design classes that behave like built-in types and use iterators, decorators and asyncio confidently.
Read next, or instead:Effective Java, Effective TypeScript
Effective TypeScript: 83 Specific Ways to Improve Your TypeScript
Dan Vanderkam
The problem it solves. You use TypeScript but end up full of any and types that do not protect you. Vanderkam collects targeted advice for exploiting the type system.
O'Reilly Media·2024·380 pg.·ISBN 978-1098155063
- Who it is for
- Developers who already use TypeScript and want to write it well.
- Who it is not for
- Anyone who does not know JavaScript yet, and anyone wanting a tutorial: the format is a list of items, each a rule with its reasoning.
- What it contains
- How the type system and inference work
- Designing types: modelling valid states, avoiding any
- Generics and type-level programming
- Recipes, declaration files and migrating from JavaScript
- What you will be able to do
- You write types that make invalid states unrepresentable and cut the bugs that reach runtime.
Read next, or instead:Eloquent JavaScript, You Don't Know JS Yet
The C Programming Language
Brian W. Kernighan, Dennis M. Ritchie
The problem it solves. You want to understand what the computer does underneath a high-level language: memory, pointers, arrays. K&R is the text written by the authors of C.
Prentice Hall·1988·272 pg.·ISBN 978-0131103627
- Who it is for
- Readers who want to understand systems programming, pointers and how code becomes machine instructions.
- Who it is not for
- Anyone looking for modern C: the book is from 1988 (ANSI C) and covers neither later standards nor today's security practices.
- What it contains
- A guided introduction to the language
- Types, operators, control flow and functions
- Pointers and arrays
- Structures and input/output
- The interface to the UNIX system
- What you will be able to do
- You read and write essential C, reason about pointers and memory, and better understand Rust, Go and C++.
Read next, or instead:Programming Rust, The Art of Computer Programming, Volume 1
The Phoenix Project
Gene Kim, Kevin Behr, George Spafford
The problem it solves. Development and operations pass the blame back and forth and releases are an emergency. The novel shows, as a story, why this happens and what changes with DevOps.
IT Revolution Press·2018·432 pg.·ISBN 978-1942788294
- Who it is for
- Readers who want to understand DevOps without starting from tools: developers, sysadmins, IT managers.
- Who it is not for
- Anyone looking for technical instructions or configurations: it is a novel, and the narrative simplifies (sometimes too much) how organisations work.
- What it contains
- A story set in a company with IT projects in crisis
- The Three Ways: flow, feedback, continual learning
- The four types of work and the role of bottlenecks
- Unplanned work as a cause of delays
- What you will be able to do
- You can explain to a colleague or an executive in an hour why work flow and fast feedback matter more than individual tools.
Read next, or instead:The Unicorn Project, Accelerate
Accelerate: The Science of Lean Software and DevOps
Nicole Forsgren, Jez Humble, Gene Kim
The problem it solves. You want to know whether DevOps practices really improve outcomes, and which ones to measure. Accelerate reports the data of a multi-year research programme.
IT Revolution Press·2018·288 pg.·ISBN 978-1942788331
- Who it is for
- Engineering managers, tech leads and developers who must argue for change with data.
- Who it is not for
- Anyone wanting implementation steps: it explains what to measure and why, not how to configure a pipeline.
- What it contains
- The four key metrics: lead time, deployment frequency, time to restore, change failure rate
- The technical and cultural capabilities that move them
- The research method, explained accessibly
- What you will be able to do
- You measure your team's delivery performance with the four metrics and identify where to intervene.
Read next, or instead:Continuous Delivery, The Phoenix Project
Kubernetes in Action
Marko Lukša
The problem it solves. You have containers running locally and must move them into a cluster without understanding what Kubernetes does behind the scenes. Lukša starts with concepts and reaches production.
Manning·2024·600 pg.·ISBN 978-1617297618
- Who it is for
- Developers and DevOps engineers who use Docker and must work on Kubernetes.
- Who it is not for
- Anyone who has never used containers: learn Docker first. Kubernetes versions move fast: check against the official documentation.
- What it contains
- Pods, ReplicaSets and Deployments
- Services, Ingress and cluster networking
- Volumes, ConfigMaps and Secrets
- StatefulSets and stateful applications
- Security, resources and upgrades
- What you will be able to do
- You deploy, expose and configure an application on Kubernetes knowing what each resource does.
Read next, or instead:Continuous Delivery, Terraform
Continuous Delivery
Jez Humble, David Farley
The problem it solves. Releasing is a risky, manual, rare event. Humble and Farley describe the deployment pipeline that makes every commit a release candidate.
Addison-Wesley·2010·512 pg.·ISBN 978-0321601919
- Who it is for
- Developers, QA and DevOps engineers who want to automate build, test and release.
- Who it is not for
- Anyone wanting configuration for a specific CI tool: the book dates from 2010 and reasons in principles, not products.
- What it contains
- The deployment pipeline as the central model
- Version, build and dependency management
- Automated testing strategy
- Managing infrastructure, data and configuration
- Branching and release strategies
- What you will be able to do
- You design a pipeline that takes every change from commit to release with automated tests and repeatability.
Read next, or instead:Accelerate, Site Reliability Engineering
Terraform: Up & Running
Yevgeniy Brikman
The problem it solves. Cloud infrastructure is built by hand in the console and nobody can reproduce it. Brikman teaches you to describe it as code with Terraform.
O'Reilly Media·2022·510 pg.·ISBN 978-1098116743
- Who it is for
- DevOps, backend and SRE engineers who manage cloud infrastructure and want it repeatable.
- Who it is not for
- Anyone who has not touched the cloud yet. Examples are on AWS; Terraform and its providers evolve, so check syntax against the documentation.
- What it contains
- Terraform syntax, variables and outputs
- State management and modules
- Loops and conditionals, zero-downtime deployment
- Production-grade code and infrastructure testing
- Team workflow and secrets management
- What you will be able to do
- You describe infrastructure as versioned code, reproduce it across environments and change it through a reviewable plan.
Read next, or instead:Continuous Delivery, Site Reliability Engineering
Site Reliability Engineering
Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy
The problem it solves. The service is in production and you do not know how much reliability to promise or when to stop and stabilise. Google's book defines SLOs and error budgets.
O'Reilly Media·2016·552 pg.·ISBN 978-1491929124
- Who it is for
- SREs, DevOps engineers and service owners who must define and defend a reliability level.
- Who it is not for
- Anyone with a small application and no on-call rota: many practices assume a scale and organisation comparable to Google's.
- What it contains
- SLIs, SLOs and SLAs, and the error budget concept
- Eliminating repetitive work (toil) through automation
- Monitoring and alerting
- Incident management, on-call and blameless postmortems
- Capacity planning and system simplicity
- What you will be able to do
- You define measurable reliability targets and use the error budget to decide between new features and stability.
Read next, or instead:Accelerate, Terraform
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
Aurélien Géron
The problem it solves. You want to build machine learning models that work on real data, without starting from the maths. Géron proceeds through code and projects.
O'Reilly Media·2022·868 pg.·ISBN 978-1098125974
- Who it is for
- Python developers who want to move from theory to practical ML and deep learning.
- Who it is not for
- Anyone wanting mathematical proofs: for those you need Goodfellow or ISLR. Frameworks and APIs change: check versions.
- What it contains
- Regression, classification, SVMs, trees and ensembles with scikit-learn
- Dimensionality reduction and unsupervised learning
- Neural networks with Keras and TensorFlow
- Convolutional, recurrent and language models
- Putting models into production
- What you will be able to do
- You train, evaluate and tune a model on a real dataset and pick the algorithm that fits the problem.
Read next, or instead:An Introduction to Statistical Learning, Designing Machine Learning Systems
Deep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville
The problem it solves. You want to understand deep learning from its mathematical foundations, not just use a library. This is the reference academic text.
MIT Press·2016·800 pg.·ISBN 978-0262035613
- Who it is for
- Advanced students, researchers and engineers with a solid grounding in linear algebra, probability and calculus.
- Who it is not for
- Anyone wanting a tutorial with code: it has none. Published in 2016, it does not cover newer architectures such as transformers.
- What it contains
- Applied maths: linear algebra, probability, numerical computation
- Deep networks: optimisation, regularisation, convolutional and recurrent networks
- Research topics: autoencoders, representations, generative models
- What you will be able to do
- You read research papers on the topic and reason about network training at a theoretical level.
Read next, or instead:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, An Introduction to Statistical Learning
An Introduction to Statistical Learning
Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani
The problem it solves. You use statistical models without knowing when they work and when they mislead you. ISLR explains methods with intuition, without heavy proofs.
Springer·2023·607 pg.·ISBN 978-3031387463
- Who it is for
- Readers with some statistics background who want to use regression, classification and resampling methods knowingly.
- Who it is not for
- Anyone wanting full proven theory: for that there is The Elements of Statistical Learning, which is not on this list.
- What it contains
- Linear regression and classification
- Cross-validation and the bootstrap
- Regularisation, decision trees and SVMs
- Neural networks and unsupervised learning
- Code labs (the card lists the Python edition)
- What you will be able to do
- You choose a suitable statistical method, assess its error with cross-validation and interpret the results.
Read next, or instead:Practical Statistics for Data Scientists, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
Designing Machine Learning Systems
Chip Huyen
The problem it solves. The model works in the notebook and fails in production: shifting data, fragile deployments, no monitoring. Chip Huyen covers the whole lifecycle of an ML system.
O'Reilly Media·2022·388 pg.·ISBN 978-1098107963
- Who it is for
- ML engineers, data scientists and backend developers taking models to production.
- Who it is not for
- Anyone still learning the basic algorithms: the book assumes you can already train a model.
- What it contains
- Scoping the problem and designing the system
- Training data and feature engineering
- Model development and evaluation
- Deployment and infrastructure
- Monitoring, data drift and continual learning
- What you will be able to do
- You design an ML system thinking about data, monitoring and maintenance, not just the model.
Read next, or instead:AI Engineering, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
Practical Statistics for Data Scientists
Peter Bruce, Andrew Bruce, Peter Gedeck
The problem it solves. You run A/B tests and data analyses without knowing whether the observed difference is real or noise. The book summarises the statistics you actually need.
O'Reilly Media·2020·368 pg.·ISBN 978-1492072942
- Who it is for
- Data scientists, analysts and developers who work with experimental data.
- Who it is not for
- Anyone wanting complete mathematical theory: it is deliberately practical and concise.
- What it contains
- Exploratory analysis and sampling distributions
- Experiments and significance testing, including A/B tests
- Regression and classification
- Statistical machine learning methods and unsupervised learning
- What you will be able to do
- You design an A/B test, interpret its results and spot conclusions the data do not support.
Read next, or instead:An Introduction to Statistical Learning, Designing Machine Learning Systems
AI Engineering: Building Applications with Foundation Models
Chip Huyen
The problem it solves. You want to build an application on top of a language model and do not know how to evaluate it, when to use RAG or fine-tuning, or how to control costs. The book gives a method.
O'Reilly Media·2025·420 pg.·ISBN 978-1098166304
- Who it is for
- Developers and ML engineers building applications with foundation models.
- Who it is not for
- Anyone wanting a recipe for one specific API: the field moves quickly, so the book reasons in principles and trade-offs.
- What it contains
- How foundation models work, as far as needed to use them
- Evaluation methodology
- Prompt engineering, RAG and agents
- Fine-tuning and dataset engineering
- Inference optimisation, architecture and user feedback
- What you will be able to do
- You choose between prompting, RAG and fine-tuning with explicit criteria and measure the quality of a model-based application.
Read next, or instead:Designing Machine Learning Systems, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
You Don't Know JS Yet: Get Started
Kyle Simpson
The problem it solves. You have written JavaScript for years but scope, closures and this still surprise you. Simpson gives you the map of the language before going into detail.
O'Reilly Media·2020·143 pg.·ISBN 978-1491924464
- Who it is for
- Developers who want to consolidate their JavaScript basics and decide whether to go deeper into the series.
- Who it is not for
- Anyone wanting the in-depth treatment: this volume is an introduction of about 140 pages, with the detail in the other volumes of the series.
- What it contains
- What JavaScript is and how it evolved as a standard
- A map of the language: values, functions, comparisons, classes, modules
- The three pillars: scope and closures, objects and prototypes, types and coercion
- What you will be able to do
- You have a coherent picture of the language and know which areas to deepen in the following volumes.
Read next, or instead:Eloquent JavaScript, Effective TypeScript
Learning React: Modern Patterns for Developing React Apps
Alex Banks, Eve Porcello
The problem it solves. You want to use React but tutorials are fragmented and outdated. Banks and Porcello build the picture with components, hooks and state.
O'Reilly Media·2020·350 pg.·ISBN 978-1492051725
- Who it is for
- Developers who know JavaScript and want to learn React in an orderly way.
- Who it is not for
- Anyone wanting React's latest features: the edition dates from 2020, so check the official documentation for later APIs.
- What it contains
- JSX, components, props and state
- Hooks: useState, useEffect, useReducer, useContext
- Data fetching and Suspense
- Testing, routing and server-side rendering
- What you will be able to do
- You build a React application with function components and hooks, handling state and remote data.
Read next, or instead:Eloquent JavaScript, Web Performance in Action
Web Performance in Action
Jeremy Wagner
The problem it solves. The site is slow and you do not know where to start. Wagner goes through images, fonts, CSS, JavaScript and the network, with concrete interventions.
Manning·2016·376 pg.·ISBN 978-1617293771
- Who it is for
- Frontend and web developers who must speed up existing sites.
- Who it is not for
- Anyone wanting modern metrics: the book is from 2016 and does not cover Core Web Vitals (LCP, INP, CLS). For those, the web.dev documentation is a better fit.
- What it contains
- Image and font optimisation
- Minification and compression of CSS and JavaScript
- Caching and resource delivery
- HTTP/2 and efficient loading
- What you will be able to do
- You find a site's bottlenecks and apply optimisations you can verify.
Read next, or instead:Learning React, System Design Interview
System Design Interview
Alex Xu
The problem it solves. In the interview you are asked to design a scalable system and do not know where to start. Xu offers a step-by-step method and worked cases.
Independently Published·2020·322 pg.·ISBN 978-1736049013
- Who it is for
- Developers preparing for system design interviews, or wanting a first contact with scalability.
- Who it is not for
- Anyone wanting distributed systems theory: for that there is Designing Data-Intensive Applications. The cases here are concise and interview-oriented.
- What it contains
- A four-step method for approaching the question
- Back-of-the-envelope capacity estimation
- Cases: rate limiter, consistent hashing, key-value store, URL shortener
- Cases: web crawler, notification system, news feed, chat
- What you will be able to do
- You approach a system design question with a method, estimate loads and justify choices with explicit trade-offs.
Read next, or instead:Designing Data-Intensive Applications, Cracking the Coding Interview
Designing Data-Intensive Applications
Martin Kleppmann
The problem it solves. You must choose databases, queues and replication models and do not understand what guarantees they really give. Kleppmann explains the principles they share.
O'Reilly Media·2017·616 pg.·ISBN 978-1449373320
- Who it is for
- Backend engineers, architects and anyone designing or running data-heavy systems.
- Who it is not for
- Database beginners: it requires a good base. It is not a manual for a specific product.
- What it contains
- Reliability, scalability and maintainability; data models
- Storage and retrieval: B-trees, LSM-trees
- Replication, partitioning and transactions
- Distributed systems: faults, consistency and consensus
- Batch and stream processing
- What you will be able to do
- You compare databases and messaging systems on the guarantees they offer and choose the one that fits your load.
Read next, or instead:System Design Interview, Building Microservices
The Effective Engineer
Edmond Lau
The problem it solves. You work hard and feel you have little impact. Lau proposes focusing on high-leverage activities.
Effective Bookshelf·2015·288 pg.·ISBN 978-0996128100
- Who it is for
- Developers in their first years of work who want to increase their impact.
- Who it is not for
- Anyone wanting technical content: it is a book about how to work, with general advice to adapt to your own context.
- What it contains
- Leverage as a measure of impact
- Priorities, iteration speed and measurement
- Validating ideas early and estimating projects
- Building team culture and reducing operational burden
- What you will be able to do
- You choose where to spend your time based on expected impact and make your iterations faster.
Read next, or instead:The Pragmatic Programmer, Staff Engineer
Cracking the Coding Interview
Gayle Laakmann McDowell
The problem it solves. You can program but technical interviews trip you up. The book shows the kinds of problems you meet and how to reason about them out loud.
CareerCup·2015·687 pg.·ISBN 978-0984782857
- Who it is for
- People preparing for interviews at companies that ask algorithm and data structure questions.
- Who it is not for
- Anyone wanting a study path for algorithms: it is a preparation manual and on its own does not replace continuous practice on real problems.
- What it contains
- The hiring process and how to present yourself
- Problems on arrays, strings, lists, trees and graphs
- Recursion, dynamic programming, bits and maths
- Object-oriented design, scalability and testing
- 189 problems with worked solutions
- What you will be able to do
- You approach an interview question with a method: clarify, work an example, choose the approach and check the code.
Read next, or instead:Algorithms, System Design Interview
Soft Skills: The Software Developer's Life Manual
John Sonmez
The problem it solves. A tech career is not only code: reputation, learning, personal finance and health matter. Sonmez covers them in a single book.
Manning·2014·504 pg.·ISBN 978-1617292392
- Who it is for
- Early-career developers and freelancers who want a broad view of their career.
- Who it is not for
- Anyone wanting depth: coverage is broad but shallow on each topic, and some advice is personal to the author.
- What it contains
- Career and professional positioning
- Self-marketing and personal branding
- Learning and productivity
- Personal finance and investing
- Fitness and mindset
- What you will be able to do
- You have a checklist of career areas to work on and where to dig deeper with specialised sources.
Read next, or instead:The Effective Engineer, Staff Engineer
Peopleware: Productive Projects and Teams
Tom DeMarco, Timothy Lister
The problem it solves. Software projects fail more for human reasons than technical ones. DeMarco and Lister gather evidence and observations on organising people and workspaces.
Addison-Wesley·2013·272 pg.·ISBN 978-0321934116
- Who it is for
- Anyone leading or belonging to a development team: managers, tech leads, developers.
- Who it is not for
- Anyone wanting agile practices or modern tooling: the text dates from the 1980s (the third edition is from 2013) and reasons in principles.
- What it contains
- Why project problems are often people problems
- Workspace and interruptions
- Forming and growing cohesive teams
- Schedule pressure and overtime
- What you will be able to do
- You argue with established references for the importance of focus, environment and team in management decisions.
Read next, or instead:The Mythical Man-Month, An Elegant Puzzle
Staff Engineer: Leadership Beyond the Management Track
Will Larson
The problem it solves. You want to grow as an engineer without becoming a manager and nobody explains how. Larson describes the staff engineer role and how to get there.
Independently Published·2021·390 pg.·ISBN 978-1736417911
- Who it is for
- Senior developers aiming for high-level technical roles, and their managers.
- Who it is not for
- Early-career readers: you need experience to use it. The practices described reflect mid-to-large tech companies.
- What it contains
- What a staff engineer does and the role's different archetypes
- How to get the role and find sponsors
- Technical vision, strategy and influence without formal authority
- Interviews with staff-level engineers from different companies
- What you will be able to do
- You have a map of the technical path beyond senior level and know which skills to build to follow it.
Read next, or instead:An Elegant Puzzle, The Effective Engineer
An Elegant Puzzle: Systems of Engineering Management
Will Larson
The problem it solves. You are moving into leading an engineering team and do not know how to size it, hire and evaluate. Larson treats management as a systems problem.
Stripe Press·2019·288 pg.·ISBN 978-1953953308
- Who it is for
- New or incoming engineering managers, and tech leads about to manage people.
- Who it is not for
- Anyone who does not and will not manage people. Examples come from mid-to-large tech companies.
- What it contains
- Team sizing and structure
- Hiring and onboarding
- Performance evaluation and growing people
- Running an engineering organisation
- What you will be able to do
- You set up your team's structure and a hiring and evaluation process with explicit criteria.
Read next, or instead:Staff Engineer, Peopleware
The Unicorn Project
Gene Kim
The problem it solves. You work in a company where legacy systems and bureaucracy slow every change. The novel tells the same transformation from a developer's viewpoint.
IT Revolution Press·2019·352 pg.·ISBN 978-1942788768
- Who it is for
- Developers and tech leads who want a language for describing what slows their work.
- Who it is not for
- Anyone wanting technical instructions: it is a novel and the natural companion to The Phoenix Project, which is best read first.
- What it contains
- A story from a developer's perspective
- The Five Ideals: locality and simplicity, focus-flow-joy, improvement of daily work, psychological safety, customer focus
- What you will be able to do
- You use the five ideals as a grid for explaining and discussing what slows your team down.
Read next, or instead:The Phoenix Project, Accelerate