1章:项目

从客户角度写下项目驱动因素:客户想要什么(功能集合),何时交付(发布时间),可交付物质量(缺陷等级) 写下项目约束:环境、安排、流程、 项目章程模板:远景、需求、目标、成功标准、ROI 估算

2章:规划项目

项目规划模板 更新风险列表

3章:使用生命周期组织项目

四种不同类型周期:顺序式、迭代是、增量式、敏捷(迭代/增量结合) 测试->编码->重构循环

4章:安排项目日程

规划和日程安排 日程安排技术: 自顶向下:将里程碑拆解为子任务 自底向上: 由内及外 哈德逊湾式启动:让项目团队先尝试在项目的实际环境中开展某些工作 短期迭代

按照可交付物安排日程,而不是按照功能。

5章:估算工作

估算方式: - 历史数据: - Delphi:把团队召集在一个房间中,并就项目有关事宜向他们阐述。每个人写任务李彪和时间估算。收集并复查得到整体估算

寻求估算的准确性,而不是精确性

6章:识别和避免日程安排游戏

不管你制定出什么样的日程,出资人总是希望项目能更早完成,出资人不会认同你提出来的每个截止日期

7章:创建出色的项目团队

招聘人才,发挥所能 形成团队凝聚力:一起工作。知乎团建的能量圈就挺好的,心理学小游戏 工具:配置管理、缺陷跟踪

团队发展五个阶段: - 组建期 - 激荡期 - 规范期 - 表现期 - 终止期

成为出色的项目经理: - 人际交往技能。倾听、谈判、写作、目标导向、了解和尊重相关工作人员、能够应对信息不足的状况、管理细节、 解决问题的技巧(哪些必须解决、哪些可以推迟、如何解决)、掌控项目的能力 - 提升功能性技术:懂技术、理解不同生命周期模型、项目日程规划、估算任务或指导其他人估算任务、评估管理风险、度量和报告项目状态 - 提升领域专业知识技能:技术如何解决问题的 - 工具和技术的专业技能

8章:掌控项目

寻找风险和管理风险 - 中途回顾 - 为需求排序。从1开始,两两比较 - 时间盒限定需求相关工作。迭代周期缩短一半 - 将迭代限制在 4 周或者更少时间内,更频繁反馈 - 波浪式的规划和日程安排。不要规划所有细节 - 创建跨职能团队 - 根据项目风险选择生命周期模型 - 保持合理工作时间 - 使用『小石子』。避免『学生综合症』 - 管理干扰:其他项目和其他人 - 管理缺陷,从项目初期开始 - 如何影响别人:放弃『命令和控制』式管理。 - 让团队解决问题 - 思考你能未组织带来什么价值 - 发现其他人或团队的驱动力 - 项目经理和负责任共同面对问题 - 讨论时给他人思考时间 - 不要固执己见

9章:保持项目节奏

  • 项目中使用持续集成
  • 为构建创建自动化冒烟测试
  • 按功能实现,而不是按照架构
  • 架构反映组织结构
  • 先实现具有最高价值的功能
  • 按功能调试和测试
  • 多几只眼睛盯着产品:结对编程、同行复查、走差代码、正式代码检查
  • 边开发,边重构
  • 通过用例、用户故事、角色和场景来定义需求。深入了解需求的上下文
  • 分离需求和 gui 设计

10章:管理会议

发现并摧毁浪费时间的会议 - 避免不需要你解决问题的会议 举行下列会议: - 项目启动会议 - 发版规划会议 - 高层报告会议 - 项目团队会议 - 迭代回顾会议 - 项目回顾会议

一对一会议形式: 问候;讨论进度和状态;讨论他们的障碍;复查所有行动计划;

项目团队会议提纲: - 标题(名称、日期、时间、地点) - 参会人员 - 主要里程碑检查 - 本周遇到问题 - 现有障碍 - 其他话题 - 回顾以往行动计划

11章:创建并使用项目仪表盘

真正掌握一个项目在于经常进行测量,包括定性和定量两种方式,并要将结果公之于众。 开发速度、整体进度、消耗和当前所在位置 项目测量有风险:花费过多时间影响了正常工作、人们不该认真对待测量;测量人,而不是项目

12章:管理多地点项目

如果团队没有分布在同一楼层的10米之内,这就是一个多地点团队。 一个问题的成本是多少:每分钟薪资*花多少时间解决问题 - 尽可能让整个团队坐在一起 - 在团队间培养信任 - 确保各个团队可以互相协作:让人们建立个人接触(社交互动、一起工作), - 使用互补生命周期 - 详细说明每个团队的里程碑和交付物 - 词汇表。功能冻结、代码冻结、编码完成等代表具体含义,确保每个团队理解一致 - 详细说明里程碑的含义 - 详细说明团队了解自己工作进度的方法。同步结果,结果为重 - 说明团队如何评审工作产品。鼓励大家互相评审 - 搞清楚时差对团队流程的影响

13章:在项目中集成测试

将开发和测试并行,可以帮助项目经理一开始就集成测试。 - 一开始就把减少技术债务牢记心间 - 使用小规模测试降低风险。即使无法使用TDD,也要在开发完成后马上编写测试。单测能以更低的成本帮助开发人员发现缺陷,设计系统 - 使用TDD。先完成非常详细的设计毫无意义。单测不是万能药。如何推行TDD - 不按照交付日期衡量工作 - 提供文章、博客供开发者阅读和培训 - 寻找志愿者 - 使用多种测试技巧。只做黑盒测试无法保证复杂系统正确性。 - 单元测试 - 组件测试 - 功能测试: 正向和负向路径 - 功能区域测试 - 集成测试 - 系统测试 - 确定每个团队成员在测试工作中的角色。一流的测试人员与开发人员的关系是对等的,搭档而非对手。优秀测试人员能改变开发人员创见产品的方式 - 需要多少测试人员? - 需求、产品规模、产品复杂度 - 组织开发产品的方式 - 开发和测试人员的能力和职责。与工作效率关系最密切的,是一个人的自律精神、对相关知识的理解、以及解决方案空间域的专业知识 - 让测试和开发同步进行 - 为项目制定测试策略 - 系统测试策略模板

14章:管理工程

工程管理:协调多个子项目或是一系列项目,已达成特定的业务目标。

15章:项目结束

16章:管理项目组合