凌晨一点,我把LeetCode上的一道Hard题终于做出来了。那个Run Code按钮走完,绿绿的Success亮起来,我顺着椅子往上一靠,像是刚拿了一个冠军。说实话,那几分钟的感觉是真的好。但那晚我关上电脑,猛地想起白天的自己:为了一组环境变量,我在公司的电脑前耗了一个多小时,最后同事路过,帮我敲了一行export。那行代码我明明会写,但我根本不知道放在哪里,也不知道它什么时候该生效。平台上的胜利和现实中的狼狈,就那么清晰地叠在一起了。
如果你问我,在线编程到底哪里不对劲,我不会说它没用,我说的是它是一种被剃干净了所有毛边的编程。那些平台替你装好了编译器,配置好了测试数据,连报错都给你指到哪一行,你只需要对着题目写出一个函数,然后点Run。问题是,现实世界的代码根本不是这样生长的。我第一次在公司里接到任务,要往一个老项目里加个功能,光是启动那个项目就卡了一个星期。缺依赖、版本冲突、数据库没装、权限不够,每一样都在那半小时的打卡倒计时里显得格外荒唐。我在刷题平台上的“快”,和现实里的“慢”之间来回被人按着摩擦。
我越来越觉得,在线编程平台最深的陷阱,不在于它没教你多少,而在于它给你营造了一个可以无限重来的假公平世界。坏代码可以重写,测试可以重跑,失败了没有损失。它让你以为写代码就是一个“解法”的问题,而不是一个“系统”的问题。可是真正干活的时候,没人给你准备一个干净的新代码库,没人告诉你这个项目该从哪里看起。你要面对的是几万行没道理的代码、半文不白的文档、还有那种“明明昨天还能跑今天就不行”的玄学。
还有一件让我很不舒服的事:在线编程平台正在变成一种短视频消费。打开它,免费课程、每日一题、排行榜、成绩曲线、提交日历,这些设计都在把你拉到一种播放器的位置上。你看着一个个绿色的小点连成线,就开始觉得安心。但我那一年绿点几乎是全满的,到了年底我连一个能正式上线的网站都搭不出来。那一刻我才明白,我正在玩一场“学习”的游戏,却错过了真实编程里最脏最痛也最有用的部分。
后来我卸载了那些刷题App,从头学着在本地配环境、跑开源代码、甚至把一个hello world部署到云上。头一阵子痛苦极了,每走一步都被现实硬生生打回来,被报错卡住、被奇怪的文件路径卡住、被自己完全不懂的术语卡住。但那种在真实世界里把一个问题从头啃到脚的体验,是任何在线平台都没办法模拟的。我不是说在线编程一无是处,它当然是好工具,可它替代不了你亲手踩坑的那种感觉。如果你的目标只是那个被精心营造出来的刷题成就,那它足够好。可如果你是真的想懂编程这件事,一定别躲开现实里的那些烂摊子。