2018: reading list

The computing book’s I’ve read…

  1. The Go Progamming Langauge - Alan A. A. Donovan and Brian Kernighan

    This is a golang language bible. It contains great material for both beginners and pros. Including some strong documentation on more advanced topics like reflection.

  2. Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm

    Sometimes called the “gang of four” book, this is a classic.

    Every good software engineer should own a copy of this book. I was familiar with many of the patterns in this book, but the way that they are explained and laid out gives a much better insight into potential uses. Like all the rest of the books, I insisted on reading this one cover-to-cover, but that’s not strictly necessary. It’s more of a reference book that you can dip into when you need to solve a particular problem. That being said, if you do not cover all the patterns in the book how will you know / think about them to implement them.

    Reading all the patterns puts you in the advantageous position of having a working knowledge of them all and being able to select the correct one without needing to reference the book. This lets you dip back into the reference material for finer and more esoteric implementation details.

  3. Clean Code: A Handbook of Agile Software Craftsmanship - Robert C. Martin

    An eye opener. Unless you are “code-aware” (knowing that you are writing gross code) then how can you become better at writing code?

    This book demonstrates how code that you once thought was good, could be improved and made much better. Your code outlook will change and things that you prevoiusly thought were good, you will now see and improvable!

  4. The Pragmatic Programmer - Andy Hunt and Dave Thomas

    Some new concepts in here, but in general the book feels a little dated. It’s very java and enterprise language focused, which it makes it feel irrelevant in parts. There are some tips on the value of deliberate programming, when to refactor, naming and defining responsibilities. The most valuable part is probably the checklist in the back that lists a summary of the chapters and what to consider from each one.

  5. Concurrency in Go: Tools and Techniques for Developers - Katherine Cox-Buday

    After reading The Go Progamming Langauge this is a great read to follow. There are many strong go specific patterns for concurrency in here. The author does a good job of breaking down the complexities of race conditions and dead / live locks in a way that builds reasoning skills about concurrency. Starting from the basics, this helps to solidify the basics to be able to really understand what the code will do.

  6. The Checklist Manifesto - Atul Gawande

    The fist of the books in this list that are not strictly programming books. This one is about the value of checklists in handling complexity, and draws examples from aviation to show how checklists can benefit any area that handles complexity.

    It’s written by a surgeon, so many of the examples of the improvements possible are grounded in his experience from hospitals, but they are easily transferrable to other industries. After reading this book, I have adapted the way I plan features, using checklists to ensure that all the possible cases are covered or considered when pointing or designing or considering systems.

  7. Drive - Dan Pink

    This is an absolute bible for understanding why we do what we do, and how we can create the right environments to succeed. The roundup of motivation types and what we need to love our jobs is very well written, argued and laid out.

  8. A Philosophy of Software Design - John K. Ousterhout

    Great book. The first half of it is really well written, and has a number of alternative opinions to many of the other opinionated books I’ve read this year. John argues some good points, particularly around comments and TDD. The only criticism of this is the second half (or perhaps last third). It’s as if the author ran out of steam and crashed through the second half. It was still worth the read, as it challenged many of the views I hold.

Here’s to next year 🎉