Fans pick 91 books like Domain-Driven Design

By Eric Evans,

Here are 91 books that Domain-Driven Design fans have personally recommended if you like Domain-Driven Design. Shepherd is a community of 12,000+ authors and super readers sharing their favorite books with the world.

When you buy books, we may earn a commission that helps keep our lights on (or join the rebellion as a member).

Book cover of Team Topologies: Organizing Business and Technology Teams for Fast Flow

João Rosa Author Of Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture

From my list on a people first approach to technology.

Why am I passionate about this?

I’m puzzled by how people and technology evolve—as humankind we created all of these wonders to make our life easier. At the same time, I feel that we are more focus on the technology and processes, rather than people. It drew me to the topic of sociotechnical systems, which fascinates me. I’ve formal education in IT, and everything is binary; however, during my career I was drawn to the intersection of technology and people. My mission in life is to support a new generation of leaders that want to create an organisational environment that puts people in the center! 

João's book list on a people first approach to technology

João Rosa Why did João love this book?

I love pattern languages. And Team Topologies brings patterns for team types and their interactions. Most importantly, they address fundamental problems of the software industry: how teams organise for fast flow, and how teams cope with cognitive load. The book steams from the author's experience in the DevOps community, and it is widely used across the world. Last but not least, Team Topologies give us a language that support organisation evolution.

By Matthew Skelton, Manuel Pais,

Why should I read it?

2 authors picked Team Topologies as one of their favorite books, and they share why you should read it.

What is this book about?

Companion book Remote Team Interactions Workbook now available!


Effective software teams are essential for any organization to deliver value continuously and sustainably. But how do you build the best team organization for your specific goals, culture, and needs?


Team Topologies is a practical, step-by-step, adaptive model for organizational design and team interaction based on four fundamental team types and three team interaction patterns. It is a model that treats teams as the fundamental means of delivery, where team structures and communication pathways are able to evolve with technological and organizational maturity.


In Team Topologies, IT consultants Matthew Skelton and Manuel…


Book cover of Unleash Your Complexity Genius: Growing Your Inner Capacity to Lead

João Rosa Author Of Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture

From my list on a people first approach to technology.

Why am I passionate about this?

I’m puzzled by how people and technology evolve—as humankind we created all of these wonders to make our life easier. At the same time, I feel that we are more focus on the technology and processes, rather than people. It drew me to the topic of sociotechnical systems, which fascinates me. I’ve formal education in IT, and everything is binary; however, during my career I was drawn to the intersection of technology and people. My mission in life is to support a new generation of leaders that want to create an organisational environment that puts people in the center! 

João's book list on a people first approach to technology

João Rosa Why did João love this book?

In my quest (you can also call it a professional career), I’m drawn to complexity since we create software for complex problems. There are books on Complexity Science; however, they are very academic. This particular book gives practical advice to cope with complexity. It acknowledges the balance between the emotional and rational sides and why we must bring our full-self to any aspect of our life. The “don’t be emotional, this is work” proves to be a threat to our mental well-being and kills innovation in a company. In the book, the authors explore how to listen to our bodies in the face of complexity in an accessible way.

By Jennifer Garvey Berger, Carolyn Coughlin,

Why should I read it?

1 author picked Unleash Your Complexity Genius as one of their favorite books, and they share why you should read it.

What is this book about?

There is a complexity paradox that we all need to understand. We humans have a natural inclination towards connection, engagement, and creativity - all necessary skills to thrive in complexity. The problem is that the stress caused by uncertainty and ambiguity makes it difficult to tap into this inclination when we need it the most. This book offers a set of practices that help you not only understand complexity but actually hack into your own nervous system to bring your natural capacities back online. By paying close attention to your body, redefining your emotional experiences, and connecting more deeply to…


Book cover of Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations

Tanya Janca Author Of Alice and Bob Learn Application Security

From my list on DevSecOps (it is just like DevOps, done securely).

Why am I passionate about this?

I have worked in IT for over 25 years, creating and securing software. I am completely obsessed with ensuring that our software is more reliable, that its integrity can be trusted, and that it keeps our secrets safe. I am not only a computer scientist but an ethical hacker who works hard to create a dialogue between software developers and all of the people who work in our security industry. I am a teacher, a community leader, and a computer nerd who shares messages and lessons wherever she goes.

Tanya's book list on DevSecOps (it is just like DevOps, done securely)

