这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
为什么要有流程?
- 个人开发者是不需要流程的
- 超过一个人的团队就需要协作
- 随着团队规模上升,会出现全新的问题
复杂项目没有流程会有什么问题:
- 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
- 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程
- 测试阶段:产物怎样交付,测试如何开展,BUG怎么修都需要流程
- 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
- 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程
更现代的流程模型
- 以小团队快速迭代
- 团队成员之间的合作更加紧密
- 以人为本,和用户沟通
5AFe是一套管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
哪些流程?
需求阶段
MvP (minimum viable product,最小化可行产品)思想
- 站在用户的角度思考
- 收集用户反馈,快速迭代
开发阶段
- 开发环境逐渐云原生化
- Faas,Paas等等技术,让开发逐渐从本地IDE向线上转变
- 从入职领到电脑搭建完一套完整的开发环境需要很久,通过WEB IDE等技术,环境未来将会开箱即用 代码规范
- 养成良好的注释习惯,超过三个月的代码,自己都会忘了当时在想什么
- 不要有魔法数字,魔法字符串
- 重复的逻辑抽象成公共的方法,不要copy代码
- 正确使用IDE的重构功能,防止修改错误 自测
- 单元测试
- 功能环境测试
- 测试数据构造 文档
- 大型改造需要有技术设计文档,方案评审
- 好的接口文档能更方便的和前端进行沟通
测试阶段
功能环境
- 需要一个能模拟线上的环境进行开发和测试
- 环境和环境之间能够隔离,不影响其他功能的开发和测试 集成环境
- 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷
- 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷 回归环境
- 确保新的功能不对老的功能产生影响
- 回归测试一般会借助自动化测试脚本
发布阶段
蛮力发布、金丝雀发布、滚动发布、蓝绿发布、红黑发布
运维阶段
流程优化
Devops解决方案
- 代码管理
- 自动化测试
- 持续集成
- 持续交付