礙
广州的十一月依然带着些许闷热,南方的秋天总是这样,黏糊糊的,不太干脆。我坐在宿舍的电脑前,屏幕上是一段跑通了但性能堪忧的代码。风扇在机箱里发出低沉的嗡嗡声,室友们有的在打游戏,键盘敲击声和耳机里漏出的枪战音效混杂在一起,有的已经拉上床帘睡了。在这个被称为民办三本的广州商学院里,大四的夜晚大抵都是这样度过的。
我叫苏增烨,学软件工程的。看着屏幕上闪烁的光标,我脑子里突然浮现出一个词,碍。其实也就是阻碍的碍。很多人觉得这是一个带有否定意味的词,是对别人或者对环境的一种评判。但在我看来,它更像是一块透镜,或者说是一面棱镜,把我所在的这个环境,还有人群里那些隐秘的底色,照得清清楚楚。
在写代码或者做项目的时候,我经常会看到两种完全不同的赶路方式。
第一种方式,是走平坦的大道。在我们的专业里,这通常意味着去GitHub上找一个star最多的开源项目,把代码拉下来,改改UI,跑通了事。这条路太好走了,前人把路标画得清清楚楚,哪里有坑、哪里该绕道,都有现成的文档。走在这条路上,你能很快得到一个看起来不错的成品,也能得到一种混在群体里的安全感。毕竟,大家都是这么干的。
另一种方式,是背着包,低着头,去抠路面上的裂缝。比如一段看起来能运行的代码,你非要去看它的底层源码,去研究它在极端并发下会不会出现内存泄漏。选择这条路,注定会走得很慢,甚至会经常停下来,在别人已经交差去吃夜宵的时候,你还在对着满屏的报错日志发呆。这种停滞和孤独是常态。但慢慢地我会发现,正是这种低头修补的动作,填平了未来项目上线后可能引发雪崩的隐患。
其实,顺从大流并没有什么错。在一所三本院校里,顺从是一种极具性价比的生存策略。它是学长学姐传下来的期末复习重点,是老师划定的考试范围,是一盏指引你安稳拿到毕业证的灯。在这个信息爆炸、新技术层出不穷的时代,适度的顺从是认知的节能模式。毕竟,我们不可能对每一个框架都去造一遍轮子。
但是,当这种顺从变成了一种无条件的盲从时,事情就变味了。我见过太多次,在小组作业或者比赛团队里,当有人提出一个稍微有点挑战性的方案时,总会有人说,算了吧,大家都这样,随便弄弄能及格就行了。当“大家都这样”成为扼杀所有技术好奇心和质疑的理由时,顺从就堕落成了妄顺。
妄顺最大的危险,在于它会让人把暂时的便利当成终极的真理。我们习惯了复制粘贴,习惯了看几分钟的速成视频就觉得自己掌握了一门语言,因为这些东西提供了一种虚幻的秩序感和成就感。但这种秩序是建立在牺牲细节的基础上的。那些被忽略的底层逻辑、被掩盖的bug,其实就是偏见和矛盾。靠妄顺搭建起来的,不过是一座光鲜亮丽的纸牌屋。平时看着挺好,一旦遇到真正的技术面试,或者是在高规格的竞赛舞台上遇到稍微刁钻一点的提问,一阵风吹过来,瞬间就塌了。
我拿了两次国家奖学金,GPA保持在4.02。很多人觉得我是个卷王,或者觉得我脑子比较聪明。其实都不是。我只是习惯了去求缺。
求缺不是为了否定别人,也不是为了彰显自己有多厉害。在我的理解里,求缺是把“缺”当成一束光。这束光不是用来照别人脸上的灰,而是用来照亮代码里、逻辑里还有改进空间的地方。
我喜欢折腾。在准备那些大型软件竞赛的时候,我总是习惯在表象下面找缝隙。一个看似完美的架构,它的边界条件是什么?一个看起来很炫酷的功能,它在弱网环境下的表现如何?这是一条很窄也很孤独的路。很多时候,提出问题的人是不受欢迎的。当你指出团队项目里的一个隐患时,别人可能会觉得你在挑刺,觉得你冷漠,觉得你多管闲事。
但我更愿意把这种求缺看作是一种修缮。就像面对一座老房子,总得有人搭着梯子爬上去,看看房梁有没有裂缝,把烂掉的木头剔出来,重新糊上泥巴。修缮老房子不是因为讨厌它,恰恰是因为珍惜。在写代码的时候也是一样,看到一段烂代码,或者发现一个逻辑漏洞,我不会装作没看见,也不会为了嘲笑写这段代码的人而感到快乐。我会带着一种近乎强迫症的责任感去重构它、完善它。这大概就是一种修缮的慈悲吧。
人心都有一面镜子,映照着自己和这个世界。那些妄顺的人,总是拼命地把镜子擦得锃亮,只愿意看到自己想看到的光鲜一面,比如一个能运行的demo,一个说得过去的绩点。而求缺的人,却总是盯着镜面上的纹路看。
我要去分辨,那到底只是表面的划痕,还是深处的裂隙。如果只是表面的划痕,比如代码里的命名不规范,或者UI差了几个像素,稍微打磨一下就好了。但如果是裂痕伤到了骨架,比如数据库设计存在根本性的缺陷,那继续粉饰只会加速整个项目的崩溃。在这几年的折腾里,我慢慢学会了一种平衡:既不会对那些细枝末节的问题歇斯底里,也不会对致命的架构裂痕麻木不仁。
有时候我也会想,如果一个人总是过度地求缺,会不会变得寸步难行。确实,如果我每天只盯着各种可能的bug,不敢去写下第一行代码,不敢去提交任何一个版本,那求缺就成了怯懦和拖延的借口。
真正的智慧,是在有限的怀疑和暂时的信任之间找到一个支点。
我以前看过一段关于斯诺克老手的话,觉得特别契合我现在的心境。那个老手说,一个优秀的球手,在趴下击球之前是一个怀疑主义者,但在出杆的那一瞬间,必须是一个行动主义者。
这简直就是我做项目和打比赛的真实写照。在这个隐喻里,求缺和信任达成了一种很奇妙的辩证关系。
在前期做需求分析、架构设计,甚至在