Javascript

别把重复当积累

别把重复当积累

很多技术人把重复当成积累,用工作年限衡量自身价值。但经验有保质期,纯技术经验会随框架过时而贬值。真正值钱的不是“知道怎么做”,而是“知道为什么这么做”——认知层面的经验越积越厚。本文讨论经验密度、安全感来源和低密度积累的信号。

架构该拆了,你准备好了吗

架构拆分决策

Netflix 最近分享了如何重新设计其实时服务依赖地图,核心不是技术细节,而是拆分决策的时机和方式。做了很多年技术管理,我发现架构该不该拆、什么时候拆、怎么拆,是最考验技术管理者判断力的问题。多数团队在两个极端之间摇摆:要么忍着不动直到系统崩溃,要么一上来就大规模重构然后烂尾。

开源不是技术选型,是组织能力

开源治理与团队组织

先讲一个场景

我见过一个团队,技术选型会上,Leader 说"这个组件我们用开源的,社区活跃、文档齐全"。然后呢?然后就没了。没有维护计划,没有贡献策略,没有 license 审计。三个月后,依赖的库作者跑路了,代码里留着几十个 GitHub issue 没人管。更尴尬的是,这个库的 license 是 GPL,法务找上门来问"咱们的代码是不是也要开源"。

你写的代码,你敢上线吗?

工程师作为代码守护者

最近看到一条数据让我有点恍惚——Sonar 的2026年开发者调查报告显示,AI 已经占了提交代码的42%,但96%的开发者并不完全信任这些代码。拿了就用,用了又不信,整个行业陷入了一种奇怪的拧巴状态。

我挺能理解这种拧巴的。上个月我们团队做了个内部统计,工具生成的代码在PR里占比确实越来越高,但真正的问题不是"AI能写多少代码",而是——写了之后,谁来确认这些代码是对的?

贡献者退场,守护者上场

做得太好,反而升不上去

上周看到一个热搜话题:一个人用AI做出了过去需要一个团队才能做的产品。评论区一片焦虑,有人说"技术管理者要失业了"。

我觉得这话说反了。AI越能干,越需要有人决定让它干什么、不干什么。真正该焦虑的,是那些还在用"做得好"来定义自己价值的技术管理者。

做得太好,是一种甜蜜的陷阱

我见过不少技术leader,包括我自己,刚做管理时的第一反应是——代码review我得上,架构设计我得参与,关键技术选型我得拍板。

原因很简单:这是我们最擅长的事,也是最有安全感的事。写出一段精巧的代码、解决一个棘手的bug,那种成就感是开会、写文档、做1on1给不了的。

但问题是,如果你的时间都花在review代码上,谁来做技术规划?谁来协调跨团队的需求冲突?谁来处理团队里那个能力强但态度差的人?

没人做。因为这些事"不急"。或者更准确地说,我们下意识觉得这些事没有"亲手写出一个漂亮的函数"来得有成就感。

身份认同才是真正的瓶颈

我在金融科技团队里见过一个典型场景。新业务要上线,技术方案讨论时,CTO问了一个架构层面的问题。整个会议室沉默了十秒,所有人看向那个最强的工程师。

他答得很好。但我在想:如果这个团队继续发展,他还是那个被提问的人,还是那个回答问题的人?

招人不看代码,看什么

做了这么多年技术面试,回头看,最贵的成本不是招错一个人,而是你根本不知道自己错在哪里。

早期我面试有个执念:能把算法题写出来的人,工程能力不会差。这个信念让我错过了一些人,也让我招错了一些人。直到有次被现实教育——一个面试表现非常出色的候选人,入职三个月就让我开始怀疑自己的判断力。

第一次看走眼

那个候选人来的时候,我们聊了两个小时。从系统设计到编码细节,他都能接住。我问他一个并发场景怎么处理,他几乎是脱口而出地给了三种方案,还主动比较了优劣。

面试结束我就跟团队说,这个人我要了。

入职后呢?代码确实写得不错,Review也能过。但慢慢地问题浮出来了:跟产品对需求理解有偏差时,他不会主动澄清,而是按自己的理解做完再说。跟后端联调遇到接口不一致,他倾向于等别人改而不是沟通解决。分配任务时,他永远选技术最有趣的那个,而不是业务最紧急的那个。

