Books Every Software Engineer Must Read in 2024.

Dr Milan Milanović
12 min readMay 18, 2024

Last year, I wrote a list of books every developer needs to read. This year, I updated the list with new titles that I found interesting and important in different categories.

Books to read in 2024. Infographics

Here is the list, separated by sections:

General

1. The Pragmatic Programmer by David Thomas and Andrew Hunt.

This book provides technical and professional practical advice for developers. It examines what it means to be a modern developer, covering topics ranging from personal responsibility and career development to architectural techniques. Even though it was written in 1999, it is still valid in many aspects. The unique thing about this book is that it teaches you pragmatically with a collection of tips to improve the development process.

I wrote about the book here.

2. Modern Software Engineering by David Farley

This book focuses on building great software, where the author offers a solid framework to connect good practices such as Continuous Delivery (CD), Hexagonal Architecture, and Test-Driven Development to the main ideas in software engineering. He also writes about the history of software development and the ideas that have changed the industry.

3. Code Complete: A Practical Handbook of Software Construction by Steve McConnell

Again, one of the books written more than 15 years ago is still valid today. It deals with design, coding, debugging, and testing. In more than 900 pages, the authors describe how to write programs for people first and then for computers second, how to divide your code into domains, and how to master the human qualities of top coders (humility, curiosity, and, most importantly, keeping your ego in check).

4. Software Engineering at Google — by Titus Winters, Tom Manshreck, and Hyrum Wright (Free Ebook)

The Software Engineering at Google book is not about programming, per se, but about the engineering practices utilized at Google to make their codebase sustainable and healthy. In this book, you will learn the difference between software engineering and programming, why the Beyonce rule is essential, and how to shift left and properly test things. Also, you will learn why they are small and frequently release importance.

I wrote about the book here.

Good Practices

5. Clean Code by Uncle Bob Martin.

It is one of the most excellent software development books ever. It was written to teach software engineers the principles of writing clean programming code. The book contains many examples showing how to refactor code to be more readable and maintainable. In addition, it includes chapters on common mistakes made by all kinds of programmers and chapters explaining the SOLID principles of object-oriented design.

I recently gave a presentation on Clean Code development. You can look it up here.

6. Head First Design Patterns by Eric Freeman.

The book describes the leading software design patterns for creating more flexible, elegant, and reusable designs without rediscovering design solutions. It is written similarly to the For Dummies series of books, meaning it is easy for beginners to understand.

Take a look at my free book “Design Patterns in Use.”

7. Refactoring by Martin Fowler.

In this book, Martin Fowler discusses improving the design of existing code. Refactoring is changing a software system that does not alter the code’s external behavior but improves its internal structure. In the 2nd edition of the book, Martin used JavaScript instead of Java, which was used in the 1st edition.

Data Structures and Algorithms

8. Grokking Algorithms by Aditya Bhargava.

It is an easy-to-understand book on applying standard algorithms to developers’ daily practical problems. It starts with sorting and searching and then moves on to data compression and artificial intelligence with code samples in Python. Probably the best book to begin your algorithm journey with.

9. Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

It is one of the most famous books on in-depth algorithms (CLRS). It represents a comprehensive guide for all readers, from beginners to professionals. Each chapter is relatively self-contained and can be used as a unit of study. Algorithms are described in English and pseudocode, so they can be familiar even to someone who didn’t do much coding.

Data

10. Designing Data-Intensive Applications by Martin Kleppman

The book describes advanced data concepts, such as databases and data models, and a deep dive into distributed concepts, such as transactions, replication, consistency, etc. It is one of the most influential books in this category.

11. Learning SQL by Alan Beaulieu (Free Ebook)

This introduction to SQL will get you started quickly. The book will help you quickly understand all the SQL essentials, whether you need to create database applications, carry out administrative duties, or generate reports.

If you want to learn more about SQL, check out this text.

Testing

12. Growing OO Software by Tests by Steve Freeman.

