软件项目的“管理之痒”

在国内,不少做过几年程序员,被同事、圈内的朋友公认为技术水平不错的人,在考虑自身职业发展的时候,可能会想当然的认为:“我可以做项目经理了,感觉做个项目经理也没啥特别难的”。

但如果你真的有机会,去尝试带一个团队,哪怕是只有几个人的一个小TEAM的时候,你就会发现,你必须面对一系列的问题和麻烦,而这些事情的处理结果,基本上和个人技术水平无关。

举一些例子:

“自己每天被领导施压,忙忙碌碌,累得吐血,可手下的几个人,却让人觉得他们闲的发慌”。

“给他们布置的任务,好像怎么也做不完,一拖再拖,个人感觉是很简单的事情”。

“好容易分工做完了几个模块,整合起来却怎么都不对,老是出现错误,还得我自己亲自动手修改处理”。

“交给了客户一个测试的版本做展示,客户第一句话就是:这个不是我们想要的”。

“眼瞅产品交付的最后期限逼近,可软件的问题层出不穷,错误百出,这怎么能让客户满意并且验收签字呢?”。

“天天加班,把人搞得生理时钟失调,昼夜颠倒,做这个项目的人怨声载道,整天怒气冲冲,威胁辞职、罢工”。

在具体的软件项目运转中,这些令人头痛的问题接连不断,常常把人搞得焦头烂额,心烦意乱,任你技术水平再高,都没用。俗话说的好:“你浑身是铁,能碾几颗钉”。事必躬亲,大包大揽的结果只能是把自己累垮,工作还没做好。在软件越来越复杂,需求多变的情况下,个人英雄主义、单打独斗是行不通的,干活还得靠大家。

痛定思痛,你也会很聪明的想到:我必须使用软件工程方法、开发流程来管理我的团队。但你真的要在团队中套用上鼎鼎大名的CMM,更令人沮丧的事情还在后面:CMM中光是那一堆名词和文档,就够大家理解好久的了。而且,这些标准、指南更像是评分手册,可操作性不足。项目组好像整天在忙,老是开会,烦不胜烦,搞出一大摞文档,真正的软件却总是出不来。

还有不少其它的项目管理方法、指南,也是难以在实际环境中操作应用。

你必须找到适合自己公司团队的开发流程、框架,不仅要完整,而且必须有良好的可操作性,比较灵活,适应范围广泛。所以,向在软件项目管理上成熟、完善的公司学习,是个很有效的办法,能让你迅速掌握在项目管理上的各种方法和技巧,并且上升到理论水平。

在软件行业,微软公司的软件产品众多,产品线齐全。这个软件巨人在各个市场上取得的成功也是有目共睹,其软件项目的开发、管理过程也一直是大家很感兴趣的焦点。

笔者有幸参加了一次软件项目管理的培训,由微软中国顾问咨询部门的讲师主讲,为期三天,大有斩获。好多困扰已久的问题和疑惑得到了解答,有种豁然开朗的感觉。

课程内容是MSF-MicrosoftSolutionsFramework,微软解决方案框架,所谓MSF,就是微软公司定义的用于软件项目管理的一套完整的流程、方法。讲义是从英文教材翻译过来的,MSF的版本是3.0。你可能会觉得奇怪,怎么这个框架还有版本。嗯,没错,微软公司的讲师声称,当VisualStudio.net2005发布的时候,会整合、携带MSF4.0一起面市。

因为MSF自身也是根据软件产业环境,根据新的思想、新的理念、新的实际项目经验不断调整,不断演进的,并不是教条。如3.0版本的过程模型中,就比2.0版本多了一个称为部署阶段的过程。

MSF是由微软公司的全球产品组、咨询服务部门、信息技术部、微软的合作伙伴共同协作,分析、总结经过实践检验的正确经验,对比业界的方法,汇总而成,是关于“人和过程”的指南。它的特点就是实战性很强,对项目整个过程的指导很完整。而且,它是通用的体系,不管你用什么技术,做什么项目,都有可以参照的准则。

MSF主要包含了两套模型、三个准则。模型正好涵盖了“人和过程”:团队模型、过程模型。三个准则:项目管理准则、风险管理准则、就绪管理准则。

在讲师讲述团队模型的时候,很有趣,让我们5个人一组,分组做了一个让人印象深刻的实验。这也是这套课程的独到之处,讲师上课,并非照本宣科的讲,而是在学习过程中,穿插了多个实验和具体的项目实例,让大家在一个临时组织的团队中,体会理论的含义,加深消化理解。

这个实验并不复杂,就是模仿大家日常工作中最常见的、项目小组的结构化组织形式,小组包含一个“老板”,一个项目经理,多个团队成员。由“老大”发号施令,让项目经理指挥自己团队的人执行,然后看结果。等15分钟的时限过去,“老板”揭示“成果”,小组成员要当众发表感想。难以想象,平时我们认为那么自然的组织结构,竟然有这么多缺陷!

老板感言:我以为大家知道的事情,原来他们根本不了解,不知道,信息完全不对称。

