临近毕业的时候,我一度想把四年的东西全部打包带走:项目、课程、奖状、几块写过代码的硬盘,还有那些以为以后一定会再看的截图。真正开始整理,才发现能留下来的东西没有想象中多。
仓库里的代码最诚实。一个项目有没有跑过,提交记录、依赖文件和部署说明都会留下痕迹;一份报告写得再漂亮,如果找不到数据和复现步骤,也只能算一段当时的叙述。我把几个早期项目重新拉下来,先看能不能安装,再看能不能启动,最后才看 README 里写的功能是否还存在。很多项目在第一步就停住了。
这次清理让我重新认识“完成”。交作业时,完成是压缩包上传成功;项目展示时,完成是页面能在演示机上打开;过了一年以后,完成更像是一位陌生人能不能顺着说明把它重新启动。不同时间点的标准不一样,不能拿过去的标准要求现在,也不能用今天的眼光嘲笑当时的选择。
我给每个项目留了三份很短的记录。第一份写它解决了什么问题,避免以后只记得技术栈;第二份写启动依赖和已知缺口,告诉未来的自己哪里不要浪费时间;第三份写它后来为什么停止维护。停止不一定是失败,有些项目只是完成了当时的练习目标,继续扩展反而会把时间拖进没有边界的功能列表。
毕业材料里最容易被忽略的是那些没有标题的工作:改了一晚上的接口、给同伴解释一次部署、把一个坏掉的脚本重新跑通、在比赛前把设备从头安装一遍。它们很难放进简历,却构成了我对“能不能交付”的理解。软件并不只在代码编辑器里生长,真正耗时间的部分常常发生在接口、环境和人的交接处。
我没有给这四年写一个宏大的结论。回头看,能带走的只是几种小习惯:遇到问题先保存现场,做决定时写下约束,发布以后留一条退路,承认一个数字还没有被证据支持。它们不漂亮,也不能保证下一次选择正确,但能让我在走错以后更快知道自己错在哪里。
整理还没有结束。旧仓库仍然会有依赖过期,硬盘里仍然有重复的截图,某些文档可能永远不会再打开。也许这就是离开一个阶段的真实样子:没有一个按钮可以一次性打包,只有把能核对的东西逐件归档,然后允许剩下的部分慢慢淡掉。