Tanya Janca Why did Tanya love this book?

Accelerate is a book about data. The authors used data collected during their PhD projects in order to prove The DevOps is effective.

They have all sorts of different ways to measure DevOps, it sufficiency, and the fact that way more projects succeed when you do DevOps, rather than waterfall methodology.

The book essentially show can be used as evidence of return on investment when modernizing your IT department. I am a person who loves data, and thus I absolutely love this book. Also, if you listen to the audiobook version, one of the authors reads it to you and her personality really shines through in a fun way.

I really enjoyed listening to Nicole read a book about to me about data!

By Nicole Forsgren, Jez Humble, Gene Kim

Why should I read it?

3 authors picked Accelerate as one of their favorite books, and they share why you should read it.

What is this book about?

Winner of the Shingo Publication Award


Accelerate your organization to win in the marketplace.


How can we apply technology to drive business value? For years, we've been told that the performance of software delivery teams doesn't matter that it can't provide a competitive advantage to our companies. Through four years of groundbreaking research to include data collected from the State of DevOps reports conducted with Puppet, Dr. Nicole Forsgren, Jez Humble, and Gene Kim set out to find a way to measure software delivery performance and what drives it using rigorous statistical methods. This book presents both the findings and…


Book cover of Design for Safety

João Rosa Author Of Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture

From my list on a people first approach to technology.

Why am I passionate about this?

I’m puzzled by how people and technology evolve—as humankind we created all of these wonders to make our life easier. At the same time, I feel that we are more focus on the technology and processes, rather than people. It drew me to the topic of sociotechnical systems, which fascinates me. I’ve formal education in IT, and everything is binary; however, during my career I was drawn to the intersection of technology and people. My mission in life is to support a new generation of leaders that want to create an organisational environment that puts people in the center! 

João's book list on a people first approach to technology

João Rosa Why did João love this book?

Technology allowed us to share information instantly; it also enabled the creation of new products. However, there is the reverse of the coin, where technology is used for abuse. Eva's book comes from her experience with survivors of abuse, and she shows how technology can be abused, and what we can use in our design process to create products that take safety into consideration. It is a must-read for anyone involved in the creation of digital products.

By Eva PenzeyMoog,

Why should I read it?

1 author picked Design for Safety as one of their favorite books, and they share why you should read it.


Book cover of Domain-Specific Languages

Alexander Granin Author Of Functional Design and Architecture

From my list on domain modeling.

Why am I passionate about this?

If someone had told me during my early professional years that I would become a strong advocate for functional programming and the author of a fundamental book on functional software engineering, I would have found it hard to believe. Was functional programming truly worth dedicating my life to? However, once I experienced the sheer beauty of functional programming, there was no turning back. I delved deep into Haskell and functional C++, and began writing articles, giving talks, and developing various technologies. I realized that I possessed a truly unique perspective on approaching software engineering in functional languages, and that there was a significant knowledge gap that needed to be filled for the benefit of all.

Alexander's book list on domain modeling

Alexander Granin Why did Alexander love this book?

It was a wonderful time when I first embarked on my programming journey.

I felt an immense sense of power over computers and had countless ideas on how programming could improve my life and the lives of others. Everything seemed within reach, and I approached the world of programming with great enthusiasm in the early 2000s.

However, reality hit me like a cold shower when I started delving into actual software development. I quickly realized that it was far more challenging than just writing code.

Each programming language and technology had its hidden complexities and treacherous pitfalls. Every domain was rife with intricate nuances that had to be understood before attempting to develop software within it. I soon discovered that there was no such thing as a "perfect solution" that could be universally applied.

As I ventured into working with real-world domains, I confronted the daunting task of addressing the…

By Martin Fowler,

Why should I read it?

1 author picked Domain-Specific Languages as one of their favorite books, and they share why you should read it.

What is this book about?

When carefully selected and used, Domain-Specific Languages (DSLs) may simplify complex code, promote effective communication with customers, improve productivity, and unclog development bottlenecks. In Domain-Specific Languages, noted software development expert Martin Fowler first provides the information software professionals need to decide if and when to utilize DSLs. Then, where DSLs prove suitable, Fowler presents effective techniques for building them, and guides software engineers in choosing the right approaches for their applications.

This book's techniques may be utilized with most modern object-oriented languages; the author provides numerous examples in Java and C#, as well as selected examples in Ruby. Wherever possible,…


