改变思想,拥抱毒瘤,让公司走的更远

news2025/1/16 11:17:30

牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。

有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中,都默默的把它们加进去,而且给足了它们分量。因为它们对于方案的成功与否,起着重要的概念性指导作用。

它们就是中台、低代码,以及DDD。这三个不同领域中的技术,肩负着同样的责任,那就是往死里忽悠。这三个词,很伟大,它们有一个共同点,都是很容易说服非技术但能决策的人员,然后向下铺开,非常具有营销型,是职业经理人和CTO的最爱。也是咨询类公司的最爱。

这些玩意儿,有的可以忽悠大公司,有的可以忽悠小公司,反正谁也别想逃掉。

但毒瘤如果能够为我们带来利益,当然也要拥抱。不要那么死板嘛。

当妖风袭来,比起关上窗子,我们要拥抱它,要投其所好!为什么有的人工资高,有的人升的快!有的人成为了大师!要从根本上想想原因。

概念能够升华体系

你知道么?越是职位高的人,越容易喜欢虚无缥缈的东西。拿古代的皇帝来说,有很多期望与神仙相会的,就被方士骗的死去活来。即使到最后知道被骗了,也只能偷偷的把消息封锁起来。最近看《资治通鉴》,就发现了很多这样的案例。

一来,是他们真的有这种需求;二来,是怕这些事被曝光了丢脸,只能咬牙坚持下去。

地球上没有新鲜事,放到软件行业也一样。当我们把一件东西给神化,赋予它某些超自然的能力,它就能在方士的路上越走越平坦。

如何神化?抓痛点、谈愿景、搞方法论,一般就能够销售成功。

当然,销售成功只是第一步,我们还要避免失败,避免被秋后算账。所以,我们需要把决策者的积极性调动起来,让他认识到自己的不足,羞于承认自己的弱点,我们就算落稳脚步了。只要决策者上了船,他就会想方设法美化它,争取更多的资源,让更多的人上船。

为什么互联网黑话生命力强劲,就是因为它能忽悠,能够升华你的思想,而不是空洞洞的代码。

我这里举个例子。

有一家公司,由于研发的人数有限,但是活儿很多,分散在多个系统之间。研发部门研究出来的结论是:要聚焦,集中力量到核心系统上。怎么办?不能在PPT上干巴巴的写上聚焦两个字吧,那显得多LOW。

思来想去,突然灵机一动。要不,我们造点名词吧。按照级别,分它个CVP系统、IVP系统、EVP系统。这样,一下子逼格就上升了不少。

看不懂这些名词?看不懂就对了,因为这是我造的,要的就是看不懂这种效果。

看看下面这张图,我们甚至可以赋予它属性,把系统归类到这三类之中。

 

重要的是,业务系统的聚焦,摇身一变,成为了CVP的重点建设。哈哈,比起一句话就完事的决策,我们这下可以聊很久了。

“教你怎么说话十分钟,等于什么都没说”。这是一种非常重要的能力。

那么,我们就来看一下,这些技术到底是什么?为什么是毒瘤?为什么要拥抱它们。

D不D的D的,有啥区别么

所谓领域驱动,就是根据需求设计系统,这句话本来就是废话。

有Demo代码没?

有Demo代码没?

有Demo代码没?

有Demo代码没?

所有的文章下面,都充满了这样的发问。如果说DDD层只是战略上有用,那它就不应该进入程序员视野,它应该是需求分析师的玩具。DDD应该学学TOGAF、COBIT、CGEIT之类的培训,把眼光放在战略布局上,不要老是想着革程序员的命,搞什么战术。

你要是专心搞搞业务培训证书,你赚你的钱我做我的架构设计,咱们井水不犯河水。但你要把触角伸到我的领域,就会招来像我这样的喷子。

DDD正确的打开方式,就是拥抱它的战略阶段,完全扔掉它的战术阶段。这样做,你会活的很舒坦。原谅我使用“限界上下文”这样的名词来解释一下:你只要把我的服务边界划分清楚了,你管我后面是怎么实现呢,设计模式和架构模式,我的工具箱多的很,并不缺CQRS、事件溯源这样的名词。

DDD的概念最早来源于2004年,这么多年没火,没有标准落地,不是没有原因的。最近几年,有些人发现了技术名词的贫瘠,重新捡起了它,希望它能继续为KPI效力。

