技术人的沉思录

91 阅读 3062 字 · 约 11 分钟

写代码这些年,身边来来去去都是同行。我越来越觉得,这一行给从业者最大的礼物是掌控感:改一行代码,世界就按你的意图动一下;写一个系统,从设计到上线,每一步都可以被验证、被掌握。这种正反馈在别处很难得到,所以它格外迷人。可它也是一份危险的礼物——它足以让一个除了敲代码、其他什么都不行的人,活得非常自信。

我们见过太多这样的同行,也多少照见过这样的自己:沉浸在自己的世界里,在自己的代码和指标里无所不能;走出这个圈子,人情世故不懂,真实世界的样子没见过,却因为习惯了掌控感,蜜汁自信,从不觉得自己有什么不行。

这篇文章不是要指责谁,这种状态我们自己身上也多多少少有一点。它只是把这些年看见的通病记下来,提醒我们,别一路滑成那样的人。

一、把生活当成一次线上故障排查

见过不少同行,习惯性地把一切问题当故障处理。感情出了问题,第一反应是"复现、定位、修复";人生有了困惑,当成一个待解决的 issue;连跟人相处,都像是在对接口、调参数。这套思路在代码里是对的,可离开代码就开始失灵——因为人不可复现,问题没有唯一原因,很多事没有"解决"这一说,只有"消化"。

一个只在代码世界里学过解决问题的人,走进真实世界,第一反应往往是:这里也应该有答案。发现没有,他不觉得是自己方法错了,而是觉得这个世界不严谨。巨婴的起点,大概就是这里——用自己唯一会的技能,去审判一个它根本不适用的世界。

二、理解了零件,就以为理解了整体

技术人谈组织、谈文化、谈协作,总想把它拆开。把团队拆成一张张职责说明、一条条流程、一个个指标,以为拆完就懂了。可拆出来的只是零件,零件之间那种说不清的东西——信任、默契、人心——恰恰是最要紧的,也是拆不出来的。

更麻烦的是拆解带来的自信。一个能把系统拆得清清楚楚的人,很容易以为自己也能把公司、把社会、把人生拆清楚。他拆完还觉得自己懂了——这种"以为懂了"的自信,往往比真的不懂更可怕。

三、手里有锤子,看什么都像钉子

学个新框架,就四处找地方用;读篇文章,就想改造一个领域。工具用久了,会变成身份的一部分——所以承认"这个工具不合适"很难,听起来像在否定自己。

在这种状态下,人不是在用工具解决问题,是在用自己的工具定义问题。整个世界缩小成自己那点手艺能覆盖的范围,范围之外的东西,他看不见,也不觉得需要看见。沉浸在自己的世界里,就是这么来的。

四、可观测的东西,才能让人安心

以前我以为身边那些只信指标、报表、dashboard 的同行是"数字崇拜",后来才慢慢想明白,他们依赖的不是数字本身,是"可观测"。

可观测的东西是确定的、能掌握的,看得到进度,算得出好坏,让人安心。不可观测的东西——方向对不对、一段关系行不行、自己快不快乐——没有仪表盘,拿不准,就慌。一慌,就很容易做一件事:把不可观测的问题翻译成可观测的假问题,造一个指标,假装它可控。

这个习惯的代价是:仪表盘上的一切都被优化了,仪表盘外面的世界——真实的人、真实的变化——没人看,也没人在意。等到仪表盘外的世界出了问题,第一反应不是自己漏看了,而是"数据怎么会骗我"。

五、想清楚了再动手,还是动手了才知道

见过不少同行,做项目总想先设计得完美再开始。架构文档改了又改,总觉得差一点;终于动手,又发现哪里不对,推翻重来。项目停在百分之五,进度条永远不动。

这看起来是严谨,细想其实更多的是怕:怕写出烂代码,怕被评审挑毛病,于是用"还没准备好"拖着,拖到那个注定不完美的时刻晚一点来。可一直不开始,就永远接触不到真实世界的检验,永远活在自己设计的完美图景里。完美主义保护的不是质量,是一个从不被现实戳破的自我想象。这样的人很难长大——长大意味着接受自己的东西是烂的、错的、要改的。

六、方向还没定,就开始优化

