DDD领域驱动 - 引言

164 阅读7分钟

一、开篇,感悟

我已经忘记了何时开始接触领域驱动设计(DDD)这个理念,但我知道,我已经走过了很长的一段学习路程。在真正理解了这个概念后,我感受到了个人能力的飞跃,并成功的升职加薪。正是基于我对DDD的理解和体验,我决定写一系列关于领域驱动的文章。这不仅仅是因为我认为它可以明显改变我们的思考方式,而且更重要的是,它的核心理论是关于如何更好地理解和处理业务,而非单纯的技术知识。

在初次学习领域驱动设计时,我也曾经感到迷茫和困惑,沉浸在众多的资料和代码中,走了不少弯路。我为了实践领域驱动而盲目地将其应用在项目中,结果并不理想。然而,随着我对此理念的深入理解,我开始明白了领域驱动设计真正的内涵。因此,我写这个系列的目的,就是和大家分享我对DDD的理解和体验。

需要说明的是,我的文章可能不会涉及太多的代码技术知识,毕竟已经有许多的文章在这方面做了深入的探讨。这里主要通过一些我经历的case去引导出我的理解和领域驱动设计的内在含义和价值。

二、探索抽象,探索“道”

“道可道,非常道。”这句源自道德经的经典语句,也正是对应了我们编程学习中至关重要的一课抽象。在我理解中,抽象应该是技术研究中最具挑战性并且持久的一项学习任务。抽象的理念恰如道德经中描述的道,无形又无质,每个人对其理解都有所不同。

我之所以谈及这些,是因为我发现,领域驱动设计(DDD)极大地增强了我的抽象思维能力,这种提升促使我突破了长久以来的瓶颈。

作为本系列的开篇,我希望通过此文分享DDD是如何提升我的抽象能力的。在我看来,我们的技术职业生涯实际上是由一条线定义的(其为阴阳)。上线是总结能力、表达能力和沟通能力,而下线则为技术能力。这两者间的关系并不大,但保持两者之间的平衡至关重要。

在实际中确实偏科的人依然能在某一方面达到极高的位置,比方说技术能力特别好,或者说沟通能力特别好。但之所以强调保持平衡,是因为能达到极致的人毕竟是少数,他们一定是天才中的天才。而大多数人,包括我,都是普通人,所以保持技术能力与其他能力间的平衡,可能更符合大多数人的发展路线。

三、上线与下线

我在前文中提到了决定技术职业生涯的上下线,现在我们来深入探讨一下这个概念。其实无论上线还是下线,我们都离不开一个核心词汇——抽象。这不只包括上线的总结、表达以及沟通,也包括下线的技术能力。如果你无法理解为何他人如此行事,那你在遇到类似情境时,也就无法得知如何操作。就比如你在阅读一段源代码时,尽管你理解了其实现原理,但若你不明白为什么要这么做,那么你真正提升的只是对代码的熟悉程度而已。这就好比《论语》中所说“知其然,亦须知其所以然”。只有真正理解了所学之物,才能使之成为你自身的知识和能力。

上线其实很好理解,有了这三种能力你就拥有了架构、汇报与实施的能力,这也是作为一个管理型技术所必须掌握的东西。

下线其实就是基本功,毕竟作为一个技术人,基本功扎实不扎实一眼就可以看出来,也是在整个技术团队里面大家最直观可以看到的东西。如果你上线很厉害,但是下线不好你会遭到很多人的鄙视。如果你下线很厉害,上线不好,也很难让别人看到。这也像上面所提到的,除非一端做到极致成为天才,要不然还是要注重两端的平衡才能更好的发展

四、抽象,总结,计划

这是开篇的最后一段了,初步的介绍下我理解的抽象,在总结一下这批文章所说的内容和后续的计划

4.1 抽象

抽象,不论是在业务领域还是技术层面,都扮演着极其重要的角色。技术上,当我们学习一种新的编程语言,或是深入研究某个中间件的源代码时,我们追寻的不仅是其实现方式,更是其背后的设计理念和创造过程。这种探寻本质上是对别人“道”(即抽象思维方式)的理解,并试图将其转化为自己的“道”。这个转换过程可能依靠突然的灵感,如果没有,则需要通过不断的学习、观察和交流来促成。

从业务角度来看,我认为系统就是对现实世界的一种抽象映射。要想开发出好的软件系统,就必须深入了解现实世界中的具体事物和流程。更重要的是,通过抽象的手段将现实问题转化为系统解决方案,这样才能在面对多变的现实情况时,以不变应万变。在后续的文章中,我也会分享一些具体的案例和方法来阐述这一点。

所述之处,无论是探讨中间件的技术实现还是构建业务系统,其核心都在于解决特定群体遇到的需求或问题。无论我们是从事技术工作还是业务开发,其实本质都是相同的——解决问题。因此,在这一过程中,如何在工作中走出自己的“道”,是我们的核心。这里引用南京某市民说过的一句话“认真是我们参与这个世界的生活方式,认真是我们改变这个世界的生活方式”。

4.2 总结与计划

本系列文章的核心思想在于强调抽象这一概念的重要性。不管是生活还是编程,一切事物都是相通的,所以我说抽象好似是“道”。也有很多人说,程序员和其他人的思考是存在区别,我相信这部分原因在于,作为一个技术行业的从业者,我们在学习过程中被迫的去学习抽象的理念。本系列将基于领域驱动设计(DDD)来阐述如何提升我的抽象思维能力,并配合实际案例进行讲解,希望可以为大家带来启发。

这一系列也可以看作是对我职业生涯前半段所做工作的总结和提炼。我将分享如何从一个基层技术人员成长为管理者的过程。正如开篇所述,我将不会太多地探讨具体的专业知识,而是着重讲述我解决问题的方式,以及怎么从 0 - 1 的去建设的一个系统或者团队,技术架构怎么映射团队架构。

接下来的更新频率可能是每周一次,每两周一次,也有可能这是最后一次更新。无论如何,我都非常乐意与大家进行交流。欢迎大家的提问和交流,我期待和你们分享我的经验和学习你们的经验。最后在重复下那句话认真是我们参与这个世界的生活方式,认真是我们改变这个世界的生活方式