软件工程师的“我做好了”
开始之前,我先讲个国庆期间的“发红包”的小故事。家里要摆坝坝宴,需要给来的客人发些红包,热闹一下。就在10.2的晚上,一家人围在一起,准备包很多很多的红包,记得哥哥给了我一大叠换来的零钱,全是1元的,我的任务是包2元红包。关于钱的“活儿”我很小心,怕装错了,开始装了10来个红包,总觉得慢,总觉得不够快。怎么才能又快又准?下面是我的方法
很多人可能会觉得很简单,怎么会出错呢,但是,实际情况就是可能会出错,你还别不信!软件开发也是如此,开始之前你也是想快点做好的,但就是有可能会做不好,老是那么不经意的出现,让你措手不及。为了避免bug的出现,软件工程师要怎么去定义“我做好了”?根据我接触过的优秀工程师,他们大概都是这么去定义“我做好了”:
我有做代码测试
遇到过一位后端开发, 也是个老工程师了,他每次写好API业务逻辑后,提交代码都要跑2min+的java测试,刚开始我是很嫌弃的,觉得写个代码花那么久时间跑测试干什么,真浪费时间,API调通就扔给QA测试得了。但是,后面慢慢的发现,每次业务变更或是业务迁移的时候,这老工程师总是能较快的处理并及时发布,也赢得了客户的信任。对比下之前自己或是别的开发,在无数个加班夜晚,经常查些“数1元钞票的bug”,e.g. 配置忘记修改、有个字符不对。 在遇到写测试代码的工程师之前,真没想过代码还能这样子写?也从开始抵触到后面的慢慢接受,每次commit代码之前或是pipeline都全自动的跑一次测试,刚开始写起来很吃力,我自知代码测试方法论还欠缺很多,还需默默的向这些好的方法论学习。
我有做业务测试
遇到过一位测试工程师,当时我在处理CDN降级。场景是把一个实时请求的API切到一个静态CDN json地址,json是管理平台配置数据自动生成的地址。看上去是很简单易懂的方案,当时是跟她讲了一下方案,她就问了1个问题:这个方案你怎么做业务测试?我:…
由于这是手动操作,没有被测试过的操作流程,也是可能有风险的。之前我是没有意识到这个问题,后面还是做了详细的切换和操作方案,并都一一做了业务验证,确认没有问题再确认生产操作流程。
我有做测试方案
遇到过一位软件架构师,当时我在做船票系统,遇到一个问题向他请教。我们需要集成的global的系统,因为global系统对访问有要求,测试数据又有限,我们要做自动化测试和团队内业务测试很不好操作,就请教了他。给的建议是采用AWS的lambda低成本快速的做了test mock,针对好多特定场景的数据,团队就可以快速Mock测试验证,节省了很多的时间,后面顺利的把功能交付。
作为软件工程师,“我做好了”这句话传递出去的时候,要尽量保证软件质量,达到需求的目的。如上,也是我个人对软件开发的态度。
感谢那些让我进步的同路人