管理工程
-
如果项目是工程
- 协调多个子项目或一系列项目,以达成特定的业务目标
- 项目管理是战术上的,项目经理的职责是完成自己手上的项目,而不会考虑其他进行中的项目;工程管理是战略上的,工程经理要协调多个子项目或是一系列项目
- 工程经理在进行战略管理决策时,要以各个项目之间的依赖关系作为依据。这些依赖关系有时体现为可交付物的形式,还涉及如何在项目组合中调配人员和资金
-
将多个相关项目组织到一个发布版本中
- 确保整个工程以可交付物为重,同时让人们注意如何保证自己的可交付物不出问题
- 工程规划模板
- 综述:产品的目的
- 功能:重要功能 - 高层产品需求和目标
- 工程需求:工程的需求和目标
- 工程目标:
- 市场评估和推广计划:包括预估的产品生命周期,整个生命周期中的收益曲线,估算支持成本以及什么都不做的成本
- 销售计划:期望销售周期,期望销售路线
- 投资回报率和产品生命周期: 包括预估工程成本,预估在没有该共工程时会发生的当前和未来成本,预估将来工程完成之后会发生的成本,以及预估投资回报率
- 日程综述: 主要里程碑
- 人员安排曲线 :估算出需要的人员数目
- 培训计划
- 服务/支持计划
- 其他计划:运营计划,硬件发布计划,部署计划等
- 制订规划的过程中,可以识别风险,建立独立的工程风险列表
-
随时间推移组织多个相关项目
- 敏捷生命周期会让管理变得简单, 每个迭代结束都可拿去发布
- 不使用敏捷,就尝试使用发布列车,即为期三个月的迭代
- 将产品的多个版本组织到发布列车中:按季度组织功能,定期发布产品。已完成的功能放到列车中交付出去,未完成的项目不会交付, 可以管理多个增量项目
- 让发布列车为你服务
- 发布列出的适用条件
- 工程经理必须与制订项目组合的人一起工作;工程经理要管理产品的整体发布条件,各个项目经理还有其他与公司相关的议题;还要决定某个功能是否要错过某次列车以及是否推迟到下次。没赶上的要返回到产品待办事项列表。帮助各个项目保持内聚性,减少项目之间耦合性
- 项目经理管理各个项目,工程经理管理列出
- 工程经理需要很好的软件配置管理过程,既包括工具也包括工程师如何使用这些工具。发布工程师必须将不同代码线合并到主线,才可以在交付下个版本前发布必要的补丁程序。
- 每个人(开发, 测试,项目经理和其他项目相关的人)都要具备良好的估算能力,工程经理才能按时发布每个列车
- 团队要有足够的自动化测试,供回归测试使用
- 发布列出的适用条件
- 不使用发布列车的情况下,将多个版本组织到一个产品中
- 如果不使用敏捷或发布列车,很难同时管理多个版本
-
管理项目经理
- 管理项目经理时,要确保以可交付物为准绳,还要考虑管理异常情况。工程经理要跟项目经理之间建立信任关系还得明白他们的工作状况和细节
- 总有过于乐观或者对项目度量不够的项目经理。需要和他们一起审查他们项目的仪表板,确认项目向前推进;审查风险列表,确认风险管理
- 鼓励项目经理们用敏捷或增量式生命周期,因此可以得到频繁反馈。依赖反馈而非预测
- 从项目经理处了解情况
- 使用即时贴规划项目,还需一个工程和项目协调人,负责管理甘特图
- 工程经理可以让项目经理要求团队成员使用小石子安排任务。与项目经理一起制定交付物的日程,并让每个人看到相互工作的依赖关系
- 可以让项目经理每周发送进度报告,如是敏捷开发,工程经理可以看速度图和迭代内容图
- 增量式生命周期,无法提供这些数据,让他们使用时间盒以限定项目中编码之前的工作
- 与项目经理一起每周审查一次他们的风险列表
-
创建工程仪表板
- 度量相互依赖的项目
- 工程经理需要各个项目的仪表板的度量数据,集成多个子项目的度量数据创建出一个可用的工程仪表板
- 度量一系列项目:度量方法之外还要尽心回顾,可以了解还要衡量哪些东西比如持续度量投资回报率,修复一个缺陷的成本等
- 度量相互依赖的项目
铭记:工程管理需要从战略的角度看待产品而不仅从战术角度去看; 工程经理确保自己明确看到所有项目的进展; 要想清楚哪些度量方法适用于你的工程