晚上十一点半。右下角那排红字,跟打卡似的准时蹦出来。编译失败。语法错误。未声明的标识符。我盯着屏幕,脑子里全是他妈白天汇报的狼狈样。PPT我熬了三个通宵,逻辑线拉得比命还长,数据标得密密麻麻。可一上台,嘴就像被502粘住了。半天憋不出个整句。
就这么干耗着。突然脑子里拐过个弯:咱们对待错误的姿势,是不是打根儿上就拧巴了?
前阵子硬啃《C程序设计语言实验与习题指导》,焦躁得直薅头发。这书厚得能当砖头使,习题实验塞得满满当当。配套指导里翻来覆去就唠叨一句:程序哪能一遍就顺溜跑起来?头回编译报错,太正常了。接着干嘛?找茬。改逻辑。再跑。人家把“搞砸了”这档子事,掰碎了变成一步步能照做的活儿。没整成天塌下来的灾祸。说句实在话,我以前特怕屏幕泛红。总觉得少敲个分号,整个项目就得原地升天。过日子不也这样?谁不盼着开局王炸?表白秒回,跳槽遇贵人,连买张刮刮乐都想中个头奖。可现实呢?它压根不跟你按剧本走。稍微偏了道,失控感一上来,人本能就想拔网线。装瞎。当没发生过。差不多就是这么个理儿。
但这指导书偏不惯着。它逼着你死盯变量变化,一行行过分支条件。自己跟自己死磕:到底哪步卡壳了?漏了啥条件?调试这活儿,说白了就是跟“不完美”硬刚。根本不用把整个工程推翻重来。揪住那个绊脚石,挪开就完事了。不过咱得认,这招儿不是万能钥匙。要是明天一早 deadline 拍脸上,你上哪儿抠逻辑去?职场里“先跑通再说,上线再修”才是保命符。可书里那股子死磕逻辑的轴劲儿,偏偏能治治咱们的完美主义焦虑。至少让你明白,炸了就炸了,地球照样转。
后来我试着把这套路用到生活上。前阵子跟个老同事因为分工吵了整整三天,扯皮扯得脑仁嗡嗡响。搁以前,我绝对会在脑子里倒带,反复琢磨哪句话重了口,然后一头扎进“合作彻底黄了”的抑郁坑里。这次我没瞎琢磨。干脆像查代码似的去“读”那个报错。没谁对谁错。纯粹是咱们的预期函数,跟现实参数对不上号。我顺手发了条微信,没扯对错,就甩了一句:最近节奏有点乱,想对齐下想法。对方秒回。原来事儿根本不在关系本身。就是某个变量,得重新赋个值罢了。
咱们这代人,是不是太迷信“一次运行成功”了?从小做题,标准答案填错一个空就得挨批。进了职场,催工期的消息能把你手机震爆。容错空间被挤得没边儿,稍微弹个红框,心态直接崩盘。可书里那些在VC++ 6.0环境下反复调试的程序,早就把话挑明了:代码是改出来的,不是憋出来的。人生这档子事,也一个德行。有人肯定嘀咕:这道理谁不懂?可真到了节骨眼上,能踩刹车、允许自己“跑不通”的,真没几个。
有时候,允许自己跑不通,步子反而能踩得更实。
合上书,外头天早就黑透了。屏幕上的红字还亮着,但我看着不觉得扎眼了。它就是个路标。指个方向。生活里的那些卡顿,大抵也这德行。不用急着证明自己多完美。更别怕暂时停摆。那些让你反复报错的地儿,往往藏着最需要拎出来晒晒的逻辑。慢慢看。一行一行过。等下次编译通过,你会发觉,当初卡住你的那些毛病,早就成了生命里最扎实的一段底层代码。明天会不会又蹦出新警告?难说。但好歹这回,我知道该怎么盯着它看了。