Learning

These are the books I return to and the courses I have worked through rather than bookmarked. When I mentor someone I hand them a subset of this, in roughly this order.

Books

BookAuthorWhy it is here
The Pragmatic ProgrammerHunt and ThomasThe one I give people earliest. Very little of it is about code, which is the point: it is about the habits that decide whether what you write survives contact with a team.
Code Complete, second editionMcConnellLong, and worth it. It answers “why is this function hard to read” with something better than taste.
Design PatternsGamma, Helm, Johnson and VlissidesThe Gang of Four. Dated in its examples and still the shared vocabulary: when I argued for the builder pattern over a procedural mess, this was the argument.
Clean CodeMartinWorth reading and worth arguing with, which is most of its value. Some of it I follow to the letter, some I have watched teams apply as dogma until the code got worse.
RefactoringFowlerGives the moves names, so a code review stops being an argument about preference and becomes two people agreeing which transformation applies.
Structure and Interpretation of Computer ProgramsAbelson and SussmanGenuinely hard, and anyone who says otherwise has skimmed it. It keeps asking you to build the thing you have been taking for granted, then asks what that means. I still do not understand half of it.

Courses

CourseByWhy it is here
Learn Python the Hard WayZed ShawThe title is the method: type it out, break it, fix it. Unfashionable now, and still how I pick up a language I have no commercial reason to know yet.
The Ruby on Rails TutorialMichael HartlTaken while at an agency that was passing database files around by hand. I came back on the Monday and introduced migrations, which is the most direct line I can draw from a course to something I changed at work.
LaracastsJeffrey WayYears of it. The best explanation of Laravel and of PHP as it is actually written now rather than as its reputation suggests, and the reason the PHP on my CV is not stuck in 2013.
Frontend MastersVariousWhere I go for depth rather than a tutorial. The courses are taught by the people who build the things.
Stephen Grider’s catalogueStephen GriderMost of it, over the years. Good at the thing that is hardest to teach: building the whole thing rather than the interesting part of it.
Teach Yourself CSOzan Onay and Myles ByrneA curriculum rather than a course, and I am still working through it. It exists because a lot of us came in by building things first and filled in the fundamentals afterwards. That is my route exactly.

Why this page exists

Most of my career has been spent arriving somewhere that already has a problem. What travels between those engagements is not a framework, it is the set of ideas above. A CV lists what I have used. This is closer to how I decide.