新公司生存指南
1. 角色定义
- 导师:一般是带你熟悉开发环境的那个
- leader:所在团队或者小组的直接领导
- 新手:你
2. 指引流程
- 获取各个开发环境所需要的账号、密码和连接
- 如果账号没有权限,技术类找leader解决,非技术类找行政
- 安装开发所需软件
- 如果不知道哪里找,咨询导师,如果也没有,让导师提供一份软件清单
- 配置开发环境
- 比如mvn镜像、npm镜像、ssh密钥等
- 熟悉公司开发规范
- css,js
- java
- 其他开发流程
- 参与新人培训,整理培训资料里面有用的部分,一般分为两个类别
- 技术类
- 比如公司的web请求流程、日志查询、db读写等
- 非技术类
- 上班时间、内部IT系统操作、公积金社保等信息了解
- 公司业务模式、产品服务背景等
- 技术类
- 日常开发培训
- 比如某个功能去哪里找、怎么看知道完成某个功能,需要修改哪个代码
3. 群关系
公司会有各种群,了解他们之间的区别,有助于日后的协作、问题解决效率,一般来说可能会有如下几个群:
- dev group:全部开发群
- frontend/backend group:职责再细分点还会有前后端专属的群
- small group:小组,比如3-4人
- department:部门群,囊括所有开发、测试等人员的群
- features X group:XXX功能支持群,比如某个大需求需要单独拉群沟通支持,类似特别的department
- issue X group:某个缺陷的相关沟通群
- company/area group:整个公司或某一栋楼的群
4. 功能开发培训
有的团队,可能会给你一个模拟的需求,让你通过实现这个需求,熟悉一整套开发流程。
分析需求
a. 基本要求
- 需求由哪几部分功能组成?
- 哪些需要拆分模块、组件。各个元素之间的数据如何流转、通信?
- 预计整个需求开发下来每一部分耗时多久,总共需要多久才能实现完整的需求?
- 对于各个部分,你打算用什么方案去实现?
b. 细化要求:
- 功能点有哪些,可以考虑用xmind等一些脑图工具自行整理下
- 基于整理后的结果,应该对功能的规模、难度有一个初步的了解,也方便后续估计耗时,具体的实现方案
- 元素之间的交互、数据结构、通信方式,可以往下不断的细分设计,尽量穷举,例如一个元素组件有如下考虑:
- 有哪些参数,参数类型是什么,默认值是什么
- 参数是否需要做空保护
- 组件有哪些事件通信,对外返回什么数据类型
实现需求
我要在哪里写代码?
- 去哪里拉取仓库代码?
- 怎么启动服务进行开发,流程是什么?
写完之后我在哪里看效果
- 前端:如果项目有工程化,那么就是简单的yarn dev这一类的本机开发
- 后端:如果是本机启动服务,那么就是postman这类接口调试
我怎么部署到目标环境?
- 通过ci/cd,只要你git推送就会自动生效
- 古老一点,你push完代码后,可能还要shell登录目标环境手动部署
5. 大型需求的处理方式
要求其提供前期的业务逻辑资料、技术实现方案。
若需求同时符合如下特征,则要求开短会同步下自己的方案:
- 同时涉及B端和C端,或涉及2个及以上C端,需求开发工期超过2个版本
- 期间可能存在未知问题阻塞进度,且涉及细节点较多
短会要求如下:
- 会前罗列好要讨论介绍的需求点,问题清单
- 短会由方案介绍和问题答疑这2部分组成,预估开会时间
- 会议时间,控制30分钟,建议方案介绍20分钟,问题答疑10分钟。可视情况延长到40分钟。
- 会议未确认或讨论耗时的问题,暂停讨论,列入会议纪要,会后同步结论。
- 会议期间有人负责沉淀输出会议纪要,安排事项。
需求上线后
- 整理相关的文档记录,组内同步共享。
6. 协作规范
协作流程示意图
迭代周期介绍
- 周期长度
- 上线日
- 上线时间点
- 上线期间
- 哪些可以做
- 哪些不能做
7. 工时评估原则
穷举功能点
- 尽可能穷举一个功能项,分割成若干个不可分割的小功能项
- 越是具体就意味着预估时间越是准确
- 时间预估的总和时间
评估参考数字
- 需要额外考虑测试的时间及其轮数,合理的测试时间是1:1开发时间
- 以及开发完成后修复bug的时间一般是1:1.5
其他原则
- 方案的预估不能夹杂个人情感,需要客观给出总时间
- 之后PM会参考这样的文档去做功能的开发取舍
- 方案的预估最好结合数据流转和具体的代码结构去考虑
- 有可能存在组件复用来节约开发时间
- 当开发时间少于时间预估文档,需要及时修改并同步信息
- 当开发时间多于时间预估文档,需要针对多出的部分与PM协商
8. 开发规范
- 需求沟通:开发过程中,有任何疑问都需要和产品经理、设计师讨论确认
- 开发提测:开发完成后,需要按流程规范走:本地提测给测试,dep3验收、灰度验收、正式上线等
- 开发过程有疑问,无法自己解决时:严格按流程走,有疑问可询问到导师和组长
9. git规范
- 开发阶段:独立测试通过=》提交代码到master,ci那边会自动同步代码到本地=》继续本地测试
- 封板之后的bug修复:独立测试通过=》代码提交到master并推送=》本地测试通过=》master上对应commit cherry-pickup到pre-production。
- 上线之后的bug修复:流程和封板之后的bug修复一样
- 代码提交并推送master分支后,通知导师review验收,方可继续迭代
10. 需求开发
确认需求内容是否完整,提供有且不限定如下:
- 原型、设计稿、需求文档、测试用例
相关人员需要拉群沟通,导师、PM、自己拉群也可以。
先自己做准备,再跟其他人沟通需求,具体要求如下:
- 了解需求相关的文档资料、对其有一个整体认识
- 整理问题清单,有针对性地对别人提问。
有其他沟通结论,要沉淀文字结论,记录进文档,方便同步测试、开发。
11. 灰度控制
有些需求可能需要做开关控制,我们一般可做如下操作:
- 备注好内容
- 开关名称
- 如何进入灰度
- 如何推出灰度
- 灰度和非灰度如何识别
- 控制逻辑
- 需求开发或技术优化,询问自己的导师,没有导师的找组长确认是否需要添加灰度控制逻辑,如果需要往下
- 讨论后定制具体的灰度逻辑,例如梯度开放灰度时,每个区间是多大,比如之前常用从1700W用开始测试,每一个阶段递增50W用户,例如1700-1750,1750-1800,以此类推
- 通知后端或自己填写好配置greyConfig文件的新key,配置逻辑详见如上
- 在web或res获取到这个key,进行if-else逻辑判断编写对应的逻辑。上到本地环境后,通过配置中心进行开关切换,验证恢复开关生效与否。
- 剩余流程跟普通开发流程一致
- 灰度测试完后,需要废弃掉代码里面引用开关的逻辑。