众所周知,一个项目的成败,关键取决于项目的三个方面,进度、质量、成本。
进度是首要的,如何控制进度,要做好项目,必须要有能力和经验来对项目进行控制,达到理想的实施效果。这是项目经理需要具备的综合素质之一。这里,我就围绕项目管理中的最基本要素“控制”,来谈谈我的心得。
根据项目特点,我将控制分事前、事中、事后控制。事前,即计划与风险;事中,即当前状态;事后,即事前、事中未预料或已发生的。事前控制,需要丰富的从业经验和能力,需要缜密的思维和充分的思考,简言之就是“累心”(以前做开发面对电脑的时候,我也觉得累,但那是“累人”,两种“累”是不同的)。
“当项目正式启动时,其实,管理已经结束了...”这是我从一本国外关于项目管理的小说上得到的体会。这话该怎么理解呢?为什么才开始的项目,还没进行,管理怎么就结束了呢?其实,我们可以这样理解,在项目启动之前,我们要为项目做大量的准备工作,如:大量的风险评估,项目团队组建,各接口人明确,项目章程定制,项目预算,项目计划与工作分解等。假设有其中一项没做好,没做到位,在后面的项目进展中,会相当的被动,严重时会影响项目开展,甚至影响项目整体质量和验收。所以,引入CMMI这样的软件成熟度模型,在一定意义上还是非常有必要的。说白了,就是将项目中要做的事情,以及检查点和验收标准,在项目开展前就以表格的形式列出,让PM整体了解项目,做到胸有成竹,确保项目能成功。这些内容,对经验丰富的PM来说,能预见的大部分项目风险及应对方案,都能靠头脑“想”出来,但有多少PM能做到想的周全?所以,这里再次证明了使用CMMI来对项目进行控制的必要性。
简言之,就是尽力做好“事前”,尽量避免“事后”,尽心做好“事中”。
有了CMMI的协助,PM就相当于吃了一颗定心丸,但,这样就高枕无忧,就能做好项目,确保完成每个项目了吗?当然不够!除了项目过程本身,还有一个很重要的因素可别忘记:“人”!
软件项目可靠的是“人”来开发、来完成,与其他行业(如:工业、建筑业、农业等)项目的差别就在此,其他行业除了人的劳动以外,最大依赖于生产力,何谓“生产力”,就是依赖工人使用的工具的性能及效率。软件行业不同,“生产力”即开发人员的产出能力,当你用“行/小时”这样的标准来衡量软件开发难度及预算的时候,你可曾考虑过每个人的能力、性格是不同的,你可曾对你项目中的每个开发人员的脾气、个性深入了解?人不是机器,你让他每天出多少行代码,他就能出多少行?这就涉及到项目中另外一个控制:“人”的控制。
首先,PM要对开发团队中的每一个开发人员深入了解,聊聊家常,对每个人熟悉一遍,这对项目的顺利开展是非常有必要的。说个极端的例子,哪怕一个核心开发人员明天要离开公司了,看在和你PM关系好的情面上,他也会坚持兢兢业业做好最后的交接工作,否则,PM将会陷入非常痛苦的局面。和同事搞好关系,百利无一害。或者PM能清楚的了解该核心开发人员所作的工作,能及时获取足够的资源,这也是一种良好的“控制”手段。
其次,在项目开展中,时刻关心开发人员,了解他们的最新想法及动态,这对于项目能顺利开展是非常有帮助的,否则,当PM发现出事了的时候,再来补救,就为时已晚了。举个例子,一个以前做了两年测试的MM,想在我负责的一个项目中转到开发,她找我谈了一下,我当时也没有主意,因为不了解这个MM,以及会对项目带来多大的影响。在我考虑到项目缺乏开发人员之后,我觉得她可以试一下,于是,让她参加开发,没想到这就给后面的测试工作带来了隐患。两日之后发现她开发能力确实不行,项目又非常紧张,于是自我反省,不该作此临场换枪的决定,再想让这个MM回去做测试就非常困难了,直到公司领导出面才调解成功,这也是我的一个经验教训,切忌临场换枪。
最后,开发人员需要鼓励及激励,他们需要不断的肯定,不断的提高自身的价值,这才会大幅提高他们的工作积极性,确保项目及时完工,以及顺利验收。没有激情的工作等于慢性自杀,工作也不完全为了钱,这都是我IT从业10年以来总结的经验。
这里,将我对项目中的“控制”大概的描述了一下,也许不全,日后再完善吧。2009-12-22