Book cover of Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#

Enrico Buonanno Author Of Functional Programming in C#

From my list on to learn to think like a functional programmer.

Why am I passionate about this?

I'm a programmer with a desire to constantly learn and improve. I have many years of experience in writing mission-critical software in highly event-driven areas such as FinTech and online auctions. Through interesting and challenging projects, I've always been fascinated by trying to generalize and abstract what it is that makes good code; so things like design patterns and best practices were just up my street. As I expanded this personal research, I found that functional programming provided many interesting techniques, but that many professionals in the industry were unaware of them. This is why I decided to show these techniques and their benefits to a wider audience through my book Functional Programming in C#.

Enrico's book list on to learn to think like a functional programmer

Enrico Buonanno Why did Enrico love this book?

Many functional programming books concentrate on the detail of functional techniques (things like recursion or higher-order functions), often leaving open the gap between these techniques and their concrete application to solve everyday programming tasks.

This was one of the reasons I wrote my book, and one source of inspiration for me was the work of F# evangelist Scott Wlashin.

For many years, Scott has been showing how he applies functional thinking in his daily practice centered around e-commerce, through blog posts on his popular site and his talks at programming conferences. At popular request, he's organized these ideas into his book Domain Modelling Made Functional.

The examples are practical enough that every business application programmer will be able to relate to them, and his explanation of functional programming techniques and ideas is clear and rigorous. Although Scott encourages the adoption of F# (the functional-first language of the .NET family), these…

By Scott Wlaschin,

Why should I read it?

2 authors picked Domain Modeling Made Functional as one of their favorite books, and they share why you should read it.

What is this book about?

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality. Domain-driven design is a well-established…


Book cover of Function and Reactive Domain Modeling

Alexander Granin Author Of Functional Design and Architecture

From my list on domain modeling.

Why am I passionate about this?

If someone had told me during my early professional years that I would become a strong advocate for functional programming and the author of a fundamental book on functional software engineering, I would have found it hard to believe. Was functional programming truly worth dedicating my life to? However, once I experienced the sheer beauty of functional programming, there was no turning back. I delved deep into Haskell and functional C++, and began writing articles, giving talks, and developing various technologies. I realized that I possessed a truly unique perspective on approaching software engineering in functional languages, and that there was a significant knowledge gap that needed to be filled for the benefit of all.

Alexander's book list on domain modeling

Alexander Granin Why did Alexander love this book?

I'm a devoted advocate of functional programming and a passionate Haskell enthusiast.

Ironically, there was a time in my life when I was a student and held the belief that functional programming was merely an impractical academic pursuit.

However, I soon had a revelation that the techniques I employed in C++ to mitigate the inherent unsafety of the language actually aligned with the core principles of functional programming: immutability, purity, and composability.

This realization left a profound impression on me, prompting me to delve into learning Haskell. It proved to be a pivotal moment that significantly shaped my entire career trajectory.

As I delved deeper into functional programming, I discovered a significant void in terms of software engineering practices that were prevalent in the realm of object-oriented programming.

Drawing from my experiences in C++ and C#, I noticed numerous gaps in our understanding of how to build robust applications using…

By Debasish Ghosh,

Why should I read it?

1 author picked Function and Reactive Domain Modeling as one of their favorite books, and they share why you should read it.

What is this book about?

Functional and Reactive Domain Modeling teaches readers how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. It begins with the basics of functional

programming and gradually progresses to the advanced concepts and patterns needed to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types,

typeclass based design, and isolation of side-effects can make models compose for readability and verifiability.



On the subject of reactive modeling, the book focuses on higher order

concurrency patterns like actors and futures. It uses the Akka framework…


Book cover of Refactoring: Improving the Design of Existing Code

Federico Kereki Author Of Mastering JavaScript Functional Programming: Write clean, robust, and maintainable web and server code using functional JavaScript and TypeScript

From my list on the theory and practice of computer programming.

Why am I passionate about this?

I have been working with computers for decades now – having started with programmable handheld calculators and working my way up and down through mainframes, mini- and micro-computers. I always thought there is an art to writing software, and that good software can be read and admired. Maintainability, readability, and testability are some core needs for software, and after going through many programming paradigms, I feel that functional programming (FP) is the way to go – and several modern web frameworks agree. JavaScript (and now, TypeScript) are essential to web development, and I wanted to show how FP could be successfully used with those languages, and thus my book.