我曾痴迷DDD,被它的美好愿景折磨的兴奋无比。买了网课,买了书籍,到最后发现它在浪费我的时间。我恨它。恕我直言,一个难度高,落地难的技术方案,根本没有资格让人分割精力去了解它。

不好意思,没有路转粉。

首先,搞DDD的,都是些卷中卷公司,它不像微服务技术一样,能够找到大量落地的方案。实际上,你几乎找不到任何有价值的参考示例,更别说这些示例之间还相互打脸。它就像是圣经一样,给你说什么是对的,但怎么做,全靠你悟。

为什么你干不了DDD,你的团队干不了DDD?DDD给出了三个主要原因。

  • 对团队的要求较高。画外音,你做不好是你的团队不行

  • 只有复杂的业务使用DDD才能见效。那什么是复杂呢?并没有定论。话外音,你觉得不好用,那是你的业务不够复杂

  • 虽然你用不了DDD,但其中的思想,还是值得借鉴和思考的。画外音,我是万金油,不会让你白学

没有人会承认自己的团队不行,没有团队会承认自己的业务简单,没人能忍受自己的投入就真的肉包子打狗了。DDD通过几个让你不能打脸的理由,瞬间将你绑在了一起。

2020年,花了整整三个月时间,有幸拜读了《实现领域驱动设计》这本书,对其深厚的文字运用水平惊叹拜服。以后,即使一个简单的CRUD项目,我也知道文档应该怎么写了,这本书就是非常好的案例。

你搜一下DDD的文章,不论什么文章,都有一个特点,那就是不能好好的说人话。所有的应用代码,都是一堆无法说服人的垃圾代码。因为开发者和正常的写法一比较,发现自己在找罪受,那为什么要用它呢?

就拿吹的很牛b的六边形架构来说吧。

六边形架构,因为长得像蜂窝,看起来就很靠近绿色的自然界,很高大上。说实话,我到现在都没弄明白六边形架构,八边形架构(没这种东西),三角形架构(没这种东西)之间,到底有何区别,这群名词狂魔为啥选择了6这个数字。

您就直说,复杂的业务逻辑,不应该过多的关注技术等基础设施、但要预留接口就行了,非要整的这么玄乎,一条条蚯蚓一样的线从那腐烂的六边形上辐射出来。觉得很美么?或许老板真这么觉得,因为它像彩虹一样的名词轮,确实能唬住一群蹉B。

不要说ServiceMesh的数据平面和控制平面分割,是靠DDD指导的哦,虽然它概念上靠的上。

下图是google搜索Hexagonal Architecture出现的一张图。

 

哎吆,六边形呢?这图怎么整了个10边形?那还是六边形架构么?您忽悠小孩子呢?当我不识数?什么,你又把它叫做洋葱头架构,它们不是一个东西?这样的误解在DDD中比比皆是,我也不想解释,因为它们都是短话长说。这说明了它是一门全面的忽悠方法论,是靠堆概念和黑话起家的,宣传者也不合格。

整个DDD这一套概念,价值观就有问题。或者说作者的本意或许是好的,面向的是复杂业务。结果让这群宣传者和培训一捣鼓,就成了解决问题的必要手段。

但是不好意思,您连起码的顺畅交流都没整好,没资格教别人做架构。

尴尬局面

让人觉得尴尬的是,真正需要DDD的人,并不认同它;不需要DDD的人,被强迫认同它。

DDD最大的价值是梳理业务性需求,将不同的业务领域划分出来,并形成领域之间的接口交互。说个实话,我见过很多咨询公司的大佬,他们对这种想要通吃的方法论嗤之以鼻,更倾向于使用TOGAF之类老牌的业务梳理方法。但条条道路通罗马,最终的领域划分还是能够达成一致。

这些梳理的过程,大部分是业务专家,以及系统架构师的范畴。他们的工作成果,将作为输入输出到技术团队实现。他们需要DDD,但他们并不用。

相比较而言,DDD的战术阶段,毫无价值而言。比如,把数据汇总到宽表或者大数据中心,形成数据“中台”提供交易域、管理域、查询域的分离,我并不需要知道什么CQRS的概念,也能工作的很好。至于实体充血不充血,我本来就是微服务了,业务粒度本来就很小了,要怎么写是我的自由,改造也是我自己的成本,我并不需要按照你那一套来。谈业务和技术的沟通?不好意思,不能沟通而去做业务的团队,我还没见过。

