很多关于“领域驱动设计”的文章、书籍和课程,包括国外和国内,存在两个问题:(1)伪创新(2)无领域。
(1)伪创新
初中数学里要学习全等三角形、相似三角形、SSS、SAS……,到了高中以后学了正弦定理、余弦定理等解三角形的知识……就不会再回去用初中的方法解题了。
但是,不是所有人都能学会高中的知识,比如说张三。
张三可能会这样解释:
我这个人能力比较弱,只能掌握全等三角形、相似三角形的方法。
这样的说法没有问题。
张三还可能会这样解释:
这个题目比较简单,用全等三角形、相似三角形的方法做足够了,而且这样更方便广大人民群众理解。
这样的说法也可以。不过,竞争对手不是傻子,市场中哪里有什么"简单题目"!能带来利润的题目都很复杂。
但是,张三如果这样说:
全等三角形、相似三角形的知识比高中三角函数的知识更深刻。
这就是自欺欺人了。
更要警惕的是,有一个李四,也许和张三一样没有掌握高中方法,也许掌握了高中方法但是为了忽悠张三们,偷偷把"全等三角形"改名为"叠合三角形",然后和张三宣传:
我发明了"叠合三角形"新方法,比高中的三角函数有用,三角函数过时了。
这就是伪创新。
软件开发领域也有这样的现象。有些人,对已有的知识一无所知或一知半解,也不喜欢思考和研读文献,凭着一些朦胧的“领悟”,就“创建”了一套“新”方法。
这些人的文章里经常有“我发现***”、“和某某讨论某个问题,突然领悟了****(没错,他们不喜欢阅读和思考,但喜欢在封闭的小圈子里讨论)”这样的文字。
伪创新的危害是它带来“进步”的错觉,可能会让团队抛弃当前虽然不是很好但还过得去的做法,去拥抱伪创新。
就像有人得了癌症,按照医院当前的治疗方式预计能生存三年,结果在医院门口被塞各种小报,上面各种灵丹妙药"癌必灵"、“克癌灵”,而且还便宜一些……于是,果断放弃治疗,拥抱……。
为什么团队会去拥抱“伪创新”?
每年都有学员找我。
学员:老师,能不能来给我们团队讲****?
我:之前不是教给你们建模方法了吗,按照改进指南去做,先用好一点,就比这个强啊!
学员:就是觉得您那个太难了,感觉这个比较简单,很适合我们团队……
(无语)当然“适合”了。培训完后也不复习,自测题做不对也懒得再做,因为太“难”了。于是,看到“容易”的方法就扑了过去。
“伪创新”的方法很容易学!这就迎合了很多人的需要。在这些人看来,“伪创新”不用学习复杂的方法和做艰苦的思考,只需要简单的拍脑袋,就可以解决复杂的问题并且获利,实在是太爽了(通过吃冰淇淋来减肥)——当然,“伪创新”会声称那些废话式的拍脑袋已经是很复杂、很艰苦的思考了!
但是,简单的思考真的解决不了复杂的问题。妄图用简陋的思维(当然,当事人已经自我感觉很复杂了)去解决复杂的问题,有用才怪了!
不排除有人说“我就是用这么简单的思维就把项目做成了”。并存≠因果。能把项目做成的原因是隐去不说的填坑和加班,不是简单思维。
事物的复杂性不会因为我们不理解而且懒得理解,它就不存在了。就像现代数学和物理知识,一般人看不懂,但不能因为看不懂也懒得去学,干脆算了,自己发明一套"简单"的去解决问题。
(2)无领域
作者以为自己在说“领域驱动设计”,其实他说的是“企业应用架构模式”、“互联网系统架构模式”。
以某传播较广的DDD文章为例。领域类就一个Account,然后就开始讨论Entity、Service、Repository、DTO、六边形架构……不是说这个知识没用,问题是团队缺的是这个嘛?
我见过的很多开发团队,既没有能力理清复杂的领域逻辑(第一个D成了空话),实现时也没有能力维护领域逻辑(第二个D成了空话)。
而且,还逃避和麻醉自己——“我用了策略模式(你看,我够高大上吧),把***的逻辑放在***Strategy里了,所以问题解决了”。
剔除伪创新的领域驱动设计-公开课介绍
这个课程实际上就是UMLChina新版的分析和设计高阶课程。和之前UMLChina分析和设计高阶课程相比,有以下改动:
(1)吸收领域驱动设计现有内容中有价值的部分,但指出现有内容中的“伪创新”部分的本质并剔除,不再勉强去凑合解释。
(2)围绕一个真实的案例,讲授怎样用课上所授方法来做一个智能需求建模工具。这是一个目前正在开发的,封装《软件方法(上)》知识的建模工具(暂时命名为“发糕”),让建模人员更快速和准确地推导出需求。
也就是说,我们用下册的知识去分析设计一个封装上册知识的工具,所以,在学习分析设计技能的过程中,还可以真切体会到软件开发建模的建模。
工具的实现技术栈:.NET Core。
主要内容
*基于核心域的复用
*常用语本质(实体、值对象、聚合、上下文、事件风暴、事件溯源……)
*提炼领域抽象
*领域结构建模
*领域行为建模
*领域分割方法
*实现架构
开课时间
2021年2月4-7日(周四-周日)(每天18:30-22:00),共14小时
可以开增值税专用发票和增值税普通发票。
一些同学之前的高阶课时还有剩余的,可以继续使用课时,剩余课时不足14小时的,交费补齐即可。
学员有事没能如期听课,名额和没听的课时会一直保留。如果由于主办方的原因导致课程直播故障,课时会补偿给学员。
学员要求
专注于分析设计技能改进的开发人员,头衔包括但不限于架构师、系统分析师、高级开发……。最好阅读过《软件方法》或者接受过“软件需求设计建模方法学全程实例剖析”训练——不过不是必须的。
授课专家
UMLChina首席专家 潘加宇。在1999年还是一名程序员时,利用业余时间创建了UMLChina,潜心研究软件需求和设计技能。2002年开始对外提供UML需求和设计的技术指导和训练服务,到现在为止,已经上门为超过320家的软件组织提供服务,覆盖了国内各个领域的领袖企业,包括通信、企业管理、电子商务、房地产、网络游戏、地理信息、物流、数码设备、医疗设备、工业控制.....等领域。
UMLChina是“领域驱动设计”国内最早的引入者之一。
2004年,UMLChina负责Eric Evans的《领域驱动设计》中译本的审稿工作。该书中译本还没有出版时,UMLChina的《非程序员》杂志就经出版社允许刊登了部分译文。
2005年,清华大学出版社出版《领域驱动设计》中译本,封面有UMLChina的标记。
《猴子掰玉米?比较不同版《领域驱动设计》说“不变式”、“聚合”》
2006年4月和2010年7月,UMLChina两次邀请Eric Evans做专题讲座。
部分幻灯片
……以下略……
……以下略……
……以下略……
……以下略……