跳至主要内容

工程取舍怎么做:没有完美方案,只有约束下的选择

工程取舍怎么做:没有完美方案,只有约束下的选择

摘要

工程取舍不是在好方案和坏方案之间选一个,而是在多个都有代价的方案之间选择更适合当前约束的一个。真正成熟的工程判断,会同时看目标、成本、风险、时间、团队能力和未来维护,而不是只追求某个单点最优。

完美方案通常不存在

工程讨论里很容易出现一种期待:找到最优解。

但实际项目里,方案往往都有缺点。快的方案可能维护成本高,稳的方案可能开发周期长,灵活的方案可能复杂度高,简单的方案可能未来扩展困难。

取舍不是失败,而是工程的日常。

如果一个方案声称没有代价,通常只是代价还没有被说出来。

成熟的讨论不是问“哪个方案最好”,而是问“在当前约束下,哪个方案最值得”。

先说清目标

没有目标,就无法取舍。

同一个技术选择,在不同目标下答案可能完全不同。

如果目标是三天内验证需求,简单可替换的方案可能最好;如果目标是支撑长期高并发,架构稳定性更重要;如果目标是让新人能维护,清晰性可能比高级技巧更重要。

工程取舍的第一步,是把目标说清楚。

目标不清,团队就会各自用自己的标准争论。

有人看性能,有人看速度,有人看扩展性,有人看成本,最后谁都觉得对方不专业。

把约束摆到桌面上

取舍发生在约束里。

常见约束包括时间、人力、预算、已有系统、团队经验、上线风险、合规要求和未来维护能力。

如果约束不公开,方案讨论就会很虚。

比如一个方案技术上很优雅,但团队没人熟悉,未来出了问题没人能修;另一个方案性能很好,但当前用户量根本用不上;还有一个方案开发很快,但会把大量复杂度转移到运营手工处理。

约束不是借口,而是工程判断的输入。

区分短期债和长期债

有些取舍会产生债务。

债务不一定不能接受。为了赶一个验证窗口,临时写一个简单方案,可能是合理的。

问题在于,要知道这是债,并记录什么时候还。

短期债有明确边界、明确原因、明确偿还计划;长期债则会在系统里悄悄扩散,直到所有人都不敢动。

工程取舍最怕的是把临时方案伪装成长期架构。

承认债务,反而更专业。

评估失败路径

很多方案在成功路径上看起来都不错。

真正需要比较的,是失败时会怎样。

接口挂了怎么办?数据写一半怎么办?发布失败能不能恢复?团队成员离开后能不能接手?流量突然增加会先坏哪里?

失败路径能暴露方案的真实成本。

一个方案如果失败可恢复,哪怕不够完美,也可能更适合当前阶段。一个方案如果失败后代价巨大,就需要更谨慎。

工程不是避免所有失败,而是让失败可控。

记录取舍理由

取舍做完以后,最好记录理由。

未来的人看到结果,可能不知道当初为什么这样选。如果没有上下文,很容易误以为前人随便做决定。

记录可以很短:

  • 当时目标是什么?
  • 比较过哪些方案?
  • 接受了什么代价?
  • 哪些条件变化后需要重新评估?

这类记录能帮助团队在未来重新判断,而不是重复争论。

结论

工程取舍怎么做?先说清目标,再摆出约束,比较方案的成本、风险、失败路径和维护后果。

没有完美方案,只有约束下更合适的选择。

好的工程判断,不是永远选择最复杂或最漂亮的方案,而是知道当前阶段真正需要什么,也知道自己放弃了什么。

延伸阅读

评论

此博客中的热门博文

尝试解构一段幽默

  天龙八部里有这么一段情节: 乌老大脸上肌肉牵搐,又“啊啊”了几声,突然指着虚竹骂道:“臭贼秃,瘟和尚,你十八代祖宗男的都是乌龟,女的都是娼妓,你日后绝子绝孙,生下儿子没屁股,生下女儿来三条胳臂四条腿……”越骂越奇,口沫横飞,当真愤怒已极,骂到后来牵动伤口,太过疼痛,这才住口。 虚竹叹道:“我是和尚,自然绝子绝孙,既然绝子绝孙了,有什么没屁股没胳臂的?”

《微信公开课》上张小龙的公开演讲

 微信是一款现象级的互联网产品,至少以互联网产品普遍的生命周期看来,微信是一款跨越了生命周期的互联网产品。要想理解微信在产品实践的一些观念,最好的方法莫过于直接和他们对话,阅读他们的书就是一种最直接的精神交流。 前几年流传着一本奇书《微信背后的产品观》,互联网产品从业者都给出了极高的评价,书里的内容大致上来自于 2012 年微信团队内部的一次分享会。而在现在,微信依然是一个具有生命力和健康生态的互联网产品,我们又该用什么方式来继续更新对微信的认识呢? 我的方法是:从微信张小龙过去几年的公开课中学习微信的产品观

你日常爱用的词语,竟有这么多在压抑自我!为什么“夹带私货”是一种很愚蠢的说法?所谓“精致利己主义者”其实很粗糙|心理|哲学|历史|自我成长