前几日阿里云故障,次日官方在声明里具体阐述故障原因,最后写道“敬畏每一行代码,敬畏每一份托付”。
每个程序员的心里是否敬畏每一行代码不可而知,但填好每一个坑是每个程序员的必修课。
01
你是否经常遇到这样的情景:负责开发的项目遇到线上bug,心想这不是我的锅,先不管了,放着吧;代码写完后,隐隐感觉有问题,可程序跑得通,先用着吧;接手一个老系统,这什么破代码,算了,改吧改吧将就用吧……
今天绕过的坑明天将加倍回来:
下次再改这块代码你仍然遇上它,只能硬着头皮一行行捋代码解决;线上某种场景触发问题代码,造成意想不到的崩溃;老系统改起来太费时间和容易踩坑,不如花时间重构。
测试向你吐槽你写的bug,你否认道,这是前人挖的坑。PM改需求时说这里只加了个小功能,等到你开发时刚要挖坑,轰地掉进一个天坑里。你有没有发现,每天的工作实则是在填一个接一个的坑。
填坑力,是程序员要具备的核心技能之一。
02
填坑力说到底是解决问题的能力。
还记得自己上一次快速成长是什么时候吗?是往做了一年的系统上CtrlC,CtrlV?还是去给人讲你熟悉的业务框架?
人无法在顺境中成长,而是在逆境中成长:新跳槽一家公司学习全新业务和技术框架,一边闯祸一边改进;公司想引进某项新技术,你被指定在一个月内完成迁移,于是你捉紧时间下班后扒技术文档,周末在家写demo……
从坑里摔倒爬起后才明白,先前遇到的问题,其实是成长机会。
几年前震惊互联网的“3Q大战”,360给腾讯挖了个天坑,腾讯艰难填坑对战。而后马化腾给员工内部信写道,如果没有360的发难,我们不会有这么多的反思和感悟。或许未来有一天,当我们走上一个新的高度时,要感谢今天的对手给与我们的磨砺。
随后腾讯改变战略发展方向,走向“开放”。
我们似乎一直活在坑里头:挖坑的挖坑,掉坑的掉坑,填坑的填坑。可不管乐不乐意,人只有努力把身下的坑填好,然后去下一个坑,如此往复,才有真正的成长。
03
虽然程序员通常主张“我的锅你来背,我的坑你来填”。但是低级坑请别挖:
1.天坑:不写注释
排期紧张,新人海宇匆匆忙忙地将代码堆好便申请提测。可他的TL一句话将给他打回去重写:一行注释都不写谁能看懂!
有一位开发说,注释和代码同等重要,注释要写的清楚明了,让测试甚至是PM能读懂你的代码,这才算一个合格的程序员。
2.山坑:不写接口文档
有些公司的前后端联调基本靠吼,“哥们,某参数少传了”、“这个字段得大写”、“你传这么多我没用,算了,放着吧”……
曾见过一个测试reject开发的邮件:前端没传某参数,导致流程跑不通,reject。
技术人员通常不爱写文档或者不愿意在文档上花时间,导致前后端各开发各的,没有规范标准,如需和外部系统对接时,又得捋一遍代码找接口参数。接口文档能节约联调沟通时间和减少bug引入,提高代码质量。
3.地坑:不考虑拓展功能
代码不解解耦,不考虑未来可能会拓展的设计,无疑是在给队友挖坑。
小袁接手一个烂尾项目,上线后需要初始化数据,怎么也找不到批量处理接口。打电话问已离职的前同事,“什么?你当时只写了跑单个数据的接口,没写批量的?”
除了上面几个坑外,还有底下的挖坑指南:
不实时容错,程序只按照自己脑子“理所当然”的轨迹运行;
将判断放在一层层深不见底的逻辑里;
一个方法写了上千行,没人敢动;
从不自测。
掉坑容易填坑难,程序员之间最铁的关系是,当我确定前方有坑后,立马告诉他人这里有坑,你不要踩了,等我填好后再来吧。