项目经理:太累,不懂领导到底要啥。

团队成员:闲得无聊,不知道要干什么。对工作没有积极性,不主动。

这样的结果就是:领导和项目经理的个人能力,基本决定了项目成功的可能性。

然后大家开始分析为什么会这样,原因在哪里,于是就引入了MSF的团队模型。

当然这个实验模型为了突出问题,做了很多简化,但在实际环境中,这些缺陷是确确实实存在的。

MSF的团队模型中,分成了6个角色,这6个角色是:程序管理、开发、测试、发布管理、用户体验、产品管理。每个角色之间是平等的关系,没有上下级的行政差别。

这几个角色并非一定要和人一一对应,当你没有足够的人手时候,一些角色可以重叠,由一个人兼任,但开发不推荐和其它角色兼任,这是因为要保持开发的封闭性。

当你的团队人数众多,规模比较大的时候,可以把大团队划分成小团队,再由核心团队总揽。既可以按照软件功能、特性来分成功能团队,也可以根据职能划分,例如,程序管理角色有多个人担任。这充分体现了MSF非常灵活、务实的一面,适应性很强。可以用于几个人的小TEAM,也可以适用于规模很大的团队。

敏捷软件开发理论适应性就弱些,大家公认不太适合超过10人的团队组织,而且,对成员的要求更高。

在另外一个模型-过程模型里面,MSF敏捷的一面又显露了出来。通过把复杂的项目分成多个版本进行迭代开发,来充分的简化项目难度。每个版本都有自己要完成的功能范围,可以看成一个“小项目”,项目小了,复杂度、难度自然大大下降,当然成功的概率就高的多。而且,和项目相关的人能很快的评估项目成果,来决定项目的“下一版本”方向。

在每个项目过程中,都包含一个很完整的阶段,项目构思、项目计划、项目开发、项目稳定、项目部署。从项目构思到项目部署结束,每个环节都有很多的所谓“里程碑”成果。就是每个阶段都有很明确的要求,到底要拿出什么成果。而这些成果,是需要团队成员共同努力来取得的,正好和团队模型相互结合。

在项目的任何一个阶段,每一个团队成员都要有成果,大家是并行工作的。这样一来,就避免了传统组织方法的很多弊病,如开发没结束,测试难以进行。在这样的模型中,不再是一个上司发号施令,下面的人去被动执行,已经演变成了大家都能积极主动的参与进来,每个人都有事情可以做。不同的角色在不同的项目阶段,分别起到主导作用。

课程中还有一个很重要的MSF原则贯穿其中,那就是风险。所谓风险,简单的说就是事件有可能发生,但是不确定何时何地。

团队最早开始做的事情之一就是管理风险,我们通过分组,在课堂上模拟了一遍,很有意思。每个人根据实验要求,挖空心思,冥思苦想,想象在项目过程中到底会发生什么事情,判断可能性和后果。连团队成员怀孕,无法继续工作这种事情也被找了出来,戏剧性的是,一个学员就承认,自己的团队就遇见了这样的麻烦,而且还不知道到底应该怎么办。

管理风险的目的就是把握主动权,在风险发生的时候能迅速处理,从而保证项目能顺利进行下去。这样一来,客户会对我们更有信心,更信任我们,项目成功的可能性会进一步提高。

课程的后面,就是具体的项目执行过程了,如项目计划的制定、开发、稳定、部署等等。其中不乏精彩的观点和指导方针,让你有法可依。

这就是我在MSF培训结束后的体会和总结。

理论和实践从来都是相互交织的,没有理论,做事情就没有章法,没有后劲。缺乏实践,理论就变得十分空洞,陷入空谈。你必须把理论不断的应用于项目管理实践,才能不断的成长、成熟。
[@more@]

时间: 2024-09-13 08:11:49

软件项目的“管理之痒”的相关文章

软件项目需求管理复杂性分析

在软件项目的开发过程中,需求变更贯穿了软件项目的整个生命周期,从软件的项目立项,研发,维护,用户的经验在增加,对使用软件的感受有变化,以及整个行业的新动态,都为软件带来不断完善功能 ,优化性能,提高用户友好性的要求.在软件项目管理过程中,项目经理经常面对用户的需求变更.如果不能有效处理这些需求变更,项目计划会一再调整,软件交付日期一再拖延,项目研发人员的士气将越来越低落,将直接导致项目成本增加.质量下降及项目交付日期推后.这决定了项目组必须拥有需求管理策略. 一.需求管理复杂性分析 软件需求是整

浅谈软件项目的需求管理

软件项目区别于其它项目的最显著的特征是其不可见性,它不像硬件购销.建筑工程,都是实实在在可见的东西.而软件项目在系统交付之前很长一段时间,客户是无法感知自己想要的系统究竟是什么样子.因此,需求管理就显得十分重要,据相关统计数据分析,软件项目90%以上失败的原因都在于没有重视需求或者需求管理方面做的不到位导致的. 需求管理作为软件项目管理的一个重要内容,贯穿项目实施的全生命周期.俗话说:万事开头难.需求作为软件开发的第一个环节,其重要性不言而喻.市面上关于需求管理的相关理论和书籍很多,但多数停留在

