新浪博客

敏捷型项目管理的知识框架

2018-08-24 14:29阅读:
我是在2018年6月份通过PMI-ACP认证的,期间准备了3个月时间,花费了7000左右RMB,作为提升自己的一步行动。ACP全名是Agile Certified Practitioner(敏捷认证从业者),是由美国项目管理协会发起的,PMI-PMP是面向瀑布型项目管理,PMI-ACP是面向敏捷型项目管理。PMI-ACP的知识体系对于改进项目管理很有帮助,整理出来分享给大家,一起成长~
一、文档目的:
展示PMI-ACP的知识体系,帮助大家搭建起敏捷的知识架构,为更好的实施敏捷项目管理储备一些知识。
二、文档结构:
文档由4个部分组成,分别是敏捷的思想、敏捷的实践、精益的思想和精益的实践。敏捷的思想部分描述了敏捷是什么,敏捷的实践部分描述了敏捷怎么用,精益的思想部分描述了精益是什么,精益的实践部分描述了精益怎么用。
三、文档内容:
1. 敏捷的思想:
敏捷的思想是通过频繁、小规模的增量交付来满足客户需求。举个栗子:微信第1个月推出聊天功能,第2个月推出朋友圈功能,第3个月推出公众号功能,第4个月推出小程序功能。
2. 敏捷的实践:基于敏捷的思想,陆续有敏捷的实现方式被发明出来,其中比较著名的是Scrum和极限编程。打个比方:防晒是一种理念,遮阳伞是一种实现方式,防晒霜是另外一种实现方式。
2.1 Scrum:Scrum遵循增量和迭代,每个迭代都要生产出可用的产品增量。下图是Scrum的实施流程。
敏捷型项目管理的知识框架

  • 步骤一:产品负责人创建出产品待办事项,产品待办事项是产品需要完成的用户故事列表。
  • 步骤二:在迭代开始前,举行迭代计划会议来确定出迭代待办事项,迭代待办事项是本次迭代需要完成的用户故事列表迭代的时间长度一般设置为2~4周。产品负责人、客户代表、Scrum团队等相关方参加。
  • 步骤三:Scrum团队执行本次迭代,完成迭代待办事项中的用户故事,输出可工作的产品增量。迭代期间,Scrum团队成员在每天固定时间、围在白板前,阐述自己昨日的成果、今日的承诺、遇到的障碍并写在白板上,作为每日的目标管理(每日站会不阐述具体的解决方案,时间控制在15分钟内)。
  • 步骤四:在迭代结束前,举行迭代评审会议来评审可工作的产品增量是否符合客户需求。产品负责人、客户代表、Scrum团队等相关方参加。
  • 步骤五:在迭代结束后,举行迭代回顾会议来复盘本次迭代中做的好的、做的不好的,并制定改进措施。产品负责人、客户代表、Scrum团队等相关方参加。
  • 步骤六:执行步骤二的迭代计划会,开始下一轮迭代。

