在做了一个月需求后的复盘

2,116 阅读6分钟

前言

毕业入职后第二周,开始正式做需求,写代码,我有点诚惶诚恐的感觉,因为真的要往一个真正的项目里加上自己的代码,生怕自己搞砸了,写的代码上线后造成严重问题怎么办。

现在过了一个多月,需求也做了几个了。有的很顺利;有的延期;有的在测试阶段 Bug 频出,反复修改;有的在灰度期间造成 Crash。现在回过头来复盘一下,吸取其中的教训,以后注意尽量避免失误。

脑图大纲

img1

注意事项

1. 摆正心态

首先明确一点是必须重视每一个需求,无论大小,这是一个开发者素质的体现。但是一开始提到的紧张确实没有必要,毕竟这是一个循序渐进的过程,刚开始接触的都是一些小需求,只是几行代码的修修补补,难度上不会很大。之后随着对业务的熟悉,自己也可以逐渐 cover 一些复杂的业务,这是一步步成长的,如果一直做小需求,反而自己也会觉得自己很不堪大用吧。把握好每个需求,将其当作自己进步的途径。

2. 仔细研究需求文档

需求文档是最重要的材料,一切的实现都要从需求文档出发,否则就算的做的再牛逼,和文档对不上,也是在做无用功。(至于觉得需求设计不够好,想提供更好的参考意见,这其实是应该在需求评审阶段就提出来,和 PM 共同完善需求,在确定之后,就必须严格按照文档来实现)

在之前做需求的时候就出现过对文档解读不到位,在实现时自己想当然进行实现,比如埋点参数的值自己指定而没有找数据分析师进行确认;在明知当前的设计没有完全符合文档,可能会出现不一致的情况时,没有和 PM 确认,将风险移到了测试阶段,增加自己需求的 Bug 数量。

所以说千万不要想当然。在调研或者开发期间如果发现有和文档不一致的情况,不管是不是因为自己的因素导致(可能是历史因素),都需要及时和相关方进行沟通,明确最终方案。

3. 充分调研

需求到手后,在开发前会有一个调研估时的阶段,刚开始的时候不太了解,接到需求就开始拉分支写代码。其实这是很没有效率的做法,遇到复杂需求的时候最后也肯定会出现很多情况。比如发现估时过短,不可能做完,那可能就要加很多班来补充,甚至严重的会造成不能及时上车,需求 delay。充分的调研是很重要的一点。估时会反映出一个需求的复杂程度,之前接到一个需求,虽然需求不大,但是复杂度挺高,如果仅仅因为看上去的情况估一个比较短的时间,那可能就会给自己造成很多麻烦。同时,估时要综合考虑各种情况,比如给埋点、自测留出一定的时间,提高自己的交付质量。

另外很重要的一点,在调研阶段,一定要多查找资料,充分研究这个问题,将可能的坑都提前踩过去,将风险提前,不要把坑都留到开发的阶段,不然可能会造成代码编写时很不顺利,写出很多 Bug。技术方案也要在调研阶段就确定好,编码时有明确的方案,做到成竹在胸,整体质量就会好很多。

4. 开发:要有 Plan B 意识

在开发阶段除了要遵循代码规范,同时尽量写高质量的代码,不要写出来的代码很难以理解,过阵子连自己也看不懂了。

另外,之前的开发给我最大的教训是一定要考虑到 PlanB,分的细一点就是兜底策略可降级方案。兜底策略针对小一点的场景,比如非空判断等等,保证代码的健壮性;可降级方案针对较大的场景,比如应用中引入了某一个第三方框架,不能一下子就全部迁移,要有预防这个框架不好用时降级到一个保底的备用方案上来。AB 实验中其实也有这种思想的影子,在出问题时可以通过切换 AB 实验,返回对照组,进行降级。前阵子有一个需求,显示的文案是服务端下发的,在开发阶段就没有考虑到异常情况,过分相信服务端的数据正确性,这样是肯定不行的,要保证自己代码的健壮性,不能说服务器的数据不符合正确格式,应用就整个崩溃了。所以 PlanB 的意识是非常重要的,要时刻提醒自己,是否做好了兜底和降级。

5. 充分自测

开发过程中自测也是非常重要的一个环节。如果自测不充分,就会导致交付质量不高,这样一来自己在测试阶段需要频繁修改代码、编译、打包,过程很麻烦,做了很多额外工作,如果手上还有其他需求也在进行的话,也可能对耽误另外的需求开发。并且,如果交付质量过低,也会影响到 QA、Leader 对自己的一些看法,对自己的能力产生质疑,进而可能会影响绩效等其他东西。总之,我们作为一个合格的工程师,还是要对自己有更高的要求,努力将交付质量提高,做一个靠谱的开发者。

因此充分自测就很有必要了。首先,也需要之前的几点注意事项来提供支持,在仔细研究需求文档和进行充分调研后,在测试用例讨论上,需要和 QA 一起完善各种可能的边界情况和异常情况,这样在之后的开发中,也会更加注意这些 case,提高代码的质量。然后在开发过程中如果另外发现了一些异常 case 的话,需要及时知会各方,和 QA 同学进行确认。之前也提到在估时阶段需要给自测留出一定时间,保证自己能够充分测试各种正常和异常的 case,并且要重点关注各种边界 case。

结语

以上五点就是我对这一个多月以来,所做需求的复盘。希望自己在接下来做需求的时候,能够用这几点来好好要求自己,努力提高交付质量,同时也不断从各个需求中吸收,总结,提升自己的业务能力和编程能力。