Books That Cause Change

This reads like a syllabus but after finishing countless books of varying quality I want to share the shining stars. These are books which truly stood out. These are books which did more than teach but also changed me.

There are no affiliate links on this page.

Computer Science Fundamentals

Programming Language Pragmatics, by Michael L. Scott

When I started reading this book, it took the mysticism out of coding which I had developed over 5 years of “teaching yourself” practice. This lays out the building blocks of what makes a language, and what are the trade-offs for each decision. The topics covered cannot be distilled in a paragraph, but suffice to say this book will give you the insight and vocabulary needed to quickly learn and contrast any language.

The Algorithm Design Manual, by Steven Skiena
Recommended to me by a recruiter a few years after college, this quickly refreshed and reinforced every learning from University. After reading several books of algorithms this was the only one which truly married theory with practicality. Not an easy feat for a book which teaches arguably every algorithm I’ve ever seen.


The Story of Our Lives, by Mark Strand
Reading through this book feels like tracing the stairways of an Escher painting. The making of a point, is the point being made. Imagine how recursion can be applied to ideas, and watch Strand execute better than imagined.


Hyperion, by Dan Simmons
This book had a stronger impact on my sleep schedule than any video game or tv show. Utterly engrossing and thought-provoking at the same time. More than once I had to put the book down and think about life, who we are and where we are going. I truly recommend reading this stand-alone book, and continuing the series if you also loved it.

Computer Science: Specific focuses

Big Data: Principles and best practices of scalable realtime data systems, by Nathan Marz
An excellent introduction to the world of Big Data. It is practical but theoretical as well. Almost every problem that I’ve encountered in real world data engineering is covered by a chapter or note in this book. It preaches the virtues of Lambda Architecture, but acknowledges it’s weaknesses and alternatives.

Artificial Intelligence: A Modern Approach, by Peter Norvig
Decision making is at the crux of next generation computing. Learn about probablistic reasoning, classification, heuristic modeling, automata, agents and constraint-satisfaction-problems. There are gems in this book which will impact everything you do going forward. One example for me was an “aha!” moment when working on adaptive video quality switching. I realized I wanted it to aggressively switch at first, but settle into a rhythm over time – a process which can be modeled using stochastic gradient descent.

Javascript: The Good Parts, by Douglas Crockford
Learn a tiny bit about the history of javascript and then learn how to escape it. Oddly enough this book spends as much time on what you shouldn’t do as what you should do – but any front-end engineer will do well to heed this useful advice. Unlearning bad habits can be tough and this book put me back in the right direction. By 2020 it will need to be rewritten for js compilers, but for today the book is spot-on. Side-note, avoid js books with “ninja” in the title.