2.2 极限编程: 极限编程是从软件开发的实践中总结出的13条优秀做法,可用于改善我们的软件开发过程。下面是13条优秀做法。
  • 完整团队:客户代表、开发、测试等相关方坐在一起工作。可以使相关方面对面的沟通,让项目交流更顺畅,否则沟通不顺畅会阻碍项目进展。举个栗子:开发人员设计了两种鼠标形状,不确定客户更喜欢哪一种,这时候叫坐在隔壁的客户代表来讨论下,就可以决定出要使用的鼠标形状;否则,开发人员要写邮件给客户代表说明鼠标形状,客户代表不明白的地方还要再回邮件去问开发人员,项目进展总是磕磕绊绊。
  • 计划游戏:需要制定版本发布计划和迭代计划。版本发布计划可以使客户知道什么时候会拿到版本,方便客户安排商业计划;对内可以使开发人员知道自己什么时候需要交付版本,方便有序安排工作。
  • 小版本发布:使用非常短的迭代周期,来频繁发布有价值的小型版本。可以使客户尽快使用上部分有价值功能。
  • 验收测试:使用客户的验收用例来进行内部测试。可以验证发布的版本是符合用户需求的,心里有底。
  • 代码集体所有权:每个开发人员可以修改所有代码。可以使开发人员参与任何功能的开发工作。
  • 编码规范:每个开发人员要遵守同一套编程标准。可以使其他开发人员可以很容易读懂代码意图。
  • 可持续的开发速度:团队以能够长期维持的速度工作。软件开发是一场马拉松,为了快速且持续的开发,团队成员必须以一种有节奏的可持续的速度前进。
  • 系统隐喻:使用打比方的方式来描述系统。可以使不懂技术的相关方也能理解系统。
  • 持续集成:频繁的将已完成代码合入系统。可以使系统代码保持最新。
  • 测试驱动开发:开发人员先编写测试用例,再编写只实现测试用例的功能代码。可以使开发人员充分理解客户需求,同时避免开发出客户不需要的功能增加项目难度。
  • 重构:在不改变功能的基础上对代码进行改进。因为不断的向系统中增加新功能,一定会使系统变得臃肿、复杂,通过定期的对系统进行重构,可以使系统变得更简单、更灵活和提高性能。
  • 简单设计:设计够用就好。否则会增加项目的复杂度。举个栗子:数据存储使用文件就可以满足,就不要去设计数据库。
  • 结对编程:两位开发者一起完成编码,一位编写代码,一位及时审查。可以尽早的发现编码缺陷,避免后面花费更多的时间去定位问题;同时可以使同一个功能至少保证两个开发人员懂,形成人员备份。

3. 精益的思想:
精益的思想是在满足客户需求的前提下对生产过程精益求精,使生产成本降到最低。敏捷注重结果,精益注重过程。打个比方:你上班从家到公司需要花费30分钟,通过持续探索你找到一条更近的路,只需花费15分钟,这样你上班就会节省一半的时间。
4. 精益的实践:基于精益的思想,陆续有精益的实现方式被发明出来,软件行业中比较著名的是kanban和精益软件开发。
4.1 kanban:kanban遵循消费拉动生产。打个比方:汽车工厂有采购、组装、仓库三个部门,采购允许储存10套车的零件,组装允许10辆车处于组装中,仓库允许库存10辆成品车;每当销售从仓库中卖出一辆车后,仓库因为空出一个位置就会从组装处取来一辆成品车,组装因为空出一个位置就会从采购处取来一套车的零件,采购因为空出一个位置就会从市场上采购一套车零件。连起来看就是销售拉动了仓储,仓储拉动了组装,组装拉动了采购,这就是销售拉动生产。下图是kanban的典型使用方式。
敏捷型项目管理的知识框架
  • 采购、组装、仓库三个部门在每天的固定时间,将自己部门的工作品数量贴到面板上,如果自己有空闲位置就从下游部门取来生产资料进行生产。同时领导看面板上各部门的工作品数量可以知道生产线的健康情况,对出现积压或空闲的环节进行调整,使生产线稳步推进。
  • 软件开发将以上部门替换为设计、编码、测试、发布即可。

4.2 精益软件开发:精益软件开发是将精益的思想应用于软件开发,总结出的7条原则。下面是7条原则。
  • 消除浪费:识别并最小化软件开发中的7种浪费。下图是7种软件浪费。
敏捷型项目管理的知识框架
  • 授权团队:尊重团队成员并由团队来进行决策。举个栗子:团队中客户代表会更懂客户需求,开发人员会更懂技术实现,测试人员后更懂验证产品可用性,要尊重团队成员的分析,让他们一起讨论出好的决策。
  • 快速交付:快速交付有价值的软件,来最大化项目的投资回报率。举个栗子:我们尽早的把5G芯片交付给客户,客户可以尽早的使用5G芯片去抢占市场,我们也能尽早的获得尾款。
  • 整体优化:从全局的角度来检视优化,整体的优化才是有价值的。
  • 嵌入质量:在软件开发流程的每个阶段都要保证质量,使最终的软件质量能以最低的代价实现。举个栗子:设计阶段没有很好的考虑用户需求,在编码、测试完成后才发现设计不满足客户需求,就需要花费额外时间和成本来返工再设计、编码、测试。
  • 最晚决策:尽可能的晚做决定,可以尽量基于事实而不是假设和预测来做决定。
  • 强化学习:尽早确定学习内容、加速学习过程,可以减少软件开发的准备时间。

我的更多文章

下载客户端阅读体验更佳

APP专享