由于上次已经说过CMMI与敏捷的关系在企业宏观面的思考,这里只谈在企业实施层面的共同点和区别。
一、共同点分析
1、 目标一致,都是要又快又好地做出产品,以满足用户需求,提高用户满意度;
2、 都是总结了业界的最佳实践,以把成功的经验能够更快更有效的传播。
二、区别分析
1、 CMMI是在研究了大量成功的软件企业的实践基础上,对成功实践进行抽象,总结出来的过程标准和推荐实践;
2、 Agile在经验教训的基础上,结合了有效的实践,提出的一些具体的实践方法,可以说是方法论;
3、 CMMI更多是站在企业如何获取成功的角度,从企业的业务目标、发展战略分析企业的业务流程如何开展;
4、 Agile更多关注软件开发的方法和实践,是为达成企业业务目标的一些有效的实践手段和方法;
5、 CMMI更侧重于过程的手段,通过一致的过程来消除不同能力水平的人对企业绩效带来的波动,以稳步提升企业的整体成熟度;
6、 Agile更侧重于发挥人的主观能动性,通过最大限度的激发人的主观能动性,来为企业发展作出贡献。
三、应用和融合
1、 CMMI是企业级管理思路,企业在达到一定规模时需要进行引入,以使得企业从杂牌军迈向正规军,而Agile在企业中形成游击队,是可以大大提高正规军的灵活度,避免因为规模增大、管理规范而形成僵化;
2、 由于CMMI针对企业级,其中提到的实践可以用于规模大的项目,做大的战役,尤其适用于一些较为复杂的新产品开发,以明确各方协作要求,确保一个稳定的产品架构;Agile针对项目级,更适合不断更新升级的产品开发,适合于小团队作战,最好团队规模小于7人;
3、 CMMI相关标准的推荐适用情景:
1) 项目管理:立项、结项;总体计划、里程碑管理、决策管理
2) 度量:区分组织绩效考核的要求(采用外部、客户相关数据)、效率的要求(项目的数据)
3) 需求管理:制定规范和要求,明确协商原则和奖惩措施;
4) 设计开发:制定指导书、推荐用模板和工具,不做强制要求,项目根据生命周期模型选择和调整设计开发方法;
5) 产品质量保证:制定指导书、推荐用模板和工具,不做强制要求,项目根据生命周期模型选择和调整产品质量保证的手段和方法;
4、 Agile的推荐适用情景:
1) 项目管理:关注具体项目任务的分配和跟踪、项目问题和风险的管理方式
2) 度量:对每个迭代周期进行度量,而不是针对每个迭代中的阶段进行度量;
3) 需求管理:定期的与客户面对面需求确认、进行需求分析和优先级排序,并依据迭代进展,不断更新需求状态;
4) 设计开发:在必要时保持简单设计和不断重构,来保证代码质量的可靠性;
5) 产品质量保证:极致的评审(结队编程)、持续集成
四、实践中的困难
1、 企业价值观导向
Agile需要在组织中推动,一个很基本的条件是:企业要具备相应的价值观,例如以人为本,重视人的价值和创造性,管理从控制型向引导型转变;说起容易做起难,这是一个从上到下的观念和做法的转变,同时要配合更多的企业制度的支持才能做到,是最大的障碍。
2、 人的创造性和积极性
人的潜能是无限的,但如何激发人的创造性和积极性呢?在一个产品研发型企业,员工的创造性和积极性是企业生命的源泉,但如何激发和保护员工的这些特质,我们还缺乏有效的手段。
3、 绩效考核
企业为了实现业务目标,做好方向把握和控制,需要通过绩效考核和KPI体现公司的导向;通常的做法是,组织的KPI会层层分解,最终会落实到对个人的绩效考核上;但Agile的实施,很多团队中人人都工作积极、能力不断提升、差距逐步缩小,在这样的团队氛围下,怎样实施绩效考核才能体现公平,不至于打击员工的积极性?
|