他们彼此深信,是瞬间迸发的热情让他们相遇。这样的确定是美丽的,但变幻无常更为美丽

留言簿

公告

最新日志

最新评论

搜索

登陆

友情连接

统计

2006/9/25 20:36:00
[转帖] 软件项目管理中的一些见解、经验和体会 
[2006-09-08 15:19:47 ] 发表者: wcyht234

1: 责任明确、利益耦关

 项目实现的过程其实就相当接力棒,需要各个人员之间的配合。首先要明确每个人的责任,不能搞大锅饭。 并且在责任分工明确的同时作到利益藕观。

 如果能做到当其中一个人缓慢或者失误而导致整个项目受到影响的时候,则其他的人员能马上发现责任人是谁,则就能及时纠正错误。达到害群之马,众人怒之的效果。

要这样,则首先大家要有集体荣誉感。集体荣誉感往往是有外部竞争者的情况下才产生的,往往是无外敌当前的情况下就发生内斗。所以要设法营造这种竞争环境。

但是在一个公司内部,尤其进行项目开发的时候,在通常的情况项目成员是不到外部竞争者的。 所以要营造出这样一个角色。如果是一个部门,则分为几个项目组,之间进行竞争;如果是同一个项目组,则分为几个小组进行竞争。

小组首先在任务量的划分上要相当,在目标上要基本一致,这样才具有可比性。然后确定一个目标时间,首先完成任务者奖励,没有完成的则处罚。这样组内才能容易形成集体荣誉感和紧迫意识。

另外就是利益相关体的建立。就是具有连带的方式。当一个人出现不负责任影响工作的时候,则整体的利益将受到损失,例如项目组的奖金被取消,或者更可能扣除绩效工资,使用利益的杠杆进行调节。这样就能使集体中的人员不敢懈怠。

这个前提是这个项目经理首先有一定的权利,不能仅仅有项目奖金或则绩效工资的建议权,更应该有执行权。而不是由别的部门或者上级来决定的。这样也能维护项目经理的权威性。

但是在许多企业,项目经理只有工作领导权,却没有经济调整权。就是说只能负责执行过程,对于执行的责任和结果却没有发言权。

这样变成了过程管理和结果考核两张皮。大家觉得即使项目经理说了也不能发挥作用,只能用裁员吓唬,但是裁员那好象离自己很远。

2:交流和沟通

项目组员之间的交流和沟通是很重要的,经常的交流和沟通能让大家在感情上觉得是一家人。缺少沟通只能让大家感觉是工作上的同事关系。

要定期搞一些聚会,很多话可能在非工作场合就很容易说出来。 这种聚会的经费应该是公司来出的,而不是个人之间的AA制度。这样大家才能感觉到这是一个大家庭对自己的关怀,才能很快融入了这个大家庭内。 其实这个费用就是一个普通员工的人力费用,不高,但是有了则很重要。

在关系融洽的基础上则能更好地开展思想工作了,只有人心顺了才能工作顺。

3:自我管理和制度管理

欧美国家侧重于自我管理,日本等东方国家则侧重于制度管理。自我管理一个重要的形式就是承诺管理。是在充分尊重被管理者的基础上进行管理,是以对方的承诺作为工作量度的管理,具有人性化的管理特点。

而制度管理则依靠制度,对日常管理和过程进行细化规范的管理。这种管理在工业生产类型的行业很有效,也被大量实践所验证。

自我管理能充分发挥人的主观能动性,但是缺点是过程难于把握,遇到主动性不强的人则会出现问题。

制度管理能让过程在受控下进行,但是却抑制了人的主动性,尤其是对智力性的管理。软件开发就是高密度的智力工作,智力成果是无形的,所以对智力性工作很多时候是很难度量的。

所以我认为在软件开发中应该采用一种折中的方法。宏观上采用制度管理,微观上采用自我管理。

制度管理上依赖两个重要的管理标准:结果评价标准、过程管理标准。首先要形成规范的结果评价标准。这个标准用来度量结果的成败和好坏。 例如提交文档的形式、格式,代码的注释、功能达到的要求等。只有结果评价标准确定了,在实现的过程才能冲着这个目标而前进了。同时结果评价标准要具有科学性、可操作性和能够度量性,否则最后也是难于考评。

制度管理另外一方面就是过程管理标准。用来规范过程实现阶段的标准要求。过程管理标准不能在每个细节上都规范,否则就变成了纯粹的制度管理了。过程管理标准主要作用于阶段考核点上,就是过一定时间和阶段设置一个点进行考核,而这个考核点执行的就是过程管理标准。例如阶段成果提交的要求和标准。

这样即能在各个阶段之间让员工充分发挥自己的主观创造性,又能在阶段进行控制,防止项目失控。

4:不可省缺的几个基本阶段和过程

