最好的系统 VS 最好的系统设计策略
背景
最近在尝试参与整个两个事实上相对独立,但是业务上,其实是高度关联的系统.
从技术实现角度看, 槽点实在太多. 不过现在不是在做技术方案的设计, 而是对于解决既成事实下的历史问题.
我尝试去理解,去检索关于更多 “微服务” 设计的策略.说实话,启发是有的,但是真正结合到眼下的问题,其实那些方案,都太 “抽象”, 基本没法落地.
最近两天, 结合以前自己的一些体验, 我有了一种新的思路.或许, 我可以从另一个纬度来定义,什么样才是 “好的系统设计”.
我认为不存在 “最好的系统”
没有什么特别的表达,就是字面的意思.所以, 如果有某个博客,声称设计除了最好的系统设计方案 – 绝对是扯淡.
因为,世界时不断变化的, 业务本身,也是快速变化的.
我认为存在 “最好的系统设计策略”
我认为不应该提一些 “高内聚” “低耦合” 等过于抽象的话. 这些话,乍一听很对,但是却忽略了更本质的事情.
让我来换个问题: 如果我们是一家旅行会社的旅游顾问.负责来给来咨询的人,设计旅游攻略.我们本身的任务,就是让对方接受自己的方案.
所以, 问题会变成: 对于家族旅行, 我们设计个性化的旅游攻略是, 最好的方案设计策略, 应该是什么?
注意,我的问题是: 旅游方案的设计策略的核心, 应该是什么.
答案可能是: 钱,性价比, 旅游体验等等. 为此,我们可能会设计出某个相对确定的辅助系统,来辅助设计方案.
但是,我认为, 真正核心的策略是: 如何最大化整个行程的情绪化价值.
我认为我给出的这个答案, 理应成为旅游顾问的一个核心信条.
人是多变的.对于富裕的人, 可能对方是一个节俭或者爱好自己自然风景的人, 未必就喜欢最贵的方案.
对于从来没旅游过的人,即使各个方案都毫无瑕疵, 也可能因为体力不支, 最终导致对整个旅游方案的彻底否定.
在设计旅游策略时, 如果我们一开始就简单的根据资金, 目的地等,给予几个简单的组合,就自称是个性化的旅游方案. 我认为,这个“旅游顾问”,大概率,要被 “AI” 取代喽 — 其实不是 “AI”, 只是几个固化下的策略行程的一对代码而已.
“最好的设计策略” 是?
我认为是: 保证在系统内部, 总是可以采用 在已知范围内 最优化的方案, 来实现该系统既定的业务目标.
具体来说:
-
系统, 总是有一个确定的业务目标的. 不应该设图设计一个 “全知全能” 的系统. “啥都能干”, 大约就是 “啥都不行”.
-
随着知识和经验的积累, 在某个角度, 提升系统实现既定目标能力的部分替代的方案, 总是存在的. — 当然, 发现了更好的方案, 也没有必要立马替换.
-
如果我们总是可以较为低成本,较为可靠地持续采用更高效的新发现的方案, 那说明我们当下的这个系统, 本身的设计,是值得肯定的.
-
如果替换的成本, 几乎无法接受, 我们不得不沿用效率低下的某些既成事实, 那说明, 我们应该考虑把系统的某个部分,单独拆分出去, 让去独立演化.
不太 “抽像” 的例子
还是以 “旅游顾问” 为例. 作为一个优化的旅游顾问, 为了最大化旅游方案的情绪价值, 我们需要在设计阶段, 就尽可能地和客户沟通, 准确了解对方的性格,需求等因素. 这可能需要一定的专业心理学知识.
客户不多时, 我们可以自己去学习一下心理学课程; 但是随着自己知名度的扩大, 或许我们可以找一个具有心理学教育专业的人,来担当我们的助理. 而这位助理的核心任务就是: 在有限时间内,尽可能相对准确地把握客户的性格特征,挖掘对方想要旅游的真实心理诉求.
也就是说: 系统内, 产生了一个衍生的子系统, 以实现单个 “子目标” 能更有效的实现.
后记
基于我最新的这个体验, 我又重新用中文,输出自己的观点了.
为什么?作为一个 “观点输出系统”, 直接使用母语, 是最高效和准确的. 至于日语的练习, 它也很重要, 但是不值得因为它牺牲这个系统.
即: “日语学习系统” 和 “观点输出系统” 理应是相对隔离的. 用于日语练习的简单文章编写 和 相对专业的观点汇总, 理应是相对分离的.
更通俗一点说: 想什么事都一起做, 最终可能啥都做不好…