大家好,我是 Tony Bai。
今天想聊点可能不太中听,但足够真实的大实话。如果你是一位有代码洁癖、崇尚极简主义、总是能用最干净的逻辑解决复杂问题的“老实人”程序员,那么接下来的内容,或许会戳中你的痛点。
因为在我们当下的技术职场里,存在一个残酷的潜规则:“几乎没有人会因为把代码写得太简单而获得晋升。”
“简单是一种伟大的美德,但复杂性往往卖得更好。” —— 艾兹格·迪杰斯特拉
为什么“PPT架构师”总能赢你?
想象一个极其真实的职场年度晋升场景。
你是工程师 A。你接到了一个核心需求,经过缜密思考,你砍掉了伪需求,用 50 行极其优雅、无状态、无需外部依赖的代码解决了问题。两天上线,零 Bug,下一个接手的人一眼就能看懂。然后你默默回去修下一个 Bug。
你的同事 B接到了类似的需求。他敏锐地嗅到了“搞一波大动作”的机会。他引入了最新的消息队列,搞了一套基于 Pub/Sub 的微服务解耦机制,外加一个极度灵活的动态配置中心。他拉着各部门开了 5 次架构对齐会,花了 3 个星期,提交了 50 个 PR。
到了年底晋升答辩,命运的齿轮开始转动。
B 在 PPT 上展示了他那张密密麻麻、满是高大上名词的“企业级事件驱动架构图”,评委频频点头,惊呼“具备极强的技术深度和前瞻性布局”,B 顺利拿到了高层级的晋升(Staff/Principal)。
而你呢?你不仅什么都没拿到,甚至连材料都写不出几行字。因为你把问题解决得太简单了,导致你的贡献变成了 “隐形的”。
这当然不是老板故意使坏,而是我们的评价体系出现了极其严重的“逆向淘汰”Bug。
你很难为你“没有构建的灾难”去编织一个宏大的叙事。这套错位的激励机制,甚至从你面试的那一天就开始了。回想一下系统设计面试,如果你给出一个单体数据库+直白API的务实方案,面试官会皱眉;但如果你在白板上疯狂画微服务、分库分表、分布式锁,面试官才会满意地点头。
你学到了什么?你学到的是:复杂性才能显得你聪明,哪怕它是毫无必要的。
克制,才是最高级的炫技
难道老实人就活该吃亏吗?面对职场里这种“未挣得的复杂性(Unearned complexity,那些不必要的、额外的复杂元素)”,我们到底该怎么办?
作为一名写了多年代码、也面试过N多人的老兵,我想带你看看Go 语言的生存哲学。
如果你把编程语言拟人化,Go 就是那个在技术圈里坚持写简单代码的“老实人”。
在众多技术论坛上,用 Rust 编写一个极其复杂的生命周期标注,或者玩弄高级宏,往往能赢得满堂喝彩,被视为“真正的技术极客”。而 Go 团队呢?他们拒绝加入复杂的特性,坚持去构造函数、去继承。结果常常被嘲笑“简陋”、“缺乏智力挑战”。
这就和你我在职场中的处境一模一样:人们很容易为解决极其复杂问题的精巧设计而惊叹,却极难去赞美为了“把复杂性挡在门外”而付出的巨大克制。
但结果呢?Go 凭借着这种极简,支撑起了整个云原生时代的半壁江山。Go 证明了一个硬道理:真正的工程实力,从来不是看你能堆砌多少种设计模式,而是看你能否用最直白的结构,解决最复杂的业务。
任何一个新手都能把系统搞复杂;只有具备了足够的经验和自信,你才懂得何时应该留白。
破局路径:如何包装你的“简单”?
如果你认同“简单”的价值,但又不想在绩效和晋升上吃亏,你就必须学会一套 “防御性职场包装术”。
记住这个核心心法:你的代码可以很简单,但你必须让别人看到你达成简单的“思考过程”有多复杂。
工作成果本身是不会说话的,你需要把“决定不做什么(Value of NOT building)”转化为你的影响力。从今天起,改变你的表达方式。
你照着做就行:晋升/答辩对线话术模板
无论是在写周报、写晋升材料,还是在架构评审会上,直接套用以下模板:
场景一:写晋升材料 / 简历
❌ 吃亏的普通写法:
“独立负责了功能 X 的开发,编写了 50 行核心代码,按时上线,没有出 Bug。” (评委:这活儿实习生也能干。)
✅ 高绩效的降维打击写法:
“主导了功能 X 的架构演进。深度评估了包括事件驱动架构、自定义中间件抽象等三种高并发方案,从 ROI(投入产出比)和系统熵增角度,排除了现阶段不必要的过度设计,为团队节省约 15 人日的研发与运维成本。最终敲定极简直白架构,两天内完成交付,并在过去 6 个月内保持零故障运行,确立了团队‘务实驱动’的工程标杆。”
场景二:架构评审会遭遇“过度设计”逼问
当有人在会议上质问你:“难道我们不应该加个抽象层,为了未来百万并发做防范(future-proof)吗?”
不要立刻妥协去加代码。
✅ 教科书级硬核回击:
“我做过推演:如果以后确实需要扩展,添加这个层级只需要大约 2 天的重构代价;但我同样评估了,如果现在就强行加上,会立刻增加 30% 的系统复杂度和长期的维护成本。基于目前的业务增速,这属于‘未挣得的复杂性’。权衡之下,我认为我们现在的架构决策应该是‘等待’。”
你不是在对抗,你是在向所有人展示:你看到了复杂性,并且你用专业的工程判断力,主动选择击碎了它。
写在最后
无论你是写日常业务代码,还是设计分布式系统, “简单”永远是最难达到的境界。
如果我们继续只奖励复杂性,无视简单性,就不要对屎山代码越来越臃肿感到惊讶。希望这篇文章,能帮到那些依然在坚持写出整洁、克制代码的无名英雄们。
今日互动:
你在公司里,是那个苦逼的“工程师A”吗?你见过最离谱的“PPT过度架构”是什么样的?
欢迎在评论区分享你的经历和观点。也欢迎来 云栈社区 的开发者广场,和我们一起聊聊技术人的那些“坑”与“道”。
