晚上十一点半。手机屏幕的冷光直往脸上扑,光标在那儿死命闪。白天刚吞下一封拒信,干脆利落。或者跟处了挺久的人,突然就搭不上话了。什么感觉?就跟跑代码跑到关键行,啪,弹窗报错。愣住。第一反应绝对是慌。明明逻辑自己觉得挺自洽,系统偏不认。卡死,动不了。脑子宕机,手心直冒汗。大概就是这么个意思。

前阵子收拾书架,翻出本落灰的旧书,《C#程序设计24学时轻松掌握》。名字起得够实在。拍着胸脯打包票:二十四小时,照着敲,准能跑通。说实话,市面上这种“速成”玩意儿,九成是营销噱头。但这本,路子确实顺。从配环境、啃基础语法,到拖拽窗体控件、连数据库,一步接一步,像拼积木。只要你按顺序把块儿摞上,最后总能蹦出个能跑的程序。它不光教你敲代码,还手把手教配环境、揪bug,让那些乱七八糟的参数各就各位。

那时候我总琢磨,过日子要是也配这么本“24学时”的说明书,该多好。学门手艺,跳槽上岸,甚至想从一段内耗的关系里拔腿出来,都该有个死板的时间表。我一度信了邪。以为只要把步骤拆得够碎,顺序排得够齐,人生就能像编译成功的程序那样,安安静静跑起来。可能吧。至少当时,我是真这么以为的。

可惜啊。现实压根不按教程出牌。

咱们碰上的,多半是“运行时异常”。你拿小本本排好了计划,结果某个平平无奇的周二,同事一句随口的话,心态就崩了。你折腾作息、调心态,以为这回稳了,没承想沾点鸡毛蒜皮,老毛病又悄悄爬上来。书里提过“配置文件”,说有些参数不用动源码,在配置里调调就行。听着挺美,好像人生也能靠拨几个开关就重启。真趟过水的人才懂,那配置哪是非黑即白的白开关。你拧了一下这儿,那儿又滴滴报警;你硬把某个情绪摁下去,它转头就在后台偷偷占内存。这玩意儿,根本没法一键优化。

说实在的,我以前一听到“调试”俩字就牙酸。总觉得这词儿透着失败的味道,说明之前代码写砸了。后来自己磕碰多了,才咂摸出味儿来。调试,其实挺坦荡的。它不逼你一把写对,就催你停下来,瞅瞅到底是哪行逻辑断了链子。你顺着错误提示往回捋,准能揪出个没初始化的变量,或者漏掉的边界条件。修好,重新跑一遍。程序还是那个程序,可你对它的底细,摸得更透了。我觉得吧,人跟代码一样。报错不是终点,是系统在提醒你:该看看日志了。

咱们对自己,可比对一段代码狠多了。代码一报错,翻文档、问同行、调参数,动作利索得很。人要是“跑不通”了,倒先往自己身上扎刀子。怪自己不够拼,不够灵光。总以为再咬牙熬一熬,就能硬绕过去。可有些异常,根本不是靠死磕能扛过去的。它就是在跟你摆手:环境变了,老路走不通了,得重新搭配置。未必是你不行。可能只是,这局游戏的版本更新了。

生活大抵就是一场漫长的调试。咱们总以为自己在搞“开发”,其实大部分工夫,都耗在“调试”上。那些深夜里跟自己较劲的瞬间,跟认识多年的老友慢慢断了音讯,工作几年后突然不知道自己在瞎忙活的日子……都不是系统出了什么大毛病。纯粹是运行环境换了茬。你没法照搬昨天的参数,只能一点点微调阈值,看看现在的配置到底能不能兜得住。这事儿急不得。也假不了。

有时候,认了程序会报错,人反倒松快些。不再死磕每一步都得严丝合缝,学会了去翻日志。知道哪儿卡了壳,知道该往哪个方向顺藤摸瓜。不急着把报错窗口砸了,也不急着全盘否定自己。就是安安静静改上几行,存个档,再点一次运行。可能这才是成年人的常态吧。

书里那二十四学时,说到底就是个教学设定。现实里哪有那么多轻松掌握。有的只是在一个个平常的晚上,合上IDE,瞅着窗外糊成一团的街灯,心里默默跟自己念叨:明天,接着试。