Federico's book list on the theory and practice of computer programming

Federico Kereki Why did Federico love this book?

This book is different from the others I recommended, because its focus is not really on creating algorithms, but rather on how to improve code with a systematic process, keeping functionality but enhancing quality.

The author shows several practical techniques that he applies to real-world problems and empower you to elevate your code's quality and adapt it seamlessly to changing needs. It's not just about writing code; it's about becoming a more effective and confident developer.

I consider this book a companion on the journey to mastering the craft of coding. With it, you’ll always be able to achieve higher-quality code, no matter the original version of the code.

By Martin Fowler,

Why should I read it?

2 authors picked Refactoring as one of their favorite books, and they share why you should read it.

What is this book about?

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use…


Book cover of Growing Object-Oriented Software, Guided by Tests

Jan Van Ryswyck Author Of Writing Maintainable Unit Tests: Mastering the Art of Loosely Coupled Unit Tests

From my list on starting your software developer journey.

Why am I passionate about this?

I’m a professional software developer for more than 22 years now. I’ve used many programming languages, platforms, frameworks, etc. throughout my career. However, the only constant for me personally was the practice of Test-Driven Development. I’ve never stopped learning about the principles and practices behind it, and it paid huge dividends throughout my career. I’m very humbled and grateful to be able to learn from all those amazing people over the years, that I decided to write a book on the topic. Giving back some of the knowledge that I gathered about TDD throughout 18+ years. 

Jan's book list on starting your software developer journey

Jan Van Ryswyck Why did Jan love this book?

I must admit that the first time I read this book, it completely didn’t resonate with me. Sure, I picked up a couple of very important concepts here and there. One of those concepts is the “Test Data Builder”. However, some of the techniques I completely rejected. It took me a couple of years to start opening up to the practices described in this book. After a second read, I came to the conclusion that this excellent work deserved more credit. That’s why I added it to this list. This book shaped my entire thinking around Outside-In TDD, which is a very important approach to guiding well-designed software systems.     

By Steve Freeman, Nat Pryce,

Why should I read it?

1 author picked Growing Object-Oriented Software, Guided by Tests as one of their favorite books, and they share why you should read it.

What is this book about?

Foreword by Kent Beck

"The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows." --Ward Cunningham

"At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper." --Robert C. Martin

"If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book."--Michael Feathers

Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your…


Book cover of Design Patterns: Elements of Reusable Object-Oriented Software

Federico Kereki Author Of Mastering JavaScript Functional Programming: Write clean, robust, and maintainable web and server code using functional JavaScript and TypeScript

From my list on the theory and practice of computer programming.

Why am I passionate about this?

I have been working with computers for decades now – having started with programmable handheld calculators and working my way up and down through mainframes, mini- and micro-computers. I always thought there is an art to writing software, and that good software can be read and admired. Maintainability, readability, and testability are some core needs for software, and after going through many programming paradigms, I feel that functional programming (FP) is the way to go – and several modern web frameworks agree. JavaScript (and now, TypeScript) are essential to web development, and I wanted to show how FP could be successfully used with those languages, and thus my book.

Federico's book list on the theory and practice of computer programming

Federico Kereki Why did Federico love this book?

Of all the books I recommend, this is practically a sort of personal bible, which I very frequently consult.

This book doesn't just show you how to code; with realistic patterns and real-world examples, it's like having experienced mentors guiding your every keystroke. These patterns aren't just snippets; they're blueprints for building robust, flexible software.

I think the book is practically mandatory for all developers, novice or seasoned. It transformed how I approach problems, teaching me techniques I use daily in systems design and development.

By Erich Gamma, Richard Helm, Ralph Johnson , John Vlissides

Why should I read it?

1 author picked Design Patterns as one of their favorite books, and they share why you should read it.

What is this book about?

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.


The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the…


Book cover of Team Topologies: Organizing Business and Technology Teams for Fast Flow
Book cover of Unleash Your Complexity Genius: Growing Your Inner Capacity to Lead
Book cover of Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations

Share your top 3 reads of 2024!

And get a beautiful page showing off your 3 favorite reads.

1,629

readers submitted
so far, will you?

5 book lists we think you will like!

Interested in software, object-oriented programming, and software engineering?

Software 61 books