写给2025年的我:在保持真我与适应社会之间找到平衡点

在这个复杂多变的世界里,每个人都以自己独特的方式存在着,而我,则被周围人贴上了“憨”、“固执”这样的标签。面对这些评价时,我的内心经历了从最初的困惑不解到后来逐渐接受的过程。起初,我试图去改变自己,让自己看起来更加圆滑、世故,但很快我发现,这样的尝试不仅让我感到疲惫不堪,更重要的是,它违背了我的本心——那个渴望真实表达自我的灵魂。

缓存的一致性幻觉:为什么缓存越多数据越不可信

每个做过高并发系统的人,大概都经历过这样的时刻:线上出了个数据不一致的bug,排查一圈发现是缓存没更新。修完之后加个主动失效,觉得踏实了。过几天又出现,这次是另一个缓存层级。再修。再过段时间,用户反馈看到的金额对不上——你一查,三个缓存层级,两个过期时间不一样,一个还挂着CDN缓存头。

这不是段子,这是每天都在生产环境里上演的日常。

团队解决性能问题的第一反应永远是加缓存。页面慢?加个Redis。接口慢?加个本地缓存。前端渲染慢?加个HTTP Cache-Control。数据库扛不住?加个查询缓存。每一层缓存都在解决一个真实的问题,但每一层缓存也在制造一个你暂时看不见的新问题——等到它浮现的时候,往往已经是你最不想看到的形态。

 

缓存是性能的银弹,也是一致性的地雷

 

这里有个反直觉的事实:缓存从不制造bug,它只是把bug从"现在就暴露"延迟到"不知道什么时候暴露"。

一个没有缓存的系统,数据读出来就是最新的,哪怕慢一点,至少不会错。但当你开始在链路上堆缓存,你事实上引入了一个隐含假设:旧数据在一段时间内是可以接受的。这个假设在大部分场景下成立,但"在大部分场景下成立"和"在你的场景下成立"是两回事。

1on1已死,只是通知还没到你

博客分类: 

每个技术管理者都有个执念:1on1。书上说1on1,培训教1on1,入职第一天HR就跟你说"你的1on1频率是每周一次"。于是你信了,每周往日历上塞一个30分钟的会议邀请,拎着笔记本走进小会议室,然后——聊了30分钟的进度。

你是不是觉得这也没什么?毕竟了解项目进展也挺重要的。但问题是,你有没有想过,这30分钟的进度同步,和你早会上问的那句"这个需求什么时候能提测",到底有什么本质区别?

1on1正在变成一场管理者自我感动的仪式。你去了,你聊了,你觉得自己在"关心人"。但如果你把过去半年1on1的聊天记录拉出来看一遍,大概率80%的内容是项目状态、deadline确认、阻塞项梳理。剩下20%是"最近压力大吗"——然后对方说"还好",你说"注意休息",对话结束。

这不是1on1,这是换了个场地的工作汇报。

 

它是怎么一步一步变成周报会的

 

没有人一开始就打算把1on1搞成这样。每个新晋管理者第一次和下属1on1的时候,都带着真诚来的——"我想了解你的想法"、"有什么困难尽管说"。但很快,现实就开始纠正你的浪漫。

你的错误处理只是安慰剂

打开任何一个前端项目,全局搜索 `catch`,你会看到什么?一大片空荡荡的 catch 块,偶尔跳出几个 `console.error`,再偶尔冒出一行 `message.error('系统异常')`。后端项目也好不到哪去,try-catch 包着业务逻辑,catch 里面的处理方式跟前端如出一辙——记个日志,打个错误码,然后呢?然后什么都没有。

我把这种写法叫"安慰剂错误处理"。它的作用不是解决问题,而是让写代码的人觉得自己处理了问题。就好像感冒的时候吃维C,你做了点什么,但那点什么跟治愈没有关系。

更残酷的事实是:大部分错误处理非但没用,还在制造新的问题。

 

try-catch 不是错误处理,是错误藏匿

 

先说一个很多人不愿意承认的事:try-catch 是所有错误处理手段里最廉价的那一种。它的成本最低,所以它的价值也最低。

我见过太多这种代码:一个函数内部包了三层 try-catch,每一层都把异常吞掉,最外层返回一个 `{ success: false, message: '操作失败' }`。调用方拿到这个返回值,判断 `success` 为 false,然后弹个 toast —— "操作失败"。用户看到这四个字,内心毫无波澜,因为他已经见过一千次了。

你的技术深度,正是你的成长陷阱

博客分类: 

你有没有过这种感觉:技术上你比团队里任何人都强,但升上去的总是别人?

不是因为你不够好。恰恰相反,是因为你太好了——好到所有人都觉得你留在现在的位置是天经地义的事。

这个问题困扰过我也困扰过我身边几乎所有做了七八年以上的工程师。不管在哪个团队,总有一两个技术最硬的人,卡在资深或者专家的位置上,上不去也不愿下来。他们不是没有机会,而是每一次机会来临的时候,他们自己把路堵死了。

 

技术深度会制造一种虚假的安全感

 

做了很多年工程之后,你会形成一种本能:遇到问题,先想技术方案。系统慢了就优化性能,接口不稳就加重试,代码乱就重构。这套反应机制在过去无数次证明是有效的,所以你会越来越依赖它。

这本身没错。问题在于,当技术能力成为你唯一的响应模式,你就开始用技术思维处理一切问题了。

