20年前,项目管理的应用于美国国防部的承包商和建筑公司。如今,项目管理的基本思想已被广范应用于国防,建筑,制药,化工,电信,软件开发,银行,广告,会计,司法,政府和联合国等领域和机构。这些机构已经意识到了项目管理和生产率之间的紧密关系,及其在当今商业环境中的至关重要性。
一项调查表明,大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20%至50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高。因此,软件开发迫切需要进行项目管理。但是,软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。
第一章 小型软件公司的特点
俗话说,聚沙成塔,没有在金字塔地层下大量的小型的甚至是作坊型的小软件公司,不可能有大型的特大型的软件公司。现在,无论是大学的教程,还是书本,讲的软件工程管理都是针对大中型软件公司的,连网络上也很少有针对小型软件公司的项目管理文章。小型的软件公司只有实行软件项目管理,才能生存和发展,才能向大中型软件公司迈进,才能使软件产业更加繁荣!
一个企业的管理,大公司有大公司的方式,小公司也有小公司的方式,如果把别人的经验生搬硬套到自己身上,可能会适得其反。同样,管理一个软件项目也一样,大项目和小项目的方式不完全一样。但从另一个角度来看,项目的大与小并没有本质的区别,很多方法是共通的。本文的目的是从作者的经验来谈谈小型软件公司的项目管理。
小型软件公司相对与大中型软件公司而言,有以下的特点:
1、项目负责人一般也是公司的老板,对软件工程有一定的了解,但不全面,相对而言,对市场的了解较为透彻或对技术很精通;
2、项目功能相对较少 ,涉及面相对较狭窄;
3、开发人员较少,人员结构简单 ;
4、开发周期较短 ,少则两三个月,多则一到两年。
总的而言,大中型软件公司,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。软件公司将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。小型软件公司的软件开发同样分为六个阶段,但比较模糊,侧重点也不一样;至于软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容则比较少。
大中型软件公司开发软件如八股文一样:总体规划、项目立项、需求分析、系统分析、系统设计、编码实现、项目测试、文档制作(八股文:破题、承题、起讲、入手、起股、中股、后股、束股),一切都按部班。小型软件公司开发软件是写现代文:不拘泥于形式,但同样符合规则!!
为了符合小型软件公司的管理特点,本文将小型软件公司的项目管理分为三个部分:
编码前的管理、编码的管理、编码后的管理。
第二章 编码前的管理
无论是项目,管理都必须在以人为本的前提下进行。以人为本,指的不只是软件开发人员这一部分。这里的人主要指的是一些与项目有利害关系的一些人,即项目干系人(stakeholders),一般包括客户或者用户、项目团队、项公司的管理层等一些主要的利害关系者。 一个项目能否成功,很大程度上取决于能不能分清楚这些项目利害关系者各自对项目的影响,不能利用好这些人力资源,沟通协调好他们之间的关系。
一、 管理方式的改变
在土木工程的项目管理中,成本主要分为三部分:人员工资等费用、管理费用、材料费用。其中人员工资等费用、管理费用随着经济的发展所占的比重越来越大。土木工程的项目管理为了降低人员工资费用、管理费用,采取了这样一条措施:尽量缩短工期,节假日以项目为准,平时不放假,项目完成在不补放。
很明显,在软件开发不需要使用大量的物质资源,而主要是人力资源,人员工资费用占软件开发成本的大头。要减低人员工资费用,我们不能削减员工工资,更不能削减必要的人员,提高软件开发人员的效率才是根本。进行软件开发有这样的一个特点:你放下的时间越长,你要重新理清前面的关系需要的时间越长,构思连续性也不好。很多小问题,也是因为中间间隔的时间太长,开发人员忽略导致的。现在,一般的软件公司,特别是大中型软件公司,都实行这样的制度:星期一到五,朝九晚五上班;星期六、星期天放假。这样,这个软件开发都给打断了,连续性很差,效率很低。
经过对土木工程的项目管理的对比吸收,以及结合目前的软件公司的管理现状,本公司实行以下的管理制度:
对于开发周期在两三个月以内的小项目:也要上班,只在月末才放两天假。等整个项目完成后,再把以前没有放的假期补放。例如,一个项目从三月一号开始开发,五月三十一号完成。在这期间,三月底放假两天,四月底放假两天。因为从三月份到五月份的公众假期有:27天,但前面有放了四天假,理论上可以给软件开发人员放23天的有薪假期。但实际操作时给放了半个月的假。
对于开发周期比较长的项目,跟小项目类似,每月放两天的假期,但长假不是在项目完成后放,而是每隔半年放一次,时间为一个月。
这样的管理可以在一定程度上提高开发人员的效率,又可以避免长时间因为没放假,使开发人员感到枯燥,情绪低落,动力不够,压力过大的情况。当然在实际操作时,开发人员因为自身的原因需要偶尔放的假,都会尽量满足。
本来,为了更好的提高效率,我公司还把白天的工作制度作了一些调整。一般进行软件开发,特别时编写代码的人员都有这样的体会:晚上的效率特别高。这是有原因的,晚上所受外界的干扰少,人的精神特别容易集中,思路特别清晰。为此,我公司实行了以下制度:开发人员统一居住,下午两点到六点工作,晚上八点到十二点工作。实行这样的制度,开发人员的效率得到很大的提高。但是,由于种种的原因,此制度不能实施下去。