三个月后我开始反思:我在面试里到底看到了什么?

答案是:我看到了一个"面试能力强"的人,但没看到一个"工程能力强"的人。这两个东西,重叠度远没有我想象的高。

"流畅"的陷阱

没权力怎么推事

你有没有遇到过这种场景——

你是前端技术负责人,发现跨团队项目里有个架构设计有明显问题。如果按现有方案走,半年后一定踩坑。你去找后端团队负责人沟通,对方听了,点点头,然后说:"嗯,我们再看看。"

然后就没有然后了。

你跟老板汇报,老板说"你自己去协调"。你没有对那个团队的考核权,没有晋升推荐权,甚至跟他不在一个BU。你唯一能依靠的,是你的"技术判断力"和——怎么说呢——某种说不清道不明的"影响力"。

这种"没权力但要把事推成"的经历,大概是技术管理者最日常的困境之一。

权力为什么不好使

先说一个反直觉的结论:在技术团队里,靠权力推事情,往往是最低效的方式。

你可能觉得,如果我是总监,我说的话别人就会听。事实上,在大厂的组织架构里,你日常需要协作的人,大概率跟你不存在汇报关系。跨团队、跨BU甚至跨公司(外部合作),你的职级对别人没有直接约束力。

而且,即使在团队内部,纯粹的权力推动也会产生副作用。团队成员会因为"你是leader"而执行你的决策,但他们不会投入额外的思考。你在的时候执行,你不在的时候走样。这不是执行力问题,是动力问题。

真正的技术影响力,是让对方觉得"这事值得做",而不是"这人我惹不起"。

同步不再将就

上个月,一个朋友在群里吐槽:他们的在线文档产品要加多人协作功能,技术负责人评估了一下,给了个方案——用 WebSocket 广播所有编辑操作,冲突了就提示用户"文档已被他人修改,请刷新后重试"。

我问他,你们打算让用户刷新多少次才能写完一段话?

这不是段子。在我见过的技术选型里,"广播 + 冲突提示"仍然是很多团队处理实时协作的第一反应。理由很简单——实现成本低,逻辑好理解。但这条路的尽头,是一个永远填不完的坑。

冲突不是边缘情况

想象一个场景:两个人同时编辑同一份文档的同一行。A 把"用户协议"改成了"服务条款",B 在同一位置加了个逗号。两个操作几乎同时发生,网络延迟让它们到达服务器的顺序不确定。

传统做法要么让 A 的修改覆盖 B 的(后到的覆盖先到的),要么把文档锁住让 B 等 A 改完。前者丢数据,后者体验差。

CRDT(Conflict-free Replicated Data Type,无冲突复制数据类型)提供了第三条路:从数学上保证,只要操作满足交换律和结合律,无论网络传输顺序如何、延迟多长,所有客户端最终都会收敛到同一份数据。不需要中心服务器仲裁,不需要锁,不需要用户手动解决冲突。每个操作本身就是一个独立的、可传播的、可合并的单元。

从论文到产品的距离

微前端落地两年,我们开始往回收了

上个月,我们默默地把三个微前端子应用合并回了两个。没有发公告,没有写技术复盘,就是安安静静地把代码挪了回去,删掉了两个仓库,关掉了四条CI流水线。

如果有人在半年前问我"微前端到底好不好",我大概率会给他列一堆优点:独立部署、技术栈无关、团队自治。但现在我的回答变了:看你的团队到底有没有拆的必要。

这个判断听起来像废话,但我见过太多团队在这件事上栽跟头,包括我自己。

拆的时候有多爽,合的时候就有多痛

故事的开始总是相似的。一个大型前端项目,十几个开发者在同一个仓库里撞来撞去,merge冲突是家常便饭,发版节奏互相牵制。有人提了微前端,方案评审会上大家眼睛都亮了——每个团队自己的子应用、自己的发布节奏、自己的技术栈,互不干扰,多美好。

我们也是这么想的。2024年初,基于qiankun把主应用拆成了五个子应用,按业务域划分。前半年确实爽:团队A改了代码不用等团队B review,团队C想用新版本的React自己升,团队D甚至单独搞了一套构建流程。

问题是从第二年开始集中爆发的。

页面