This page looks best with JavaScript enabled

Books I read in 2019

 ·  ☕ 7 min read

We’re back for part 2! Two weeks ago I posted Books I read in 2020, but because I didn’t start this blog until February last year, I never made a post about books I read in 2019, so I’m making up for that now.

Two caveats though: first, because I didn’t start writing my “core takeaway” notes until December 2019, this post’s summaries won’t be nearly as in-depth as those in last week’s post. Also, this list may not be in completely chronological order of when I read things.

Some context on the titles below: I started reading coding books in early 2019 because I was bored one day and was like “hey I should read the book from CS 21” which was Caltech’s intro to CS class (by which I really mean CS and not programming), and like what else would you do if you were bored one day and happened to have Introduction to the Theory of Computation on your bookshelf?

I really enjoyed reading that book, and soon afterwards I found an article on the FreeCodeCamp blog with a bunch of book recommendations, and I ended up reading most of them, and now I just really enjoy reading random CS/coding/design/usability/etc books.

Introduction to the Theory of Computation by Michael Sipser
(Note: There is now a 3rd edition.)
Would recommend: If reading a math textbook sounds really fun then yes! Otherwise definitely absolutely not.
Category: Theoretical
No specific comments really. It was so very useful (“useful”?) to have been a math major lol. That said, this is not at all a “practical” book for coding.

Clean Code by Robert C. Martin
Would recommend: Yes, at least the first third of it or so, to a new programmer. After that it starts being less helpful, and I’d recommend A Philosophy of Software Design (listed below) instead.
Recommended by: the FreeCodeCamp article
Category: Best Practices
Core takeaway: Be so clear in your code that you don’t have to put what’s-happening comments. The story of your code should be told through variable and function names, and don’t do more than 1 thing at a time.

Clean Architecture by Robert C. Martin
Recommended by: the FreeCodeCamp article
Would recommend: No
Category: Best Practices
Core takeaway: No really, loosely couple everything, partition, etc. OO principles apply to every layer and every context.

The Clean Coder by Robert C. Martin
Recommended by: the FreeCodeCamp article
Would recommend: Not really, other books that attempt to do the same thing are better
Category: Self Help
Core takeaway: I need to be responsible for my own code quality and professionalism. Somewhat ironically I’m writing this summary too long after reading the book to remember many specifics.

The Pragmatic Programmer by Hunt Andrew and Thomas David
(Note: there is now a 2nd edition.)
Recommended by: the FreeCodeCamp article
Would recommend: Yes, it’s been a while since I read it but I remember it being pretty helpful.
Category: Best Practices
Core takeaway: One broken window policy for code.

Peopleware: Productive Projects and Teams by Tom DeMarco and Tim Lister
Would recommend: Yes, read this instead of Mythical Man Month
Category: People
Core takeaway: Be flexible about the people who do things for you, and let them be individuals and let them do things on their terms.

The Mythical Man Month by Frederick Brooks Jr.
Would recommend: No, I’m sure this book was in fact groundbreaking etc but there’s no point in reading it anymore, just read Peopleware now.
Category: People
Core takeaway: This book is really, really, really outdated. And incredibly sexist.

Domain Driven Design Distilled by Vaughn Vernon
Recommended by: the FreeCodeCamp article
Would recommend: This wasn’t really worth it for me but maybe it’s worth it for someone else idk
Category: Best Practices
Core takeaway: Don’t let the needs of one domain spread into others. In particular, it’s ok if Series means something totally different in External Content domain from Match Schedule domain.

Phoenix Project by Gene Kim
Category: Best Practices
Core takeaway: Work on non-bottlenecks isn’t work at all.

CODE: The Hidden Language of Computer Hardware and Software by Charles Petzold
Category: Hardware
Core takeaway: Better understanding of stepper now, and also slightly better understanding of what bits actually are. (I had previously played Nandgame, and this was a pretty nice complement to it, not too much overlap really.)

Structure and Interpretation of Computer Programs (SICP) by Harold Abelson, Gerald Jay Sussman, and Julie Sussman
Recommended by: Teach Yourself Computer Science
Would recommend: Maybe, if you like math then definitely. If not then you might just get frustrated. I had so much fun with this book.
Category: Technical
Core takeaway: Languages are primitives, means of combination, and means of abstraction. We can learn a lot by looking at interesting cases of languages.

A lot of times I thought of something while reading and then the author pointed it out later - “the subtle thing is this returns functions,” “here we are using primitives instead of map to show we can use primitives,” “this is VERY ineficient” or were addressed by exercises later “find the 2 pointless lines of code” or “figure out a way to reorder this so it’s every-other.” It was a very interactive experience to read it, even though I didn’t really do any exercises.

I also sometimes read things out of order and would get confused about a later part, and reverse-engineer an earlier part, which I then got back to, for example giving unique variables in the query language that we built.

A Philosophy of Software Design by John Ousterhout
Would recommend: Yes
Category: Best Practices
Core takeaway: Aim to reduce complexity in everything you do, especially at interfaces in between components.

The Design of Everyday Things by Don Norman
Would recommend: Yes, some of the UI/UX books I read in 2020 are more directly applicable to software, but this book has so many insights that you should definitely read it as well.
Category: UI/UX
Core takeaway: Really consider what people are naturally good at and build toward human strengths. There are soooo many small things I learned about like affordances/signifiers/constraints/mappings/conceptual model, errors vs slips. Kinda meh on some of the cycles of design parts just cos no “literal best possible way of doing everything!!!” could actually have 7 steps and actually be The Ideal.

Soft Skills by John Sonmez
(Note that the link is to the second edition, but I read the first edition)
Recommended by: the FreeCodeCamp article
Would recommend: It convinced me to start a blog, and I think that was a great idea, so, probably, if only for that reason and no other.
Category: Self Help
Core takeaway: I should start a blog……[hey look I did it!! it’s been awesome!]

SQL Antipatterns by Bill Karwin
Would recommend: Not as a first book about SQL, which this was for me, but as a second, yes, I thought this was pretty good.
Category: Databases
Core takeaway: normalize stuff!! Most of the book seemed like the author was just filling stuff in and what he actually wanted to write was just the last part, about the antipattern of not sufficiently encapsulating the database layer inside of the model part of MVC. Cool workaround for the champion-most-recent-game issue! Too bad it doesn’t work in Cargo.

Database Design for Mere Mortals by Michael Hernandez
(Note: There is now a 25th anniversary edition, the link above is to the edition I read)
Would recommend: Definitely, this is the introduction to databases book I’d recommend for most people, especially if you don’t want a theoretical approach.
Category: Databases
Core takeaway: Don’t take any shortcuts when designing a database. Consider requirements constantly. Don’t assume ahead of time what fields will be associated with what entities. Create per-element specification documentation and make it available before writing any code. This book seems significantly more useful for people working as external consultants than people who are coding for themselves but it was still useful I think to see the amount of detail that could be desired in documentation for something like this.

The War of Art by Steven Pressfield
Recommended by: Was constantly recommended throughout Soft Skills
Would recommend: If you feel like you REALLY need a self-help book to motivate you, then sure, you’ll read it pretty quickly. I didn’t find it particularly useful.
Category: Self Help
Core takeaway: I should change prioritization towards big scary projects more than I do. (Though of course this book assumes a lot more stuff is practical than might actually be….A lot of privilege assumed, it kind of bothered me.)

Share on

River is a developer most at home in MediaWiki and known for building Leaguepedia. She likes cats.

What's on this Page