The authors outline their procedures, design goals, and some equipment they use to complete the task. Next, you’ll understand how TDD functions on several levels through an extended worked example, utilizing tests to direct the code’s features and object-oriented structure and mock objects to find and then define links between objects.

13. Unit Testing Principles, Practices, and Patterns by Vladimir Khorikov.

The book demonstrates how to apply best practices to improve your unit tests. You’ll discover how to tell which tests are working, which require restructuring, and which must be removed entirely!

14. The Art of Unit Testing by Roy Osherove.

This book is focused on unit testing, which is crucial for any developer to do to deliver a good piece of software. The book explains the core competencies for unit testing, how to scope it, and what to unit test.

15. TDD by Example by Kent Beck.

TDD is a software engineering technique that has proven effective over time. In this book, Kent Beck teaches programmers TDD by example.

Software Architecture

16. Fundamentals Of Software Architecture by Mark Richards and Neil Ford.

This book offers the first thorough examination of software architecture’s numerous facets. It covers architectural characteristics, patterns, component selection, diagramming and presenting architecture, evolutionary architecture, and many other topics for aspiring and practicing architects.

17. Clean Architecture by Uncle Bob Martin.

The book introduces necessary disciplines and practices for software architects using design principles to address function, component separation, and data management. It shows how to use different high-level structures for various kinds of applications and how to define appropriate boundaries and layers.

Read my text on Clean architecture.

18. Software Architecture The Hard Parts by Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani.

This book reveals how to choose proper architecture for different solutions among various compromises. You will learn to analyze trade-offs, document your decisions, and understand the complexities of breaking apart monolithic applications. It also shows how to handle data in a highly distributed architecture.

Read my review of the book.

19. Domain Driven Design Quickly by Abel Avram and Floyd Marinescu (Free Ebook).

This is the best book on DDD. It shows the DDD approach with concrete examples that build an actual project. It also explains the hexagonal architecture typically associated with DDD. It is a summary of Eric Evans’s “Domain-Driven Design” book.

20. A Philosophy of Software Design by John Ousterhout.

This book explains how to break down complicated software systems into independently implementable pieces. After that, it discusses philosophical concerns about approaching the software design process and offers a list of design guidelines to follow. The book also presents a list of warning signs for bad design. It is a great companion to the Clean Code as it offers a different perspective.

Read my review of the book.

Distributed Systems

21. Understanding Distributed Systems by Roberto Vitillo.

The book teaches the fundamentals of distributed systems. This book is a great first book on distributed systems, and it introduces the network stack, data consistency models, scalability and reliability patterns, and much more.

22. Designing Distributed Systems by Brendan Burns (Free Ebook)

In this book, you will learn how patterns and reusable components enable the rapid development of reliable distributed systems, how to split your application into a group of containers on one machine using the sidecar, adapter, and ambassador patterns, and also to explore loosely coupled multi-node distributed patterns for replication, scaling, and communication between the components.

DevOps

23. DevOps Handbook by Gene Kim, Patrick Debois, John Willis, and Jez Humble.

The book is a continuation of The Phoenix Project. It attempts to define the guidelines for successful DevOps and dispel any lingering misconceptions about this subject. It is intended for everyone in the IT sector, from programmers to technology executives, and it should be attractive to seasoned practitioners and DevOps newcomers.

24. Continuous Delivery by Jez Humble and David Farley.

The writers present the foundations of a quick, dependable, low-risk delivery procedure. They then introduce the “deployment pipeline,” an automated mechanism for handling all changes from check-in to release. They then discuss the “ecosystem” required to support continuous delivery, including governance, infrastructure, data, and configuration management.

25. Accelerate by Nicole Forsgren, Jez Humble, and Gene Kim.

The authors examined what made successful technology organizations different from their less successful rivals. The book compiles years’ worth of thorough research from the State of DevOps Reports, which were based on 23,000 datasets from businesses worldwide. According to the study, four key metrics (Cycle Time, Deployment Frequency, Change Failure Rate, and Mean Time to Recovery) may be used to compare how organizations operate.

