DDD拆分系统、癌症和神医(1)

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


这些年,我在给开发团队讲授分析和设计技能时,常会有学员质疑:老师,你讲的类、状态机,这些都太难太细了,我最想要了解的是如何拆分系统,能不能给一个简单明了的方法?

有的同学在开始咨询时甚至发过来一个DDD圈子人士的课纲,你看,人家说了怎么拆分系统,咱这边有嘛?

还有的同学受DDD圈子毒害太深,甚至和我“探讨”:如果把大的系统拆分成很小很小的小块,小到不用分析,这不就不用UML了吗,而且还可以多个团队并行开发! 

图片

**********

首先说我的观点

(1)(以真正获得收益为目的)分解系统是一件非常非常复杂的事情

(2)DDD圈子的各种“简单易行”的方法等同于瞎蒙

(3)稍微靠谱一点的分解依据可能是状态机,但这需要全面的建模技能

(4)警惕“大道至简”的骗子话术

一、(以真正获得收益为目的)分解系统是一件非常非常复杂的事情

【如果把大的系统拆分成很小很小的小块,小到不用分析,这不就不用UML了吗,而且还可以多个团队并行开发!】

啊,这可太妙了——怎么做呢?

其实类似的话,很多年前有一位计算机科学的博士说过。在《软件方法》第1章中,我谈到了这个问题:

《软件方法》第1章:口号、方法、染色,https://mp.weixin.qq.com/s/Dr9t4Py1jHS62IBwYx_TJw 

图片

我也来模拟一下:

怎样将大象放进冰箱?分三步:(1)打开冰箱门(2)放入大象(3)关上冰箱门

怎样拥有一个亿存款?分三步:(1)赚一个亿(2)选一家银行(3)把钱存起来。

怎样才能本周末中奖双色球?分三步:(1)挑出本周末的中奖号码(2)去往彩票店(这得亲自买,可别委托别人!)(3)按号码买彩票。

怎样敏捷制造10纳米光刻机?分三步:(1)把光刻机拆解成10万个零件(2)发动1000万人组成10万个团队并发造零件(3)把零件组装起来

DDD圈子这样的话术可笑吗,可笑,但他们就是靠这个话术来筛选出“目标客户”——很多人喊着“受用”呢!

这方面,我在《软件方法》中已有揭露:

《软件方法》1.5 警惕和揭秘伪创新,https://mp.weixin.qq.com/s/RSYrDZp1_dsr5beRmDUo_w 

图片

花絮:还真有DDD圈子的文章正儿八经地把这个当成“大问题拆成小问题”的例子,而不是调剂的笑料: 

图片

二、DDD圈子的各种“简单易行”的方法等同于瞎蒙

如果只是为了分解而分解,那可太容易了,100个人有100个做法。如果要真的获得收益,而不是像“《软件方法》1.5 警惕和揭秘伪创新,https://mp.weixin.qq.com/s/RSYrDZp1_dsr5beRmDUo_w”里面说的一样骗人骗己,就变得非常困难了。

要真有这个秘诀,放在什么时候都是大杀器,难道之前的复杂系统不需要分解吗?像Dijkstra那样得个图灵奖妥妥的。根本不用等到现在,拿“微服务”(这也是一个造词)之类的作为理由。

我在《你的医书是假的》一文中说过,微服务经常被DDD圈子用来作为遮掩自己能力不足的遮羞布。

你的医书是假的,https://mp.weixin.qq.com/s/PbzMuEXhf1iuAWF5n4ezTQ

图片

以见过的DDD圈子产出来看,所举的例子,类不超过5个,有时甚至是1-2个。连精确定义领域逻辑的能力都没有,就敢教别人怎样“切分系统”?

《软件方法》强化自测题-总纲(3)(https://mp.weixin.qq.com/s/6kct6Z9EQ6vzSNx7Qzry5Q):

 

图片

**********

如果一个人去看医生,被怀疑有恶性肿瘤,从这一刻开始的过程是很麻烦和痛苦的:

先对重点部位做影像;

医生看过影像后,认为可能性较大,安排活检,即从该部位切下一小块肉,送去做病理;

病理报告确认恶性肿瘤后,可能还需要做全身的PET/CT,观察其他部位是否有病灶;

对重点部位做进一步的影像和检查,各种抽血检验更是家常便饭;

前期化疗;

外科手术或放疗去除重点部位的病灶;

继续N个疗程的化疗和靶向药治疗,期间反复做影像和检查;

初步治疗结束,出院;

定期做免疫治疗,并影像和验血复查;

一旦有事,又回去住院重复之前的过程。

这一套下来,患者的生存时间会多几年。

嫌麻烦?医院门口有很多神医摆摊,家里七大姑八大姨也有民间偏方!

**********

目前DDD圈子“切分系统”的手段可能有这么几种,见下图: 

图片

只要抛开系统内部的复杂性不谈,把焦点左移,方法就变得和“神医”、“七大姑八大姨”一样简单易行了。

你的医书是假的,https://mp.weixin.qq.com/s/PbzMuEXhf1iuAWF5n4ezTQ

图片

注意:

伪创新往往并不会直接说自己简单易行,而是会说自己很高深。宣传中往往带有“艺术”、“禅”、“道”等字眼,有意无意地朝宗教、艺术、玄学方向引导——比起枯燥的数学理论和逻辑推理,这些东西可是太好下嘴了。

开发人员一开始以为很难很深奥,上手一学,发现其实不难!可以说是:投资少,见效快,产量高,门槛低,而且仪式感十足。最妙的是,不用走出舒适区辛苦学习,就得到了“方法学”,这可太对胃口了!开发人员立刻有捡到了便宜的感觉,心中豪气顿生——不愧是我!别整三岁的,有能耐你整四岁的!

另外,伪创新还会声明“领域驱动设计不是银弹”之类,也是为了进一步塑造形象。我都诚实地说了我不是满分,所以我前面塑造的90分的形象应该是真的。

我就不贴图了,读者感兴趣可以自行搜索,关键词:领域驱动设计、不是银弹、道、艺术……。

三、稍微靠谱一点的分解依据可能是状态机,但这需要全面的建模技能

待续……

内容概要:《学术研究提示设计 50 招》是一份详尽的指南,旨在帮助研究人员提高学术写作研究效率。该文档涵盖了从论文撰写、润色、翻译、查重降重、参考文献管理、投稿审稿到文献阅读等多个方面的具体操作指令。每一章节均针对特定任务提供了详细的步骤注意事项,例如如何撰写标题、摘要、致谢,如何进行英文润色、中英翻译,以及如何优化逻辑结构等。文档还介绍了如何利用AI工具进行文献分析、术语表提取研究方向探索等内容,为研究者提供了全面的支持。 适合人群:适用于学术研究人员,特别是那些需要撰写、润色提交学术论文的研究者,包括研究生、博士生及高校教师等。 使用场景及目标:① 提供一系列具体的指令,帮助研究者高效完成论文的各个部分,如撰写标题、摘要、致谢等;② 提供润色翻译的详细指导,确保论文语言的准确性专业性;③ 提供查重降重的方法,确保论文的原创性;④ 提供参考文献管理投稿审稿的指导,帮助研究者顺利发表论文;⑤ 利用AI工具进行文献分析、术语表提取研究方向探索,提高研究效率。 阅读建议:此资源不仅提供了具体的指令方法,更重要的是引导研究者如何思考解决问题。因此,在学习过程中,不仅要关注具体的步骤,还要理解背后的原理逻辑,结合实际案例进行实践反思。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值