做营销平台的时候,我们弃用 Flowable 自己写流程引擎。这个决策做对了吗,当时没法完全确定,能确定的是整个决策过程是扎实的。我们把业务约束摆出来,列出候选方案,评估每个方案的代价,最后选了一个能接受的,并且把这个过程写了下来。
一年后回头看,这个决策经得起检验。更值钱的是,因为过程和理由都记录在案,后来团队换了一拨人,新来的人能看懂为什么当初这么选,不用靠传说和猜测。这就是技术决策该有的样子,有过程、有记录、能复盘。
决策的前提,是搞清楚真实约束
图:决策不是一次性动作,而是一个可追溯、能纠偏的闭环
多数技术选型失败,根子不在选错了工具,在没搞清楚自己的真实约束就开始选。
选型的第一步永远是约束分析,不是工具对比。你的业务场景是什么,QPS 多少,数据量多大,一致性要求多强,团队技术栈是什么,运维能力到什么程度。把这些约束摆清楚,很多选项自然就被排除了。
我们弃用 Flowable 的关键约束有三个。营销画布要节点级可观测,每个节点都能看策略转化率。单个画布的执行上下文 JSON 序列化后能到 20M。C 端每天 4000 万人次访问。Flowable 这类为 BPM 和审批流设计的引擎,它的核心假设和这三个约束对不上。不是它不好,是它的设计目标不是我们的场景。
约束搞清楚了,选型就有了判据,不会被工具的「功能列表」牵着走。一个工具功能再多,不符合你的核心约束也是白搭。
评估候选方案,要看代价不是看优点
列候选方案时容易犯一个错,只看每个方案的好处,不看它的代价。
Flowable 的好处是成熟、社区大、开箱即用。代价是它的模型和我们的场景不匹配,要么阉割需求要么魔改框架,两边都难受。自研的好处是完全贴合业务。代价是开发成本高、要自己维护、要自己踩坑。继续用现有方案的代价是技术债持续累积,早晚撑不住。
每个方案都有代价,关键是哪个代价你能承受。评估的时候把每个方案的优点和代价都列出来,最好用个表格横向对比,一目了然。
评估维度要全面,不能只看技术。性能、一致性、开发成本、维护成本、团队学习曲线、社区活跃度、和现有系统的集成成本,这些都要纳入。一个技术上最优但团队学不会、维护不动的方案,比一个平庸但能落地的方案差。
决策要记录,ADR 不是文书工作
图:ADR 不是文书工作,是把个人经验变成组织能力
这是最被忽略的一步,也是区分专业团队和不专业团队的关键。
决策做完要写下来,业界叫 ADR(Architecture Decision Record)。记录的内容包括,背景是什么(为什么需要做这个决策),有哪些选项(各自的优缺点),选了什么,为什么选它(接受的代价是什么),有什么风险。
ADR 不是文书工作,它解决几个真实的问题。第一,三个月后没人记得为什么这么选,新来的人会质疑「为什么不用现成的」,记录能回答。第二,前提变了的时候,能翻出来重新评估,而不是凭感觉判断「现在是不是该换了」。第三,决策过程沉淀下来,团队下次做类似决策时能参考,不用从零开始。
ADR 不用写很长,关键信息到位就行。背景、选项、选择、理由、风险,五段话足够。写得越长越没人看。
复盘,决策闭环的最后一步
决策做完不等于结束,要复盘,而且要在足够长的时间之后复盘。
复盘问几个问题。这个决策的结果符合预期吗,当时的假设成立吗,有没有当时没考虑到的因素,如果重来会怎么选。
复盘的价值不在追究对错,在学习。每个决策都是一次样本,复盘就是把这些样本变成团队的决策能力。不复盘的团队,会在同一个坑里反复摔,因为没人停下来想清楚上次为什么掉进去的。
复盘要诚实。决策对了,想清楚是运气还是判断。决策错了,承认它,分析根因,别甩锅给「需求变了」「老板拍板的」。诚实的复盘才有学习价值,自我辩护式的复盘是浪费时间。
几个常见的决策陷阱
图:四个陷阱的共同病根——不用分析说话
权威决策。老板或者架构师一个人拍板,不经过讨论和分析。这种决策快,但质量取决于拍板的人,而且团队没有参与感,执行的时候容易打折扣。好的决策是分析驱动的,不是权威驱动的。
跟风决策。别家大厂用什么我们用什么,不问适不适合。技术圈特别容易犯这个错,追新追热。每个技术选型都要回到自己的约束,大厂的场景和你不一样,他们的最优解可能是你的灾难。
过度民主。让所有人投票,少数服从多数。技术决策不是民主选举,多数人支持的方案不一定是对的,尤其在技术深度问题上。该是分析说话的时候别用投票。
拖延决策。一直调研一直比较,迟迟不拍板。决策本身有成本,但拖延的代价往往更大,因为团队停在原地等结论。调研到能决策的程度就果断决策,不追求百分百确定,那个不存在。
害怕做错决策而无限调研,比做错决策的代价更大。一个实用的做法是,每个重要决策设一个时间盒,比如两周内必须出结论。时间到了,基于已有的信息做最优判断,然后在执行中根据反馈调整。决策是可逆的(大多数技术决策都可逆),不是一锤子买卖。
决策能力的积累
技术决策能力不是天生的,是靠一个个真实的决策积累出来的。
每做一个重要决策,走完「约束分析、候选评估、选择记录、事后复盘」这个闭环,能力就长一点。跳过任何一步,尤其是记录和复盘,这次决策的经验就留不下来,下次还得重新踩坑。
一个团队如果认真对待每一个技术决策,一年下来会沉淀出一套自己的决策方法论和一堆 ADR。这些是比任何代码都值钱的资产,因为代码会重写,决策能力会让团队持续做出更好的选择。这也是为什么把决策过程显式化如此重要,它把个人经验变成了组织能力。