Check more book recommendations from this category in my DevOps Roadmap for 2024.

Machine Learning

26. The Hundred-Page Machine Learning Book by Andriy Burkov

The author of this short book offers a high-level review of various machine learning subjects that will be interesting to novices and prospective students who want to quickly learn about the breadth of opportunities provided by ML algorithms before delving more deeply into the issue.

27. Designing Machine Learning Systems by Chip Huyen

In this book, you will learn how to build and design holistic ML systems that are reliable, scalable, and maintainable. The author analyses each decision point in building such systems, from processing and training data to choosing features and monitoring them.

Leadership

28. The Five Dysfunctions of a Team by Patrick Lencioni

This book explores different weaknesses that can undermine any team. Those weaknesses are Absence of Trust, Fear of Conflict, Lack of Commitment, Avoidance of Accountability, and Inattention to Results.

Read more about it in my text.

29. Drive by Daniel Pink

This book focuses on understanding what truly motivates people. Pink argues that traditional methods based on rewards and punishments (extrinsic motivators) are often ineffective. Instead, he proposes that the key to motivation lies in intrinsic factors: autonomy (control over work), mastery (opportunity to improve skills), and purpose (a sense of working towards something meaningful).

Read my text about the book.

30. The Making of a Manager by Julie Zhuo

This guidebook is aimed at new managers, especially those unprepared for the role. Zhuo, a former tech executive, shares her experiences of being thrust into a leadership position at a young age. The book emphasizes that great managers are developed, not born. It offers practical advice on managing a team, from shifting a mindset from individual contributor to supporting others, providing feedback, and delegating tasks.

Personal Development

31. How to Win Friends & Influence People by Dale Carnegie

This classic self-help book provides timeless principles for building strong relationships and getting what you want out of life. It emphasizes the importance of being a good listener, showing genuine interest in others, and encouraging them to talk about themselves. The book also offers tips for praising others sincerely, avoiding arguments, and influencing people without causing resentment. It is one of the best books I read and has influenced me and my relationships.

32. Deep Work by Cal Newport

Cal Newport’s “Deep Work” argues that the ability to focus intensely on cognitively demanding tasks without distraction is becoming increasingly valuable in our information overload world. The book highlights the benefits of deep work, like improved learning and performance, and offers concrete strategies to improve this skill. The author proposes different deep work scheduling philosophies, from separating focused work from shallow tasks to integrating them in regular cycles. It is one of the most essential books for software engineers.

33. The 7 Habits of Highly Effective People by Stephen R. Covey

In this book, Stephen Covey outlines a path to personal and professional success through seven core habits. The first three focus on taking the initiative, setting goals, and prioritizing tasks. The next three emphasize win-win solutions, empathetic communication, and collaboration. Finally, the last Habit stresses the importance of continuous self-improvement across all dimensions of life.

You can read more about the book in my review (including the 8th Habit). It was one of the books that changed my life and career 10x.

34. Atomic Habits by James Clear

Atomic Habits explores the science of habit formation and explains how small, consistent changes can lead to remarkable long-term results. The book offers a practical framework for building good habits and breaking bad ones, focusing on the “habit loop” and using cues, cravings, responses, and rewards to create a system that will transform one’s behavior. This book is a must-read for everyone!

Check my book on setting and achieving goals to improve your personal and professional life, where you can learn more about habits formation.

Also, please check my list of the most outstanding software development books.

Of course, you cannot read all of these books in a year (correctly), but you can select from this list those most important to you in your current career/life situation and goals.

Part of my physical bookshelf (note that I mainly read ebooks these days)

Thanks for reading, and stay awesome!

To expand your knowledge and personal growth, subscribe to my free weekly newsletter with 30,000+ people: https://newsletter.techworld-with-milan.com.

Originally published at https://newsletter.techworld-with-milan.com on May 16th, 2024.

--

--