因果颠倒和装模作样-《软件方法》2025版 第2章 业务建模之愿景 Part4(20251011更新)

27 阅读5分钟

2.3.4 常见定位错误

2.3.4.2 吃自己的狗粮

==续前文===

可能有人会辩解说,“吃自己的狗粮”是鼓励开发人员尽量多使用自己开发的系统,感同身受地体察系统给涉众带来的方便和痛苦,并不是让开发人员把自己当目标涉众。

遗憾的是,现实中很容易这样滑坡。开发人员大概率会把自己感受到的方便和痛苦当作目标涉众的方便和痛苦,因为客观上他已经没有更多的精力再去体会目标涉众的方便和痛苦,更要命的是,主观上,他也不愿用目标涉众的方便和痛苦来否定自己感受到的方便和痛苦——“系统很好用,是你太笨了”……

不可否认,开发人员感受到的方便和痛苦和目标涉众的方便和痛苦有一部分是相同的。比起更烂的情况“开发人员随心所欲开发,对涉众置之不理”,“吃自己的狗粮”肯定是有好处的。

但要在竞争中胜出,思路并不是找“还有没有比我更烂的”,而是要找“还有没有比我更不烂的”。这样的思考难度更大,更耗费脑力,很多人不是愿意去做的。

这就是第1章所归纳的伪创新手法“割裂历史”,把参照物拉回到蛮荒时代——如果不用我这个,就什么都没得用。因为还有比我更烂的,所以我就是最好的。

参见:

《潘老师有点理想化了,现实中程序员很菜的占多数》(umlchina.com/url/lxh.html)

《“以炮换马”的DDD歪招是否可以作为起步》(umlchina.com/url/waizhao.html)


如果有人就是乐意“为爱发电”呢?做出来的东西有没有用,有没有人乐意用都无所谓,那就和本章或本书的内容没关系了,但不得不泼一盘冷水:有权力和有意愿“为爱发电”的人非常稀少。

以上文所说的“钓鱼佬”场景为例,第一个场景中,张三作为一个打工人,没有权力随着自己的喜好“为爱发电”。如果他这样做,就是渎职。第二个场景中,张三也许并不想从钓鱼佬兄弟那里收钱,但他可能追求的是兄弟们的感谢和赞赏,这也是利益,甚至是比金钱还难获得的利益。如果是这样,张三也并非有意愿“为爱发电”。

“为爱发电”也好,想要获利也好,都是个体的自由选择,不分高低。需要批评的是“又当又立”:打着“为爱发电”的旗号,其实却很在乎获利;在乎获利,却懒得去体会目标涉众的感受,以“工程师文化”为名,随性而行。

2.3.4.3 因果颠倒和装模作样

定位的时候,装模作样给出了一个结果,但这个结果不含任何思考的价值。

例如,问“这个系统给谁用”,答“给适合用这个系统的人”,这就是正确而无用的废话,但一些人乐此不疲。

很多时候没那么直接,可能会先入为主地设想系统的一个功能F,然后从这个功能出发来定义目标组织规格——“特别需要F来做事情的人”。

例如,一个二手交易的系统,开发人员认为“官方鉴定”是一个亮点,于是把目标组织规格定位为“特别需要二手交易官方鉴定服务的人群”,看起来好像正确,但并未包含任何增值的信息。

我们在业务建模工作流所做的一切,目的就是推导出功能“正确”的系统。这里的“正确”,判断标准就是利润。如果先想好了某个系统或系统的某个功能是什么样子,再以此为出发点去“推导”业务建模的内容,这实际上就是因果颠倒。

★当然,很多伪创新的诱人之处就是大量产出“看起来好像正确,但并未包含任何增值的信息”。

我们需要刻意避开先入为主的内容,从其他视角来思考目标组织规格。例如,如果预想了“二手交易官方鉴定”可能是一个亮点(当然,这样的预想不是凭空产生的,而是建模人员在大脑中朦朦胧胧地做了未知对错的业务建模),定位时就要避开这些字眼,从其他视角思考,如“大学生还是家庭主妇更像目标客户”。

即使不是开发软件系统,而是做其他事情,在这一点上,定位的道理也是类似的。例如开一家餐馆,如果问目标客户是什么人,从“功能”出发回答“来吃饭的人”或“肚子饿的人”没有任何增值信息,并不能帮助推导出餐馆合适的选址、环境风格、菜品。如果先避开餐厅的功能,定位出“科技公司的年轻打工人”,就可以推导出有价值的信息。


注意,我们并不是要禁止反向思维。从业务建模推导出系统需求后,再把结果放回业务建模的工件来验证结果是否正确,这是可以的,不是因果颠倒。

导致因果颠倒的“验证”是:以所谓的“系统需求”为依据,否定了业务建模的内容。相当于考试做题,先大致得到结果是2456,把2456代回去验算,不对。此时,做题的人怀疑题目错了。

这也是现实中很多“敏捷试错”受欢迎的原因。如果诚实地“敏(无)捷(脑)试错”,那是非常非常累的,傻子才会这样做呢!于是,更理智的选择是,在一些改起来比较麻烦的地方,并不认为自己错了,而是顺滑地切换到另一个适用的场景——不需要重新写答题内容,只需要换题。