.. Kenneth Lee 版权所有 2017-2020
:Authors: Kenneth Lee :Version: 1.0
不为天下先
今天和别人讨论一个模块的设计,他说他会做一个模块(这里叫A吧),大概的意思是这个 模块负责消息过滤,中断聚合之类的。我看到这样的设计本能反感,但当时我不知道为什 么,也不知道怎么说。
回来把问题重新想了一遍,写这么个总结。
为什么这个设计让我不舒服?因为它让我看不到立足点,我看不到背后的着力点。“消息过 滤”,“中断聚合”不是需求,需求有人埋单,“消息过滤”找谁埋单?
我以前写过一个关于“不争”的答案:「夫唯不争,故天下莫能与之争。」到底应该怎么解 释? - 知乎 。其实一个意思,如果要做“大”事。个人理想基本上就要放一边,所以,每 件事都要找到它的立足点,让系统自己先平衡了,个人才能按“道”走。否则你又不是Atlas ,妄图举起地球结果只是被个小石块砸死。
所以,做一个中断聚合的模块没有错,但不从用户需求推演就开始发生的模块定义,就让 人不舒服。以实现AI计算平台来构架一个团队可以让一个团队成,以AI专家为中心来构架 一个团队只能让这个团队败。原始需求是所有“名”的“母”,“母”在左右所有的决策行为,“ 守”(参考:大道曰守,当时曰行 - 知乎专栏)在母上,怎么都不会错到哪里去。“守”在“ 学”(“绝学无忧”的“学”,参考:6. 大道废有仁义 - 知乎专栏)上,一开始说不定是对了 ,演进下去总有错的一天。
这样的模块设计理念,就叫“不为天下先”,不敢为主而为客,不敢寸进而退尺。任何时候 我要引入一个模块,无论这个模块埋得多深,离用户多远,都要回到用户需求上,用这个 需求来引导这个模块的一切变化。一切都是被动的,而非主动的。设计都来自“可以卖钱” 的需求,你的个人理想就有了足够的自由度,你那些“学习最新的机器学习算法”,“实践面 向对象编程思想”,“靠这个模块扬名立万”的小九九才有机会立足。
所谓抗兵相加,哀者胜之——这些都是你们逼我的……
很简单的道理,就是有无数的人执行不了:)