先有鸡还是先有蛋?这是领域驱动设计落地最大的困局

news/2025/1/22 17:52:59/文章来源:https://www.cnblogs.com/xiaoweiyu/p/18292835
本文书接上回 《关于领域驱动设计,大家都理解错了》
欢迎关注公众号“老肖想当外语大佬”: https://mp.weixin.qq.com/s/HHJ5vt2_iT0-CFcw0HcPnA

先有鸡还是先有蛋的困局

前文我们提出了“领域驱动设计是一种价值观”这个观点,那么落地领域驱动设计就是践行价值观的过程,实践过程中势必需要一些方法来指导,那么问题来了,一个团队要落地领域驱动设计,是先有认知还是先有方法呢?
 

 

如果团队没有“识别范围和边界是最重要的事”这样的认知,那么大概率也不会关注它,“方法”就无从谈起,如果没有“方法”,你大概率也体会不到“识别范围和边界是最重要的事”这样价值观带来的好处,那么就很难构建起这样的价值观,因此就陷入了一个“先有鸡还是先有蛋”的困局,这也是现实中大多数研发团队面临的困局,即使团队中有人意识到这个问题,普遍地也是无能为力。

 

核心问题是什么?

你可以审视一下自己的团队,在需求分析的时候,是否真的建立了需求边界的共识?产品经理在定义产品功能的时候,又是否真的把功能的边界、目的、以及对应的需求给团队讲明白了?再看看你的代码,是否每个类的职责和目的都是清晰的?
如果以上问题的答案都是肯定的,那么,你也不会觉得需求难分析、功能难设计、代码难修改了。我相信,大部分团队的答案,都是“否”,而且这些问题,最后都会以程序员背负着“迭代交付效率低下”这口大锅,然后拼命用加班来补偿而告终,然而这个锅的罪魁祸首却在立项的那一刻已经埋下了,很多的隐性代价在项目初期被忽视,无边界的问题、模糊的需求、凑合的建模、背离现实的扩展性设计、匮乏的测试用例等等一系列的不确定性,在团队的工作流程里一步步被放大,而这个锅该不该由流程下游才介入的程序员们来背,是值得商榷的。但组织的管理者并没有这个认知,没有这个判断力,他们只会看到工期紧任务重,程序员们出活慢。
那么问题来了,一个事情做不好,是决策者的锅大,还是执行者的锅大呢?
 

决策者是最大的绊脚石

在我看来,最大的锅应该是团队决策者的,首先,这一系列的问题本质就是没有意识到“把问题的边界和范围搞清楚”是最重要的事,下达的很多决策都是脱离实际的。
团队成员无法推动团队价值观的变化”,这是因为价值观的现实体现,就是决策结果,而团队的决策其实是由管理者最终拍板的,因此管理者的价值观就是团队价值观

 

设想一下,假如老板不期望员工加班,员工大概率不用加班,反之结果,就是普遍意义上的各种996、福报、奋斗逼。老板的价值观,就是企业的价值观,因为各种决策是老板做的,决策本身就是价值观的体现。放到研发团队里,团队主管就是那个下决策的人,诚然很多经验丰富的开发者、架构师对于软件设计有丰富的经验和独到的见解,仍然架不住领导一句“明天这个功能就得上线”、“客户要得急”、“先上线再说”。
所以我的观点是:
  • 决策者在做决策时,核心价值判断出现了偏差;
  • 决策者对自己的决策后果,缺乏充分的判断力;
所以,决策者是领域驱动设计落地最大的绊脚石
 

落地领域驱动设计的必要条件

要成功在团队中实践“领域驱动设计价值观”,就必须把识别和明确边界作为首要决策依据,那么需要做到下面几点:
  • 所有的需求都有明确的边界定义
  • 所有的功能设计都有明确的边界定义
  • 所有的业务模型都有明确的边界定义
  • 所有的代码都有明确的边界定义
而要做到这些,就必须由决策者直接或者授权团队在这些问题上做充分的沟通和讨论,所做的决定必须是明确的,哪怕是有限信息下的决策,也得明确有多少是确定的,有多少是团队建立了一个猜的共识,这些决策都明确的情况下,团队的最终执行,就一定是符合领域驱动设计价值观的。
 
此外,如果有下面两条,那么团队落地领域驱动设计的顺畅程度会大大提高:
  • 一套匹配的DDD战术框架
  • 一组执行力强的开发团队
这两条,我们在后续更具体实战操作中更详细地展开和说明。

关键角色的能力模型

既然,决策者是最关键的角色,那么这个角色需要具备哪些能力呢?
首先,决策者的核心职责如下:
  • 理解业务与需求
  • 业务建模
  • 确保研发按照模型交付
具象化出来就是“业务专家的话你听得懂”、“产品经理懂的你得懂”、“研发的方案你看得懂”,这个角色需要能够与各个角色充分地交流和协作,并且对技术有充分的了解,那么就必须有足够的“判断力”、“表达力”、“协作力”以及“技术功底”。

 

有这些能力做支撑,才能够在沟通互动中捕捉关键信息,识别问题的边界,给出匹配的方案,才能判断一个决策的范围和边界是否足够明确,是否在团队中建立了共识,是否明确了不可共识的部分。
 

改变的起点是相信“相信的力量”