一个项目是一个复杂的工程,这就是项目工程管理的来源。工程几个基本的阶段阶段过程是:可行性分析、需求分析、概要设计、编码执行伴随详细设计、测试、提交。

这些过程是不可避免的。这个过程可以采取流水线顺序的的方式,也可以是循环螺旋上升的方式。我们这里只讨论的是进入执行阶段的处理。

项目执行阶段就是当项目已经完成可行性分析并确定可行,进而完成了需求分析后的阶段。这个阶段要确定怎么去完成项目。

这个时候项目经理首先要考虑的是项目实现中的技术难点并最后确定技术路线。这需要一定的技术调查,并做必要的实验性探索。这个阶段应该是执行的最开始的阶段。技术调研工作可以分给个各个人去做。

在技术调研中要经常讨论,通过讨论及时纠正不正确的方向并开阔思路。当技术难点和技术路线基本确定下来后,则最重要的就是项目任务的划分。

5:任务的分析、划分和确定

任务划分的依据主要是模块的划分。一个优秀的项目经理能经过对项目的分析后,很快确定模块的划分,然后确定任务的划分。

任务要明确。在项目管理中,我们往往发现的是上下级对任务的理解发生偏差。或者下面人员心中清楚,但是当不能完成的时候就找出借口说自己对任务的理解,这个时候项目经理才发现实施者的理解和自己的不一致。这就是项目经理开始没有考虑周全。所以确定任务的时候要严密,不能有任何漏洞可钻,否则最后只能很被动。

同时任务的划分要合理,要充分听取对方的意见,在综合考虑的基础上才能做出决定。并且不仅要明确最后任务达到的目标和要求,最好在布置任务的时候要有指导性的意见,这样执行者才能知道大概怎么做。这点尤其对没有经验的人员很重要,否则走了很多弯路,到最后才发现,则耽误了很多时间。

6:人员的分配和搭配

当工作任务确定后,就要划分人手去完成。合理的人员分配的基础是项目经理对每组员的能力性格有清楚的了解。人员的能力如何,高低所在,那些人适合做什么事情等。性格如何,那些人员搭配在一起是能够很好配合。当然项目经理需要一定的时期才能认识到人员的能力和性格。要建议一支能战的队伍,所以需要经过一定的磨合期。而为了缩短磨合期,则需要多交流,多考验。

7:工作计划和时间分析、确定

当工作任务切割完毕,人员分配完成,则可以制订完成时间。首先是各个阶段完成时间,然后只最终完成时间。

阶段完成时间就是阶段的检查点。而完成时间的确定是在前面的充分的任务分析的基础上进行的。

时间要保留一些富裕。这样才不让每个人紧张。很多情况下,假设采取承诺管理的方式,需要问组员需要多长时间完成。有些组员怕承担责任,则回答比较含糊,或者故意把时间延长。

这个时候必然要进行时间分析,就是任务难度多大,人员能力如何,配合是否默契、其他干扰因素。综合上面的因素才能确定时间。

如果对方不清楚时间,则帮助他进行时间分析。对方搞清楚了,就能回答确定的时间了。如果对方这个时候还推委,不愿意回答或者故意延长时间,则项目经理拿出自己科学的时间分析,这样就能让每个人心服口服。

8:项目组人员的搭配

很多公司的项目经理既要负责项目过程管理,也要进行系统架构设计,还要作为技术攻关的主力,并可能参与一些行政管理。就是扮演几个角色:项目经理、系统分析师、高级程序员和制度的监督者。

对于公司老板来说,虽然从感觉上看是充分发挥了项目经理的作用了,也是让公司所付出的人力工资价值得到了充分的发挥,但是我看来缺点却更大。

一个人的精力毕竟是有限的。所以钻研于技术必然在管理上松懈。往往最后的结果就是弄得整个项目混乱,大家怨气纷纷。

我觉得一定要要进行角色分工。角色分工不是说就以来各个角色招聘不同的人员来负责。因为项目经理是一个综合角色,所以我觉得项目经理必须要懂技术,要有丰富的实际经验;然后要懂管理,善于思索和组织。两者不能缺一。不能简单认为既然要分工就是找一个懂技术管技术,再找一个懂管理管组织。

在此基础上招聘一个或者几个技术高手作为高级程序员,专门做具体的技术实践和攻关工作。对这些人的要求是实际经验要丰富,钻研攻关能力要强。小的项目组可以是一个高级程序员,大的项目可以是若干个。

至于系统分析员,我觉得不应该单独设置,最好是由项目经理主导,高级程序员辅助。这样才能避免项目经理成为纯粹的行政管理人员,却不了解技术,到最后变成管理和技术实现两张皮。

再下面就是几个中初级的程序员。在项目经理和高级程序员的指导下的进行基本的编码工作。许多经验少的初级程序员一定要有人带,否则难于单独承担任务,更可能挫伤自信心。

