At the beginning of this year, I started reading again, including fiction, non-fiction, and programming books. While I didn't read many (6 in total), I think that the habit of reading made me more interested in programming again, as well as in other topics.
Reading books on programming has become a great way for me to learn more about this without spending even more time in front of a computer screen.
In this article, I want to share the books I liked the most, including a few comments on why I liked them and why they were useful to me.
You will notice that the topics of some of these books aren't tied to any specific technology or programming language. This is because I've been working for more than a couple of years as a programmer, and I'm familiar enough with the technological aspect of my job to get my work done. These books focus more on how to get the job done effectively and with high-quality. This is why I wouldn't recommend them to someone that is relatively new to programming.
I've added Amazon affiliate links for each book. This means I receive a small commission if you make a purchase after clicking on a link marked with an asterisk (*) at no additional cost to you. If this bothers you, just search for the book without clicking on any affiliate link.
This book is by far my favorite of this list as it gives you a good foundation of what you need to know about the tools of a software developer. I've summarized my favorite topics in another article.
The first edition of this book was released in 1999 and has become one of the most important books to read for software developers.
Last year, 20 years after its initial release, the authors released a new edition of this book, not only including updates of the code examples, but also integrating the feedback they gathered at this time.
While the book contains code samples, it's not about teaching you how to code: The authors explain how to improve the process of developing software in a pragmatic way. It includes plenty of tips that will help you throughout your programming career.
Some of the traits of pragmatic programmers are their attitude and philosophy of approaching problems, placing them in its larger context, and taking responsibility for everything that they do.
I've only read the book 3 years into my career as a software developer, but I'm sure that I will be able to appreciate the book, even more, when I read it again in a year or so.
I'd recommend it to all software developers who are serious about improving their skills. However, while it contains a lot of useful advice, I feel like if you're just starting out with programming, you might not come to appreciate all the wisdom that the book offers.
If you want to buy the book, you can get it here on Amazon*.
This book is a little more specific, as it focuses on frontend performance. Although the author published the book in 2016, I believe that nearly all the concepts and optimizations in the book are as valid today as they were 4 years ago.
It starts by describing the current mobile web landscape and introduces you into the basics of web performance and how to measure it.
After that, the author goes into the details of how you can optimize web performance, covering topics like HTTP2, HSTS, compression, prefetching, cache, and much more.
Towards the end of the book, there's a very interesting chapter, which explains how you can take the web performance to a new level by putting all the data necessary for the page to load into a single TCP package (which is 14.6KB).
This level of performance is considered extreme as it requires you to make some fundamental changes to the architecture of the existing project.
I found this to be a very interesting read and I'd recommend it to anyone that wants to learn a little more about web peformance. The book helped me close some gaps in the knowledge I've acquired over the internet and made me thinking more about performance at work as well.
If you want to buy the book, you can get it here on Amazon*.
Refactorings should be an integral part of our day to day work as software developers. Most of the times, we're confronted with already existing code that needs to adapt to new requirements, and even if you're working on a greenfield project, you'll need to perform regular refactorings, as your understanding of the issue you're solving changes.
At my current job, I was put into a position where I had to work with a lot of legacy code with poor code quality. The purchase of this book was my desperate try to make this less painful.
The author touches similar topics as The Pragmatic Programmer, but it gives you much more detailed instructions on how to perform refactorings.
The book is divided in two sections, the first one explains in detail what you need to know about refactorings, bad smells in code, and writing tests. The second part, which occupies 3/4th of the book, is an extensive catalog of different refactorings, giving details instructions on how to perform each of them.
The catalog includes well-known refactorings like "extract function" and "rename variable", as well as more advanced procedures such as "replace nested conditional with guard clauses" (I don't even remember what this one was about).
While it was a very interesting read that made me approach development with a more systematic approach, I didn't come to make a lot of use of the catalog of refactorings yet.
However, the book gave me more than a few fresh ideas on how to approach legacy code and it motivated me to do a better job at refactoring and keeping my code clean.
I'd recommend it to programmers that already have worked a couple of years in the industry and thus can relate to what it's like working with big code bases that haven't been refactored in a while.
You can get the book here on Amazon*.
I hope that with this article, I could inspire one or two of you to pick up one of these books. I enjoyed reading them and in retrospective, I think that they helped me to be more time-effective at work.
Some other articles you might be interested in:
After reading the 20th-anniversary edition of the book, these are the summaries of my key-takeaways.
This article includes a summary of the book plus the notes I took while reading it.