最近和同事讨论敏捷开发如何在进度和文档之间找到平衡?居然发现大家理解各异。什么是敏捷开发?敏捷开发是否意味着省略很多过程文档?具体如何实践?我们一起分享下“知乎”中大家的心得。项目管理者联盟
一、什么是敏捷和敏捷开发项目管理者联盟
首先,敏捷开发是一种过程控制论,通俗的说,就是一种做事情的方法。项目管理者联盟
1. 它适用于软件,因为软件是软的,可以改。要是硬件,改起来就没那么方便了;项目管理者联盟
3. 它适用于竞争激烈的市场,这样的情况下,赶在竞争对手前交付一个不完美但至少能用的产品非常重要;项目管理者联盟
4. 它适用于快速变化的市场,你在埋头造一辆汽车的时候,客户已经想开飞机满天飞了,这就需要你能一步步的把汽车改成飞机,还能按时交付;项目管理者联盟
5. 它适用于在一个地方办公的小团队,一般10个人以内。这样能使敏捷中主要的沟通方式“Face to Face” 是可行的;项目管理者联盟
其次,敏捷开发是一套工具集,里面有形形色色的工具,你可以不搞敏捷,但可以用那么一两个来提高工作效率。比如:blog.mypm.net
1. 站会:三个问题,简洁有效的小团队沟通方式;项目管理者联盟
2. 看板:直观反映工作进度,反映流程遵守情况,反映流程缺陷;项目管理者联盟
3. 演示,计划,反思会:适合于小团队的协作和优化反馈方式;项目管理者联盟
4. 用户故事:站在用户的角度讲需求;转自项目管理者联盟
5. 持续集成:随时高质量交付的基础,有利于应对变化剧烈的市场;项目管理者联盟
再其次,敏捷开发是一种企业管理方式。比如:项目管理培训
1. 一线员工可以同时是架构师,Scrum Mast*r,开发工程师,测试工程师,发挥了他的主观能动性,有利于创新和效率;项目管理者联盟
2. 敏捷不专注于敏捷团队中个人的绩效考核,而更多的侧重于整个团队的绩效,更好的避免了KPI驱动模式;项目管理者联盟
二、为什么需要敏捷开发项目管理者联盟
用两个词吧,一个是拥抱变化,一个是进度可视。项目管理者联盟
1.任何软件类系统或项目,即使你前期花在需求上的时间足够长,你也很难在需求阶段真正的分析和挖掘出所有的需求。有些需求注定会在设计实现或用户使用过程中才逐渐出现。要承认软件开发中存在这种不确定性。而瀑布模型将这种识别变化延迟到最好的测试或用户使用阶段才发现,极大的增加了返工或变更成本。敏捷思想里面通过短周期迭代,尽可能早的交付可用的迭代版本来拥抱和适应变化。club.mypm.net
2.任何一个软件项目,需求或设计做完我们并不清楚进度是否真正完成了60%或者更多,任何不是经过测试通过的功能我们都很难把握真正的完成进度情况。因此在敏捷里面换了一种思路,如讲这个项目拆分为100个粒度差不多的功能点,如果有60个功能点全部完成并通过验证和测试,我们就比较有把握说整体进度完成了60%。这种可视化的评估进度模式在瀑布里面较难以做到。项目管理者联盟
三、敏捷开发是否意味不用写文档项目管理者联盟
如果理解为敏捷开发后不用写文档是对敏捷开发很大的误解。敏捷开发的重点是轻文档,而不是不要文档。而这种轻我原来也讲过,对于全新的系统开发最好是在有总体方案或架构后再开始轻。项目管理者联盟
敏捷开发是重沟通,轻文档。文档要适度,既不能成为项目团队的累赘,也要出现争议的时候有具可查。项目管理者联盟
先说需求文档,分为两部分,一方面是框架性的需求文档,对功能、交互方式、出错或边界情况的表现进行总体描述,这种文档不需要过于细致,因为产品经理组织语言写文档,开发读文档,理解文档都要消耗大量时间,最好是以总体概括的方式来做,开发在做需求设计时候与产品人员进行频繁密切沟通,最终一起形成完整文档,这中间开发、测试人员对于文档严谨性是有很大贡献,不必要求产品经理全部把边界细节都写出来。项目管理者联盟
另外一方面,作为良好的协作习惯,任何沟通产生的结论都应该存档!邮件是一种比较好的形式。每次会议结束,问一句结论呢?谁出纪要?不是说文档不重要,而是通过见面沟通,把需要文档描述很细节的内容达成共识。
|