Nowadays, most people learn from the internet through YouTube tutorials, various blogs, and other online resources. While plenty of good material is available online, sometimes nothing can replace the feel and depth of a good book.
Software engineering books provide a solid foundation, not just in specific programming languages but also in the way they shape your thinking. These books often delve deeper into concepts and best practices that are essential for becoming a skilled software engineer.
At Devōt, we even combined the “We Give a Duck” philosophy with the book “The Pragmatic Programmer” (rubber ducks everywhere) for our employer branding.
In this blog post, our team members recommend different books related to software engineering. So, let's dive into our book club!
1. Design patterns book - Breaking down complex problems
Recommended by our Tech Lead Ante Crnogorac, he discovered the book “Design Patterns: Elements of Reusable Object-Oriented Software” early in his career, about 12 years ago, thanks to a colleague. He said that this book taught him numerous new concepts that he gradually began applying in his work. It changed his thinking, helping him see every problem as a collection of smaller issues, similar to building with Lego bricks.
“You implement a couple of simple building blocks and then arrange them into a coherent ensemble. And then, you get a complex feature.
You can then treat this feature as something that can be further shaped and modified as you see fit by adjusting the individual Lego-like blocks that compose it.”
With this book, he learned that you need to break down a complex problem into smaller, manageable parts and solve each part individually. Once these parts are combined, they form a comprehensive solution that can be easily adjusted by modifying the individual components.
Ante emphasizes that the book teaches a way of thinking rather than specific details, which you could say is its greatest strength. Although he doesn't have a favorite part, he uses the design patterns discussed in the book daily.
This book is a must-read for software engineers, offering valuable insights into software architecture and design patterns that are essential for developing maintainable and reusable object-oriented software.
2. You don't know JavaScript yet - An in-depth look into JavaScript
About a year ago, our Software Developer, Mario Frlić, wanted to learn JavaScript more in-depth, and on the way, he discovered the book “You Don't Know JavaScript Yet.” This book has significantly improved his understanding of JavaScript, even helping him grasp simpler aspects that the book didn't cover, thanks to the comprehensive connections it makes.
The book changed his perspective by providing a deeper understanding of what happens “under the hood” — how the browser interprets JavaScript. This knowledge has helped him understand which practices to avoid, which ones are beneficial, and where problems commonly arise.
He singled out that you could see how much effort was put into explaining everything in detail. Even the simplest concepts, like variables and scopes, are explored deeply, down to how the browser's engine interprets them.
Since Mario works with JavaScript and TypeScript daily, he applies what he learned from the book every day.
“This deeper understanding of the language, the browser, and the underlying mechanics that I got from the book has made me a better JavaScript developer.”
For software engineers seeking to deepen their JavaScript knowledge, this deep dive book offers valuable insights into the inner workings of the language and the browser.
3. RxJS in action - Adopt a coding style more resilient to errors
Software Developer Hrvoje Dumančić discovered “RxJS in Action” through colleagues and acquaintances. He first read the book about two years ago but often revisits certain sections to refresh his memory on specific topics.
This book introduces the reactive programming approach within the Angular framework, which helped Hrvoje adopt a coding style that is more resilient to errors.
“This book provides insights into a new way of writing and thinking about code, which helped me write code that is more robust and less prone to errors.”
Each chapter of the book presents different operators necessary for programming. Hrvoje said the most significant impact of this book was understanding the application and differences between operators such as merge() and mergeMap(), switch() and switchMap(), and concat() and concatMap().
After reading this book, he began applying these concepts daily when working on Angular projects. This approach is highly beneficial in many situations, making “RxJS in Action” a great resource for software developers and engineers aiming to master reactive programming and improve their coding skills in Angular.
4. Domain-driven design - The lesson of keeping it simple
Our Software Developer Juraj Sulimanović recommends “Domain-Driven Design,” a book he read about a year ago that his colleague Jerko suggested when they were refactoring an application and decided to implement the DDD design pattern.
The book did an excellent job at explaining what “business logic” is and how to model domains according to the same. This approach enables a systematic method to software architecture, which accelerates and simplifies architectural decisions.
The book helped him because it encouraged him to think more about software architecture and better understand what “separation of concerns” really means. It also helped him comprehend how complexity affects an application's health. When complexity gets out of hand, the software can no longer be understood well enough to be easily changed or extended.
The principles and concepts from this book appear in his daily work, making it an essential read for software engineers looking to deepen their understanding of software architecture and domain modeling.
P.S. It's not a book, but a seminal paper, “Attention is All You Need,” is something that can help you if you have an interest in making an AI model.
P.P.S. There is an additional book he would like to recommend; he isn’t finished yet, but he is currently in the midst of reading it: “Gödel, Escher, Bach: An Eternal Golden Braid.”
5. Book series Succinctly - Crash course for software development
Quality Assurance Engineer Leo Cvijanović recommends the “Succinctly” series, a collection of books where each one covers a specific topic or area. These books are essentially “crash courses” that provide concise introductions to various subjects in the software development world.
He wanted to find a way to learn about a particular topic without having to piece together articles or watch tedious videos. About six months ago, he read his first book from the series, specifically on HTTP/HTTPS. This book introduced him to the content he needed to learn in a straightforward manner, which was necessary for his job.
The book helped him with API testing and gave him a better understanding of HTTP/HTTPS. Although the series doesn't offer revolutionary approaches, books simplify theory for beginners and are suitable for all knowledge levels. It caters to both newcomers and more experienced developers.
You can apply what you learned in these books daily in your work, which makes these books a practical resource for anyone looking to grasp essential concepts in software engineering quickly. For software engineers and QAs, the “Succinctly” series is a valuable tool for continuous learning and gaining a solid foundation in various topics.
6. Clean code - Keep it simple, stupid
Keep it simple, stupid! At least, that is what the book says. Software Developer Hrvoje Dumančić has another software engineer book to recommend! He came across “Clean Code” through his college peers.
He considers that the book significantly influenced his thinking and writing, teaching him to produce better, cleaner, and more readable code.
As the title suggests, “Clean Code” teaches you how to write code that is easy to read, resistant to errors, and unambiguous/clear.
The principles from this book are great to use and apply whenever possible. They will help you succeed in creating clean and efficient code. For software engineers and developers, “Clean Code" offers invaluable guidance on writing maintainable and high-quality code, making it an essential read in the field of software engineering.
7. Head first design patterns - Understanding design patterns through humor
Our Software Developer Vladimir Ščuric recommends the book “Head First Design Patterns: A Brain-Friendly Guide.” This book uses an illustrative and humorous approach to present the thought process and recognition of problems that can be solved using design patterns.
It has taught and continues to teach him how to recognize and implement various design patterns. The humor and the ducks in the strategy pattern particularly stand out!
Although he first read it two years ago on a colleague's recommendation, he still applies the principles from this book whenever possible. For software engineers and developers, “Head First Design Patterns” provides an engaging and effective way to understand and implement design patterns, making it a valuable resource for improving software design.
8. Mastering PostgreSQL - Small contributions for a bigger picture
With his impressive book collection, our Software Developer Jerko Čulina recommends the book “Mastering PostgreSQL 13: Build, administer, and maintain database applications efficiently with PostgreSQL.”
The book helped him learn some internal aspects of the database, enhancing his understanding of what happens behind the scenes and how to perform certain tasks more effectively in PostgreSQL.
“To be honest, I didn't have one book that wowed me. However, I read over 20 software engineering books, and each contributed a small part to my knowledge. Each one was like a piece of a bigger picture.”
Although this is a blog about the best software engineering books, Jerko would like to highlight that one of his truly eye-opening experiences was a lecture on Elixir by Saša Jurić. He says this lecture significantly influenced him before he even started working as a programmer. So, if you are interested in Elixir, check out some of Saša Jurić's blogs, videos, or podcasts!
9. The pragmatic programmer - Embracing the garden mindset
Our software developer, Manuela Turić, recommends the book we mentioned at the beginning, “The Pragmatic Programmer.” Our Head of Engineering, Matej Dragun, recommended it to her as part of her KPI, but he got the recommendation from one of our Tech Leads, Marko Meić Sidić.
This book stood out to her because it explains real-life situations in a way that everyone, from developers to other team members, can relate to and learn from at least one chapter.
It taught her how to approach problematic situations and resolve them more effectively, and it reassured her that some mistakes she noticed in her work are completely normal and commonly made until pointed out.
One part that particularly stood out to her was the comparison between the mindset of developers and business analysts. She recalls,
“Our BA often says that we are a construction site. The book pointed out that such thinking is more typical of managerial roles, while developers think of the project as a garden.
In a construction site, once the building is completed, it requires little maintenance, whereas a garden, like every project, needs constant upkeep.”
Initially, after reading the book, she applied its lessons more frequently. However, she mentioned that she would like to revisit the book to implement more of its insights into her daily work.
Bonus recommendation - Rework
While this blog has focused on the best software engineering books, we have one additional book recommended by our CEO, Martin Morava, called “Rework.”
“Rework” emphasizes simplifying work and processes. Its core message is to do things quickly, see how they work in practice, and then make necessary adjustments rather than spending too much time planning and analyzing without taking action.
“While I've always aimed for simplicity and efficiency, Rework provided clear guidelines on how to approach certain business processes and solve problems on the go, significantly enhancing my personal work process,”
said Martin.
One of the quotes that stood out to him is from the chapter “Planning is guessing”:
“Why don't we just call plans what they really are: guesses. Start referring to your business plans as business guesses, your financial plans as financial guesses, and your strategic plans as strategic guesses. Now, you can stop worrying about them as much. They just aren't worth the stress.”
So many books, so much code to write
Of course, these are just some of the software engineering books out there, and we are aware there are other books that would enhance your knowledge and provide valuable insights into the tech industry.
We hope there is something for everyone here, whether you want to learn a programming language or need a practical handbook to help you prepare for a coding interview.
If you appreciate quality over quantity and work with devotion, feel free to check our careers page. You can see open positions or send an open application, and who knows, maybe during the interview process, you will be the one recommending software books to us.