学会认输

学会认输

上个月跟一个做了十年后端的朋友吃饭。他花了三个月优化一套分库分表方案,写到一半的时候,组里新来的同事提了一句:"这个场景是不是直接上Elasticsearch更合适?"

他当时的反应是——"分库分表我都搞了三个月了,你现在跟我说换?"

后来他们做了一个小范围的对比测试。Elasticsearch方案半天就跑通了,查询延迟比他优化了两个月的分库分表还低一个数量级。

朋友跟我说这事的时候,语气不是愤怒,是困惑。"我明明很努力了,为什么结果差这么多?"

沉没成本是个坑,但没人告诉你有多深

我们从小接受的教育是坚持就是胜利。做到一半就放弃,那叫半途而废,是贬义词。

在技术领域,这个信念有时候是错的。

问题不在于"坚持"本身,而在于"放弃"的心理成本太高了。你已经投入了两个月,放弃意味着承认这两个月白费了。这种痛感是真实的,真实到你会下意识地回避它。

所以你会继续投入。告诉自己"再试一下就好了"。然后再投入两个月。然后发现还是不行。然后——再试一下。

这不叫坚持,叫沉没成本谬误。做过几年技术的人都听过这个词,但真正掉进去的时候,很少有人能意识到自己正在犯这个错误。

越资深,越难认输

我观察到一个有意思的现象:经验越丰富的人,越容易被自己的经验困住。

不是因为经验本身有问题,而是过去靠"死磕"解决过太多问题了。这种成功经验会形成一种信念——"只要够努力,就一定能搞定"。

但问题的性质变了的时候,过去的信念就变成了包袱。

我以前做BFF层的时候,花了好几天时间做序列化优化,把响应体积压了40%。当时确实有效果,P99延迟降了15ms。但三年后回看,那点优化在整体链路里连噪声都算不上——因为后来业务换了解析协议,整个BFF层的序列化逻辑被重写了。

当初的"优化"不但没积累成技术资产,反而成了迁移时的负担——别人看到那段高度定制化的序列化代码,第一反应是"这谁写的,为什么不用标准库?"

这就是经验的"过期"。你踩过的坑让你形成了"这个方向是对的"的判断,但当坑本身已经不存在了,你的判断还指向那个方向。

"会退"也是一种技术判断力

我后来意识到,"会退"不是一种性格特质,是一种技术判断力。

你得能分清楚两件事:哪些东西还值得继续投入,哪些应该及时止损。

这中间有一条很微妙的线。不是"遇到困难就放弃",也不是"死磕到底一定对"。

具体来说,我观察到能做到"及时止损"的人,有几个共同的特点:

他们能分清楚"已经投入的成本"和"继续投入的预期收益"。前者不应该影响后者的判断。

他们能接受"三个月前做的判断,现在看可能是错的"。不是因为自己变笨了,是环境变了。

他们能把"放弃一个方案"和"否定自己的能力"分开。这两个是完全不同的事。

说起来容易,做起来难。尤其是当你的方案已经跟团队汇报过了,PPT都做完了,老板也点头了——这时候说"我觉得应该换个方向",需要的不只是一点判断力,还有相当大的勇气。

"半途而废"可能是最聪明的决策

我后来发现一个有意思的事情:很多时候,"半途而废"反而是最优解。

关键在于你得分清两种失败:方向错了 vs. 方向对了但方法不对。

大部分人混淆了这两种情况。在方向错了的路上,方法再怎么优化也到不了终点。但你已经在路上了,路牌写着"距离终点还有50公里",你舍不得掉头。

我自己踩过类似的坑。有一次做前端打包优化,我花了两周时间研究Webpack的loader配置,想把打包速度从30秒压到15秒。各种奇技淫巧都试了——多线程编译、DLL预编译、缓存node_modules。

后来有人跟我说:"你为什么不直接换Vite?"

换完之后,开发环境热更新变成毫秒级。我之前两周研究的Webpack优化方案,在新工具面前几乎没有意义。

最讽刺的是,那两周我之所以"坚持",不是因为判断力差——恰恰相反,是因为我"太懂Webpack了"。我对Webpack的了解让我相信"优化是有空间的",所以我投入了。但方向本身已经过时了。

这就是"经验诅咒":你越了解一个东西,越难放弃它。

怎么判断该不该继续

我后来给自己定了一个简单的判断标准:

假装你今天才第一次遇到这个问题,没有任何前期投入。你会选择现在这个方案吗?

如果答案是"不会",那你应该停下来。

不是因为你之前的投入没有价值——那些经验会变成你下一次判断的素材。但继续在一个不再正确的方向上投入,只会让"止损"的成本越来越高。

有人可能会说:这跟"坚持"不矛盾吗?你怎么知道再坚持一下不会成功?

确实,坚持和放弃之间没有标准答案。有些技术决策需要长期投入才能看到回报,有些看起来走不通的路,拐个弯就通了。

但我见过的更多情况是——一个人明知道某个方案可能有问题,但因为已经投入了太多,所以选择继续。不是判断力差,是不敢面对"推倒重来"的成本。

这个成本不只是时间,还包括跟团队解释、改方案文档、以及最重要的——承认自己之前的判断可能是错的。

前几天看了一句话,觉得挺有意思的:经验的价值不在于你积累了多少,而在于你能不能在合适的时机放下一些。

这话听起来挺虚的。但回头想想,我见过的真正厉害的人,都有一个共同点——不是他们学得快,是他们放得下。可能这也是我自己的偏见吧,毕竟我是那种会花两周时间优化Webpack loader配置的人。

You voted 5. Total votes: 5

添加新评论