反思传统项目管理技术在软件开发活动中的应用,我们发现:这样的做法过于强调计划管理和控制的自动调节模式,而对项目管理应该做的重点—实施—不够重视。
针对软件开发活动,传统计划存在一定的问题:如计划的动机通常来自于项目之外,即制定计划的目的可能是为了满足管理的要求,而不是基于需要完成的工作;制定计划的动机往往与控制欲望有关,而不是与实际工作的实施需要有关;制定计划的人不参与实际工作,项目经理为了控制目的而制定的、以任务为基础的计划与开发人员的实际工作几乎没有任何联系;站在项目管理的角度,计划和控制成为了焦点,而具体做事被看作是不重要的,项目任务的合法化优先于产生的结果。
上述问题导致项目管理活动与软件开发的具体活动存在脱节和两层皮的问题,客观上导致了管理费的增加,而看不到项目管理对于项目的真实价值。
二、使用敏捷项目管理的初步实践
在当前的市场条件下,为商业竞争的需要,开发团队必须有以更快的速度开发和交付质量更好、更具客户价值和创新性的产品。软件开发的方式须由预见性(以计划为推动力)向适应性(对不确定性的探索)转变,以满足客户对创新的不断需求。与此相适应,项目管理也需要强调速度、机动性和质量,一种区别于传统结构化、改良或创新的项目方法,敏捷项目管理诞生了。
敏捷项目管理的核心是敏捷软件开发,与传统软件开发模式相比,敏捷软件开发突出如下四点:1)个体和交互胜过过程与工具;2)可以工作的软件胜过面面俱到的文档;3)客户合作胜过合同谈判;4)响应变化胜过遵循计划。
敏捷项目管理是侧重于实施的模式,而不是侧重于计划和控制的模式。在敏捷项目管理中,项目经理的首要任务是促进产品构想的构思,并指导团队去实现该构想,而不是制定计划和进度表、控制进度,保证“计划”得以实行。当然敏捷项目管理不是反对计划的模式。计划(和控制)是敏捷项目管理的组成部分,只不过它不是重点。
在做好做实需求管理、变更管理、测试管理、配置管理、分析与设计管理等业务的基础上,笔者在自己的团队中推行“以构架为中心、用例驱动、迭代开发”的敏捷项目管理方法。试图在对传统项目管理方法反思的基础上,提高项目管理活动对于项目成功的真正价值。
“以构架为中心、用例驱动、迭代开发”三句话来自IBM的RUP软件开发过程,是一种重量级的软件开发过程指南。需要有明确的责任分工和大量的过程文档,显然不适合中小型开发团队。但却道出了成功进行软件系统开发的核心要素:缺乏良好的构架,软件可维护性差,质量不行;必须是用例(需求)驱动;迭代开发又称增量开发,指构建软件的方式,整个生命周期依次由几个迭代组成,每个迭代是自包含的迷你项目,他们由活动组成,例如,需求分析、设计、编程和测试。每次迭代之后将产生一个迭代版本,这是一个部分完成的系统,但它是稳定的、完整的和被测试过的。
在流派上,敏捷包括Scrum、极限编程、统一过程(RUP)、Evo等方法。结合团队实际情况,综合各种方法,进行了如下一些尝试性实践:
1)转变团队的沟通方式:过程文件尽可能减少,能不形成office文件的,尽量不需要。对于需要多人协作沟通的,尽量使用软件系统,如需求使用TRICHORD,数据库设计使用PowerDesigner,Bug及变更使用Bugfree,配置管理使用SVN,测试使用TestDirector,项目管理系统使用PowerOn(主要管理实施文件、项目成本、人工时)。给每个团队都配备白板等沟通工具。同时项目团队还有自己的门户网站。项目成员对这些工具软件的充分应用,都是为了提高沟通的效率,减少沟通过程中的信息丢失,同时都是些必要的沟通,项目成员之间基于软件系统的沟通过程,也是业务的处理过程。
2)采用迭代的开发方式:我们约定每次小版本的发布周期为1个月,每周进行一次迭代,经过4次迭代,小版本即可发布试用。每次小版本包括若干需要实现的Feature, 在每次迭代中,Feature细化为用户Story,而对于每个Story的实现,则再细化为具体的任务(Task)。这样的划分,与WBS的划分 基本一致,不同的是,传统项目管理的Task很重要的一个属性是时间,以及作业之间的逻辑关系,而迭代开发中的这种划分,却是为了更好的完成任务,Task使用Size度量工作量的大小,并且使用看板管理每次迭代的总体进度。
3)变传统的计划编制与进度控制模式为直观的看板式管理办法:
通过把Feature、Story、Task以看板的形式,直观的体现在团队成员面前,团队成员可以更好的理解当前任务及进度,并且项目管理不自觉地已经蕴含在日常活动中,项目管理这支手看不不见了,但仍旧在起作用,团队的知识工作者则获得了更好地工作环境,公司获得了更高质量、更及时的的交付产品。
三、总结
通过敏捷项目管理的初步实践,团队的产品交付有了固定的频率,每次迭代出来的都是可以直接交付客户使用的版本,也防止了需求蔓延导致项目进度拖后挫伤成员积极性等事情的发生,极大的提高了团队成员的积极性和生产效率。PowerOn各个小版本的交付周期平均缩短1.5个月,保证了公司为应对市场变化而提高产品研发效率的战略要求。
敏捷项目管理在传统项目管理的基础上,把项目管理的职能化“有形”为“无形”,适合知识型员工的、带有创新性质的中小型项目,为我们缩短产品交付周期、提高员工积极性,营造良好的团队文化提供了一条新的途径。