There is barely any day for me without reading a book. On days when I can’t read I really miss it. Sadly there were quite a few such days lately. It feels bad. It feels like my mind is hungry. When you eat you feed your body. When you read, you feed your mind. And we should consider reading as important as eating.
That’s an important rule I try to live by though sometimes I fail.
This year, I managed to read about 17 books, a bit less than I wanted, even though there have been a couple of very long ones. Let me share the 8 best I read.
Please note that this list does not follow any particular order. Click on the section headers to get a more detailed review of each book.
C++ Software Design by Klaus Iglberger is a great book that, in my opinion, every non-beginner C++ developer should read. It teaches about the most important design patterns such as the visitor pattern, the strategy pattern, the adapter and others. You won’t only learn about classical polymorphic implementations, but also about modern value-semantics-based ones. In addition, you’ll learn when you should pick which implementation. You’ll also learn in detail about type erasure a modern, a bit complex, but very useful design pattern. A highly recommended read, I hope not the last one by Klaus!
In Hands-On Design Patterns with C++, the author Fedor Pikus shares the most common design patterns used in modern C++. In fact, not only design patterns but also some best practices and idioms. He doesn’t end the stories simply where the Gang of Four Design Patterns book ends, but he looks deeply into the specialities of C++ implementations. Among others, he explains local buffer optimization, the non-virtual interface, and policy-based design. If you are looking for a book that will give you practical knowledge on how to design a modern C++ application, this is the one you should read! A highly recommended read!
When a few months ago I read The Phoenix Project and The Unicorn Project, I learned that they are the modern IT-era reincarnations of The Goal. It was written in a similar style in 1984, but it was targeting the manufacturing businesses with its explanation of the theory of constraints. So it’s about the world of real factories, not about software factories. It is a book about how to manage a business, in particular a manufacturing business. It’s almost 40 years old. Still, it’s relevant and interesting even today, even for software developers. Given that it’s a novel it’s entertaining to read and all that we can learn about resource management, accounting is interesting and with some thinking probably it can be applied to many different areas. We just have to think a bit outside of the box.
Beautiful C++: 30 Core Guidelines for Writing Clean, Safe and Fast Code by J. Guy Davidson and Kate Gregory
If you are familiar with the Pluralsight courses of Kate Gregory, you won’t be surprised by the name of this book. While many consider C++ a complex language that always results in difficult to read and to maintain code, it can be beautiful. It’s probably true that with all the coming features, the language is still getting more complex. At the same time, idiomatic modern C++ code is getting easier to write and read thanks to the new language and library features.
Kate Gregory and J. Guy Davidson were so much inspired by C++ Core Guidelines that they decided to write a book about them. They don’t go through all the approximately 300 guidelines, but they picked 30 that they organized into 5 groups and explained them and some related matters in detail. Their goal in sharing these 30 guidelines is not to teach you the C++ syntax but rather how to improve your style.
Beautiful C++](https://www.amazon.com/Beautiful-Core-Guidelines-Writing-Clean/dp/0137647840?&_encoding=UTF8&tag=sandordargo-20&linkCode=ur2&linkId=4a574de3a8d52ce616b3bdddd26e0c8c&camp=1789&creative=9325) is a very interesting book about how to write more readable, more maintainable C++ code. If you’re looking for your first C++ book, probably this is not the one to choose. It won’t teach you the basics of the language. But it’s the perfect second book. If you follow the pieces of advice of the authors, you’ll write better code than most of your fellow developers.
In his first book, 12 Rules for Life: An Antidote to Chaos, Jordan B Peterson focused on the consequences of too much chaos in our lives and how to make it better, how to bring our lives more into order. But we cannot simply say that order is preferable over chaos, nor the other way around. It’s the wrong way to look at it, as chaos has its merits. It also brings novelty, transformation, and disruption.
We need chaos. It’s part of the whole.
In his next book, Beyond Order, the author focuses on the dangers of too much security and control. We are better off if we can avoid excessive order. We have to sneak in some changes, some curiosity in our lives. We have to push ourselves into the unknown.
Being a software engineer is special compared to many other professions in several ways. One aspect of this speciality is that you don’t just go to a job interview after polishing a bit your CV, thinking about your career and maybe reading a few interesting and professionally relevant articles.
Getting your next job often requires extensive learning and practice no matter what your current level is.
We have to prepare.
One kind of interview is covering system design skills. In my opinion, even if you’re not preparing to become a software architect, the knowledge tested in such interviews is way more relevant than crafting sorting algorithms on a whiteboard. They are about problems that we have to be solved in most applications. It’s really useful to understand as a developer how our systems are composed.
Dr. Edith Eva Eger is a native of Hungary just like me. She grew up in Kassa (Kosice). She was born as the youngest sister among 3 children in a Jewish family.
Apart from Klara, the middle sister, who was studying violin in Budapest, all of them were deported to Auschwitz in 1944, where the parents were murdered on the first day and two girls finally survived the war despite all the different marches and death camps.
In her first book, The Choice she shares not only her traumas but what she learned since she was deliberated and how she truly deliberated herself.
It’s a book about practical pieces of advice of how to heal your soul, how not to live in fear, but to enjoy a full life. I highly recommend reading it.
What it is about? It’s not really about Zen and not really about motorcycle maintenance, but both appear in the book.
It’s mostly about two things. The book’s subtitle is An Inquiry Into Values, Pirsig tries to define what quality is. That’s why this book inspired so many talks on software quality!
In the end, Pirsig says that quality is undefinable, but it’s easy to recognize. You know you stumbled upon something of quality when you see it. But this doesn’t mean that quality doesn’t have characteristics or different types. In this book, he differentiated between classical and romantic quality.
Classical quality is mostly about the engineering aspects of things, it’s about how things work. Whereas romantic quality is about the design, and the aesthetics of things. It’s about how things are begin used.
Zen and The Art of Motorcycle Maintenance by Robert Pirsig is both a fascinating and a frightening book. As well as an inspiration searching for quality.
These are the best books I read this year, I hope you’ll find interesting some of them. Oh, and don’t forget to share what books you liked the most this year!
If you liked this article, please