I believe that every one of us, software engineers, should have our own personal library. Whether in old plain-text book form or in a newer, more eco-friendly electronic one is an open question. The important thing is to actually have one.
I am one of those strange people that believe that we people in general should read books. Doing so has multiple benefits, but let’s not dive too deep into this and focus on software engineering.
Well, there are a couple of problems with IT-related books:
- They get old rather quickly
- There are a lot of them
- They are expensive
- They have varying levels of quality
Given our limited time, the obvious conclusion is that it is hard to find a book worthy of reading, one that we will not waste our money on. Here comes this article. It will be the first in a series focused on what books I recommend you include in your professional library.
This particular blog covers books that focus on the softer parts of our job:
- How to grow your career,
- How to approach your work
- Various other problems that we encounter on our professional journey.
There is also one more technical book, which I believe will be a good starting point in software architecture. As to why I do not recommend any algorithmic books, it is simple—I just do not like them. Better go to LeetCode; they have a very good crash course on DSA. I tried it myself, and I strongly recommend it.
Disclaimer
- This article is not sponsored in any way, shape, or form.
- I have read most of the books in this and the following articles. If this is not the case for one of the books, I will
explicitly mention it.
Books
Software Craftsman
Software Craftsman, The: Professionalism, Pragmatism, Pride by Sandro Mancuso ends as my first recommendation.
It is one of my most favorite job-related books. Inside, the author speaks a lot about the importance of professionalism and continuous learning in our work. He also describes how applying both of these concepts can help us grow and be better engineers. Additionally, the author advocates for treating software engineering as a craft, following high coding standards, and taking pride in our work.
All of this is intersected with different retrospectives from his professional experiences and situations in his life. What is very important, the author puts the emphasis on being pragmatic first and idealist later. While idealism is important, the book stresses the need for practical solutions that actually work in real-world scenarios.
For me, one of the most important takeaways from this book is: Balancing idealism with pragmatism is essential for success.
Clean Coder
The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin gets the second place on my recommendation list.
This book is very similar to the previous one. What I mean by this is that it focuses on professionalism, praises continuous learning, discipline, and advocates for keeping high quality of work. Similar to Software Craftsman, the author enriches the text with anecdotes from his own life experiences.
This is interesting in and of itself, at least for me, as some of the situations are pretty old, and we may see how programming looked when Uncle Bob was starting his career.
Overall, The Clean Coder serves as both a practical guide and a motivational book.
The Software Engineer’s Guidebook
Next, we have The Software Engineer’s Guidebook, by Gergely Orosz. Its main point of focus is career growth and professional development. This time there are no anecdotes and retrospectives, but we still get a lot of useful recommendations.
While this book seems more focused on growing and advancing your career as a Senior Engineer, there are a couple of chapters that can also be interesting for those of you with less experience. Especially chapters 1 and 2, which focus mostly on how to navigate your career and how to be a good Engineer.
Additionally, the third chapter speaks on the quality of a good Senior Engineer, which may also be helpful while planning your career as a junior or mid-level programmer.
This book provides one of the best career-building frameworks I have ever seen. Despite the fact that I put it here as the 3rd one, I actually recommend you read it first.
System Design Interview
With System Design Interview – An insider’s guide by Alex Xu, we move away from the area of career development books to more technical ones.
This book is probably the simplest and most easily laid-out intro to system design and/or architecture I have seen for a long time. Besides that, it also provides some insight into how some of the systems we use in our everyday life actually work.
In addition to obvious interview tips, like back-of-the-envelope estimates or a framework for approaching the interview itself, it also gives a lot of useful information on how to scale your system, and introduces quite interesting concepts like consistent hashing or different rate-limiting algorithms. You know, the things that you would rather not meet in day-to-day work.
I strongly recommend reading it even if you are not actively preparing for an interview. I am sure it will be time well spent, besides it also quite pleasant to read. There is also a second edition of this book; however, I recommend starting with the first one, as the second edition sometimes mentions concepts introduced in the first one.
While the books above are my personal favorites and I strongly recommend starting with them, the books below may also be interesting and informative to read. Nevertheless, I would give them a somewhat smaller priority.
Mythical Man-Month
The Mythical Man-Month. Essays on Software Engineering by Frederick P. Brooks
This book is a perfect example that some things in this world do not change, no matter how much time passes. For some companies, all the problems described in this book are still valid, even decades after its first publication. There are still people who believe in the old phrase: “nine women can have a baby in one month.”
If you look carefully enough, you may even notice some of these problems in your organization.
This fact alone is more than enough for me to recommend this book. Its main lesson—that adding more people to a project does not automatically make it faster—is still one of the most important factors that one must take into consideration while planning anything serious.
The Staff Engineer’s Path
The Staff Engineer’s Path: A Guide for Individual Contributors Navigating Growth and Change by Tanya Reilly
This book is quite a challenge for me. It is widely recommended as one of the best books focused on career development and the challenges we can face while trying to expand beyond coding. Yet it totally did not do the trick for me; I stopped reading around 50%.
For me, the biggest problem at the time of reading was the feeling that you need to work in a specific environment and have specific opportunities for some of the recommendations from this book to actually be useful. Nevertheless, I recommend you at least give it a try, especially if you have to become a Staff Software Engineer. Maybe you will find it more meaningful than I did.
There is one important thing about this book: It is aimed mostly at senior software engineers. While you may find it beneficial nonetheless, I believe it is important to make this note.
Gang of Four
Now we have Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four) by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
This one is a more honorable recommendation due to its impact on software engineering as a whole than anything else.
While the patterns are still valid and remain virtually unchanged through 40-odd years since the book’s publication, most of us will probably use a very small subset of them. I believe that knowing all 23 patterns described in the book is not the best use of your mental real estate. Besides, there are easier ways to get familiar with design patterns, and they do not involve reading code samples in C++.
Despite all of this, I think that reading it may be somewhat interesting and insightful. At least it was for me a few years ago when I was reading it.
Pragmatic Programmer
Last but not least, we have The Pragmatic Programmer: Your Journey To Mastery, by Andrew Hunt and David Thomas.
While this book aged better than the previous one, it still may feel a little dated. Mostly due to the fact that a lot of the concepts and approaches described inside that were considered novelties at the time of publishing are now widely adopted standards that you probably already know about.
You may find some aspects described in the book insightful and thought-provoking, but I would not recommend prioritizing it highly. There are more worthy books for your time out there.
Summary
Here we are. Below, you can see the table with the order in which I recommend reading the books from above. Of course, do not be afraid to change it as you see fit; it is just written, not set in stone.
Book |
---|
The Software Engineer’s Guidebook |
Software Craftsman |
System Design Interview |
Clean Coder |
The Staff Engineer’s Path |
Mythical Man-Month |
Pragmatic Programmer |
Gang of Four |
Thank you for your time.
Comments are closed.