第五章:手写代码的仪式感——没有AI的“慢时光”

0 阅读4分钟

2008年写代码,有一种现在已经彻底消失的仪式感,那种“亲手创造”的感觉,是AI时代永远体会不到的。

首先是开机仪式。那台奔腾4的电脑,开机需要整整三分钟,在这三分钟里,你什么也做不了,只能盯着屏幕上滚动的BIOS信息和Windows启动画面,听着硬盘“咔嗒咔嗒”的声音,像一台老式织布机在慢慢编织什么。等到桌面出现,你还得再等一分钟,等所有开机自启的软件加载完毕——有时候运气不好,加载到一半还会卡住,只能强制重启,又得再等三分钟。

这三分钟,是每天写代码前的“冥想时间”。你会想今天要写什么功能,会遇到什么bug,能不能按时下班,钱总会不会又突然加需求,主打一个“提前焦虑”。

然后,打开Visual Studio。又是一个漫长的等待,VS 2005的启动速度,大概相当于把一头大象从一楼搬到三楼——不是做不到,但需要极大的耐心。在等待的过程中,我们总会做一些“摸鱼式消遣”:去接一杯水,去上个厕所,和旁边的同事聊两句昨天晚上的看了啥小说,吐槽下小说情节,或者偷偷打开QQ空间偷菜,生怕被钱总抓到。

等到VS终于打开,你深吸一口气,把手指放在键盘上,开始写代码。没有AI补全,没有智能提示,每打一个字符,都是你主动的选择。你打“p”,不是因为AI提示“public”,而是你脑子里想好了要写一个public方法;你打“S”,不是因为AI提示“string”,而是你确定这里需要一个字符串。每一个括号,每一个分号,每一个大小写,都是你亲手完成的,容不得半点马虎。

这种感觉,有点像写毛笔字,不能撤销,不能重来(好吧,虽然可以Ctrl+Z,但改错多了也会烦),每一笔都是你当下的状态。如果你心情好,代码就写得工工整整,变量名起得规规矩矩;如果你心情不好,代码里就会多一些莫名其妙的变量名,比如“int a1; int a2; int a3;”,主打一个“摆烂式命名”。

有一次我心情极差——因为钱总拖欠了两个月工资,我连房租都快交不起了。那天我写代码,所有的变量名都用粗话命名,以此发泄情绪。后来钱总终于发了工资,我才想起要改,但发现那段代码已经被部署到了生产环境。

我连夜爬起来,远程登录服务器,把变量名全部改成了正常的名字,然后重新部署。那天晚上,我一边改一边骂自己:“你是不是有病?写代码就写代码,搞什么行为艺术?”

但第二天上班,张同学就凑过来,拍着我的肩膀笑:“我昨天晚上看了你部署的代码,笑死我了,你居然有个变量叫‘qu ni ma de’,改成‘customerName’了对不对?不过有一个地方你没改干净,SQL语句里还留着。”

我的脸瞬间绿了,赶紧打开服务器,找到那段SQL——果然,里面赫然写着“SELECT * FROM orders WHERE customer_name = 'qu ni ma de'”。

这个bug的触发条件很简单:有一个客户的名字,恰好叫“曲尼玛德”。

没过几天,这个客户真的出现了。他是新疆来的,姓曲,全名曲尼玛德,在我们系统里注册了账号,然后发现所有的订单都查不出来。他打了客服电话,客服把问题转给了我。

我远程登录服务器,查了一下日志,瞬间明白了——SQL语句执行的时候,把“曲尼玛德”当成了那个粗话变量,自然什么也查不出来。我在电话里对曲尼玛德先生说:“曲先生,您好,您的账号出现了一个技术问题,我们正在紧急修复,马上就好。”

曲尼玛德先生很温和:“哦,好的,麻烦你们了。对了,我这个名字是不是很特别?很多人都觉得奇怪。”

我强装镇定:“不奇怪不奇怪,挺好听的,很有特色。”

挂了电话,我以迅雷不及掩耳之势改了代码,把那个变量名彻底清除干净,连一个痕迹都没留。从那以后,我写代码再也不用粗话命名了——不是因为道德感提升了,是因为怕再遇到一个叫“曲尼玛德”的客户,太尴尬了。