工程师被决策层强迫使用DDD战术书写业务,结果代码更乱,更改更加频繁。但是DDD说,不好意思,不是我的错,是你团队不行。

道理是这个道理,但在现实中,还是有人吹嘘、甚至使用这个东西去改造代码。《微服务架构模式》这本书,甚至有事件溯源和CQRS两个章节,去专门讲解DDD的一些落地的内容。这叫做大师毒害了大师,当然也叫做相互扶持。

恕我直言,如果你信了这些鬼话,大概率会把项目带入死亡。尽信书不如无书,架构是一种权衡,并没有通吃的指导思路。你可以参考,可以思考,但就是不能照搬,因为每个公司的技术前提都不一样。

话虽如此,但当一些概念被吹嘘起来的时候,你不去拥抱它,反而会产生问题。软件行业有两个难题,一个是怎么把复杂的事情简单的汇报,另外一个就是把简单的东西搞复杂。对于前者,主要是描述你构想的可行性。而对于后者,主要的目的就是让人觉得很高大上,很主流,越晦涩越好。前者脚踏实地,后者口吐莲花。

而后者的功效,显然要比前一种有效得多。让人听上去感觉很牛x,但是听不懂,可以获得掌声,也可以体验高高在上的感觉。没人会承认自己的智商不在线,你需要激起这些人的活力。只要有人认同,就可以产生利益。

有些概念,有些人,并不是神,但利益共同体,需要他成为神。这玩意也有信徒,你信么?但软件设计的工具,难道不是合适就用,不合适就扔么?为什么会成为信徒?仅仅是因为上船了而已。

朋友们,在一定程度上,DDD这些概念,与比特币之类的概念,并没有什么区别。这就是信仰的魔力,这就是大师的力量啊!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cursor IDE一个GPT4人工智能自动程序编辑器

让我们来了解一下Cursor IDE是什么。Cursor IDE是一个新型的编程工具,可以通过它生成、编辑以及与人工智能进行交互分析代码。官方网站上的三个单词“Build Software. Fast.”(快速构建软件)以及“Write, edit, and chat about your code wit…

Spark 实现重新分区 partitionBy、coalesce、repartition(附代码演示)

文章目录 1、partitionBy 源码中的定义(部分) 调用方式 2、coalesce 源码中的定义 调用方式 3、repartition 源码中的定义 调用方式 repartition和coalesce的区别 代码演示 (跳转代码) 实现重新分区,本质上…

如何轻松进行接口测试?试试这款神器Apifox,亲测好用!

Apifox学习教程地址:https://www.bilibili.com/video/BV1mb411o7Go/? 目录:导读 ​引言 一、接口调试 二、Mock功能 三、自动化测试 引言 如果你曾经为手工编写和维护测试用例而感到疲惫,那么你需要试试这款神器——Apifox! …

【云原生】Kubernetes(k8s)之Pod概念和使用

k8s之Pod概念和使用 一、Pod简介1.1、Pod的阶段(状态)1.2、容器状态 二、Pod的定义2.1、restartPolicy2.2、imagePullPolicy2.3、command2.4、args2.5、resources 三、Pod的使用3.1、创建并访问Pod3.2、多个应用容器3.3、Init容器3.3.1、Init容器与普通容…

劝人写码,千刀万剐——“前端已死”难道要成真了?

移动互联网的兴起,传统行业的数字化转型,大前端技术的普及,随之而来的就是Vue为代表的前端框架和工具的兴起,前端开发的门槛降低。但发展,稳定,衰落是亘古不变的事物发展规律。 一些有趣的迹象 最近逛社区…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题203.707.206翻转链表) 2023.4.21

