无论是在大学里学的软件工程课程,亦或者各种各样的项目管理的书籍中都会讲到软件项目可以划分为不同的阶段,每个阶段做不同的工作产生不同的成果物,有不同的风险。依据阶段的划分、阶段之间关系的不同,产生了瀑布模型、螺旋模型、SCRUM等等的软件开发模型。这些模型其实是从某个角度把整个项目过程进行分解组合,采用不同的措施,期望产生正确的结果。
由此可见,软件开发需要流程管理,项目管理更需要明确的流程。但是,现实情况总是有各种不如意,很多公司根本没有流程。领导的一个思路就会成为一个项目;领导的一个意见会被转化为功能需求添加到项目的任务列表之中,可是不论这个意见是1天给干完,还是需要1个月都不会去考虑,项目还只能按照预订的时间表去做。
在近期参加过的几个项目当中存在一个很严重问题——项目管理没有明确的流程。
项目的启动是高层的一个想法,之后中层就会为了得到这个项目而去编造一些数据和报告去争取实施这个项目,然后项目就这样产生了。然后项目组就开始组建,中层也不去明确目标、项目范围、人员规划,只有一个要求——在XXX时间点把这个项目做好、有时甚至这样的要求都没一欧。中下层领导就去组建项目组,去弄明白需求,去争取人力支持,然后大家基本上很高兴的投入到编码的过程中。随着项目的推进,各个项目甘系人开始显现,各种需求纷至沓来,项目组开始疲于应付。在项目推进过程中碰到的问题越来越多,没有及时的修正,项目组开始抱怨外部人员,外部人员开支抱怨项目组,项目组内部各种想法开始出现,领导开始怀疑项目管理者的能力、开始质疑项目组的各种做法是否合理。项目理所当然的延期,人心开始浮动,抱怨此起彼伏。最终要么项目被终止、要么换项目经理、要么项目组搞出一个四不像的东西。
这就是最近项目的典型情况,久而久之项目经理开始抱怨高层,高层也在心里怀疑项目经理,高层与项目经理的嫌隙就慢慢的出现,慢慢的变大。
我认为针对这种情况,主要原因是缺少明确的项目流程(深层次原因是高层领导不懂软件开发)。
各种软件开发模型所要求的软件过程各不相同,但是以下几点,我认为比较重要。
- 项目正式启动之时一定要开项目启动会(或者类似的形式)
项目启动会的作用主要有:明确目标,如不能明确目标也要却明谁去明确目标,目标的变化范围有多大;进行授权,使项目干系人明白各自的责权利,不至于不作为、乱作为。很多情况下,项目已经启动,可是项目目标却如随风飘舞的树叶,这种移动靶子让项目组去打难度可想而知,如果项目目标像会凌波微步的段誉一样即使绝顶高手也不容易抓到他。
- 在项目开展过程中要建立一些必要的规章制度
建立这样的规章制度,主要是约束项目组的,使项目组的各项工作能够对上公开,使项目组成员也了解项目信息。这些规章制度可以是:编码规范、代码提交制度、bug统计、员工工作周报等等。这些规章制度也可以使项目的工作明细、量化、可控、可测,避免项目开发编程黑盒子,什么情况都不知道,出了问题也是后知后觉,想采取补救措施也晚了。
- 项目的各种变化会以可见的方式进行;
项目需求、人员、时间、技术难题等都在发生变化,相对来说需求的变化很难不发生,影响也最大,而项目组拒绝所有的需求变更又不可能,所以一定要建立需求变更的规定和流程,在需求发生变化后受到影响的项目因素(人员、时间等)也需发生变化。如果你认为项目需求发生变化了,项目其他受影响的因素发生变化是理所当然的,那么就大错特错了,很多情况下,提出需求变更的人员不愿意变更那些受影响的因素(没考虑到、觉得没必要变更、考虑到了但是基于其立场不愿变更等等)。
- 项目结项会(或类似形式)
项目结项会,给出名分(项目成功了还是失败了,项目组做的好吗?项目经理怎么样等等)项目组以及其他参与人员给出评价,总结好的地方继续坚持,总结坏的地方后续改进。公司有个项目,裁判员、运动员都是项目组自己承担,已经开发了快2年了,基本没有看到正式应用;由于此项目的特殊性,很少有人能够对其评价、提出意见。公司另外几个项目很难,变化大、人员少,领导干涉太多;这几个项目做的很累,效果也不太好。这两种类型的项目一对比,领导就认为那个无人能插嘴的项目是好的,项目负责人也一升再升。这样的话项目没有明确结论,那些付出很多,成果却不大的项目成员、项目经理会怎么想?!关键是那个项目主要是没有人能插嘴,其实存在很大问题,这就更加难以服人。
正是看到再这样一阵乱战的形式去实施项目的话,公司就很难再继续下去了,所以做了一个方案想去规范项目、去建立明确的项目流程。关于这个流程的必要性举如下的例子。
公司组建了技术委员会,按照道理来说软件公司组建技术委员会是十分必要的事情,也是一个正确的做法,可是因后续流程制度没有跟进,导致技术委员会成为一个虚设的机构,其不到什么作用。技术委员会的负责人,从来没有考虑过如下的一些问题:其在公司的职责、定位是什么?其成员是专职还是兼职?其工作章程、流程是什么?技术专家如何评定、如何发挥作用?如何对公司技术发展方向进行把控和支持?以何种方式、方法对公司各项目的技术工作提供支持和监督?
写完之后,看着PPT,不知道下步如何做?去找谁谈这个事情,谈了的结果会怎么样,推行的阻力会有多大,领导认为这个是亟待解决的问题吗,等等问题扑面而来。有些人看到存在这样的问题,有些人没看到,有些人认为公司现状挺好,提出规范流程的想法与领导的惯常做法相悖。
空有想法,要去做的时候却十分的艰难!
————————————————————————————————————————————
大家所在的公司项目流程(此处流程的范围较大,可以是公司级别的)是怎么样的?对于相对比较混乱的公司,如何建立规范化的项目流程?项目管理流程是否能够提高项目的成功率,防范项目风险?
请大家踊跃发言!谢谢!