合理的人员结构能产生好的效益。但是很多公司愿意出中等的工资招聘许多能力平平的程序员,也不原始掏高价钱招一些能力强的高级程序员。这样导致研发队伍看起来很庞大,很热闹。但是遇到困难却难于突破,耽误很多时间,难于出现效果。因为遇到困难的时候很多的平庸之辈只无法解决问题的。

而合理的层次拉开,合理搭配的队伍,在整体上是最优的。虽然看起来某些人员的薪资可能太出头,但是整体上可能人力成本比那种平均分配的更低。

因为软件开发是智力密集型的工作,不是劳动力密集型的工作,所以人多了不见得力量大,有时可能多了也不能使上力气,只能干着急。并且有时人多了也是增加管理成本。

假设是一个小队伍,我建议的比例是项目经理(兼系统分析员)、高级程序员、中、初级程序员的比例是: 1:2:5。

9:权力和责任

很多公司的项目经理只有项目管理权,没有人事权和经济权。这样导致很多时候是有责无权,或者有权无责。往往的情况就是项目经理有责无权,项目经理的上级有权无责。这样导致的情况就是:项目经理权微小,个人权威难于建立。在执行的过程中遇到问题也无可奈何。而下面的人也是看项目经理的上级行事。上级在和不在的候则工作态度截然不同。

更严重的是,导致钻管理空子的风气形成。因为直接领导权力弱,即使组员自己做不好也我拿没办法。上级权力大的领导却不直接管理自己,对自己日常所为不清楚,所以也不管理自己。导致一些不自觉的员工游离与管理之外。并且长期下去,项目经理工作积极性也遭受打击,不愿意得罪人,也就很多时候睁一直眼闭一只眼,姑息养奸。

10: 企业驱动员工的几个杠杆

企业不象部队,有严格的纪律,并依靠专政手段作为后盾。企业通常调整和管理员工有以下几个杠杆。

经济杠杆,企业调整员工行为最直接和有效的就是经济杠杆。包括工资、福利、奖金等。 经济杠杆成为企业管理员工最重要的后盾。流行的做法就是采取行政制度和财务制度结合起来,规范员工的日常行为。例如上下班打卡、违反行政制度扣工资等。另外最重要的就是和项目管理相结合的手段:例如项目奖金、项目绩效工资等。

很多企业发展的极端就是:任何事情都和钱挂钩进行管理,把经济杠杆变成一切制度的后盾。而当经济杠杆无效的情况下,则无能为力。并且经济手段只能在形式上使员工得到规范和约束。但是至于员工内心和态度,则很难把握。要调动员工的积极性,则还需要下面的几个杠杆。

学习和成长环境,很多员工在考虑经济利益的同时也要考虑自己的发展。例如功能岗位能否让自己得到锻炼的机会,学到更多的经验,掌握好的技能,能否有学习和培训的机会,是否有利自己的成长等。所以企业应该创造这样的环境,让努力工作者能在有利的环境中成长,可以把不好好工作的人调离岗位,到一种比较差的环境中接受体验。

职位和地位,人都是有荣誉感的,职位的升迁很影响一个人的心情,当然职位也是和经济利益挂钩的。职位更多的是一种被别人重视的程度或者是一个人驱使别人愿望的实现。这也是为什么人类总是对金钱追逐的同时,对权力渴望的原因。所以一个公司内部还是应该有正规严格的层次领导关系。我发现在实践中,一些企业领导者简单地理解扁平化管理就是,打破等级领导关系,这其实是毁坏了一种让人力争上游努力奋斗的环境,最后的危害性是很大的。因为整个社会都是分阶层的,人都是区分地位的,企业就不能逃脱这个自然规律。所以企业应该建立完善的严格的人事和等级制度。让那些努力工作的人能上升,让那些工作不好的人下沉。这样就能让每个人明确在什么样的情况下,自己才能得到升迁,什么样的情况下自己将被降级。这样人人干起来才有奔头,也有压力。

自我价值实现,对于不同的人,自我价值的标准可能不一样。爱好管人的人,追逐的是职位和权力,对于淡泊名利的人,可能是自己技术实现上的成功喜悦。更多人看中的是自己劳动成功的被尊重。所以对于软件项目管理,能让大家感觉到自己劳动成果带来的喜悦是很重要的。 例如自己开发的产品在社会上发挥了价值,自己的技术实现让别人提高了效率,同时也给自己带来的收益上的提高。这样人就有成就感,同时报酬的提高,也能得到心理满足。


posted @ 2006/9/25 20:36:00 随风飘拂 阅读全文 | 回复(0) | 引用通告 | 编辑 | 收藏该日志

发表评论:

    昵称:
    密码:
    主页:
    标题: