写点什么

项目管理实践篇(一):技术人如何做好风险把控

发布于: 2021 年 07 月 17 日
项目管理实践篇(一):技术人如何做好风险把控

1、写在开头

作为一路摸打滚爬过来的互联网人,总结这几年的经历,我发现虽然企业所从事的业务大相径庭,但是研发团队的开发流程几乎相似:

用户需求采集->需求梳理成为产品文档->研发排期->研发方案评估->研发阶段->测试阶段->验收阶段->发布阶段->用户反馈->用户需求采集->...

而作为研发一员,项目管理的最重要一个环节就是“前期风险评估”。

根据自己实际的工作内容(已脱敏)和踩过的坑,总结一下自己对“技术人如何做好项目风险评估和把控”的理解。

2、两个基础概念

补充两个基础的概念:研发环境分类与灰度测试。

2.1 研发环境

研发环境一般分为 4 种:

  • 本地开发环境 local

  • 集成测试环境 test

  • 灰度发布环境 cannary-env

  • 正式发布环境 pro-env



2.2 灰度发布环境

特别需要注意的是灰度发布环境,这是非常有效的风险管控手段:灰度测试是一种(遵从某种灰度策略)给一小部分用户开放新功能体验,来降低风险与验证软件新功能的手段。通过灰度测试,我们可以在固定时间内指定特定的用户群来测试这个功能。

金丝雀版本也称为金丝雀部署、增量、分阶段或分阶段推出,是 devops 和软件开发中的最佳实践。


Canary Testing is a way to reduce risk and validate new software by releasing software to a small percentage of users. With canary testing, you can deliver to certain groups of users at a time.

Also referred to as canary deployments, incremental, staged, or phased rollouts, canary releases are a best practice in devops and software development.


3、如何更好做到“前期风险评估”?

怎么做好“前期风险评估”呢,我觉得做到以下五点非常重要:

  1. 迭代改动范围

  2. 研发工作量评估

  3. 研发发布计划时间表

  4. 研发资源协调

  5. 业务兼容评估

3.1 迭代改动范围

迭代改动范围:这个对于开发来说很好理解,简单来说就是你的改动要提前评估到会影响到哪些业务。

通常按微服务维度,你的这个功能需要影响的微服务数量是多少;如果按模块维度,你的增量 API 影响的上下游模块数量是多少;这些都可以作为横向评估的要素。

3.2 研发工作量评估

研发工作量评估:相比迭代改动范围,研发工作量评估是纵向评估的要素。

我们可以从待开发的 api 数量、新增的业务功能复杂度和实现难度、框架和其他业务的能力支持等等方面去评估。

3.3 研发发布计划时间表

研发发布计划时间表:我们需要提前跟运维和发版人通个气,大致了解项目的 test 环境/灰度环境/正式环境的预计发布时间点。

提前了解 deadline,一方面会推动自己评估在现有的研发工作量下能否按期交付任务,另一方面会成为推动研发进度的强有力工具,包括下面提到的去协调资源。

3.4 研发资源协调

研发资源协调:站在 PM 的角度,我们不仅仅需要关注自己的开发进度,还要考虑到预留给测试/产品验收功能的时间。在掌握了研发发布计划时间表之后,可以提前咨询测试人力的投入是否足够,假如满足需要什么时候介入进来,假如不满足又需要从哪个业务线调配,最终确保有足够资源投入到产品质量的保障上。

3.5 业务兼容评估

业务兼容评估:或许你开发的功能,通过了 local&test 环境的各种测试,保证了新的产品功能落地,但是千万别忽略了灰度环境带来的影响。

灰度作为确保服务平滑升级与降低风险的手段,在大厂里面是不可或缺的。因此,开发者最好要确保代码的健壮性,满足正式环境与灰度环境同时存在新旧两份代码的运行条件,同时确保数据一致性。(虽然很苛刻,但这是大部分研发都容易忽略掉的点)

  • 如果确保业务兼容灰度 &正式环境,那么剩下的就好办了,只需要静待升级;

  • 如果业务不能兼容灰度 &正式环境,那就只能在工程里面添加控制开关(动态配置:通过配置中心动态配置;静态配置:通过项目配置文件实现静态配置);

4、写在最后

项目管理不是生搬硬套,风险点更不是一成不变,上文仅仅就针对最通用常见的研发流程做个小总结。

真实研发流程往往会面临更多特殊的情况,比如:某个功能点遇到了不可抗力的延期,合作部门缺少及时的能力支持等等,这些都会成为“中期风险”的不定要素。如何管理研发过程,在项目管理里又是一门大学问了,后续有空再细聊~~

希望文章对大家有所帮助,抛砖引玉,大家有什么想法可以关注在后台留言哈~

5.、推荐阅读

5.1 《项目管理系列》

《技术人应该学下项目管理基础》

5.2 《经典书籍》

Java并发编程实战:第1章 多线程安全性与风险

Java并发编程实战:第2章 影响线程安全性的原子性和加锁机制

Java并发编程实战:第3章 助于线程安全的三剑客:final & volatile & 线程封闭

深入理解Java虚拟机:JVM的五种锁优化

深入理解Java虚拟机:JVM的性能监控工具


后台技术汇

宗旨:原创 Java 后台开发技术栈的知识分享,分享程序猿专属干货与福利。



发布于: 2021 年 07 月 17 日阅读数: 10
用户头像

喜欢技术分享,一起进步~ 2018.03.28 加入

InfoQ首批签约作家&最佳内容创作者 腾讯的一名普通搬砖工,喜欢技术交流与分享,我们一起对技术保持饥渴,一起进步! 微信公众号:后台技术汇

评论

发布
暂无评论
项目管理实践篇(一):技术人如何做好风险把控