产品提出一个你觉得不合理的需求,你的第一反应是"这个方案技术上不优雅"。老板问你怎么缩短交付周期,你想到的是优化构建流程和CI。团队成员离职了,你认为是代码评审标准下降导致代码质量差,进而影响工作体验。每个问题你都给出了一个技术上站得住脚的答案,但每个答案都只触及了问题的表层。

重构冲动:写下代码的那一刻才是你最清醒的时候

每个工程师都有过这种时刻——翻开一段半年前写的代码,眉头一皱,手指开始痒。"这什么写法?""这命名谁看得懂?""这段逻辑完全可以抽象成三个函数。"然后一个"重构"的念头冒出来,越来越强烈,像夏天傍晚的蚊子,赶不走。

这种冲动太普遍了,以至于我们很少质疑它。代码审查时建议重构,结对编程时讨论重构,技术债清单里排满了重构项,季度规划里少不了"代码优化"的工时。重构似乎天然正确,像一种工程美德。

但我的观察恰恰相反:大部分重构是错误的决定。不是重构这件事有问题,是驱动重构的动机和时机几乎总是错的。

 

丑代码不等于坏代码

 

先说一个多数人不愿意接受的事实:代码的审美和代码的质量,经常是两回事。

一段看起来笨拙的代码,可能在一个微妙的时间窗口里正确处理了并发竞争。一段到处是硬编码的代码,可能正是因为硬编码才避免了配置出错引发线上故障。一段三百行的函数,可能是经过六次需求变更后唯一还hold得住的逻辑形态——你把它拆成六个"优雅"的函数之后,任何一个需求的变更都会涉及三个函数的修改,追踪数据流变成了噩梦。

"丑"是主观判断,"坏"是客观后果。两者之间没有必然因果关系,但在重构决策里,它们经常被混为一谈。工程师看到不美的代码就判定它需要重构,这个推理本身就是逻辑谬误。

绩效主义正在杀死工程团队

OpenAI前不久宣布,SWE-bench Verified已经不再适合用来评估前沿编码能力。一个专门为衡量代码能力设计的基准,被AI冲破上限之后反而失去了意义。这件事本身不意外——当某个维度变得可优化,它迟早会被优化到偏离初衷。真正有意思的是,这个逻辑不只适用于AI,它几乎完美地映射了工程团队考核的困局。

我们比历史上任何时期都拥有更多的工程度量手段——代码量、PR数、故事点、交付率、代码覆盖率、线上故障数、响应时长……每个团队都在量,每个管理者都在看,但几乎没有谁敢说,自己的考核体系真的反映了团队的工程能力。

原因很简单:你量的全是噪音。

 

当度量变成目标

 

古德哈特定律讲了两百年了,但工程团队似乎永远不会吸取教训。或者更准确地说,不是不懂,是没得选。

周末搬家这件小事

周末搬家了,想记一笔。

说是搬家,其实也不算远,新旧两处走路也就几分钟的距离。好处显而易见——不用喊搬家公司,全家出动就够了。老婆开车,我搬东西,孩子帮忙拿轻的,一趟一趟地倒腾。

这次最大的感受是:电梯真是个伟大的发明。

之前住的老房子没电梯,每次搬东西上下楼都是体力活。这回新房有电梯,同样箱子的重量,体感上直接砍了一半。你不需要咬牙切齿地扛着箱子上楼,电梯门一开推进去就行。人的消耗不在肌肉上,更多是在来回跑趟的琐碎上。

车子空间够大也帮了大忙。本来以为要跑很多趟,结果一趟能装下不少东西,省了不少时间。说实话,选车的时候没把空间当成第一优先级,但搬家这种时刻你就知道了,后备箱能装是一种隐形的安全感。

还有一件事让我挺感动的——爸妈专门从老家赶过来帮忙。来了还不空手,带了一袋子自家菜地的新鲜蔬菜,说新家住下了得先吃顿好的。到了之后也不歇着,挽起袖子就开始收拾。我妈负责归拢零碎东西,什么厨房调料、卫生间瓶瓶罐罐,一件件用塑料袋包好再装箱,比我细致多了。我爸话不多,坐在那儿一样一样地分类打包,小东西到他手里都码得整整齐齐。拦不住他们要干活的心,像是比我们还着急把新家安顿好。

复盘救不了你的团队

博客分类: 

又一起线上事故。凌晨三点的告警,值班同学爬起来处理,应急响应、回滚、止血,一气呵成。第二天上午,事故复盘会准时召开。PPT做得很漂亮,时间线梳理得清清楚楚,根因分析写得明明白白,action items列了七八条。所有人都认真地点了点头,表示"以后一定注意"。

三个月后,同一个系统,同一类事故,再次发生。

这个场景太熟悉了。每个经历过线上事故的技术人,大概都对这种循环不陌生。复盘会开了一轮又一轮,文档写了一篇又一篇,"改进措施"列了一条又一条,但该来的事故还是会来,该踩的坑还是会踩。

问题到底出在哪?

 

复盘变成了一场仪式

 

大部分复盘会的真实目的,早就不是"从错误中学习"了。它承担的职能更接近一种组织仪式——事故发生了,总得有个交代。复盘会就是一种交代:你看,我们重视了,我们分析了,我们有改进计划了。

这种仪式感会带来一个隐蔽的副作用:它让所有人都觉得事情正在被处理。管理者觉得团队在反思,团队觉得管理者在推动改进,大家心里都松了一口气。但"感觉在改进"和"真实在改进"之间,隔着一道巨大的鸿沟。

页面