
工作五年,我见过最危险的程序员:不是菜,是"太熟"
前阵子团队来了个应届生。
入职第三周,架构评审会上,他举手问了一句,全场瞬间安静。
"这个鉴权,为什么要走两次网络请求?在网关层直接做掉不行吗?"
坐我旁边那位,工龄快八年了。他愣了两秒,说:"当年就这么设计的,历史原因。"
应届生没放过他,又补一句:"那……现在还是历史原因吗?"
这次,没人接得上。
散会我一直在回味这个场景。那位老哥真不菜,整个系统哪个模块谁写的、哪年埋的坑、当时为啥那么选,他门儿清。可你发现没有——他对"这系统为什么长成现在这样"的解释,全停在过去时。
他知道所有的来龙,却说不出半点去脉。
那天我想明白一件事:干这行,最危险的从来不是"我啥也不会"。是"我早就都会了"。
前者会被淘汰,但人家自己知道得追;后者不知道,还觉得自己混得挺稳当。
"稳"是个错觉,你脚底下的地一直在动
先泼盆冷水:程序员的知识,是有保质期的。
学土木的,四十年前学的结构力学现在照样能用,物理定律又不会变。可你回头看看这十来年前端成了啥样——
jQuery 时代大家还在手撸 DOM,转眼虚拟 DOM、Hooks、Signals 一路杀过来;打包工具从 Gulp 到 Webpack 再到 Vite、Rspack,基本三年换一次血;状态管理从当年 Redux 全家桶那股"仪式感",到现在人人都爱 Zustand 这种"拎包就走"。
一个 2018 年就停止学习、靠老本混到今天的人,缺的真不是几个新 API。
他缺的是一整套脑子里的思维方式。
你让他搭个现代 monorepo,让他 review 一段用 Suspense 做数据流的代码,让他聊聊 RSC——他不是不认识那几个词。他是不认识那些词背后的想法。
补语法,一晚上的事。补思维方式,得半年。差距就是这么被拉开的。
我认识个十几年经验的架构师,周末在自学 Rust。公司又不用,也没打算迁啥东西。我问他图啥,他说:"我最近老 review 内存相关的问题,想换个脑子,从'所有权'这个角度重新理解一遍。"
这不叫卷。这叫他太清楚一个道理:你在一个陌生领域啃出来的东西,会在你完全想不到的地方,帮你解决另一个领域的难题。
舒适区,是好程序员慢慢变平庸的地方
每个人都有主场。你 React 溜,前端的活全找你;你 Java 稳,服务端的锅都归你。
有专精是好事,深度值钱。
问题出在哪?——当"舒服"变成你挑活儿的唯一标准。
这剧本我看太多了:一个人一年到头只接自己熟的那类需求。一年后呢?他还是只会一年前会的那些,别的一点没长。
然后某天,来了个跨栈的活儿,或者要在前后端之间做个架构取舍。这位"资深选手"突然就不够用了——按他那工龄,本不该这样啊。
还有更隐蔽的一种。一个只在"请求-响应"里泡大的人,看啥问题都想往请求-响应上套;一个先学了消息队列的人,哪怕一个同步调用又简单又对,他也非得给你上个队列。
不是他选对了工具,是工具绑架了他。 手里攥着把锤子,看啥都像钉子。
我见过真正在长本事的那批人,都有个共同点:他们会主动找不痛快。
不是瞎折腾。是他们会去接一个自己没写过的服务的 on-call;去 review 一块压根不熟的代码;捡起一个卡在自己能力边上的需求。
因为那点"不舒服",恰恰就是本事在长的信号。
再说个扎心的规律:那些常年躲着不舒服的人,往往就是凌晨两点线上炸锅时,最帮不上忙的那个。救火靠的是"我大概知道各模块怎么咬合"这种全局手感——而舒适区选手,缺的正是这个。
老鸟嘴里的"基本功",到底在说啥
你肯定听人说过"多练基本功"。听着像会议室里的正确废话,是吧?
但这话真挺具体的。
基本功不是某个语言、某个框架。它是那些换个技术照样能用的底层东西:数据结构之间怎么取舍、浏览器那条主线程凭啥会卡、事件循环到底怎么排宏任务和微任务、网络请求为啥会失败又为啥那么贵。
为啥这些跟"持续学习"关系这么大?
因为它决定了你能理解新东西的天花板。
基本功扎实的人,新框架一出,翻翻文档就能在脑子里搭出"它大概在干嘛、为啥这么设计"。基本功空的人呢?只能把框架当黑盒,照着例子抄,一旦它表现得不对劲,直接懵——因为他从没懂过里面在发生啥。
我真见过工龄十年的,卡在一个应届生几分钟就搞定的问题上。
不是他慢。是那问题的本质是事件循环的执行时序,应届生前不久刚啃过,而他在更高的抽象层待太久了,早不往下看了。
这差距不丢人。但它会利滚利地变大——你越不补,坑越深。
读别人的代码,被严重低估了
大部分人的时间都在写代码。但长得最快的那批,会花不少时间读代码——还是带着目的读。
"读懂它做了啥"和"读懂它为啥这么写",是两码事。
前者,你 debug 时天天干。后者,才真正把你变成更好的工程师。
你读一个设计精良的开源库,多问几句:"作者为啥抽这一层?""这个 API 为啥长这样?""这些细节为啥要藏起来?"——你等于在上一堂任何教程都给不了你的设计课。
Code review 更是被白白浪费的机会。
你 review 一个 PR,光挑 bug、抠格式,那大半价值都被你扔了。真正值钱的,是你去琢磨作者是怎么理解这个问题的,然后专挑那些"跟你想的不一样"的地方发问。
我参与过最好的 review,感觉根本不像把关,像俩人凑一起做设计。
一天一小时,三年就是一千小时
"每天专注学一小时",听着毫无难度对吧?
可你我都懂,全职上班以后,能常年坚持的人少得可怜。永远有更急的事,永远有排不完的需求,永远有个刚开完、得缓一缓的会。
但就是这一小时,短期你看不出啥,长期刺眼得很。
三年,差不多一千小时。够你在一个新领域啃出真深度,摸熟两三门新技术,多攒一大把看问题的角度。
而且复利最猛的地方,在领域的交叉口。一个既懂前端渲染、又懂点网络协议的人,跟一个只懂其中之一的,做出来的决策根本不是一回事。
你每多啃一个相邻领域,都在给已有的知识做乘法。因为最带劲、最值钱的洞察,往往就藏在两个领域的接缝里。
那些顶尖的人,被问起怎么成长的,常常说不清,只会来一句"我就是好奇""我读得多"。
真话,但没说全。真机制是:他们一直在相邻的知识上做小额投资,攒到某个点,知识面大到能自己长出意想不到的连接。新问题一来,他们能调用的东西更多——不光是更快,是更容易一眼看穿这到底是个啥问题。
别把自己活成"React 工程师"
最后这条,我觉得最重要。
能在二三十年里一直吃香的人,有个共同点:他们不拿技术栈定义自己。
他们认的是"我能搞懂复杂系统、能解决难题、为了有用能去学任何该学的东西"。他们不是 Java 工程师、React 工程师、数据库专家——他们是"一个眼下恰好在干这些的工程师"。
这个身份差别,比听着重要多了。
你的身份要是绑在某个技术上,行业每动一下,对你都是威胁。你会本能地抗拒、贬低,来一句"这不就是换汤不换药"。
可你的身份要是绑在"我能一直学、一直适应"上,每次变动都是机会。
code身份绑在技术栈上 身份绑在"学习能力"上
────────────── ──────────────────
新框架出现 → 感到威胁 新框架出现 → 感到机会
"这不就是XX换个名" "它到底解决了啥老问题"
本能抗拒、看不上 当学生一样去拆差异
每次变动都在耗你 每次变动都在喂你
路:越走越窄 路:越走越宽经验是好东西。但它有个特定的翻车方式:当过去的经验强到让你懒得再认真看新信息。
"这个我们三年前试过,黄了"——这句话,有时候是宝贵的预警,有时候是想象力的破产。因为你压根没去想"现在有啥不一样了"。
能一直保持锋利的人,是那种一手攥着经验、一手攥着好奇心的:他带着踩过的坑、带着模式识别,但他也清楚这模式这次没准就不灵,所以他对"我可能错了"一直敞着门。
这种人很少。因为它需要一种谦卑,而经验有时候恰恰在磨掉这种谦卑,而不是养大它。
说到底
成长这事,说白了是你自己的事。
网上的学习材料多到用不完,行业跑得也够快,只要你还保持好奇,就能一直往前走。卡住你的从来不是"信息不够",是那套决定你到底会不会真去啃的习惯和心态。
那位在评审上被应届生问住的老哥,真的一点不菜。
他只是太久没被人问过"现在还是历史原因吗"这句话了——包括,他自己也很久没这么问过自己。
别活成那个只有来龙、没有去脉的人。
你最好的作品,应该永远还在前头。
如果这篇对你有帮助,欢迎关注公众号「前端达人」,每周更新实用前端干货。

