烂翻译系列之学习领域驱动设计——前言

Foreword

前言

Domain-driven design provides a set of practices for a collaborative approach to building software from the perspective of the business—that is, the domain, and its problems that you are targeting. It was originally coined by Eric Evans in 2003 with the publication of what is fondly known in the DDD community as “The Blue Book.” The book’s title is Domain-Driven Design: Tackling Complexity in the Heart of Software.

领域驱动设计提供了一套从业务(即你所面对的领域及其问题)的角度开发软件的模式实践。它最初是由 Eric Evans 在2003年创造的,当时出版了被 DDD 社区亲切地称之为“蓝皮书”的《领域驱动设计: 处理软件核心的复杂性》。

While tackling complexity and providing a path to clarity is the goal of domain-driven design, there are so many great ideas that can be applied to even less complicated software projects. DDD reminds us that software developers are not the only people involved in building software. The domain experts, for whom the software is being built, bring critical understanding of the problems being solved. We create a partnership throughout the stages of creation as we first apply “strategic design” to understand the business problem, a.k.a. the domain, and break the problem down into smaller, solvable, interconnected problems. The partnership with the domain experts also drives us to communicate in the language of the domain, rather than forcing those on the business side to learn the technical language of software.

虽然解决复杂性和提供一条清晰的路径是领域驱动设计的目标,但还有许多伟大的想法可以应用到更简单的软件项目中。DDD 提醒我们,软件开发人员并不是构建软件的唯一参与者。领域专家,软件为他们而构建,他们带给我们对正在解决的问题的极其重要的理解。当我们首先应用“战略设计”来理解业务问题,也就是领域,并将业务问题分解成更小的、可解决的、相互关联的问题时,我们就在创造的各个阶段建立了伙伴关系。与领域专家的伙伴关系也促使我们使用领域的语言进行交流,而不是强迫业务人员学习软件的技术语言。

The second stage of a DDD-based project is “tactical design,” where we transform the discoveries of strategic design into software architecture and implementation. Again, DDD provides guidance and patterns for organizing these domains and avoiding further complexity. Tactical design continues the partnership with the domain experts who will recognize their domain language even as they look at the code built by the software teams.

基于 DDD 的项目的第二阶段是“战术设计”,我们将战略设计的发现转化为软件架构和实现。同样,DDD 为组织这些领域和避免进一步的复杂性提供了指导和模式。战术设计继续与领域专家的伙伴关系,即使他们看着软件团队构建的代码,他们也能识别出他们的领域语言。

Over the years since the publication of “The Blue Book,” not only have many organizations benefited from the ideas, but a community of experienced DDD practitioners has evolved. And the collaborative nature of DDD has resulted in this community sharing their experiences and perspective and creating tools to help teams embrace and benefit from these ideas. In a keynote at Explore DDD in 2019, Eric Evans encouraged the community to continue to evolve DDD—not only its practices but in finding ways to more effectively share its ideas.

自从“蓝皮书”出版以来,不仅许多组织从这些想法中受益,而且一个由经验丰富的 DDD 实践者组成的社区已经形成。DDD 的协作性质导致了这个社区分享他们的经验和观点,并创建工具来帮助团队接受这些想法并从中受益。Eric Evans 在2019年“探索 DDD”的一次主题发言中鼓励社区继续发展 DDD ーー不仅是其实践,而且是寻找更有效地分享其想法的方法。

And this brings me to why I am such a fan of Learning Domain-Driven Design. I was already a fan of Vlad through his conference speaking and other writings. He has a lot of hard-won experience as a DDD practitioner working on some deeply complex projects and has been generous in sharing that knowledge. In this book, he tells the “story” of DDD (not its history, but its concepts) in a unique way, providing a great perspective for learning. This book is aimed at newcomers, yet as a longtime DDD practitioner who also writes and speaks about DDD, I found that I learned so much from his perspective. I was eager to reference his book in my DDD Fundamentals course on Pluralsight before the book was even published and have already been sharing some of this perspective in conversations with clients.

这就是我为什么这么喜欢学习领域驱动设计的原因。通过 Vlad 的会议演讲和其他作品,我已经是他的粉丝了。他作为 DDD 从业人员,在一些非常复杂的项目工作中积累了来之不易的经验,并已慷慨地分享这方面的知识。在这本书中,他以一种独特的方式讲述了 DDD 的“故事”(不是它的历史,而是它的概念) ,为学习提供了一个很好的视角。这本书是针对新人,但作为一个长期的 DDD 从业者(也写作和谈论 DDD),我发现我从他的观点学到了很多。在这本书出版之前,我就迫不及待地想在我的 DDD 基础课程中参考他的书,并且已经在与客户的交流中分享了一些这方面的观点。

Getting started with DDD can be confusing. Just as we use DDD to reduce the complexity of projects, Vlad presents DDD in a way that reduces the complexity of the topic itself. And he does more than explain the principles of DDD. The latter portion of the book shares some important practices that have evolved from DDD, such as EventStorming, addresses the problem of evolving the business focus or organization and how this might affect the software, and discusses how DDD aligns with microservices and how you can integrate it with a slew of well-known software patterns. I think Learning Domain-Driven Design will be an excellent introduction to DDD for newcomers, and a very worthy read for experienced practitioners as well.

开始使用 DDD 可能会让人感到困惑。正如我们使用 DDD 来降低项目的复杂性一样,Vlad 以一种降低主题本身复杂性的方式来展示 DDD。他不仅解释了 DDD 的原理。书的后半部分分享了一些从 DDD 发展而来的重要实践,比如 EventStorming,解决了业务重点或组织发展的问题,以及这可能对软件产生的影响,并讨论了 DDD 如何与微服务保持一致,以及如何将其与大量众所周知的软件模式进行集成。我认为《学习领域驱动设计》对于新手来说是一个很好的 DDD 介绍,对于有经验的从业者来说也是一本非常值得一读的书。

Julie Lerman Software Coach, O’Reilly Author, and Serial DDD Advocate

Julie Lerman 软件教练,O’Reilly 作者,DDD 倡导者

posted @ 2022-10-02 20:37  菜鸟吊思  阅读(88)  评论(0)    收藏  举报