Praise for Applying Domain-Driven Design and Patterns
"I don't know what it was I professed to doing before I had added Domain-Driven Design and Test-Driven Development to my toolkit, but from my present perspective, I'm reticent to call it anything but chaotic hacking. Domain-Driven Design and Test-Driven Development are two approaches that have consistently guided me toward a practical application of software design principles, and brought my projects to fruition with healthy, sustainable software. This is a book that puts its money where its mouth is in terms of concretely communicating Agile software development practice. It's potentially one of the most impactful guides to software development success practices yet offered to the .NET software development community."
Scott Bellware, Microsoft MVP for C#, DDD and TDD Blogger
"Jimmy Nilsson does his readers a great service by showing them how to apply the foundational principles of enterprise application design and development taught by Evans, Fowler, and other thought leaders. The book uses a worked example not only to explain, but also to demonstrate Domain-Driven Design, Patterns of Enterprise Application Architecture, and Test-Driven Development. Jimmy's insight and experience make reading it a pleasure, and leave the reader with the certainty that they have learned from a master practitioner. Enterprise developers looking to master these principles will find the book a valuable guide."
Jack Greenfield, Enterprise Tools architect, Visual Studio Team System, Microsoft
"Good software architects reserve the right to get smarter. Beyond the goal of shipping their current system, they're on a quest to discover better ways to design and build software. This book is travelogue of sorts in which Jimmy documents his journey through a wide range of patterns, practices, and technologies, explaining how his thinking about enterprise systems has evolved along the way. If you're traveling the same road, this book is a good companion."
Tim Ewald, principal architect at Foliage Software Systems and author of Transactional COM+: Building Scalable Applications
"This book does an excellent job at making tangible the large but very important ideas of Domain-Driven Design."
Floyd Marinescu, author of EJB Design Patterns and creator of InfoQ.com and TheServerSide.com
"Understanding the concepts and driving forces in the problem domain is paramount to the success of software development. Jimmy Nilsson has drawn inspiration from the past ten years of studies into patterns and Domain-Driven Design as well as recorded his own experiences from concrete development projects. This book contains compelling examples of how theory can be translated into practice. It demonstrates the author's profound understanding of design choices and trade-offs involved in object-oriented development."
Anders Hessellund, IT University of Copenhagen, Denmark
"This book tackles an area that is a challenge for most developers on the .NET platform. As the patterns and practices architect who initiated and drove the efforts around enterprise guidance for .NET, I know how important this area is for our customers, and am painfully aware of the gaps that still exist in our guidance.
"I was thrilled to see Jimmy would be sharing his insights based on his experience doing DDD and TDD. I believe this topic can be best tackled at this point in time through a focus on simplicity, patterns, and awareness of the social aspects of building applications.
"I trust Jimmy's experience and knowledge of .NET, and have enjoyed his style of sharing concepts and stories. I can hardly imagine someone better suited to explain this topic on the platform I work on every day.
"I will definitively recommend Jimmy's book to my customers, my team, and other Microsoft engineers.
"Ultimately, I hope that our industry can get better at expressing rich concepts in code, and that it gets better at the social process of articulating and evolving shared knowledge. TDD and DDD lie together at the heart of this path."
Edward Jezierski, architect of Microsoft patterns and practices
"Jimmy has woven together best-of-bread techniquesDomain-Driven Design, Test-Driven Development, refactoring, and design patternsinto a convincing alternative to the Data-Driven Development style that has been the mainstay of Microsoft applications. The core of the book breathes life into the techniques advocated in Domain-Driven Design; it is relentlessly practical, gives the reader insight into the thought process that underlies applying proven techniques and technologies, and, like all of Jimmy's work, is an easy read well done Jimmy!"
Christian Crowhurst, analyst developer
"I've been working on a joint project with Jimmy for 18 months now. Jimmy really lives as he preaches. In this book he tells you how he is working in practice. He uses O/R Mapping and NHibernate daily and he also really uses TDD to help understand and distill the customer's business logic and to make sure that he only delivers tested, high-quality code. Just as he delivers a high-quality book containing tested concepts to you. Enjoy."
Dan Byström, software developer, www.visual-design.se/blog
"By showing how to apply Domain-Driven Design and enterprise application patterns, Jimmy makes a difficult topic approachable for a larger audience. This book has something for the experienced architect and aspiring pattern implementer alike. In fact, any developer or architect who wants to improve the way he/she designs and implements software solutions should read this book."
Per-Ola Nilsson, head of development and software architect for Luvit
"Constantly abreast with the latest trends in software development but never swept away by the hype, Jimmy expertly extracts the value and leaves the fluff behind. Always humble and with both his ears wide open, he is uniquely well suited to guide and enlighten the reader using the practical applicability as the standard, shunning the ivory tower. Jimmy doesn't offer his help from above he actually manages to convince us that we have just learned about the cutting edge from a peer."
Mats Helander, software developer, www.matshelander.com
"As with Jimmy's previous book, this book is a true masterpiece: a well-laid out balance between pragmatic software engineering and deep theory."
Frans Bouma, creator of LLBLGen Pro, weblogs.asp.net/fbouma
"With this book being based on solid ground, Jimmy tackles the real issues in applying Domain-Driven Design practices. Finally we have a manual to keep us from hitting the wall in coping with ever-increasing complexity in tomorrow's domain model-based enterprise applications."
Paul Gielens, senior consultant for Capgemini, weblogs.asp.net/pgielens
"Speaking from experience, combining the substance behind acronyms such as DDD, DP, and TDD in .NET can lead to very efficient and adaptive enterprise software architectures. This book outlines how, and why, these concepts together make such a powerful whole. Hence, the reader is given an invaluable shortcut to successful enterprise software architectures, making it a must read for any developer of such."
Martin Rosén-Lidholm, software architect for Exense Healthcare
"Do you want to build a high-quality enterprise system with object orientation and a relational database? Don't miss this one. Jimmy shows you how Test-Driven Development can be the driving force throughout the whole project. He shows how to map the OO design to the database, a step often treated very briefly in literature, which alone makes the book worth the money. There are also plenty of design tips and discussions so you can follow his reasoning."
Ingemar Lundberg, passionate software developer, www.ingolundberg.com
"This important and timely book is a must read for anyone wanting to get into Domain-Driven Design in C#."
Gregory Young, Microsoft MVP for C#, independent consultant
"This book deals with several important concepts used in modern software development, such as Test-Driven Development, refactoring, patterns, and of course, Domain-Driven Design. Jimmy Nilsson writes about these things in a very conversational tone, and you almost get the feeling that he is actually sitting next to you, showing you his examples and having a conversation about the pros and cons of different solutions with you personally."
Niclas Nilsson, software developer and educator for Activa; not a brother to Jimmy, not even related
"This book does an excellent job of bringing Domain-Driven Design (DDD) into practical context by bridging the gaps between different abstraction levels starting from the business perspective down to the system level. The book is ideal for software architects and developers because it is written in a way that allows it to be used as a primer or reference. The author excels in presenting all aspects of DDD in a way that is not only educational but also fun to read."
Gunther Lenz, program manager and author
"Not so very long ago, I blogged about my overall feeling that as architects we may be failing to provide enough guidance for developers to sort through the hundreds of different ways to build software. There are many ideas out there that are excellent by themselves and come with perfectly well-reasoned justifications, working examples, and an impassioned community of believers. Very few of them can be used by themselves to build applications, much less systems of applications and services. This leaves it up to developers to find ways to put the individual ideas together into applications. This is always much harder in reality than the proponents of any particular approach, like to think about. Developers, on the other hand, need to get some work done and often don't care to wade through all this every time they start a new application. This is true even when they are truly interested in the potential gains of new approaches or ideas. Jimmy's book is pointed directly at this problem. How do you apply some of the great ideas that have come forward in the last few years to real, live development? I think this book does a great job of both explaining the underlying ideas with enough detail to make them practical and putting the group of ideas together in a way that will help developers see a path from start to end. Domain-Driven Design, Test-Driven Development, Dependency Injection, persistence, and many other practical issues are covered. After reading this book, I think a reader will really be able to take these important ideas and use them together effectively. Considering the great value of the individual ideas presented, but the limited numbers of examples of people really using them, this work represents a great win for us all. I highly recommend it."
Philip Nelson, chief scientist for PAi, xcskiwinn.org/community/blogs/ panmanphil/default.aspx
"Taking the leap from a data-centric mindset to the deeper realization of OOP found in Domain-Driven Design, Test-Driven Development, object/relational persistence, and other Agile methods and patterns can be an arduous and disorienting undertaking for the uninitiated.
"With a patient, pragmatic, and mentoring style, Jimmy takes the reader along for the leap, exploring the issues and the options, giving sound advice along the way. This book shows you how to integrate the various methods and patterns into a fully coherent approach to designing and creating superbly maintainable .Net software."
George Hicks, senior developer for Property Works
"If you have ever read his blog, you already know that Jimmy Nilsson likes to challenge established 'truths' in the .NET community, looking for better ways to design software. He acknowledges that software design is hard, and that one-size-fits-all solutions do not work; pros and cons have to be balanced in context of the problem at hand before ruling a winner. For building testable and maintainable software with complex business requirements, Jimmy chooses to use Domain-Driven Design, and he brings along a toolbox of proven and established principles, patterns, and practices to carry it out. Jimmy's informal writing style and use of examples and Test-Driven Development make this book very approachable, especially considering all the ground that is covered. Because he is on top of the DDD stuff, Jimmy (and friends) brings you distilled knowledge on, and references to, many of the most valuable techniques and resources within software development today. I believe this book to be a valuable guide to applying DDD, and for developers who want to improve their general design skills."
Andreas Brink, software developer
"In Applying Domain-Driven Design and Patterns, Jimmy Nilsson strengthens his position as an authority on applied software architecture. With a nice blend of his personal thoughts on the subjects, Jimmy takes the reader on a tour through most of the modern must-know design techniques, leaving nothing untouched. Jimmy shows how to implement the thoughts of other, more theoretical thought leaders in an appealing and easy to follow structure. I am certain that Applying Domain-Driven Design and Patterns will become a mandatory title in the enterprise bookshelf."
Mikael Freidlitz, vice president of Content and Knowledge Programs at IASA
"Domain-Driven Design is an important technique that can help produce quality business applications that evolve with the needs of the business. In an ideal world, practicing DDD would be about OO designbut in reality, the technologies we work with impose numerous constraints.
"This book tackles that challenge head on, bridging the gap between DDD concepts and the action of translating them into practice on the .NET platform. Jimmy not only has a deep understanding of DDD and enterprise technologies, but has learned many lessons from his extensive industry experience, and takes a refreshingly pragmatic approach. This is a valuable book."
Rod Johnson, founder of Spring Framework, CEO of Interface21
"This is a great book. It takes you on a hands-on informative travel in the world of Domain-Driven Design. A great number of important issues are discussed, explained, and shown in relevant contexts. These will give you a great foundation when you are working with your own Domain Model-based system. Both the actual development techniques as well as practical work methods (as incorporation of Test-Driven Development) are discussed."
Trond-Eirik Kolloen, software architect and developer
"Can we focus on the house projects now?"
"Aaa, dee, dee, dee, pee..." (Swedish pronunciation of the book abbreviation)
Leo, son, four years old
"Dad, do you really think someone will read it?"
Tim, son, eight years old