My 2019 Reading List

I have to admit, I was never really a huge fan of New Year’s resolution in general: I was never able to find the motivation of just choosing a (mostly arbitrary) point in time to start working towards a goal; mostly because I thought that doing so would imply to lose such motivation it once the year was not that new anymore. However, being pretty much Groucho Marx right now, this post is basically a New Year’s resolution! Happy 2019 everyone, the year of double standards.

This proposition is mainly inspired by the post Stop Learning Frameworks, by Eduards Sizovs, which tells the story of how his mentor told him to stop learning the specifics of each framework or tool, and instead learn the theoretical principles that fuel them. These principles and designs are perennial, while the frameworks may (and most of them, will) be short lived. He presents this as his rule of thumb of where to invest time. Most importantly for this post, he presented the reading list he bought right after this anecdote. And that’s what struck me most: I knew all of them, but I have read none. All the titles where familiar, and they vouch for the principles behind the details that sometimes we can be lost in. And still, I had not read a single one of those books.

Also inspired by the posts about things we don’t know as of 2018, I decided to make some minor modifications to Sizovs’ reading list and decide to read all of the books in it in 2019. The modifications basically consist in the removal of some specific books for more language agnostic

The complete list is:

  • The Pragmatic Programmer, which covers the basics of software development and instructs the reader on how to be more efficient and effective.
  • Clean Code, the classic by Uncle Bob. This book provides an intuition on code smells and code rot through different anecdotes.
  • Domain-Driven Design, a book that teaches how to better understand the domain and the tools to tackle it, as well as how to extract the domain layer out of your application.
  • Growing Object-Oriented Software, Guided by Tests. Since I am not a fan of Object Oriented Programming and a bit of an illiterate in Test Driven Development, let’s tackle both of them in a single book!
  • Functional Programming: Practice and Theory. Published in 1990, this book is still as relevant as ever to understand the language-agnostic theory behind functional programming.
  • Types and Programming Languages, which is considered by many “the Bible for functional programming”. I think there is not much more to say about it.
  • Continuous Delivery, which sets the background needed to understand why containers and continuous integration have been successful in the recent years.
  • An Introduction to Statistical Learning; the only book in this list that is not completely language-agnostic. However, the book covers the main statistical concepts behind machine learning and data science from a theoretical point of view and offers exercises tailored for R.

The list is full of different disciplines but its main goal is to include seminal texts that explain the foundation of a discipline from a theoretical point of view. Understanding such insight is what Sizovs advocates for in his post, and is the goal of this list as well. The aim for this list is to read them (hopefully) along 2019, and maybe write a short post about each of this books in the post. The list has no particular order and I will read the books depending on how I feel when choosing which to tackle next. Hopefully, the next post will cover a great deal of concepts just learnt through these books. Also, if you think that I am missing any important book, don’t hesitate to contact me through one of the channels in the footer letting me know. Happy new year!