目录 前言算法题(LeetCode刷题203移除链表元素)—(保姆级别讲解)算法题(LeetCode刷题707.设计链表)—(保姆级别讲解)代码参考: 算法题(LeetCode刷题206.反转链…

DC:5靶机通关详解

信息收集 漏洞发现 扫个目录 发现存在footer.php 查看,发现好像没什么用 参考他人wp得知thankyou.php会包含footer.php 可以通过传参来包含别的文件 但是我们不知道参数,这里用fuzz来跑参数 这里用wfuzz的时候报错了 解决方法如下 卸载 sudo apt --purge remove python3-pycu…

最强省钱攻略——IC设计公司老板必读

2023年,国内半导体产业发展面临着很大的不确定性,这应该是共识。 IC芯片设计公司,重度研发创新导向。 站在企业角度,怎么在不确定性下,组织人、财、物,面向未来,应对市场竞争? 算…

vCener 配置 vSan 网络

文章目录 1. 准备2. 创建vsan网络2.1 创建 vSphere Distributed Switch (vds)2.2 添加管理主机2.3 添加 networking 3. 删除3.1 删除 vmkernel adapter3.2 删除 hosts3.3 删除 DSwitch 1. 准备 三台物理机搭建 exsi一台部署 vcenter 管理三台 exsi每台物…

扬帆优配|普通股和优先股的区别?普通股和优先股哪个好?

各位投资者或许了解过股票是分为普通股和优先股的,但对其并不十分了解。那么普通股和优先股有什么区别?普通股和优先股哪个好?扬帆优配也为我们准备了相关内容,以供参考。 普通股和优先股的区别? 普通股和优先股的主要…

2023-04-14 算法面试中常见的查找表问题

2023-04-14 算法面试中常见的查找表问题 1 Set的使用 LeetCode349号问题:两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:…

直播预告 | 时序数据处理的云端利器:TDengine Cloud 详解与演示

当下,我们正处在一个万物互联的时代,大数据、云原生、AI、5G 等数字技术极大地方便了人们的生活,但智能物联网产生的海量数据却成为众多企业在数据处理上的巨大痛点。从本质来看,这些数据大多是产生自各种设备和传感器的时序数据&…

康耐视Designer,通过VC5与西门子S7-1200 PLCProfinet通讯详细

测试使用软件版本 Designer Version: 2.7 GSD: GSDML-V2.3-Cognex-VC5-20140828STEP 7 Professional V14Network Configurator Version: 3.56测试使用硬件 Cognex Vision Controller VC5CIC-5000Siemens PLC: S7-1200 CPU 1214C DC/DC/RLY1.PLC端设置 1.新建一个项目,添加对应…

没看错!一行python代码就可以帮您获取图片中的文字信息

最近工作中有需求需要用python对图片中的文字进行识别,调研了一下,选择了tesseract, 目前在github上有50.5k个star!python可以调用,安装也十分方便,pip install pytesseract 即可。如果没有Pillow 包&…

ERTEC200P-2 PROFINET设备完全开发手册(7-2)

7.2 添加自定义参数 编辑GSDML文件,对于64 bytes DI 进行如下修改,由于一般的IO模块不需要支持PROFIEnergy,去掉PROFIEnergy支持;修改模块ID(ModuleIdentNumber "0x00000080");子模块ID不变&am…

Linux中的进程优先级

Linux中的进程优先级 目录 Linux中的进程优先级引入1、基本概念2、查看进程3、PRI和NI4、修改进程优先级5、进程切换One more thing 引入 在Linux操作系统中,进程的优先级对于系统的性能和响应时间至关重要。进程的优先级决定了该进程在系统资源分配中所占的比例。…

说PHP不适合做爬虫的人,看这里

文章目录 一、关于PHP爬虫框架—Goutte1.1 什么是Goutte1.2 Goutte的优点1.3 Goutte的安装 二、Goutte的使用2.1 基本用法2.2 获取页面内容2.3 表单提交2.4 AJAX请求2.5 登录并抓取数据 三、15个Goutte爬虫示例3.1 简单示例3.2 获取表格内容3.3 登录并获取数据3.4 处理JavaScri…

遇到Spring事务失效,你该怎么办?

Spring 事务场景失效是一个常见的问题。今天来分析这个问题。 1、事务方法被final、static关键字修饰,方法访问权限不是public Service public class UserService {Autowiredprivate UserDao userDao;// final修饰的事务方法Transactionalpublic final void addUse…

实时分布式低延迟OLAP数据库Apache Pinot探索实操

文章目录 概述定义特性何时使用 部署Local安装快速启动手动设置集群 Docker安装快速启动手动启动集群Docker Compose 实操批导入数据流式导入数据 概述 定义 Apache Pinot 官网地址 https://pinot.apache.org/ 最新版本0.12.1 Apache Pinot 官网文档地址 https://docs.pinot.a…

Vivado如何清理工程,并避免缺失必要的文件?

FPGA开发是一项非常复杂的工作,需要处理大量的代码、约束和仿真文件。在开发过程中,由于文件数量庞大,很容易导致工程变得混乱不堪。Vivado是Xilinx公司推出的一款FPGA开发工具,能够帮助开发人员处理这种复杂性,提高开…