模糊的项目管理概念
在一个软件项目开发中,每个人员承担什么角色,该做什么,不该做什么,每个人都有着或者清晰或者模糊的认识。每个人的认识似乎是相似的,但到了某个细节,却存在着严重的分歧。在不同软件企业的某个时期,都会出现这样或那样的争论:
- 项目经理需要懂技术吗?还是应该是个技术专家或业务专家?
- 测试人员应该归属项目组管理,还是应该独立于软件开发项目组?
- 客户沟通应该由项目经理去做吗?还是由项目组各个成员分别沟通?
- 项目组没有配备软件设计师,最后因为设计方面的原因导致大量返工,这是谁的责任?
大多数争论的参与者都相信他所说的。因此这些争论也格外激烈。那么,每个人心中的项目管理概念是怎么形成的呢?
首先,大多数软件行业的从业人员具备计算机类大学学历。大学教材中一般包含了主流的软件工程理论知识,其中就包含了一部分软件项目管理知识。
第二,资质认证机构的推波助澜。主要有ISO9000质量体系,CMM/CMMI软件成熟度模型等。他们将国外成熟的管理理念推广进中国,也包含了一部分软件项目管理知识。
第三,国际上一些大型软件企业的实践,总结成为软件工程方法产品,其中也包括软件项目管理的概念。例如MSF,RUP都属于此类,微软、IBM不仅在描述过程,更是在销售咨询服务甚至软件产品。惠普也曾经提供过类似的软件工程培训服务。
第四,来源于工具软件。微软的Project使用非常广泛,作为程序员,已经经常看见了以Project描述的项目计划。而当程序员成长为项目经理,很自然的,进一步熟悉工具软件,并通过互联网或其它渠道深入掌握,也就从中学习了一些项目管理知识。
第五,项目经理的实践总结。书本的知识、认证机构的理论、各种软件工程方法和Project软件似乎都非常合理,但在实践应用时,总会有这样或那样的冲突。来自自己实践的总结,或者与其它资深项目经理的经验交流,似乎更为可信。
第六,项目经理的自觉学习。上述5种渠道获得的项目管理知识存在着冲突和缺失,对于实际项目管理工作的指导有限。因此,一些项目经理有意识的学习管理学知识,也包括项目管理知识。少数人员参加MBA课程,也有部分人员参加PMP、IPMP考试,希望通过这些学习能够使知识更为系统,并消解冲突。
实际上,在担任项目经理职位的人员中,有意识系统学习项目管理知识的人数并不多。对于整个软件开发者群体来说,比重更小。大多数人还是被一些主流的项目管理理论直接或间接影响:国外说瀑布模型,我们有了专门的需求人员、设计人员、编码人员、测试人员;国外说CMM,我们有了配置管理,有了QA;国外说极限编程XP,我们把两个人安排在同一台计算机前面,让他们轮流操作,编写同一个程序;国外说XP不流行了,scrum才是主流,我们就把周例会改为每日例会吧……
然而,我们的软件项目管理实践,始终在一个低水平上徘徊。我们终于明白,大多数软件项目管理理论,都只有特定的适用范围。离开了创造这种理论的背景,应用在我们的环境中,经常是不适合的,甚至是相当可笑的。因此,没有所谓最好的软件过程,只有最适合我们的。
如何找到最适合我们的软件项目管理理论?把某个重量级理论框架拿来“裁剪”,或者对某个轻量级理论框架进行扩充?要找到我们的答案,就要回到上述各种软件项目管理理论的共同源头——管理过程学派的理论。
