开发流程的思考

Catalogue   

目前大多数互联网公司的开发流程如下图:

需求收集

一个新功能的出现,可能来自多个地方。运营觉得有了XX功能,用户量就能增加XX倍;产品觉得XX竟品做了XX功能,我们也要做个一模一样的;开发觉得XX
库又提升了XX性能。版本初期,一般由产品统一收集相关需求。

产品文档、设计文档

这个阶段,产品开始整理前面收集到的idea。他不太清楚的点可能会找开发、测试。比如XX功能技术上是否可行。然后开始写产品文档。完成后,会进行需求宣讲,
开发、测试同事会参与。这个过程中,开发、测试会提出自己的意见,产品方进行解答。没问题后,该需求会进入设计阶段。这个阶段中,开发人员会根据需求进行
概要设计,比如了解需要用到的技术,看看里面有什么坑。

开发阶段

当设计稿完成后,该需求会进入到开发阶段。开发人员拿到需求后,一般的小厂就开始对着产品文档、设计稿开发了,大厂会做详细设计,比如画流程图。开发完成后,
小厂就直接进入测试阶段了,做的稍微好点,开发会进行简单的自我测试,稍微再好点的,可能会自己写些测试脚本。而大厂会有其他的一些流程,比如单元测试集成测试
开发完成后,进行代码Review。开发的过程中还牵扯到前后端联调,所以在刚开始开发时,做同一个需求的不同端同事应该沟通好联调相关事宜。

开发阶段,测试同事也会同步了解需求,并完成相关测试用例。

测试阶段

这个阶段就是发现bug、改bug的循环,当把测试发现的所有bug改完后,就达到灰度条件了。

上线阶段

上线之前准备一份上线清单,列出该次版本所有需要部署的项,标注处理人、处理时间、处理状态。对于比较大的需求,这一步非常重要,方便大家检查是否有遗漏。

灰度的作用是进行少量的更新,检查新上线的需求是否存在问题,将风险降到最低。当灰度一段时间后,App的崩溃率在正常范围内时,即可安排正式上线。

上线后

异常收集,通过各种方式收集线上的bug,发现测试没有发现的问题

总结本次迭代的产品需求变更情况、开发bug情况,bug按照严重性进行归类,总结出现的原因,积累沉淀

思考

有些小厂为了能快速的上线,会省掉其中的一些环节,而那些环节恰恰又是很重要的。为什么会经常在线上出锅,一方面来自测试的不严谨,漏掉了某些使用场景没测试,或者说就是没发现那些问题。一方面也来自开发人员,他们为了赶快,不会花很多心思去考虑代码的复用、性能问题。结果造成问题频繁出现。

代码review个人觉得是非常有必要去做的一件事情,让资深的工程师来review其他人的代码,一方面能发现问题,一方面对于被review方,也是快速提升的好机会。

还有单元测试、集成测试,这些虽然做的时候可能会多花一些时间,但当项目不断迭代,他们也是发现问题的重要方式。现实环境中,很多小厂都是不会考虑这方面的。

现在市面上出现了很多项目管理的工具,个人是不建议同时使用多个工具。来回切换麻烦,数据也无法统一处理。其实大家都大同小异,而且大部分的定制化程度很是蛮高的,
完全可以在一款工具中,进行相关的定制来达到自己的目的。比如TAPD就实现了从需求收集到项目上线整个流程的管理方案。

项目的进度可以通过相应的工具来管理,项目的质量则更多的应该通过来管理。只有让团队成员的技术都变得强大了,整体的代码质量才会稳定。光抓进度不管质量,
项目迟早有一点会掉到大坑里面。