Skip to main content

My personal programmer's canon


This is a work in progress.

I'm putting together a list meant to encompass what I consider the canon of works that I find valuable and suggest others may as well. Many of them I haven't read myself because, to be fair, they tend to be pricey. I've got the means to acquire hard copies right now, so I'm methodically working through that process. There are, of course, other ways to ahem acquire them for those that are low on funds.

It is my aim to list books that won't age too terribly over time (or have been kept up to date by the author). The essay books, in particular, should hold up quite well.

I've acquired hard copies of the titles in bold

Core computing#

Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, Julie Sussman

Head First Design Patterns by Eric Freeman, Elisabeth Robson

Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People by Aditya Bhargava

Best practices#

The Pragmatic Programmer by Andrew Hunt

A Friendly Introduction to Software Testing by Bill Laboon

Refactoring by Martin Fowler

Code Craft by Pete Goodliffe

Working Effectively with Legacy Code by Michael Feathers

Humane tech#

Practical Web Inclusion and Accessibility by Ashley Firth

Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability by Steve Krug

Accessibility Handbook: Making 508 Compliant Websites by Katie Cunningham

Engineering as Practice#

The Effective Engineer by Edmond Lau, Bret Taylor

The Nature of Software Development by Ron Jeffries

Programming Beyond Practices: Be More Than Just a Code Monkey by Gregory T Brown

Becoming a Better Programmer: A Handbook for People Who Care About Code by Pete Goodliffe


My Life in Code by Ellen Ullman

Joel on Software by Joel Spolsky

Geek Sublime by Vikram Chandra

The Mythical Man-Month: Essays on Software Engineering by Frederick Brooks Jr.


Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

Computing: A Concise History by Paul E. Ceruzzi


High Performance Browser Networking by Ilya Grigorik

If Hemingway Wrote JavaScript by Angus Croll

Once Upon an Algorithm: How Stories Explain Computing by Martin Erwig

The Art of Doing Science and Engineering: Learning to Learn by Richard W. Hamming, Bret Victor

Personal areas of expertise#

This section includes a few works that are specific to the languages and tools I use. The books here are considerably less "canon" and a bit more transient.


Eloquent JavaScript by Marijn Haverbeke

JavaScript: The Definitive Guide by David Flanagan

Composing Software: An Exploration of Functional Programming and Object Composition in JavaScript by Eric Elliott