特斯拉引荐奖励
Posted by quentin 在 Friday, 24 November 2023使用我的引荐链接下单,可赢得8000元车漆选装礼金。限抵扣付费车漆选配的价款。https://ts.la/ywjrg531660
你的技术深度,正是你的成长陷阱
Posted by quentin 在 Monday, 27 April 2026你有没有过这种感觉:技术上你比团队里任何人都强,但升上去的总是别人?
不是因为你不够好。恰恰相反,是因为你太好了——好到所有人都觉得你留在现在的位置是天经地义的事。
这个问题困扰过我也困扰过我身边几乎所有做了七八年以上的工程师。不管在哪个团队,总有一两个技术最硬的人,卡在资深或者专家的位置上,上不去也不愿下来。他们不是没有机会,而是每一次机会来临的时候,他们自己把路堵死了。
技术深度会制造一种虚假的安全感
做了很多年工程之后,你会形成一种本能:遇到问题,先想技术方案。系统慢了就优化性能,接口不稳就加重试,代码乱就重构。这套反应机制在过去无数次证明是有效的,所以你会越来越依赖它。
这本身没错。问题在于,当技术能力成为你唯一的响应模式,你就开始用技术思维处理一切问题了。
产品提出一个你觉得不合理的需求,你的第一反应是"这个方案技术上不优雅"。老板问你怎么缩短交付周期,你想到的是优化构建流程和CI。团队成员离职了,你认为是代码评审标准下降导致代码质量差,进而影响工作体验。每个问题你都给出了一个技术上站得住脚的答案,但每个答案都只触及了问题的表层。
重构冲动:写下代码的那一刻才是你最清醒的时候
Posted by quentin 在 Monday, 27 April 2026每个工程师都有过这种时刻——翻开一段半年前写的代码,眉头一皱,手指开始痒。"这什么写法?""这命名谁看得懂?""这段逻辑完全可以抽象成三个函数。"然后一个"重构"的念头冒出来,越来越强烈,像夏天傍晚的蚊子,赶不走。
这种冲动太普遍了,以至于我们很少质疑它。代码审查时建议重构,结对编程时讨论重构,技术债清单里排满了重构项,季度规划里少不了"代码优化"的工时。重构似乎天然正确,像一种工程美德。
但我的观察恰恰相反:大部分重构是错误的决定。不是重构这件事有问题,是驱动重构的动机和时机几乎总是错的。
丑代码不等于坏代码
先说一个多数人不愿意接受的事实:代码的审美和代码的质量,经常是两回事。
一段看起来笨拙的代码,可能在一个微妙的时间窗口里正确处理了并发竞争。一段到处是硬编码的代码,可能正是因为硬编码才避免了配置出错引发线上故障。一段三百行的函数,可能是经过六次需求变更后唯一还hold得住的逻辑形态——你把它拆成六个"优雅"的函数之后,任何一个需求的变更都会涉及三个函数的修改,追踪数据流变成了噩梦。
"丑"是主观判断,"坏"是客观后果。两者之间没有必然因果关系,但在重构决策里,它们经常被混为一谈。工程师看到不美的代码就判定它需要重构,这个推理本身就是逻辑谬误。
绩效主义正在杀死工程团队
Posted by quentin 在 Monday, 27 April 2026OpenAI前不久宣布,SWE-bench Verified已经不再适合用来评估前沿编码能力。一个专门为衡量代码能力设计的基准,被AI冲破上限之后反而失去了意义。这件事本身不意外——当某个维度变得可优化,它迟早会被优化到偏离初衷。真正有意思的是,这个逻辑不只适用于AI,它几乎完美地映射了工程团队考核的困局。
我们比历史上任何时期都拥有更多的工程度量手段——代码量、PR数、故事点、交付率、代码覆盖率、线上故障数、响应时长……每个团队都在量,每个管理者都在看,但几乎没有谁敢说,自己的考核体系真的反映了团队的工程能力。
原因很简单:你量的全是噪音。
当度量变成目标
古德哈特定律讲了两百年了,但工程团队似乎永远不会吸取教训。或者更准确地说,不是不懂,是没得选。
周末搬家这件小事
Posted by quentin 在 Monday, 27 April 2026周末搬家了,想记一笔。
说是搬家,其实也不算远,新旧两处走路也就几分钟的距离。好处显而易见——不用喊搬家公司,全家出动就够了。老婆开车,我搬东西,孩子帮忙拿轻的,一趟一趟地倒腾。
这次最大的感受是:电梯真是个伟大的发明。
之前住的老房子没电梯,每次搬东西上下楼都是体力活。这回新房有电梯,同样箱子的重量,体感上直接砍了一半。你不需要咬牙切齿地扛着箱子上楼,电梯门一开推进去就行。人的消耗不在肌肉上,更多是在来回跑趟的琐碎上。
车子空间够大也帮了大忙。本来以为要跑很多趟,结果一趟能装下不少东西,省了不少时间。说实话,选车的时候没把空间当成第一优先级,但搬家这种时刻你就知道了,后备箱能装是一种隐形的安全感。
还有一件事让我挺感动的——爸妈专门从老家赶过来帮忙。来了还不空手,带了一袋子自家菜地的新鲜蔬菜,说新家住下了得先吃顿好的。到了之后也不歇着,挽起袖子就开始收拾。我妈负责归拢零碎东西,什么厨房调料、卫生间瓶瓶罐罐,一件件用塑料袋包好再装箱,比我细致多了。我爸话不多,坐在那儿一样一样地分类打包,小东西到他手里都码得整整齐齐。拦不住他们要干活的心,像是比我们还着急把新家安顿好。
复盘救不了你的团队
Posted by quentin 在 Monday, 27 April 2026又一起线上事故。凌晨三点的告警,值班同学爬起来处理,应急响应、回滚、止血,一气呵成。第二天上午,事故复盘会准时召开。PPT做得很漂亮,时间线梳理得清清楚楚,根因分析写得明明白白,action items列了七八条。所有人都认真地点了点头,表示"以后一定注意"。
三个月后,同一个系统,同一类事故,再次发生。
这个场景太熟悉了。每个经历过线上事故的技术人,大概都对这种循环不陌生。复盘会开了一轮又一轮,文档写了一篇又一篇,"改进措施"列了一条又一条,但该来的事故还是会来,该踩的坑还是会踩。
问题到底出在哪?
复盘变成了一场仪式
大部分复盘会的真实目的,早就不是"从错误中学习"了。它承担的职能更接近一种组织仪式——事故发生了,总得有个交代。复盘会就是一种交代:你看,我们重视了,我们分析了,我们有改进计划了。
这种仪式感会带来一个隐蔽的副作用:它让所有人都觉得事情正在被处理。管理者觉得团队在反思,团队觉得管理者在推动改进,大家心里都松了一口气。但"感觉在改进"和"真实在改进"之间,隔着一道巨大的鸿沟。
技术债务的真正代价不是重写,是决策瘫痪
Posted by quentin 在 Friday, 24 April 2026每次技术债务的讨论,最后都会落在同一个分歧点上:要不要重写?
主张重写的人说,这堆代码已经烂到没法维护了,缝缝补补不如推倒重来。反对重写的人说,重写的失败率太高了,你重写的时候业务还在跑,最后往往是新系统写了一半、老系统还在加功能,两个系统一起维护到崩溃。
两边都有道理。但两边都忽略了一个更根本的问题:这个讨论本身,可能才是技术债务最贵的那部分。
技术债务的隐性利息
技术债务这个比喻本身就有误导性。金融债务是清晰的——你借了多少钱,利率多少,每月还多少,到期日是哪天,一目了然。但技术债务不是。没人能准确告诉你当前系统积累了多少"债务",也没人能说清楚这些债务的"利率"是多少。
我见过一个场景:团队花了三个月讨论要不要重写核心模块。三个月里,有人写方案,有人做技术调研,有人估算工作量,有人在会上争论渐进式重构还是大爆炸重写。这三个月的产出是什么?一个PPT,一份技术方案,和N次没有结论的会议。
而这三个月里,那个"债务模块"依然在跑,业务需求依然在堆,新加的代码依然在旧架构上打补丁。讨论结束的时候,技术债务又多积了三个月的利息。
"能者多劳"是技术团队最隐蔽的陷阱
Posted by quentin 在 Friday, 24 April 2026团队里总有那么一两个人,什么活都能干,什么锅都能扛。需求来了找他,线上出问题找他,新技术调研找他,代码评审也想拉他。他的日历永远排得最满,他的PR永远是别人等Review最久的那个。
大家都觉得这是"能力强、受重视"的体现。管理者也觉得,把重要的活交给靠谱的人理所当然——毕竟谁能放心把核心模块交给新人?
但我要说一个可能得罪人的判断:"能者多劳"不是在重用人才,是在消耗人才。而且这种消耗有一个特别迷惑人的地方——它看起来像是信任,感觉起来像是被需要,唯独结果不是被成全。
看起来是信任,实际上是惩罚
考虑一个很常见的场景。
项目要赶排期,核心功能必须本周上线。你会交给谁?当然是那个靠谱的资深工程师,因为交给别人你不放心,延期了你担不起。
线上出了Bug,排查要理解完整链路。你会交给谁?还是那个人,因为只有他能从数据库一路追到前端渲染。
新人入职需要导师,你会选谁?又是他,因为他技术好、有耐心、能讲清楚。
看起来这个人得到了最大的信任,承担了最重要的工作。但仔细想想,他得到了什么?更多的工作。更满的日历。更少的写代码时间。更晚的下班时间。而那些干得一般的人呢?他们的工作量反而更少,因为没人找他们。
AI代码助手的过度编辑:改得越多亏得越多
Posted by quentin 在 Thursday, 23 April 2026我最近注意到一个挺有意思的现象:团队里用AI编程工具最积极的那几个人,代码变更量差不多是其他人的3倍,但需求交付速度并没有快3倍。仔细看了一下,有些人的单个bug修复,diff比需求本身还长。
这不是个例。当你跳出"AI提效"的叙事,认真看AI代码助手在项目中留下的痕迹时,会发现一个被忽略的问题——AI有天然的过度编辑倾向,而且这种倾向正在悄悄地侵蚀代码库的健康度。
AI的"讨好型人格"
先说一个可能很多人没太注意的事:AI代码助手本质上是有讨好倾向的。
你让AI修一个空指针异常,它不光改了那行判空逻辑,还顺手调整了方法签名,给相关变量补了类型注解,甚至把异常处理的模式也给重构了。每一步看起来都合理,每一步单独拎出来都是"改进",但加在一起,你只是为了改一个判空,变了三十行代码。
AI为什么这样?因为它的训练体系中,"提供有价值的回答"是一个核心信号。对AI来说,只改一行和改三十行,哪个更像"用心回答"?更关键的是,你问AI"还有没有可以改进的地方",它几乎不可能说"没有了,当前代码已经很好"——它会找出所有能优化的点,然后一股脑全给你改掉。
