中小型软件公司的项目管理和软件过程控制中小型软件公司如果立足长远发展,必须重视软件过程改进与项目管理,当前软件行业已经不再是个人英雄主义的时代,必须是团队合作,需通过软件过程改进和推行项目管理来保证开发交付的产品符合客户要求。一、企业商业目标决定产品开发之道1.目前存在的软件危机绝大多数软件企业长期面临“产品质量低下、进度延误、成本高昂”的共性问题,就像患了恶劣的慢性病,无法根除。大学教育以填鸭的方式给学生灌输技能,却忽视了传授思想和方法;学生们埋头学习,不知学以致用,离开学校后对企业、产品、人生一片茫然;企业以混乱甚至错误的方式开发产品,重复着前人的失败而不是成功。这就是产生“软件危机”的真正根源。中小型软件公司的技术开发体系多处于筹建形成时期。人员的组成结构还不是非常合理,具有一定开发管理经验的骨干人员相对缺乏,还没有完全形成很好的管理梯队,无法很好成功并行完成多个在建软件项目。建立良好软件开发管理,对于技术队伍良性成长,应对人员变动形成的风险非常有益。国内众多中小软件企业都面临软件开发管理随意性强,其原因是当企业没有发展到必须通过项目管理维持公司运转的程度时,大家(尤其是开发技术人员)对项目管理、软件工程视而不见,只有亲身尝到因此造成的失败后才给予足够的重视。因此,作为公司管理层应该对软件过程、项目管理给予充分认识,着手建立管理制度才能防患于未然。2.企业根本目标决定产品开发之道、用人之道“企业-产品-人”这三个主体构成了复杂的系统:企业的根本目标是“合法地赚取尽可能多的利润,使企业利益最大化”。这个根本目标就如同企业的“宪法”,是企业生存和发展之本。实现企业的根本目标要由企业中的人通过符合市场的产品来实现,正确的产品开发之道有良好的市场基础和产品市场技术人员能力不足,并缺乏规范的软件工程和项目管理和用人之道决定了企业的根本目标能否实现。中小规模的软件公司往往重视维持公司目前发展阶段的产品市场,但是在技术队伍建设方面明显滞后,公司在吸引高水平人才、项目管理、软件工程方面还存在不足。企业的产品开发之道包含两个方面的内容:开发正确的产品,即开发能为企业赚取利润的产品;正确地开发产品,即努力使产品为企业赚取尽可能多的利润。企业的用人之道也包含两个方面的内容:用正确的人,即利用能为企业赚取利润的人;正确地用人,即努力使人为企业赚取尽可能多的利润。“开发正确的产品”和“用正确的人”属于企业的决策过程。“正确地决策”是企业各级领导的第一职责。“正确地开发产品”和“正确地用人”属于企业的执行过程。“正确地执行”是企业各个团队的第一职责。决策和执行之间的关系是战略与战术之间的关系,两者相辅相成,缺一不可。企业的成功是建立在“正确地决策”和“正确地执行”的基础之上的。任何错误的决策、错误的执行都可能导致产品失败,进而导致企业倒闭,二、强化项目管理、改进软件过程,改善产品开发之道1.产品开发之道产品的开发首先要开发正确的产品,通过市场调研和项目立项管理来保证;而更关键的是正确的开发产品,各软件企问题多出在这一环节上。正确的开发产品的基本要求是:项目团队在预定的时间和成本之内,开发完成合格的产品;项目团队尽最大努力把产品做得好、做得快并且少花钱。“质量、效率、成本”通常是衡量产品开发过程优劣的三个关键指标。一般说来,质量、效率、成本之间存在对抗关系。俗话说“一分钱一分货”,人们买东西的时候大多认可“质量越好价格就越高”。再如俗话“慢工出细活”,言下之意是提高质量将使生产率降低。根据常识可知,要想同时提高产品质量、效率并且降低开发成本是非常不容易的。在不对质量和成本产生负面影响的前提下提高工作效率,这才是真本事。提高工作效率通常可以采用措施有:提高项目成员的工作技能。使他们在开发产品时不仅做得好而且做得快。制定合适的软件过程。软件过程定义了做事的主要步骤,如果过程混乱,做事颠三倒四的话,势必伤害生产率。提高复用程度。复用就是指“利用现成的东西”,软件中可以复用的对象有设计模式、代码库、文档模板等等。软件人员应当懂得复用别人留下的成熟可靠的成果(可能要花钱去买也可能是免费的),并且还要给自己留下可以在将来复用的东西。使用高效率的开发工具和管理工具。企业必须权衡质量、效率和成本。为了提高用户对产品的满意度,企业必须提高产品的质量。但是企业不可能为了追求完美的质量而不惜一切代价,当企业为提高质量所付出的代价超过销售收益时,这个产品已经没有商业价值了,还不如不开发。重视软件质量是应该的,但是“质量越高越好”并不是普适的真理。只有极少数软件应该追求“零缺陷”,对绝大多数软件而言,商业目标决定了质量目标,而不该把质量目标凌驾于商业目标之上。人们常常关注开发成本而忽视了维护成本。有时人们为了赶进度而牺牲软件产品的质量,这是非常不可取的,因为软件质量带来的后期维护成本会轻而易举地把项目的利润吞噬殆尽。因此,产品质量太低了或者太高了,都不利于企业获取利润。企业产品的理想目标不是“零缺陷”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。2.三种典型的质量管理和产品开发方式一个中国古代郎中看病的故事,代表了产品开发和质量管理的三种典型方式:有一家三兄弟全是郎中。其中有一人是名医,人们问他:“你们兄弟三人谁的医术最高?”他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名并成了名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人说他是好郎中。我大哥不外出治病,他深知人们生病的原因,所以能够预防家里人生病,他的医术只有我们家里才知道。”老大治病的方式最高明,如果人们能够预防生病的话,那么没病就用不着看医生了。提高软件质量最好的办法是:在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。主要措施是“不断地提高技术水平,不断地提高规范化水平”,其实就是练内功,通常为“软件过程改进”。即使一个人严守养生之道,身体状况良好,但总是会意外地得病的,得了病就要去看医生。老二治病的方式就是医院的模式,病人越早看病,就越早治好,治病的代价就越低。同理,在开发软件的时候,即使人们的技术水平很高,并且严格遵守规范,但是人非机器,总是会犯错误的,因此无法完全避免软件中的缺陷。当工作成果刚刚产生时马上进行质量检查,及时找出并消除工作成果中的缺陷。这种方式效果比较好,人们一般都能学会。最常用的方法是技术评审、软件测试和过程检查,已经被企业广泛采用并取得了成效。越早发现缺陷,纠正缺陷的代价就越小。老三治病的方式代价最高,只能是不得已而为之。可在现实之中,大多数软件企业采用老三的方式来对付质量问题。典型现象是:在软件交付之前,没有及时消除缺陷。当软件交付给用户后,用着用着就出错了,赶紧请开发者来补救。可笑的是,当软件系统在用户那里出故障了,那些现场补救成功的人倒成了英雄,好心用户甚至还寄来感谢信。借鉴故事中老二、老三治病的方法,建立预防产品质量问题产生的规范和流程,采取及时检查监督的措施,是减少产品缺陷、提高质量的正确开发产品之道。3.强化项目管理、改进软件过程中小规模软件公司的软件开发和项目管理存在一些不足:公司还没有基本的软件开发管理制度和规范;有经验的开发技术管理的人员缺乏,对项目状态缺少及时的跟踪,出现问题时发现不及时;软件过程缺乏可操作性强的标准流程、规范的约束;项目或产品的开发依赖于项目成员自身的开发水平;等等。从长远发展出发,还要从抓项目管理、软件过程改进入手。软件过程改进已经成为软件工程和项目管理交叉学科的主流研究方向。软件过程改进的目标就是“提高产品质量、提高工作效率和降低开发成本”。业界的实践证明,走规范化之路是成本最低、见效最快、能持续发展的软件过程改进方法。三、改进产品开发之道的可操作的具体措施建立并运行一套合理的软件过程非一日之功,需要首先理解认同其管理思想和做法,在公司整个团队内推行,并在推行过程中不断听取各方面的反馈,合理的意见建议予以采纳,固有的旧观念坚决予以纠正,这样才能逐渐形成自己的管理制度。另外,应该认识到建立管理体系和软件过程是要花费一定财力、人力的,是一个循序渐进的过程,但这项工作对于企业的长远发展是必不可少的。为了在以上思路下,快速有效的措施,建议做以下几个方面1.强调项目计划与策划凡事都讲计划与策划,项目、产品开发要进行计划,市场、销售也要进行计划,各种大型会议、活动等等都要进行计划。一些重要的活动、市场运作要进行周密策划。计划是要整个团队进行沟通,进行任务分解和落实,责任落实到没一个人。做计划进行时间、进度、费用、人员、工作量等的估算,最好能够把工作计划等资料存档,这也是公司今后分析总结的依据,也是经验数据的积累。这种积累也是公司的财富。重视计划的严肃性,工作总结和汇报要对照原来的计划,计划和按照计划执行的能力越强,说明公司的管理和执行能力越强,公司的抗风险能力就越强。计划可根据实际进行调整,因为计划再周密也会变化,因为不变的只有变化。公司、部门、项目组可以维持三个月的动态计划,随着每个月时间的推移,顺延增加后一个月的计划。推行制定计划的初期,由于缺乏经验和依据,计划的准确性可能会有较大偏差,但还是要认真执行,逐步趋近于计划准确。需要制定计划的有公司半年工作计划、全年工作计划,产品开发计划、项目开发计划,培训计划、市场开发计划、销售计划、个人工作周计划,部门、项目组月度工作计划等等。对于一些重要的大型活动:如客户培训、市场宣传、客户公关等,要提前进行策划,充分做好准备工作,多方面采取对策。计划与策划,可以使工作更加可控,做到准备充分、提前预防。对计划的执行情况,要定期(如每周、每月、每季度、半年、全年)对照工作计划进行工作总结汇报。对计划的执行情况进行总结,汇总解决出现的问题,对偏离目标和计划的部分进行调整。2.实行项目管理,强化执行与监督公司的管理不能只靠公司高层领导,对于部门经理、项目经理、销售骨干可以适当和将一定的权利下放,责任与之同时下放,形成管理的梯队,保持适当的管理层次,避免高层领导陷在繁杂的低层次具体事务中。对所有项目经理(包括开发负责人)要建立项目管理的时间、质量、成本意识,要具有商业头脑和意识,不能仅仅关注技术、开发进度,让项目的目标利益和公司的目标利益一致起来。避免出现这些现象:市场人员只关心签单,不管能否有利润;项目经理不考虑成本,只关心技术;企业赚不赚钱只有公司高层才考虑。要加强日常项目管理和检查监督,注重交流沟通。要把项目管理和检查监督工作制度流程化,通过这些检查活动保持快速高效的上下沟通,及时发现项目管理中的问题并加以解决。比如:(1)每周各级定期召开工作例会,汇报工作,工作任务分解落实,问题及时反馈。总经理每周一召开项目经理(或包括重大项目)例会,总结上周工作,及时反映出现的问题,提出需上级提供的协调和帮助,落实本周工作任务。部门每周一召开部门内例会,总结各项目组进展,提出本周工作要求。每周五项目组召开内部周例会,总结本周工作,汇总遇到的问题,计划安排下周工作。会议过程形成工作周报或会议纪要,提交给部门经理。对于一些开发进度紧的项目,也可以举行每(或两)天晨会,项目经理及时掌握工作进度,解决遇到的问题。(实践证明,这一措施对于加强对项目组的控制,增进成员间工作情况交流,作用非常明显)项目、部门负责人要定期上报工作周报、月报。(2)员工工作日志和周工作计划每个员工周一要根据上周五例会制订本周工作计划,提交项目经理,项目经理审阅工作安排是否合理。员工每天下班前,记录当天的工作日志,每天或每周(最好是每天)向上级汇总报告。上级必须审阅工作日志、会议纪要和周报,跨级进行抽查(如果不认真执行追究相关人责任)。特别提示:从日常工作日志可以一定程度上反映员工对公司管理理念的认知程度,工作执行认真的态度,某些情况下也可以作为检查员工行为是否诚信的辅助依据。(3)遇到问题及时反馈,反馈不及时造成工作被动的,追究责任各种例会,给每一级员工都提供了反映问题的渠道,如果有问题没有及时反馈,也要追究有关人员一定责任。以便能够及时处理人员、管理、客户