Reading List

Recent

Below are some of the books I’m currently reading or have read in the recent past.

Designing Data Intensive Applications
Designing Data Intensive Applications
Working Effectively with Unit Tests
Working Effectively with Unit Tests

Recommended

This is a list of my all-time favourite software books. I consider these books classics and I periodically return to them as references.

Effective Java 2nd Edition
Effective Java 2nd Edition
This is the definitive book on java best practices. A must read for Java programmers.

Clean Code: A Handbook of Agile Software Craftsmanship
Clean Code: A Handbook of Agile Software Craftsmanship
Code should be readable and comprehensible. Strive to leave code better than you found it. A must read.

Release It! Design and Deploy Production-Ready Software
Release It! Design and Deploy Production-Ready Software
The definitive book on fault tolerance in the real world. A must read.

Java Application Architecture: Modularity Patterns with Examples Using OSGi
Java Application Architecture: Modularity Patterns with Examples Using OSGi
This book really opened my eyes to thinking about architecture at the middle – the component/module level, where proper design is so critical to managing complexity in large codebases, and which is so often over-looked.

Java Concurrency In Practice
Java Concurrency In Practice
An excellent treatment of concurrency in Java. A must read for anyone writing concurrent code on the JVM.

JavaScript: The Good Parts
JavaScript: The Good Parts
I consider this the definitive book on JavaScript. A must read.

Making Sense of Stream Processing: The Philosophy Behind Apache Kafka and Scalable Stream Data Platforms
Making Sense of Stream Processing: The Philosophy Behind Apache Kafka and Scalable Stream Data Platforms
Distributed data pipeline architectures. A must read.

Introduction to Functional Programming
Introduction to Functional Programming
A classic introduction to functional programming in the ML-style.