"过早优化是万恶之源",工程圈都熟,说的是性能。更早的一种是:目的地还没确认,就开始优化路线。

需求只有一句话,已经开始讨论数据库;用户还没过百,已经开始设计分布式;连要解决什么问题都没说清楚,已经在选型。为什么总在确定的事情上使劲?因为优化是确定的,做一点就有一点的成效,让人踏实;而确认方向要面对现实,面对现实就可能发现自己错了。于是越忙越封闭,越封闭越自信——忙本身就成了一种安全。

七、已经投入这么多,舍不得放弃

方案做了一半,明知不对,还是硬着头皮往下写。"都写了两周了""评审都过了""现在换太难看"——理由一个比一个像真的,翻译过来就一句话:舍不得已经投入的那些。

代码这行有个特殊之处:写错了可以删,可以重构,可以回滚,错误不会真的惩罚你。这养出一个习惯:硬着头皮把错的走完,用更多投入去证明之前的投入没错。不肯止损的背后,是不肯承认自己错了。在代码世界里,认错成本很低,改一行就好;在生活里,认错要推翻自己的一部分。技术人习惯了前者,遇到后者,就本能地装没看见,继续把错的路走到底——像一个不肯认错的孩子。

八、把聊天当成了代码评审

见过不少同行,把代码评审练出的习惯带进所有对话。朋友来倾诉,开口就是建议;家人说一种感受,忍不住纠正其中的事实;网上争论,第一反应是找对方逻辑的漏洞。还觉得自己在帮忙。

代码评审默认存在客观对错,批评对事不对人;可大多数聊天根本没有这个前提。对方说"我很难过",回一句"你这个逻辑不成立"——辩论赢了,人也得罪了。更麻烦的是把一切批评当 bug 报告:先反驳,先解释"这是 feature 不是 bug",而不是先听懂对方在说什么。

这种对话方式背后,是一种很顽固的自信:我逻辑对,我就没错。可人际关系的对错,从来不按逻辑算。一个不懂人心的人,坚信自己什么都懂——这种自信在代码世界里是优点,在人的世界里,是灾难。

九、站队,而不是判断

语言之争、框架之争、编辑器之争,技术圈吵了几十年还在吵。技术选型本来是看情境的事:这个团队、这个阶段、这个问题,怎么选合适怎么选。可它常常变成身份宣言:我用什么,我就是什么,你反对它,就是反对我。

吵到面红耳赤,其实争论的东西跟他没有半点利害关系。一个人把"用什么工具"上升到"我是谁",说到底还是那个圈子里的小孩——在自己的世界里,为虚拟的阵营争得煞有介事,走出去却发现,世界根本不关心他用哪个框架。

十、以为所有问题都是技术问题

最不容易察觉的通病:相信所有问题本质上是技术问题,技术到位了都能解决。团队没信任,上个透明化系统;教育不公平,做个在线平台;人不幸福,写个 App 引导冥想。一半是善意,一半是傲慢。

这是蜜汁自信的终极形态:一个只懂技术的人,相信技术能解决世界上所有的问题。他不了解教育,但觉得在线平台能解决教育;不了解信任,但觉得透明化系统能重建信任。这种傲慢不来自坏心,来自没见过世界。

收尾:静能生慧

把这些归拢一下:对确定性的偏爱,对可控的依赖,对反馈的渴求。这些在代码世界里是本事,出了代码世界就是坑。它们合起来,会把一个人慢慢养成开头说的那种人:沉浸在自己的世界里,除了敲代码啥都不行,却蜜汁自信。

要避免这个结果,大概没有什么捷径。技术圈是最讲究"更新"的地方,我们更新依赖、更新框架、更新知识,唯独很少更新对自己的认识。而认识自己这件事,恰恰不能靠敲代码获得——它需要静下来,走出自己的世界,看看真实的人,承认自己不知道的远比知道的多。

静能生慧。慧的第一步,不是更聪明,是知道自己不行。技术人最缺的,大概不是更快的工具,而是停下来照照镜子的功夫。这篇沉思录没有结论,我也没有答案,只是把这些年看见的通病记下来,提醒自己,也提醒同行的你我:别变成那个永远在优化、永远停不下来、永远觉得自己什么都懂的人。