摘要

本博文主要是介绍在公司中开发实际的流程,帮助你的更好的进入工作。快速熟悉的公司的流程。同时本人在世界五百强软件公司工作,我们我们公司的开发流程请大家参考,每一个公司的流程稍微不一样。但是大致的流程是一致的。

工作岗位介绍

PM(project management)/PMO(project management office):产品经理

主要的职责:通过对用户的分析和反馈,还有多年行业经验,以及同行之间产品分析,想出很多的产品需求,做好这些需求设计之后,就得他们的产品总监和其他产品内部评审这份设计。产品总监认可之后的需求。产品经理就会拿着需求交给程序员。

ARC:(Architect) 架构师

项目架构设计,项目优化设计

UE/UI:交互设计师

负责页面布局、交互的设计,不负责视图的细节。交互确定之后,设计页面样式。注意,很多情况下,UE 和 UI 是一个人。

RD(DEV ):后端开发人员

后端项目开发,Bug的修复,项目的单元的测试,function的编写,project demo展示

CRD:客户端开发人员,安卓和 ios 都是

FE:前端开发人员

QA:测试人员

OP:服务器运维人员,一般负责审批上线单

 

工作流程图

公司工作流程——开发流程_UI

公司工作流程——开发流程_UI_02

公司工作流程——开发流程_技术方案_03

公司工作流程——开发流程_产品经理_04

公司工作流程——开发流程_UI_05

公司工作流程——开发流程_工作经验_06

公司工作流程——开发流程_工作经验_07

公司工作流程——开发流程_产品经理_08

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

工作流程图说明

产品经理提需求

产品经理通过对用户的分析和反馈,还有多年行业经验,以及同行之间产品分析,想出很多的产品需求,做好这些需求设计之后,就得他们的产品总监和其他产品内部评审这份设计。产品总监认可之后的需求。产品经理们就会拿着需求来交给程序员。

需求评估

产品经理拉上各种开发人员,比如APP、Java后端、前端、UE交互、UI设计、QA测试等等,进行这个需求的评审。每个人对这个需求各抒己见,哪些地方不合理,哪些地方这期不适合开发等等,产品会做会议记录邮件,然后更改需求,如果改动较小,就以邮件形式通知各位开发们,如果改动较大,还需进行二次评审。

技术方案设计

产品经理提出需求,然后后端开始做技术详细设计,UE做交互稿,QA做测试用例,UI根据UE的交互稿做页面设计。后端的技术方案设计非常重要,这一步其实是对产品业务的一个梳理过程,让你能够更加了解业务需求,在设计的过程中能够及时发现哪里不合理,哪里有风险,哪里用什么样的技术栈等等。能让你在写代码的时候,速度又快,质量又高的完成开发工作。

技术设计评审

这里有几个方面需要评审,UE的交互稿,QA的测试用例,这个是需要全体人员进行参加的。而后端的技术方案设计,只需要技术leader和一些组内技术人员参加评审即可,因为其他人参加也听不懂嘛。这个技术评审能让你学到很多东西,对业务的风险把控,技术栈的选择等等,leader会针对这些给你提一些专业性的意见。所以技术方案一定要做好,这也是领导了解你的一个过程。你每次都做的很详细,很靠谱,那以后有好项目领导肯定会优先考虑交给你做。

项目进度排期

进入开发前要先进行工作量排期,就是工作计划安排,今天干什么,明天干什么,这个排期非常重要,排期有时候能直接影响你是996还是965, 因为严格控制排期,按照排期计划走,能让你比较从容的开发,各个环节有条不紊的进行。但是如果情况特殊,就是有好几个需求并行开发,时间都特别紧急,那排期也救不了你了。比如到了双十一大促,618大促,那都是很忙的时候。

项目开发

以上都搞完之后就可以进入真正的开发了,首先前后端要进行mock接口定义, 提供一些mock数据给前端等等,因为目前都是前后端分离的开发模式,双方定义好接口交互方式,就可以各自干活了,相当于并行开发。这样的工作效率非常高,谁也不用等谁。双方开发完之后就进入联调,前端切换成后端的真实接口,然后双方进行自测。

code review

 开发工作全部完毕之后,进入代码review阶段,这个时候一般是叫上leader和组内的其他技术人员参加,他们会根据业务背景,以及你的代码实现提出一些意见,比如这里用工厂设计模式比较好,或者这里的代码逻辑可以在优化一下等等,这个阶段也是一个非常好的学习过程,你写代码都是按照自己的知识储备和风格去写,别人从他们自己的知识储备来看你的代码,会提出不同的思路,这样你就能学习他人的一些知识。

项目测试

以上都做完之后就进入测试阶段了,写个提测邮件给测试爸爸们,心里祈祷着千万别测试bug,结果测试经理们立马给你发了一条钉钉消息:英雄来干了这碗bug。测试一般分为测试环境和沙箱环境,测试环境又细分了很多子环境,比如stable环境、betaa环境、betab、betac、betad环境等,为什么要搞这么多测试环境呢,因为可能会有很多需求并行在开发,就需要很多环境来测试这些需求。一般中小型公司就没这么多环境。那么沙箱环境又是什么呢,就是模拟线上环境,几乎和线上环境是一模一样的,就是为了在上线前能够保证不出任何问题,因为上线是一件特别神圣的事,一旦出问题,你就背锅吧。测试完成后产品进行验收,产品经理满意了,这个时候就可以上线了。

项目上线

上线是一件非常神圣又庄严的事情,一般老哥都会先沐浴更衣之后在执行上线,因为一旦上线出问题,那就没时间洗脸洗澡了。上线前要做很多准备工作,列出一份上线清单,把上线涉及的影响点全部列出来给QA。比如是否有数据库工单,是否申请了ES索引等等,集群上线顺序,出现问题回滚顺序等等,万事俱备之后,就开始神圣的上线了。

上线后回测

 不要以为上完线就万事大吉可以开溜了,QA还需要回测此次版本涉及的功能点,这个时候就得祈祷了,千万别有什么问题,要不今晚又回不去家了,如果上线出现问题不能短时间解决,最好的方法就是回滚,回滚到上一个可用版本。如果没有任何问题,这个时候产品经理就要登场了,来验收你的劳动成果,产品经理点头了就可以收拾东西回家睡觉了。
 

博文参考

开发流程_阿里等大厂真实开发流程_Ferrybunny的博客