晚上十一点多。屏幕光直往脸上糊。方案第七版,又毙了。烦不烦?真烦。这感觉,嗖一下就把我拽回很多年前。第一次敲代码。屏幕上冷不丁蹦出个“编译错误”。谁没盼过啊?盼着第一次按运行键,就能跑出个完美结果。可惜。生活压根没这特权。

手边摊着本旧教材,《Visual Basic程序设计试验教程》。纸页黄得发脆,书角卷得跟咸菜似的。里头流程列得死板:分析、设计、敲代码、运行。书里印着句大实话:“程序运行出现异常时,请检查变量赋值与逻辑分支。”当年我性子急,总想绕开报错,直奔标准答案。现在咂摸过来,编程里最值钱的,偏偏是那个报错、改错、再报错的折腾过程。这话放代码上,绝对成立。放生活里嘛,未必全对。但理儿,是这么个理儿。

代码里的错,那叫一个明明白白。少个分号,关键字拼错,系统立马标红。顺着提示修。再点运行。直到绿灯亮起。妥了。生活里的“报错”呢?一笔糊涂账。工作砸锅,上周那数据表,核对过三遍吧?交上去,甲方照样打回重做。关系闹别扭。或者某天一觉醒来,心里莫名其妙空了一大块。你压根摸不着北。更不敢随便“重新运行”。怕走错一步,全盘皆输。怕选错道儿,回不了头。不少人干脆原地钉死。连试都不敢试。我觉得吧,这毛病真不是怕错。多半是怕承担错后的烂摊子。毕竟生活这玩意儿,不像IDE。它没给你按撤销键。

说句掏心窝子的话,我以前也特抗拒“试错”。总幻想人生得像写好的程序。步步精准。半点不能跑偏。可路走远了才发现。这种死磕的劲儿,反而把人熬干。那些真正长本事的地方,全是一次次“运行失败”磕出来的。头回自己租房,水电费没算明白,押金被扣。头回接重要项目,数据导岔了,熬个大夜重头来。哪怕就是硬着头皮跟个人表白,换来的也是片沉默。当时觉得臊得慌。现在想想,哪回不是生活悄悄塞给我的“调试提示”?它没把标准答案拍你脸上。只是指给你看:这儿的逻辑没理顺。那儿的变量没赋对。当然,有时候你折腾半天,可能也就是个无效调试。但总比原地死机强。

那本实验教程,每章开头都按规矩要求先做“实验分析”。把大骨头拆成小块。捋清数据怎么流。再动手敲代码。过日子,其实也这套路。我们焦虑,多半是贪心。想把一辈子的事儿,一次性跑通。人哪有那么多“一次成功”的锦鲤运。卡住了?歇会儿。跑偏了?拐回来。节点上弹出满屏警告?盯着它看。要紧的是,别手抖把窗口关了。别把错误当绝路。把它当成一次寻常的版本迭代。迭代多了挺耗神。但总好过一直跑着个满是漏洞的 v1.0 硬撑。

合上书页。外头天光已经泛白了。屏幕上的代码总算跑顺了。输出窗口跳出一行简单的结果。我没急着欢呼。就愣愣盯着看了几秒。原来哪儿来的什么“成功”。不过是一点点把报错的窟窿补上罢了。明天指不定又冒出新毛病。怕啥呢?窗口开着。总能一点点调试出属于自己的版本。这事儿大概就是这么个意思。明天要是又崩了。咱就接着修呗。