戏说领域驱动设计(二)——修身
都在IT圈子混,为什么有些人可以成为一流高手,有些人搞了10年研发还只能靠吃老本儿过日子。简单来说,搞这行儿您得勤奋。特喜欢电影《霸王别姬》中的一句:“要想人前显贵,您就得背后受罪”。这人呐,就得学会自已个儿成全自个儿。好多DDD初级玩家上来就特喜欢聊“聚合”啊、“框架”啊、“事件溯源”啊,刘震云先生管这个叫“喷空”。其实他忘了一个重要的事儿:人家之所以能成为高手,那凭得是台下几年的“功夫”,靠得是“悟性”,不是光靠喷空得来的。这个圈子没有傻人,痴人太少。
有些人这辈子也成不了高手,不是不聪明,是“懒”!这个懒包含两面:一是身体上,就喜欢天天躺在床上刷抖音,搞王者荣耀;二是思想上,不愿意思考。这两类人基本是懒癌晚期,没救儿。那位问了:“说了半天,搞技术的目标是什么”?两词以蔽之:“有深度”、“有广度”。总得有些东西可以拿出去显呗显呗吧 ?
别人讲DDD喜欢上来就告诉你各种概念,我上来就喜欢打击您。所谓“良药苦口”,不从根源找到自身问题你也没法上升至更高的维度对其它人实施降维打击。“人为万物之灵”,在DDD这门学问中,“人”的作用是第一位的。因为人是活的,技术是死的,业务是客观的,能否操纵死的技术对客观业务进行完美支撑靠得是有血有内有灵魂的您。面对这个花花世界的诱惑,踏踏实实的坐下来钻研一门学问,您哪知道后面有什么好事儿等着呢?有这么一个理儿叫“士人有百折不回之真心,才有万变不穷之秒用”,您琢磨琢磨是不是这个意思。
说了半天,想要钻研DDD要应该如何修身呢?概括下来有三点,有图有真相。这些事儿您都知道未必能做到,路长着呢,“积跬步才得以致千里”。
学会客观的看待事物是研究DDD 所应持有的态度。看过无数文章,一提DDD尤其是在技术阶段,一定是对标书上那套ODD(对象驱动设计,就是“值类型”、“聚合根”那套)方式。咱们不评价其它人的想法,只谈个人感受。我其实挺喜欢经典三层的,简单且直观;我也搞ODD,拿出来成就感爆棚也挺能唬人。总体而言呢,两者所用比例大概是7:3。这个选择不是因为我不会玩儿“实体”、“聚合”,是因为没必要。如果您接触过DDD尤其是其战术部分,我劝您一句:莫要拘泥于书上所定义的形式,过去管这叫“形势主义”。ODD仅仅是软件的落地方式之一,写面向过程的代码不代表您的整体系统不是以DDD为指导设计的,这事儿得从宏观上看。再说了,DDD两部分呢,战略部分才是核心。所以说我劝您眼里别只有某个具体的技术,站得高方能看得远,这叫格局。
就ODD本身而言,复杂且麻烦。就算是一个微服务架构系统,也是由业务复杂度各异的服务或模块构成。您的团队中,有初级、中级程序员,也有不是一般的战士。让适当的人以适当的开发方式做适当的功能模块(或服务),安排妥妥的。建个“数据字典”功能也考虑怎么设计“聚合”,您不累吗 ?
人都说“文人相轻”,其实程序员之间也好不到哪儿去儿,同水平人谁也看不上谁的东西。再说了,IT技术这个东西吧,也没一个具体的衡量标准,从程序的结果上看其实也没差个多少。两者比拼的就是系统在上线后在可维护性与扩展性上面谁更高效。
总而言之,想学习DDD学问的您,要注意个人修养的锻炼,尤其要务实、客观,莫要好高骛远、人云亦云。微服务挺帅、DevOps也比较酷,不一定适合您。毕竟对于我辈之打工人,公司不是咱们家开的。花里胡哨的后面,那是有成本作为代价的。
这一节讲了个人修养,后面我们来分析分析为什么大家都天天喊着“DDD很难”,下回见。