在回到文章开头,要打破“先有鸡还是先有蛋”这个困局,需要团队管理者身上突破,管理者得先意识到,问题的边界、解决方案的边界的重要性,先理解系统迭代慢这件事背后的核心因素就是在决策时把很多需要明确的问题推迟了,这个推迟,导致了团队付出大量额外的代价来补偿,以应对决策时的不确定性,伪需求、没人用的功能、无意义的扩展性等等问题都是在一个个决策中产生的,而大家看到最终的结果,就是研发团队的效率低下,一个小小的功能都迭代不上去,这个锅扣在程序员身上是不符合事实的。
因此,要做出改变,先要相信“相信的力量”,你看到了这篇文章,尝试理解了“范围和边界是最重要的事”这样的价值观,那么接下来就是不断地在每次决策和讨论中实践它,不断自我审视自己的决策,是否把范围和边界弄清楚了,尽可能地向这个方向靠拢,我也相信,因为你的相信,一定能够收获到“相信”的价值。

 

 

不是决策者,我该怎么办

如果你不是决策者,而你又认同“领域驱动设计是一种价值观”,那么你有三个选择:
  1. 将这个观点与你的领导沟通,尝试推动领导与你建立共识,获取信任并帮助团队做决策;
  2. 努力自己成为决策者;
  3. 以上都行不通,也许你该换个更加开放组织了;

后续

到此,领域驱动设计的概念和核心落地的核心角色已经描述完毕,期待与大家对这些观点来讨论沟通。
接下来,将展开探讨作为领域驱动设计的核心角色,具体应该如何操作,帮助团队将这个价值观内化到日常工作行为中来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741353.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017年,我成为了技术博主

2017年9月,我已经大三了。 >>上一篇(爪哇,我初窥门径) 我大二学了很多java技术,看似我一会就把javaweb/ssh/ssm这些技术栈给学了。 这些技术确实不难,即便是我,我都能学会,门槛并不高。 但是,这也不是能随便百度学学,10分钟就懂了,学会了。 从理解技术的用途,…

一起了解自定义流程表单开发的主要优势

低代码技术平台、自定义流程表单开发的主要优势特点表现在哪来?当前,想要进行流程化办公,应用专业的软件平台产品是非常重要的。低代码技术平台拥有可视化操作界面、很灵活、易维护等优势特点,可以应用于很多中小型流程化办公中。那么,低代码技术平台、自定义流程表单开发…

[NodeJS] JavaScript模块化

这篇文章介绍了JavaScript模块化的发展历程及各种方案,包括IIFE、CommonJS、AMD、CMD、UMD及ESM。对比了各方案的特点和优缺点。同时,深入剖析了Node.js中CommonJS的模块加载机制。JavaScript诞生于1995年,一开始只是用于编写简单的脚本。 随着前端开发任务越来越复杂,Java…

论文阅读: 面向Planning的端到端智驾Planning-oriented Autonomous Driving

设计一个更优的、可理解的、面向最终目标的框架。基于这个面向Planning的思想,他们提出了 Unified Autonomous Driving (UniAD)方案,一种新的自动驾驶框架。这个方案从全局视角出发,让智驾的各个模块特征提取可以互相补充,各个任务之间可以通过统一的查询接口通信。在此基础…

基于FileZilla上传、下载服务器数据的方法

本文介绍FileZilla软件的下载、配置与使用方法~本文介绍FileZilla软件的下载、配置与使用方法。在之前的博客中,我们提到了下载高分遥感影像数据需要用到FTP(文件传输协议,File Transfer Protocol)软件FileZilla;这一软件用以在自己的电脑与服务器之间相互传输数据,在进行…

text1

sad das dasdasdgrdgt是g天热共同的sgtd发广泛的撒旦撒撒大大大叔

TextCNN: Convolutional Neural Networks for Sentence Classification

本文是CNN应用在NLP领域的开山之作。TextCNN的成功并不是网络结构的成功,而是通过引入已经训练好的词向量在多个数据集上达到了超越benchmark的表现,证明了构造更好的embedding,是提升NLP各项任务的关键能力。作者做了一系列实验,这些实验使用卷积神经网络(CNN)在预训练的…

Matlab图片的处理

上一章我们介绍了奇异值分解的理论原理,这一章我们使用奇异值分解来压缩图片 目录一、RGB模式(1) 灰色图片与彩色图片二、matlab进行图片压缩1.参数分析2.读取图像文件并进行转换3.进行奇异值分解4.将压缩后的图片保存5.实例演示(1)原图:(2)进行处理(3)处理后————保…

AI绘图实践-用人工智能生图助力618大促

现在各种AI大模型大行其道,前有GhatGPT颠覆了我们对对话型AI的原有印象,后有Sora文生视频,让我们看到了利用AI进行创意创作的无限可能性。如今各大公司和团队都争相提出自己的大模型,各种网页端和软件应用也极大地降低了我们使用AI作为生产力的门槛。 我这次就为大家带来使…

托寄物智能识别——大模型在京东快递物流场景中的应用与落地

一、前言 在现代物流场景中,包裹信息的准确性和处理效率至关重要。当前,京东快递在邮寄场景中面临着日益丰富的寄递品类和多样化的个性化需求。本文将深入探讨托寄物智能识别——大模型在京东快递物流场景中的应用与落地,分析其产生背景、应用效果及未来发展方向。 二、背景…

Golang 切片作为函数参数传递的陷阱与解答

作者:林冠宏 / 指尖下的幽灵。转载者,请: 务必标明出处。 GitHub : https://github.com/af913337456/ 出版的书籍:《1.0-区块链DApp开发实战》 《2.0-区块链DApp开发:基于公链》例子切片作为函数参数传递的是值 用来误导切片作为函数参数传递的是引用 函数内切片 append 引…