重启人生的那一行代码:当我在深夜打开一个空白文件

3天前

文/一个在复杂世界里怀念简单的人

凌晨两点,整个屋子就我一个人。厨房水龙头在滴水,声音在安静的夜里被放大了好几倍。我盯着电脑屏幕上那堆报错信息看了快半小时——某个微服务的依赖版本冲突,日志里全是红色,像一片烧焦的森林。

我已经在这个问题上卡了三个小时。试过升级依赖、降级依赖、换镜像源、改配置文件。全都失败了。脑子里的线程像是被搅成一团的耳机线,越想理清楚越乱。

然后我做了一件很傻的事情。关掉了那个满是报错的项目窗口,打开了一个空白文本文件,敲了一行字:

print("Hello, World!")

运行。终端里干净利落地出现了那行字。

没有任何报错,没有任何红色,没有任何需要调试的东西。就是一行输出,干干净净,清清白白。我看着那行字发了大概二十秒的呆,然后关掉那个文件,回到那个满是报错的项目窗口,重新开始排查。这一次,思路清楚了很多,大概又花了四十分钟找到了那个依赖冲突的根源。

那个Hello World没帮我解决任何技术问题。但它帮我解决了一个比技术更重要的问题——脑子里的那团乱麻,被它理了一下。

为什么我们需要一个”重置按钮”

程序员这份工作,有一个特点是别的行业不太有的——你永远在面对”不确定性”。你写了一段代码,你觉得它应该能跑,但它就是报错。你改了一个配置,你觉得它应该生效,但它就是没反应。你加了一个功能,你觉得它应该没问题,但它把整个系统搞崩了。

这种不确定性的累积效应是很可怕的。你不断地试、不断地错、不断地再试,不断地再错。每错一次,你的信心就被削掉一点。错到第十次的时候,你会开始怀疑自己是不是根本不会写代码。错到第二十次的时候,你会觉得”我今天就不该打开电脑”。

在这个时候,你需要一个”重置按钮”。

一个能让你从”复杂的问题”里抽身出来,回到”最简单的、绝对不会出错”的事情上的按钮。按一下,你就被重置了——回到那个”你还能做成一件确定的事”的状态里。你的信心被修复了一点点,脑子里的混乱被清空了一点点。然后你回到那个复杂的问题里,思路会比之前干净一些。

Hello World就是这个”重置按钮”。它简单到不可能出错——你写了它,它就能跑,你就能看到那行字。它不依赖任何外部库,不需要任何复杂配置,不会出现任何让你抓狂的版本冲突。它就是一个确定的、可预期的、永远正确的回应。

每一次你看到它,你都在告诉自己一件事:”我还能让一个东西按照我的指令运转。我还没有失去对这个世界的控制。”

那个”回到原点”的动作,比我们以为的更重要

我后来发现,”回到原点”这个动作在人的心理机制里,有很深的作用。

你在一个森林里迷路了,最好的办法不是继续往前乱走,是回到你最后一个记得清楚位置的地方,重新确定方向。你在一个项目里卡住了,最好的办法不是继续对着问题硬熬,是回到一个”你知道它一定是对的”状态,然后从那里重新出发。

那个”最后一次确定的位置”,那个”一定对的状态”,就是你的”原点”。而Hello World,就是程序员世界里最干净的那个原点。

你不一定要写它,有时候你只是打开一个空白文件,看着光标在左上角闪烁几秒钟,那个动作本身就能起到一部分作用。因为那个空白文件告诉你——不管外面有多乱,你还有一个干净的地方可以回去。在那里,没有任何报错在等你,没有任何依赖在冲突,没有任何逻辑在打架。就只有你和那个闪烁的光标,以及一种”我可以从零开始”的自由。

那个”重启”的时刻,每个人都需要

我后来把这个习惯——卡住的时候就回去写一个Hello World——教给了几个团队里的新人。他们一开始都觉得有点好笑,”这能管什么用?”

后来他们也开始用了。有一个新人跟我说,他有一次在调试一个特别恶心的线上bug,试了七八种方法都不行,整个人已经快到崩溃边缘了。他想起我说的话,打开一个新文件写了一个Hello World,看着那行字出来,深呼吸了两次,然后回去继续查。大概又花了半个小时,他找到了问题所在——一个极其隐蔽的编码问题,跟报错信息完全对不上,只能靠”觉得不对劲”来发现。

他说:”那个Hello World没用任何技术上的帮助,但我就是觉得脑子清醒了一些。”

我说:”那就是它全部的作用。它的作用不是帮你解决技术问题,是帮你解决’脑子不清醒’的问题。”

技术问题可以靠技术手段来解决。但”脑子不清醒”这个问题,技术手段帮不了你。你需要的是心理上的一个”重启”。而Hello World提供的就是一个”最小单位的确定性”——你执行它,它给你一个确定的结果。这个”确定”,就是帮你脑子”重启”的那个信号。

那个窗口关掉之后

那天凌晨,我关掉了那个Hello World文件,回到那个满是报错的项目窗口,又花了四十分钟找到了那个依赖冲突的根源。改完之后重新编译,跑起来了。日志里一片绿色,干干净净,就像刚才那个终端窗口里”Hello, World!”的延续。

后来那个项目上线了,跑得很好。那个依赖冲突的问题再也没出现过。但我记住的不是那个bug,也不是那个解决方案。我记住的是凌晨两点在另一个窗口里写下的那一行字,以及看到它出现的时候,心里那种”至少还有一件事是确定的”的感觉。

Hello World不会出现在任何项目代码里。它不会帮用户解决任何问题,不会产生任何商业价值,不会被任何绩效考核所衡量。但它会在你需要的时候,安静地待在那个空白文件里,用同样的字符,对你发出同样的问候。

那个问候的意思是:”我还在。你也还在。我们都可以重新开始。”