项目管理修炼之道

随着团队规模的变大,成员之间合作的模式逐渐由单打独斗变成协作开发。 这时候会遇到很多意想不到的问题,项目管理的重要性也就显现出来了。 项目管理修炼之道 是一本讲技术类项目管理方法和实践的书。 从业者可以从这本书获得了有益的指导。 我在 Kindle 上面翻了好几遍,感觉受益匪浅,就把读书笔记拿出来供大家参考。

内容

核心内容是项目管理的生命周期和每个阶段的交付物:

  • 项目章程
  • 日程规划
  • 开发(控制节奏)
  • 结束项目,项目回顾

其他内容:

  • 如何和投资者沟通
  • 管理会议
  • 控制项目节奏

关键字

  • 项目定义:一个独特的任务或是系统化的流程,其目的是创建新的产品或服务, 产品和服务交付完成标志着项目的结束。项目都有风险,并且受制于有限的资源。
  • 关键(章程)
    • 驱动因素:功能集合、发布时间、缺陷等级,只能有一个
    • 约束:环境、流程、人力资源、预算等,决定了规模
    • 浮动因素
  • 规划:带有项目发布条件的项目计划
    • 日程安排:对工作项目的有序描述
    • 发布条件:S.M.A.R.T.,需要一起协商
  • 仪表盘
    • 定性或者定量的方式,将结果公布出来
  • 保持项目节奏的方法
    • 快速开发
      • 持续集成
      • 自动冒烟测试
    • 功能拆分和日程排期
      • 按功能实现,而非架构
      • 优先实现高价值功能
      • 通过用户故事、角色和场景来定义需求
      • 分离需求和 GUI
    • 质量控制
      • 复查:Code Review,结对编程
      • 重构
  • 项目成员的角色构成
    • 项目经理
    • 架构师
    • 开发人员
    • 测试人员
    • 业务分析师
    • 运维

我的问题和部分解答

Q:项目经理的职责是什么?

监控项目进度,牢记里程碑验收条件。保障项目按需求交付。

Q:如何成为优秀的项目经理?

项目经理需要下面这些技能:

  • 倾听
  • 谈判技巧
  • 协作和表达技能
  • 目标导向
  • 真诚,尊重
  • 信息不足下进行决策能力
  • 解决问题的技巧
  • 发现问题能力

  • 理解产品的生命周期

  • 认识自己技术的不足
  • 能够安排日程
  • 能够估算任务,并指导其他人完成任务估算
  • 指导如何管理风险,评估项目状态

Q:用何种生命周期组织项目?

互联网项目看中发布时间和功能集合,适合用迭代式的生命周期。

Q:如何安排项目日程?

细化日程,让成员自省讨论,基于可交付物 的日程规划。 注意,这里的日程和具体的时间安排没有关系,而是处理任务之间的依赖关系。

Q:如何估算日程中每个任务

书中给了一个方法:使用日期范围,但问题是,在小团队工作时候, 可能整个项目周期也就 1 个月,如果按日期范围估计,就比较难评估了。

还有一个方法是使用「1、2、3、5、8、13、21、34、55、89」这样的方式来拆解估算任务。

每个任务可以拆解成小石子(不超过 2 天的任务)。

还有一个 tip 是使用波浪式规划,即不在一开始时候规划全部。在进行的过程中调整日程。 以 2 周或者 4 周的长度规划,太长了就更容易出错,对预测能力要求太高。

项目经理目标是按驱动因素完成既定需求,而不是给一个漂亮的甘特图

关于估算日程的三条忠告:

  • 绝对不要提供确定的项目结束日期
  • 任务越小,估算起来越容易
  • 寻求估算的准确性,而不是精确性

Q:前期延迟了,后期能追赶么?

不能,强行安排的话,是一个日程安排游戏。但是从 Deadline 意识来说,需要对成员达成 Deadline 意识。

Q:如何创建优秀团队?

招对的人,激励个人,形成团队凝聚力。 团队发展分成 5 个时期:组建、激荡、规范、表现、终止。

Q:如何估算日程安排里面的时间?

参见上面所说「1、2、3、5、8、13」和小石子。

Q:如何对项目的模块进行拆分?

书中没有过多提及,我从自己经验得出的答案是:

  • 原则:拆解成耦合度低,可以并发进行的子任务,互不依赖
  • 每个拆分出来的子任务,是可以被描述,并且其产出是可量化的
  • 如果子任务之间,有相互依赖点,需要在早期就约定好接口和交付时间点
  • 如果一个模块 A 很大(比如超过 4 周开发时间), 那应该团队作战以这个模块为开发目标,将模块 A 拆成多个子任务,然后并发进行。 而不是模块 A、模块 B 并发进行。

Q:如何保持项目节奏,避免发生延期?

参见上面的「关键词」中「项目节奏」部分。

Q:如何管理工程(多个项目),并且在里面进行协调?

多个项目,但是使用一个发布计划(类比前端、后台、移动端)。 并一起制定好各个项目的计划。如果基于敏捷开发,问题可以被简化, 因为每条线都是随时可以发布的状态。如果不行,那就组织里程碑的发布计划。

需要管理各个子项目的项目经理,并且创建统一的日程表。

Q:团队里面有执行迟缓,不听从决策的人员,怎么办?

这个问题其实是管理问题,而不是项目管理问题。 书中并没有合适答案,我自身感想是这几方面:

  • 弄清楚为什么不听从决策,需要明确项目的发布目标
  • 从精神、物质上面进行激励
  • 直白的进行沟通,向对方请求帮助
  • 从自身寻找问题,提高自身沟通能力和专业技能能力

原文链接: https://blog.alswl.com/2014/08/manage-it/
3a1ff193cee606bd1e2ea554a16353ee
欢迎关注我的微信公众号:窥豹

Comments

comments powered by Disqus