CX软件公司的敏捷性成长过程
CX软件公司是一家日资公司,与际著名企业有长期的战略合作关系,其管理模式上保留了许多日本公司的风格,软件过程管理严谨。
CX的软件过程敏捷性成长经历了以下几个阶段:
1、第一阶段:建立软件工厂,赢得国际业务信誉
1996年成立后CX最初的业务只是做小型软件外包。2000年,CX获得了XX车载卫星导航地图项目,该项目在日本制作投资将超过40亿日元,至少需动用1600人,花2年多时间,这对于当时只有50多人的CX来说是一个天大的机遇和挑战。从项目初期大规模的人员招聘、培训,电脑网络设备采购安装和工作场地的租赁、装修,CX体现了惊人的速度,只用一个月完全准备就绪,公司迅速膨胀到1300多人的规模。在项目过程中依靠员工日以继夜的工作,并通过与国外专业测绘公司的合作,依托研发部自主开发的上百个功能强大、灵敏的制图工具,CX用令人难以置信的14个月高质量地完成了全开发。
CX靠敏锐的市场洞察力和快速的市场应对能力实现了项目的成功,CX在与世界一流企业的合作中建立了自己信誉,并在最短的时间里从技术、管理、品质保障等各个方面得到了迅速提升,赢得了稳定的战略合作伙伴,为企业的生存和发展奠定了坚实的基础。2002年CX出口额达到1003万美元.
2、第二阶段:建立过程管理模式
没有一套行之有效的管理体系,要管理协调上千人的软件工厂是不可想象的。CX对管理体制进一步完善,积极推行全面质量管理体系,将品质的观念和意识融入每个员工的工作中,2003年8月CX正式通过了ISO9001的质量认证。同时,CX开始了CMM
3的准备工作。
但是,面向软件工厂的软件质量管理体系在公司的软件研发部门遇到了极大的阻力,对于高度不确定、不可预测、前沿性的、任务紧要的、时间驱动和不断变化的软件研发项目,严格的软件质量管理流程因为束缚了高水平的软件开发人员的创造性而难以推行。过程被精简到最小的程度,成堆的软件过程管理文档模板甚至被这些核心开发部门弃之不用。
CX是在国内软件开发企业中具有代表性,公司为适于严格管理的软件生产业务建立了传统过程管理模式,而不适用于严格管理的软件研发业务却只能尴尬地面对在敏捷过程管理模式上的缺失,这样的软件开发管理模式对公司应接不暇的软件开发项目形成了极大的风险。
3、第三阶段:获得敏捷软件开发核心竞争力
在国内软件外包占主流的对日市场出现大规模外包的趋势之时,面对可能到来的竞争,CX必须提升面向不同的外包对象提供整体的解决方案的能力和自主研发的能力,CX在转型过程中开始通过国际合作发展自己的产品化软件。
敏捷过程的引入来自于客户和市场的压力。2004年CX获得了国际著名企业Y公司的合作研发项目合同,项目一期为半年时间,开发出与Y公司在本国开发的一款产品功能相似的仿制产品。Y公司对产品的功能和性能指标提出了非常苛刻的要求,而项目的真正目的是验证Y公司选择CX为合作开发伙伴的可能性,并为下一期开发打下基础。Y公司为CX提供资金的投入、技术上的支持和充分的发挥空间,但同时对软件项目的开发过程进行了严格的控制。
半年时间对于开发一个从未在中国市场上出现过而且从未开发过的产品来说是极具挑战性的,同时这个项目对于CX的战略发展是一个巨大机遇。CX凭借其一贯的拼搏精神在一月内就拿出了关键技术原型,但其后的开发令Y公司的项目经理开始担忧了。因为项目团队采用了传统的瀑布生命周期过程模型进行开发,在其后的一个多月是文档化的设计阶段,Y公司在这一段时间内没有看到任何可运行的产品,项目经理无法预知项目后期的巨大风险。经过几天争论激烈的项目管理会议,CX接受了Y公司的要求实施迭代软件开发过程。
由于功能需求已经基本开发出来,CX采用了功能驱动开发方法(FDD)。FDD是一个快速迭代开发过程,强调简化、实用、
易于被开发团队接受,认为“只有良好定义的并且简单的过程才能被很好地执行”。FDD首先对整个项目建立起一个整体的模型,然后通过每两周一次的“按功能设计(DBF)——按功能创建(BBF)”的迭代完成项目开发。在FDD中采用了短周期的迭代,最小化的功能划分法,所以可以对项目的开发进程进行精确及时地监控。
开发人员起初对迭代的、增量的开发方式既不习惯,也不认为这样的过程会有效,CX方面的项目经理也对项目执行到一半的时候切换软件过程充满了忧虑。但几个迭代周期过去后,简单清晰的敏捷过程很快产生了效果。首先是Y公司对产品开发的进展过程获得了足够的了解,对产品更加满意,而且减少了对项目执行过程的直接干涉;另外,软件功能的尽早集成和测试使开发团队以最快的速度发现功能和性能上的关键问题并进行处理,保证了主要功能和质量指标的实现。在项目一期成功结束的时候,CX研发部的开发人员感觉到他们真正找到了适合自己的软件过程。
CX公司敏捷性成长过程
PMRC在科研型软件开发组织中具有一定的代表性,有着许多与国内众多的大学科研机构类似的特点。PMRC从2001年正式成立起便开始了的软件过程管理模式的探索。
1 第一阶段:培养个体软件过程,建立项目管理和学习型项目团队
在PMRC建立之初,几个小型软件项目主要是依赖一两个人的小组开发的,为了改变个人软件开发的风险性和随意性,开发者开始自发的学习应用个体软件过程(PSP)来规范开发活动。通过PSP过程改进,开发者工作的计划性和产品的质量都获得提高,开始具备了初步的软件工程思想,这一时期PMRC完成的系统都较好地控制了开发的进度和产品的质量。但是,刚刚建立的PMRC没有规范的组织结构和培训机制,开发成果很大程度上依赖于开发者的个人能力,过程改进对软件项目的作用非常有限,当软件规模偏大时,过程管理开始力不从心。
随着项目规模和开发团队的规模越来越大,2001年末,一些基础性的项目管理方法开始在PMRC应用。最初,主要的项目管理方法以CMM和RUP为指导,应用Project
2000和Rational的CASE工具进行项目过程控制。
PMRC的开发团队开始逐渐壮大,这个开发团队包括了来自湖南大学管理学院、计算机与通讯学院、机械与汽车工程学院、土木工程学院的多名在读研究生和本科毕业班实习生。为了迅速地把这些高素质的人才培养成高水平的软件开发者,PMRC在项目启动阶段花费大量的时间和精力建立和培养自已的学习型项目团队,发挥了学校科研机构快速学习、解决问题的特长。团队学习成为主要的培养形式,项目计划详细的安排了项目相关技术和方法的框架,团队成员按各自的特长选择负责某些模块的学习培训工作,包括:着手收集资料,通过自学快速了解和掌握相应的知识模块,然后整理成培训报告和课件,最后在培训课程上亲自讲授相关知识、传授专业技术和组织问题讨论会。这样的学习机制使团队中每一个成员都必须勇敢的面对挑战,团结协作地完成团队技术和管理能力的自我培养。依靠这种机制,PMRC迅速建立起了团结精干的学习型项目开发团队。
2 第二阶段:建立知识体系
PMRC的知识体系建构工作结合研究课题和其研究方向,集中于软件项目管理理论的体系建设。PMRC对软件过程管理理论方面做了大量的研究,2002开始参与《国际IT项目管理知识体系与认证标准(iPMBOK)》的起草工作,与国际国内的IT项目管理专家进行了广泛的交流。
PMRC的过程知识体系起初建立于过程管理文档基础上。经过多个软件开发项目,PMRC建立了一套过程管理文档,但是事实上很少能够成功实施。2003年在一个11个成员的项目中下了很大决心实施PSP,但坚持了两周后因为报表填写的效果非常差而放弃了。在规范化严格过程管理上的失败是由于多种原因造成的,但事后分析得出的主要结论是:大学科研机构的组织和运作特点不适合应用这样的严格管理。PMRC从自身的特点出发,以轻载方法和敏捷思想为主要内容建立了PMRC的敏捷项目管理知识体系,建立了敏捷软件过程管理的模型和软件开发方法集,并用这些理论和方法指导软件项目的实施,并且建立起一个由教授、博士生、硕士生组成的学术梯队。2002年,学术梯队研究方向融入了敏捷制造等先进生产模式领域,使PMRC的知识结构进一步丰富。
3 第三阶段:建立敏捷项目管理
PMRC在很早就一些项目中应用了基于UML的系统建模工具,并以简单性原则为指导进行快速应用开发(RAD),开发中采用了基于演示的增量开发方式,但还没有系统的方法论指导。2002年,PMRC在项目中开始按XP方法的关键实践引入敏捷过程,进行结对编程和迭代计划,随后开始实施测试驱动开发。因为人员流动性的问题,项目的开发团队每次都是新组建的,在项目启动阶段都要对一个崭新的团队进行敏捷开发培训。项目的临时性使敏捷软件过程轻便性的优点得到了发挥,项目组基本上在半个月的时间内就能够基本了解敏捷开发思想和初步掌握XP过程的基本实践。到2003年,XP方法的小版本交付、代码集体所有制、持续集成、重构设计、客户团队、计划博弈、每日晨会等方法都已经在项目中得到应用。项目团队不断总结经验教训,改善过程的敏捷性,而且开始创造自己的分布式开发和客户沟通的敏捷方法。在开发中,PMRC综合应用多种敏捷软件开发方法使开发团队与客户保持了良好的一致性,在客户需求模糊、需求不断变化、开发人员频繁变动的情况下,为远隔千里的客户提供了满意的产品。
PMRC敏捷性成长过程
PMRC代表了以大学科研机构为主体的软件开发组织的敏捷过程成长方式,这是由大学科研机构的成长动力决定的。因此其发展方式与软件企业的发展方式不同,是以知识管理为主导的,以人才为中心的过程。
CX和PMRC经历了各自不同的敏捷软件过程成长轨迹。
CX软件公司与PMRC的组织性质、项目性质、人员构成、市场环境等都有很大的不同,其敏捷性发展的需求和压力也不同,因此,不同的组织和项目团队的成长轨迹表现出很大在差异,下表进行了这些差异的比较分析。
敏捷性发展过程比较
阶段表现
CX
1.获得订单
2.获得管理模式
3.获得核心竞争力
PMRC
1.建立学习型组织
2.建立知识体系
3.建立市场导向的敏捷项目管理
敏捷性成长轨迹
CX
1.快速捕捉市场机会
2.快速交付产品
3.建立外显过程
4.建立敏捷过程
PMRC
1.建立个体软件过程
2.建立学习型项目团队
3.构建过程知识体系
4.适应市场需求
敏捷性成长的动力
CX
1.企业生存压力
2.企业做大做强的要求
3.企业核心竞争力的培养
PMRC
1.培养人才
2.创造知识
3.服务市场
项目特点
CX
1.项目规模大,成本高,周期长
2.技术含量参差不齐
3.重视产品开发
PMRC
1.项目规模小,成本低,周期短
2.技术难度大
3.项目延续性差
人员构成
CX
1.组织严密,岗位职责明确,人员相对稳定
2.专业性强
3.经验丰富,管理模式稳定
PMRC
1.组织松散,人员流动性大
2.科研能力强
3.实际应用经验不丰富
以上的两个案例说明了:
(1)过程的发展是动态的,其动态性不只表现在流程的灵活性上,更重要的是根据组织的条件和项目的具体情况灵活选择不同的发展策略,采用适合而且刚好够用的过程。
(2)过程敏捷性的培养必须考虑环境条件、项目需求的变化,比如,判断一个项目的需求是在资源上更迫切还是在决策上有不足,如果是一个软件外包的项目可能在资源上的需求更重要,因此要重视过程资产的投入和处理好过程对人的作用,提高人对过程的驾驭能力;如果是一个风险很大的研发项目,可能更多的投入应该放在过程决策的灵活性上,提高组织对环境变化和自身条件的认知能力和反应速度,开发问题处理预案,加强风险管理。
(3)不同的组织在不同的环境条件下存在不同的发展途径,组织或项目有权力选择自己的发展道路,因此,不能用归一的、严格的能力成长过程来控制不同软件开发组织的成长方式,象CMM、UP等希望用一致的成熟度模型或统一的过程来描述所有软件项目和组织的敏捷性能力提高都是不现实的。 |