C. Hinsley
7 August 2020
Normally I would just make this into a reading list on Goodreads, but enough people end up asking for a list like this that I figure it's fair game to just make a web page out of it.
There are a lot of aspiring programmers these days, and nearly invariably, due to the myriad resources available online, they lack the direction to develop their skills to any appreciable level. There are just too many YouTube channels, blogs, and Coursera courses to get through.
But the people who have come to be "good" programmers — the hackathon winners, the kids that get the hot internships at FAAMG, the old bearded Unix hackers — they've gotten to where they are by reading. They've read endless source code repositories, yes, but they also operate from a shared foundation they have formed through a set of classic books on the subject. Here I attempt to lay out a roadmap for the aspiring programmer, providing a progression one normally takes through these books.
It's not absolutely necessary to read these books before the others, but they don't generally fit cleanly into other groups, so I'm putting them into their own category. Reading any one of these will deeply affect every aspect of your career as a programmer, whether as hobby or profession.
Oftentimes, the hardest part of creating software is figuring out how to deal with ever-growing complexity. These books help you learn how to think about complexity and put labels to CodeSmells as you encounter them, so that you can refine and sort them appropriately as needed.