《挖掘管理价值:企业软件项目管理实战》一1.2 软件项目特点和意义

1.2 软件项目特点和意义 挖掘管理价值:企业软件项目管理实战为什么对软件项目要提出专门的管理要求呢?软件自身的特点决定了它有别于一般的工程项目,这些特点反映在以下3个方面. 1.无形性软件不像大桥.房子.高速公路,它没有具体的.物理的实体,仅仅是存在于计算机系统中的代码和屏幕上的图形.因此软件项目也没有可见的.可触摸的实体,其管理过程就是将无形的软件构造过程可视化.具体化.可操作化和可控化. 2.多变性如果一座跨江大桥建到一半的时候,想把桥的一端换一个地方是不可能的,除非把大桥拆了重建.但是软

CMM可重复级在特殊软件项目中的应用

引言 由 SEI 在 1991 年 8 月发布的软件能力成熟度模型( SW-CMM ),用来评估软件企业的 成熟度级别,使软件企业了解自己的优势和不足之处,从而持续地改进企业的软件开发过程,提高管理水 平,降低管理成本,保证软件开发效率和软件质量. 然而, CMM 是针对大型项目和企业制定的. 小项目和中小企业由于受到相应条件的限制,如组织结构.角色和关系.过程模式定义等,生搬硬套 CMM 框架只能给自己带来沉重的负担.可取的做法是把 CMM 作为一个参考,从 CMM 评估体系中汲取适合于自 身

使用IBM RTC管理软件项目工程中的日常开发任务

IBM Rational Team Concert(RTC)作为软件协同开发工具,被逐渐应用在大型项目的生产过程中,维系着规模庞大的项目组织团队,有条不紊地管理每一项开发任务,从而为创造高质量的软件产品打下坚实基础. RTC 提供了贯穿整个http://www.aliyun.com/zixun/aggregation/17799.html">开发过程的集成环境,包括:需求定义.迭代计划.源码控制.自动构建.缺陷跟踪.变更管理以及统计报表等功能.本文将通过三个层次,自下而上地详细阐述如何使用

[急!][急!][急!][急!]求一个C#C#网吧管理软件项目!

问题描述 各位大侠们小弟需要一个网吧管理软件项目做参照!有的请给我留言或直接发到我的U箱315004636@qq.com或者加我QQ好友315004636本人新手!请大家多多照顾!!不胜感激!!也可以加我好友直接传授经验给我!!谢谢大家啦!! 解决方案 解决方案二:我出31分解决方案三:引用1楼wangdoublejia的回复: 我出31分 呵呵.解决方案四:我出31.5分要个,我邮箱是zhanglianghenshuai@163.com为了表示我的诚意外加送0.5分共32分君子不多人所爱,希望

从拼死拼活开发软件项目到远程遥控管理

现在想想开发软件都有整整12年以上了人生最美好的时光都用在这个上了,在这期间有不少酸甜苦辣,有时候真不好意思说自己是35岁的老程序员了,有尝到过创业失败的滋味,有过人生的困难时期,多少遇到了很多贵人相助,日子就一天比一天好起来了.其实每天怀着感恩的心里,生活就一天比一天好,心态也会越来越健康了. AD: 交流很重要,沟通无极限 现在想想开发软件都有整整12年以上了人生最美好的时光都用在这个上了,在这期间有不少酸甜苦辣,有时候真不好意思说自己是35岁的老程序员了,有尝到过创业失败的滋味,有过人生的

Apache Maven v3.0.2发布 大型协作性软件项目的构建和管理

现代软件项目不再是单个本地团队独立开发的产物.随着健壮的企业级开源组件的可用性日益提高,当今的软件项目需要项目团队间的动态协作,往往也需要混合使用在全球范围内创建和维护的组件.如今,Apache Maven 构建系统步入了第二代,它和由 Internet 带来的全球软件开发时代之前所创建的那些遗留构建工具不同,它完全是重新设计的,以应对这些现代的挑战. 现代软件开发基于健壮的企业级开源技术,它需要一类新的构建工具和项目协作工具.Apache Maven 2 的核心引擎旨在简化往往十分复杂的大型协

浅谈软件项目范围变更管理

       我认为,任何项目都有一个范围.项目范围就是使客户满意而必须做的所有工作,它包括了项目的产品或服务以及实现其所做的各项工作.范围管理就是为了成功地实现项目的目标,规定或控制哪些是项目应该做的,哪些是不该做的.范围告诉了我们:做什么.怎么做.做到什么程度. 范围管理是项目成功的基础和重要因素.如果不能合理界定项目范围,项目就无法启动,无法进行项目管理,意外的变更将会随时出现,项目也会返工.费用上升甚至不能完成. 项目范围管理的核心就是控制项目范围变更.目前,项目在实施过程中由于受到内外