两个工程师,同一个需求,三周与两天的差距

假设你是个旁观者,站在绩效评估的现场。

左边是工程师A。她接了一个需求,捣鼓两天,写了50行代码,搞定了。简单、干净、好读。后来者接手一看,10分钟就能上手。零bug,零事故,平稳运行半年。

右边是工程师B。他接了类似的需求,花了三周。引入了新的抽象层,写了pub/sub系统,加了配置框架,光PR就开了七八个。设计文档写得漂漂亮亮,演示时满屏emoji。

现在问题是:这俩人一起来评职级,你猜谁会赢?

说实话,答案可能让你有点无语。

工程师B的晋升材料基本是给自己写的:"设计并实现了可扩展的事件驱动架构,引入跨团队复用的抽象层,构建了支持未来扩展的配置框架"。这不就是Staff+的模板吗?

工程师A呢?"实现了功能X"。

AI配图

没了。

三个词。她的代码更好,但没人能看到。你没法为"没写的东西"写出一份漂亮的汇报材料。

这就是问题所在。我们嘴上说"简单是美德",但系统诚实地在奖励复杂。

面试教会你的第一课:简单不酷

你以为这只是公司文化的问题?不,这事从面试就开始了。

想象一下,你在系统设计面试里。面试官问:"设计一个消息通知系统。"

你心想,这不简单吗?一个数据库,一个API,加个缓存层,齐活。

面试官听完,面无表情:"嗯,如果用户量到一千万呢?"

你心里咯噔一下。得,加服务。加队列。加分片。 whiteboard上画满了方框,线密密麻麻。

面试官终于点头了。

你学到了什么?简单等于无聊。复杂等于专业。

但说实话,那个简单方案根本没错。它只是不够"性感"。

有个评论说得特别准:有个面试官问两个人来回发邮件改表格怎么办,候选人说我给他们换成Google Sheets。然后全场沉默了五分钟。

因为面试官期待的是你设计一个协作工具,而不是解决实际问题。

设计评审里的"未来-proof"恐惧症

如果说面试是开胃菜,那设计评审才是主菜。

你提了一个干净利落的方案。会议室里有人举手:"但我们是不是应该为未来考虑一下?"

这话听着合理,其实是个陷阱。

"未来"是谁?"未来"需要什么?没人知道。但"未来-proof"这个说法像魔咒一样,让所有人瞬间进入备战状态。

于是你回去加了三层抽象,加了配置项,加了灵活到没人能看懂的扩展点。代码确实看起来更"专业"了。但用户拿到功能的时间推迟了三周,下一个接手的人看了半天代码,决定还是重写吧。

AI配图

有个评论说得特别扎心:

我见过工程师为了避免复制粘贴几行代码而造了个抽象,结果这破东西比当初的复制粘贴还难懂十倍。每次感觉都是对的。代码看起来更"工程化"了。但功能没变快,下一个改代码的人疯了。

复杂度是会上瘾的。它给你一种"我在做正事"的幻觉。

AI正在把这个问题搞得更糟

老实说,这事以前就有。但AI来了以后,情况变得更魔幻了。

现在,AI能在5分钟里生成一个"可扩展的事件驱动架构"。注意,AI不知道你需不需要这个,它只是知道这类词组合在一起看起来很厉害。

于是工程师B的产出更快了,方案更炫了,晋升材料写得更快了。

但维护成本呢?调试呢?凌晨三点的故障排查呢?新人上手的学习曲线呢?

这些成本一分没少,甚至可能更多了。

有个评论说得好:

AI是才华的放大器。如果你是个经验丰富的开发者,AI帮你更快做出好东西。如果你是个半桶水,AI帮你更快造出更难收拾的烂摊子——而且你可能根本意识不到。

复杂度生成的门槛降低了,但复杂度的代价从来没变过。

谁是真正的Senior?

AI配图

文章里有句话我特别认同:

真正的进阶之路不是学更多工具和模式,而是不用它们。

谁都能往代码里加东西。加抽象、加层、加依赖。加了之后看起来多高级啊,好像自己懂了很多。

但Senior不是这样的。Senior是说"不用加"。是能在关键时刻拍桌子:"这破玩意儿现在不需要,未来三年都不需要。"

有几个评论提供了另一种视角:

我在亚马逊2005年到2008年工作。公司有两种奖:一个是"Just Do It"奖,奖励那些解决眼前问题的人;另一个是"Door Desk"奖,奖励节俭到用门板当桌子的人。说白了,后者就是奖励简单。

我见过最长寿的项目,永远是最简单、最容易替换的方案。通常来自简单的测试场景,就是那种"能work"的东西。

简单不意味着简陋。简单是克制。

怎么让简单被看见?

好,抱怨完了。问题是怎么破?

首先,学会给自己的简单方案写文案

"实现了功能X"是三个词。但你完全可以写成:

评估了三种方案,包括事件驱动架构和自定义抽象层。最终判断直接实现能满足当前和预估的全部需求,两天交付,六个月零事故。

看见了吗?同一个东西,后者写出了决策过程、权衡考量、结果验证。简单不是没话说,是话没说到点子上。

其次,在设计评审里学会接化发

当有人问"要不要future-proof一下"的时候,别直接妥协,也别硬刚。

更好的说法是:

如果以后需要,加上这个功能大概需要X天。但现在加的话,我们要多花Y天,还会增加维护成本。我的建议是先不搞,等信号出现再说。

你不是在拒绝,你是在展示自己想过而且想透了。

第三,用业务结果说话

有评论提供了一个思路:

简单本身不值钱。但简单的结果很值钱。"事故减少80%","成本降低40%","性能提升33%的同时服务器减少25%"。

把简单翻译成数字。数字不会骗人,数字也不会被忽略。

如果你的团队就是不吃这套呢?

说实话,有些公司的文化就是这样的。嘴上说简单好,实际上只看谁造的轮子大。

这种情况怎么办?

两个选择。

第一个,学会玩这个游戏。不是说你要造轮子,而是你得学会把简单方案包装成值得说的故事。你不一定要同流合污,但你得知道怎么让自己的价值被看见。

第二个,换个地方。这不叫逃跑,这叫信息收集。如果一个环境永远不奖励好判断力,那说明这个环境有问题。你没必要跟问题死磕。

至少,你现在知道哪个游戏自己在玩了。

写在最后

文章标题是"没人因为把代码写简单而升职"。

但我觉得还可以加一句:

也没人因为把代码写简单而被开除。

那些最后接手你代码的人,那些凌晨三点被叫起来修bug的人,那些看着你造的抽象层发呆的新人——他们可能不会给你鼓掌,但他们的沉默就是最好的评价。

复杂度是写给人看的。简单是留给未来的。


【MiniMax-M2.1锐评】:这篇文章说出了无数工程师心里清楚但说不出口的委屈——干得好不如写得漂亮,代码干净不如PPT复杂。系统奖励的是能见度,不是质量。

参考链接:
https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/