项目管理有三要素:成本、进度、质量。软件项目的主要成本来源于人员工资,而人员工资是和进度成正比的。所以软件项目管理的核心是进度和质量的问题。
要想很好的控制项目进度,首先一定要采取迭代增量的开发过程,必须基于里程碑来管理。以需求、分析设计、开发、测试、实施来衡量项目进度是不准确的,因为我们目前无法准确考核这一点。但有一点,用户是我们的最终指标,如果用户认可,即可认为其达标。所以,建立以用户认可为里程碑,功能迭代增加为开发模型,即可有效解决项目进度的问题。对项目组的所有考核全部基于里程碑来进行,强制项目人员去关注用户及项目进度。举例来说,如果一个系统有10个功能用户可有效识别,我们即以此建立项目的10个里程碑,在一个功能用户完全认可之后(必须是软件开发完成,用户可用之后进行),即可向项目发放或记录其奖金。由于软件功能是不断扩展的,项目组势必只能采用迭代增量的开发模型。随着项目进行,功能不断完成,后续功能的项目开发计划的准确性将大大增加,避免了项目计划频繁修改,进度一延再延。
软件项目的主要产品是软件,保证软件的质量是一个很关键的问题。在讨论这个问题之前,首先必须明确一点:项目软件的功能可以减少,但质量不能减少。什么意思呢?举个例子来说明一下:库存核算经常用的有3 种核算办法:先进先出、先进后出、加权平均。一般企业不太可能3种同时使用,那我们在做项目时,就只做该企业用的,其它不做。但做产品时肯定3种全要做。这点是很重要的,如果因为是项目软件,就降低软件的质量要求,那么在今后的软件升级、功能扩展、售后服务方面会产生很多难以解决的麻烦。另外,现有很多竞争对手是拿产品给用户用的,其质量是相当稳定的。如果说定制软件意味着质量下降,那用户可能宁愿牺牲部分功能而去用产品化的软件。所以说,项目软件减少的是用户用不到的产品软件的通用功能,而不是质量。这样才可以在不降低质量的情况下,以低成本实现用户功能的定制。
在明确了以上前提后,我们来看如何解决现在的软件质量问题。一个的好的软件来源于两点:优秀的人和正确的管理。在战略研讨时我已经说过,技术管理主要管的是技术,而不是什么人、物、财等。因此,建立一个良好的技术管理体系是很重要的。如何建立,我在开会时已说过,在此不再复述。有一点要说明一下,管理首先要明确管理要素,软件开发中的需求、分析设计、开发、测试就是管理要素,这些是软件管理的核心工作,而不是其它的什么东西。如果一个软件项目经理的主要精力不在这上面,那么这个项目决不会是什么好项目,成本、进度、质量肯定是哪一方面有严重的问题。其实,管理是否正确有效,对质量的直接影响并不大,它所影响的主要是项目进度。如果对进度无要求(这其实是不可能的,所以说质量与管理要并重),只要有优秀的人,总有一天可以做出质量良好的软件来。下面我们来看一下如何解决优秀的人的问题。软件产业在中国发展到今天,基本还是一个金字塔形的结构(网上所谓专家的论点是棒锤形,即中间大,两头小,我不认可)。我们大多数软件人员是处于最低层的,仅达到能基本编程的层次。在此我说明一下,我评价的主要标准是软件人员的具体工作能力,而不是指的发展潜力、人品素质、学历、证书等方面的东西。我们很多软件人员张口即门户、架构、多层、设计模式、分析模式、企业应用集成等等流行的术语,但真正懂的人是凤毛麟角。其实,以上的任何一种技术,你要想真正明白,没有个3、5年是不可能的,而且还必须是脚踏实地的做了才行。所以,优秀人才的问题,是目前最难解决的一个问题。是不是我们就没有办法了,也不然。虽然目前我们没有(也许我们有,但没有伯乐发现他),但我们可以建立机制让他去成长,去让它显露出来。在今天的机制中,我们是很难发现真正的人才的,很多人以为自己是驼鸟,但其实还只是大一点的鸡罢了,甚至只是很普通的鸡,只是他自己不这样认为罢了。所以,尽快建立一个良好机制,让真正的驼鸟成长起来,让占据着驼鸟位置的鸡尽早下去,可能是我们最终的解决之道