项目总延期?需求乱插队?程序员如何做好项目管理
👉腾小云导读
程序员对工作量评估不准确?日常临时问题打乱排期?怎么让大家对需求的理解一致?如何既保证开发效率又保证质量?项目管理是「把事情做对」的重要能力之一。知识型工作者包括程序员,在工作中都不知不觉中扮演着「非职业项目经理」的角色。具备项目管理能力,对程序员职业发展、个人生活都有重大价值。本文详细分析程序员如何进行进度管理、质量管理和风险管理。👉看目录
1 为什么开发者需要懂项目管理
1.1 项目管理是“通过别人做成事情”的能力 1.2 项目管理能输出个人影响力 1.3 项目管理对个人生活也有价值2 开发者在项目管理中会遇到哪些问题 2.1 开发者的痛点 2.2 怎么衡量项目管理的“好/坏”? 2.3 开发者需要哪些能力3 开发者怎么做好项目管理 3.1 如何做好进度管理 3.2 如何做好质量管理 3.3 如何做好风险管理4 总结本文由腾讯MoonWebTeam团队的赖文辉、蔡卓伦、刘冬、陈长吉协作完成01
1.1 项目管理是「通过别人做成事情」的能力
1.2 项目管理能输出个人影响力
1.3 项目管理对个人生活也有价值
02
2.1 开发者的痛点
|
2.2 怎么衡量项目管理的好与坏
进度是否符合预期?
质量是否达标?
成本是否 可控?
2.3 开发者需要哪些能力
03
3.1 如何做好进度管理
3.1.1 如何做好工作量的评估
需求详细方案设计
合理拆解,明确职责
两天原则 | |
成果作为导向原则 | 任务拆解应该以可交互的结果作为导向,并且一定要有输出。这个输出应该是完整的,不然这个拆解就拆解得不够透彻,或者说不算一个任务。 |
责任到人原则 | 拆解之后的任务项,有且只能有一个负责人。即使许多人都可能在其上工作,也只能由一个人负责,其他人只能是参与者。 |
任务分层原则 | 任务拆解的过程也是一个解耦的过程,避免多个任务之间有耦合。拆解的过程应该是自上向下的,从一个大的任务,按照其特性进行任务拆解,不断地拆解成子任务,直到拆解到一至两天的工作量,并且是一个可交付的工作项。 |
事项 | 解析 |
自顶向下,逐层拆解 | |
估算工作,知晓预期
估算模式 | 解析 |
自上而下 | 自上而下的估算方式是以项目总体为估算对象。这对于有类似项目经验的工程师来说较容易评估。方法是将工作结构从头部向尾部依次分配、传递工作量,直到到达WBS 的最底层。其特点是:
|
|
3.1.2 如何做好依赖管理
准备开始开发了,发现设计稿还未就绪。 准备联调的时候,发现我们上下游的技术团队的接口还未就绪。 可以联调的时候,因为上下游的链条很长,出现推诿甩锅。
明确责任人和交付时间,避免模糊 | 这是第一步。当一个事情出现多个负责人的时候,责任的边界就会模糊,就容易互相推诿的情况,这就是责任分散效应。三个和尚没水喝的故事就是一个典型案例。 因此对于每个依赖项,我们需要明确其责任人,并沟通明确每个人对应依赖的交付时间,把责任人和交付时间提前确定清楚,可以减少很多争议和推诿。当项目涉及很多团队的时候,可以使用资源依赖列表,当遇到问题时,可以快速查找负责人及其应当交付的时间点。 例子:云游 XX 活动的资源依赖列表 |
形成信息对齐机制 | 确定了接口负责人后,如果不及时进行信息对齐,也会出现跑偏的情况。 反面案例: A 项目依赖外部的 sdk的 某个升级版。在最初的对齐方案中,sdk 方承诺不会修改原有的接口调用方式。而实际联调中才发现不仅接口调用方式发生了巨大变化,还有部分被依赖的接口直接在新版本中移除,导致A方需要花费大量时间进行兼容。如果提前对齐而不是等到联调阶段才介入,就能规避上述问题。 关于信息对齐方式,有以下几种:
在里程碑等关键节点通过面对面、电话、企业微信等方式进行信息对齐。对齐内容包括:开发进度、依赖事项进展、技术方案变更等,对于一些关键性的结论,最好有文字落地以用于回溯。
如定期晨会机制。在会议上对齐项目进度,可以提前发现可能存在的风险。记录会议纪要并通过群消息/文档/邮件的形式通知到项目的相关干系人。
应当确定一个项目 owner,对项目整体负责,把关整体节奏,负责组织会议。把相关信息进行整合,并同步给项目的相关干系人。 |
求同存异,达成共识 | 作为项目组的成员,大家的核心目标应是一致的,就是让这个项目能够如期保质上线。但在实际执行中,各个依赖方因为各自的问题,会出现一些偏差。只要能核心目标是一致的,相关的问题就可以通过沟通解决。 案例:春节活动需求变更 PK 作为最重要的传统节日,很多业务团队都会针对春节这个时间节点运营、上线活动,作者曾经遇到过在临近提测时,活动仍在被提需要大量变更的情况(运营人员要叠加功能,设计人员则提出更多特效的要求),开发人员如果接受了大量变更,不仅意味着不断加班,更可怕的是会由此带来很大的质量风险,一旦出现严重问题,会得不偿失。 最后只能是开发人员联合测试人员,跟运营和设计进行了沟通,研发侧认可变更对于提升活动效果有作用,同时也对变更可能带来的延期,以及影响线上质量等风险进行了全面分析评估。双方基于共同的目标做出了协商和让步(既保证活动效果,同时也保证活动正常安全上线)。 |
情感账户,软性推动 | 当项目依赖某个外部团队的人员支持,而这个事情并不是对方当前工作范围内的,并不是对方第一优先级的工作,该怎么办? 大部分情况,有些开发者会在沟通未果的情况下,通过上升到leader去推动事情落地,这是一种解决方案。更优的方案是建立相关依赖方的“情感账户”,借助“情感账户”去软性推动。 大家都知道银行账户就是把钱存进去,作为储蓄,以备不时之需。“情感账户”里储蓄的是人际关系中不可或缺的信任。经营好「情感账户」,也是经营好一个人与合作伙伴的信任关系。 在日常工作中多吃亏,让自己的「情感账户」适当“存储”。例如自己曾经抽出休息时间帮助合作伙伴解决问题,当需要对方协助的时候,相信也能得到积极的响应,这也是常说的“吃亏是福"。 |
3.1.3 如何处理意外事项
1. 需求的变更
|
2. 高优需求插入
评估高优需求的工作量,以及影响当前项目的程度。 如果在 0.5 天以内,没有被依赖的下游时,再评估对排期影响不大的情况下是否可以快速响应。并第一时间反馈风险,确保各干系人都有一个心理预期;如果大于 0.5 天的需求,则建议反馈给项目干系人来安排其他人来解决。 |
3. 不可抗力的因素
|
4. 内部依赖延后
|
3.2 如何做好质量管理
3.2.1 通过流程规范提高质量
1. 制定研发流程规范
2. 严格执行Code Review
3. 制定发布checklist
3.2.2 管理变更影响
通过详细设计评审技术方案
通过架构设计上隔离变更
隔离方式 | 解析 |
分层架构 | |
3.2.3 功能回归的能力
功能回归能力是指:通过自动化的回归测试,寻找原始设计中没有预料到的错误。这里需要考虑到2件事:
第一,有效的测试是设计出来的。
|
第二, 接入自动化测试平台。
3.2.4 发现问题和定位问题的能力
研发阶段要尽量保证质量,不出现 BUG。上线后需要确保一旦出现问题,能快速通过告警发现,并快速定位找到原因,从而最大限度降低对现网的影响。下面我们将介绍如何利用监控告警发现问题、规范日志快速定位问题和利用智能化监控平台。
第一,利用监控告警发现问题。
第二,规范日志快速定位问题。
日志记录的时机 | |
第三,智能化监控平台。
3.3 如何做好风险管理
3.3.1 风险管理管的是啥
风险的本质
风险的特征和构成要素
风险具备以下特征:
日志记录的时机 | 解析 |
客观性 | 风险是客观存在的,不以人的意志为转移,项目中存在风险是常态 |
不确定性 | 风险是否造成损失,以及损失的程度,是不确定的 |
可观测 | 单一风险存在不确定性,但是总体来讲是有规律的,有办法预测的 |
可变性 | 风险会随着应对措施的进行而消失,不会一层不变 |
风险管理怎么做
解析 | |
头脑风暴法 | |
专家调查法 | |
情景分析法 | |
核对表法 | |
流程图法 |
|
3.3.2 实际项目我们要关注哪些风险
1、最常出现的风险
风险 | 解析 |
进度方面的风险 | |
质量方面的风险 | |
成本方面的风险 |
2. 性能风险
3. 安全风险
合规化风险
系统实现漏洞风险
|
|
4. 容灾性风险
|
|
04
最近微信改版啦
很多开发者朋友反馈收不到我们更新的文章
大家可以关注并点亮星标
不再错过小云的知识速递🥹