Book Recommendations

It’s trivial today to find a list of “must read” programming books. So instead here is a small selection of books that don’t always make the top ten lists. You will not find “Clean Code” on this list (and I don’t recommend it anyway).

Engineering

The Little Schemer by Daniel P. Friedman and Matthias Felleisen. This book is written in a unique question and answer format. Even if you have no interest in Scheme (a Lisp dialect) this book is still worth the read. My first programming languages were all object oriented, so I always struggled to understand functional programming. By the end of this book I found I could think functionally, and things like recursion became intuitive.

Why’s (Poignant) Guide to Ruby by Why the Lucky Stiff. Continuing the theme of non-traditional programming books, this book combines humor, storytelling, and illustrations to teach fundamental programming concepts. It was my first introduction to the Ruby community, and a big reason I’ve always had a fondness for it.

Comic from the book
Panel from “Why’s (Poignant) Guide to Ruby”

Seven Concurrency Models in Seven Weeks by Paul Butcher. Concurrency models range from the overly baroque (Grand Central Dispatch) to the frustratingly primitive (Promises in JavaScript). Part of the excellent Seven in Seven series, this book explores the underlying patterns behind different approaches, allowing you see clearly the pros and cons of different implementations.

Design

Don’t Make Me Think by Steve Krug. This book was originally published in 2000 and it certainly shows its age in some places, but the ideas in it are timeless (and are due to be rediscovered). The book advocates for clear, concise, and self-evident web design principles, encouraging designers to create interfaces that eliminate confusion and make information easily accessible. This is the book I most often channel when giving design feedback.

The Design of Everyday Things by Donald A. Norman. Very similar in theme to “Don’t Make Me Think”, Norman talks about user-centered design, stressing how things should be easy and obvious for us to use. The book dives into how our brains work with technology, pushing designers to think about how we actually think to create things that just click with us.


The image “Library @ Harvard School of Law” by samirluther is licensed under CC BY-SA 2.0.