作为程序员,日常的工作大部分都是在进行开发工作,一个优秀的开发流程,能够很好的提高开发的效率以及质量。
第一步:问题定义
每一个开发任务,必然都是为了解决某个问题的。所以,在进行开发工作前,首先要明确的就是为什么要进行开发。
问题的定义,一般都来自于目标用户,毕竟所有的软件系统面向的群体就是用户。
举例来说:
- 我想要看我自己以前发布的评论
- 这个人发布的内容我很喜欢,我想以后他发布内容我能够第一时间看到
- 路边叫车太麻烦了,要是能够通过手机直接叫车就好了
- 这个excel表格太乱了,排个序就好了
这些就是问题定义,从用户的角度出发,用户实际遇到的需要解决的问题。
那么明确问题定义,这对程序员来说有什么用呢?
首先,你能够知道进行开发工作要解决的实际问题是什么。
其次,有些问题实际上根部就不需要开发,就像第四个示例,excel自身一个简单的排序就可以了,耗费时间编程实现,成本和收益无疑是不成正比的。
第二步:需求定义
在开发之前,必须要有一个正式的需求文档,明确具体要实现的功能。
一般而言,需求文档是产品根据第一步从用户角度出发的问题定义,进行整理归纳成,从产品角度出发的需求定义。
而对于程序员来讲,有的程序员,拿到需求文档后就会开始进行开发工作(方案设计,编码等等),不会关心需求文档是否合理,也不会关心该需求来自用户提出的什么问题(问题定义),更不会关心需求文档是否符合问题定义,是否是解决问题的最佳方案。
而这些,恰恰是一名优秀的程序员所必需要考虑的事情,有句话说的好,“没有产品思维的程序员不是好程序员”,而对于一些不合理的需求进行驳回,或者跟产品进一步讨论确定新的需求方案,都是一个优秀的程序员所必备的技能。
程序员最大的自我否定就是把自己当成工具人!要从整个产品甚至整个公司的角度宏观的体现自身的价值。
第三步:技术方案设计
明确具体的需求后,接下来就可以进行实际的技术方案设计了。
根据项目需求的大小,此处的方案设计可能包含从宏观的架构设计到具体的每个类,每个接口的功能实现。
这一步是真正开始开发前非常有必要做的准备,可以从整体上把握开发中可能遇到的问题以及开发需要的工作量,实际上,在完成这一步后,给出的排期才是最为合理的。
第四步:编码
此时就可以按照设计的技术方案,进行编码了。
当然,编码中需要考虑的设计模式,代码规范,命名等等,我们这里就不做详细描述了,总之,尽量写优质,易读的代码。
第五步:单元测试
虽然写单元测试,会耗费不少的时间,但与其之后让测试人员不停的找你,你再不断的排查代码,解决bug,这耗费的时间和心力完全是可以接受的。
而且,测试人员测试,有时候并不能完全覆盖你的代码逻辑,但单元测试却能够很大程度上覆盖大部分的逻辑,能够避免出现一些意料之外bug。
还有一点就是,如果以后代码上有什么变更,变更完直接跑一遍已经写好的单元测试,是非常的方便而且舒心的,至少可以知道变更并不会对原先的逻辑造成什么影响。
第六步:提交测试
自测完,实际上就已经可以提交测试了。
提交测试的前提是,你自己已经能够确保代码不会有什么bug,测试人员测试的目的,是为了做上线前的最后核验,找到那些漏网之鱼的bug,而绝不应该是一大批的显而易见的bug。
第七步:上线
大型上线前,一定要有一个checklist:
- 明确需要上线的代码模块
- 如果有多个模块的话,上线的顺序是怎样的
- 是否有诸如数据库表,队列等的依赖,相关配置是否完备
- 如果依赖其他服务,是否提前周知
- 相关的监控图表是否已经配置可用
- 等等
总结
以上就是开发常见的阶段步骤,很笼统,但却是最核心的几个步骤,希望大家的开发过程中能够做些参考 ,优质高效的工作。