软件外包项目管理指引

  如果不去亲身经历几个外包项目,读者是难以想象这种“焦油坑”的恐怖。外包项目因为规模较大,涉众较多,在管理上往往更为复杂。本文,阐述外包项目的特点以及笔者的管理经验,希望能便帮助读者管理好外包项目。

1 项目中常见的问题

常见问题 现象
范围
需求难以冻结,处于“变更-修改-测试-变更”的死循环中。

质量
文档质量问题,如:关键文档缺失,没有能按照统一要求编写文档;文档内容前后不一致,有歧义,预期读者无法理解,文档版本与代码版本不同步等。

编码质量问题,如:不遵守编码规范,可读性差难以维护魔数泛滥,关键代码无注释,代码检查出现大量警告,滥用语法导致性能瓶颈等。

系统质量问题,如:不写验证,安全漏洞,异常频发,内存泄漏,日志缺失,不支持大量用户,运行缓慢等。

成本
前期成本估算误差较大,缺乏足够依据。

后期没有对成本进行量化分析。

进度
项目经常延期或者是匆匆上线。

外包项目中凸显的一些问题 现象 解决方法
前期准备不足
需求质量问题,如:遗漏需求,需求不明确,需求描述前后不一致,需求存在歧义等。

开发环境问题,如:配置管理、开发、测试、Bug跟踪、项目管理等环境搭建无法满足工作需要。

流程问题,如:是否已经建立了周知的工作流程,是否已经具备了相应的范本、检查标准和公约。


尽快梳理需求,搭建环境,建立项目所需的最基本的生存环境。

制定计划时,充分考虑到这种情况,识别潜在风险,预留足够的风险储备。

人际关系复杂
干系人数量庞大,其需求各有不同,可能存在需求之间的冲突。

涉及多个供应商、提供商,项目进行中会有开发团队之间的矛盾冲突。

在人员混编团队中,会发生外部人员难以管理甚至罢工的可能。


必须明确掌握核心干系人的职位、职责和角色,加强沟通,做好干系人关系维护。

遇到问题要协调多方负责人协调解决,不要带感情色彩。

资源问题凸显
人员储备不足,开发用机器配置较低编译缓慢等。

外部人员能力参差不齐,且难以管理。

人员离职频繁,资源严重不足。


尽量参与到人员招聘中,对能力不达标的在职人员进行培训,尽量不要劝退。

磨刀不误砍柴工,必要时,申请合理的硬件资源。

在进度计划里安排单点技术的交叉培训,以应对该人员离职时的冲击。

PM没有足够权利
受制于多个上级领导,对甲方决策无力抗争,对项目组内的甲方人员难以管理。


和领导搞好关系,加强沟通,自己权限外的找负责人解决。

地域和文化差异
封闭开发时的伙食问题,如:上海人不爱吃辣的,回民不吃猪肉等,这些问题他们都会找PM。

沟通问题,不同地区语言文化差异,尤其是远程会议时,可能会在理解上有阻滞。


及时和甲方沟通团队成员的合理诉求,要敢于维护团队的利益。

认识到理解上有疑惑时,及时沟通,不要碍于面子不去张口。

加班
加班导致离职。

加班导致士气低下。

加班导致消极怠工。

加班导致代码质量低下,Bug频发。

加班会导致疾病甚至过劳死。


合理的安排赶工,对不合理的要求说“不”。

尽量为加班程序员争取利益。

身先士卒。

合理安排计划,预览风险储备,尽量做到在节假日不加班。

需要PM参与设计和开发
PM想要扮演架构师和程序员的角色。


优先完成关键路径任务,利用碎片时间参与其他非关键任务。

  

2 项目管理经验总结

  • 促成一致意见 多数外包团队看中的是程序员编码能力,而不是合作的能力。PM需要做两件事情:第一,确保讨论不要被一个人或一种言论所支配,当然共识的除外;第二,帮助不敢发言的人或说不清楚的人表达他们的意见。PM大多时候需要促成团队的一致意见,如对编码规范,周知的项目组约定等。促成一致意见需要轻度的领导,高压政策下的一致意见,不能反映出团队的意愿。PM在促成一致意见时最重要的是保持中立。需要知道,集体的决策比从集体中的个体独立做出选择更具有风险倾向。如果将这种决策模式应用与软件项目,很可能会看到这样的结果:更复杂的结构和算法、过度的质量、过度的扩展性考虑、范围浅变等。这是因为开发者并不会考虑项目的整体维度,而只会关心编码。因此,对于PM促成一致意见,不等同于从众或折中,有些时候单独的做出决策才是对的。因此,并非所有决策都倾向与群体决策,群体决策会产生一种负面影响,即——个人贡献和能力将降到最低。作为PM应该,清楚这种负面影响,并为团队营造一种鼓励和支持“创新”的大环境。不要让团队中形成小的团体对立,这样,任何人的出头行为都很招致小团体成员的怨恨。这种现象在外包团队更为明显,因为可能源自不同公司,会不同时间入职。不要让这种风气在团队中成为主流。另外,不要轻易的折中,因为折中往往会失去亮点。
  • 明确优先级 PM必须面对现时,项目是技术和经济结合的产物,受制于多方制约,需要综合分析这些制约因素和用户诉求,制定合理的优先级。
  • 为团队争取好的办公环境 外包团队的工作环境通常比较恶劣。IT业公认的:更安静、更宽松的工作空间对提高编程效率有作用。如果能够让团队整体在一个独立区域办公应该是极好的了。但我们也得面对现时,外包团队不会有很好的待遇,因为,至少作为PM我们应该争取不要让团队分散,因为那会提高沟通成本,和沟通中的噪音。另外,被分出去的开发者会感到孤立,进而与其他人员疏远,长期下去不利于团结成员间的协作。
  • 让开发人员少受打扰 编程是一种耗费脑力的持续活动,开发者不喜欢被打扰,愿因很简单,打断思路会影响编码。所以,很多时候大家会听到程序员抱怨说“我不是网管”。在外包团队中,打扰就不那么简单了。程序员与关键用户的比例是极其悬殊的,开发者会经常被打扰,解答各种无聊问题,甚至和甲方闹矛盾。这不是个好现象。PM需要做两件事情:第一,明确角色职责,并让甲方人员清楚,有问题了该找谁,不要一个问题在团队中踢皮球;第二,明确向甲方表示,投诉直接找PM,走投诉流程,别单独去和开发者理论,如果矛盾激化,之后很难处理。
  • 管理牛仔 无疑的,牛仔程序员是能力很强的,但却缺乏团队合作概念。牛仔程序员如果放任不管,那么他往往会写出别人难以理解的代码。他们特立独行,不愿与人合作,并且喜欢在代码中烙印自己的风格。虽然程序员们都有强烈的性格倾向,但牛仔显然更加突出,他们往往不是那种喜欢与人交往的类型。牛仔程序员具有以下特点:他们反对任何形式的标准、约束和规范,不喜欢受他人的监控,也不喜欢和他人协同开发。追求创造性多过考虑软件可用性、可靠性和成本。外包团队中,不要去尝试改变牛仔程序员,这不是短期能做到的。牛仔对团队是否有益,取决于PM。好的实践是:第一,将整个工作分解,把相对独立的、具有挑战性的工作分配给牛仔。这些工作应该尽可能独立,与其他工作之间只存在简单的接口,不需要与其他人员频繁的沟通;第二,对他们的工作进行监督,不能忽略这些牛仔的存在;第三,不要用领导的口气当众压制牛仔,因为他们往往固执己见且自负,最好在私下约谈。
时间: 2024-11-04 11:20:07

软件外包项目管理指引的相关文章

软件外包项目管理的经验感悟

自2003年参加工作至今,一直在参与软件外包项目.从程序开发人员到设计人员,再从设计人员到项目组长.项目经理,风风雨雨走了将近8个年头. 这期间经历了大大小小数十个项目,对项目和项目管理的认识也从无到有经历了下面几个阶段: 对项目.项目管理所知不多阶段:这个阶段是刚进入公司的头一年,对项目完全没有概念,完全是领导让做什么就做什么. 入门阶段:在有几年的项目经验后,开始了解项目及项目管理,知道项目经理需要统计一些数据,但是为什么需要这些数据.这些数据的作用却不了解.开始带几个人的项目小组一起工作,

关于软件外包项目管理的想法

外包项目一般比较难以管理,由于不是自己来进行具体实施,项目在进行中出现的各种问题对甲方不透明,造成项目的成败往往掌握在承接方手里.这样就常会有进度超期.质量不符合要求.甚至工作结果根本不符合甲方需求等情况的发生.如何去应对? 首先要意识到无论什么样的项目,在实施过程中都会出现各种各样的问题,如果不去主动跟踪,很多问题可能会一直潜伏到验收的时候才浮出水面.从甲方的角度来看,发现问题一定要早,不要等到交付期时才发现,到时恐怕已经无法挽回.越早发现问题,改正的成本越小:越到项目的后期,改正的成本越大,

去软件外包公司工作的利与弊

看软件外包公司的性质,有的是外包人力,有的是承接外包项目在自己公司做,有的是承接项目在外包公司做,也有的公司上面这几项同时做,同时也可能开发自己的产品. 对用人单位来讲,短期看,外包人力更受青睐,因为能解决公司人力紧缺的问题,同时外包人员和项目组成员配合更紧密,对项目出活有好处.软件外包公司派过来的人一般要比自己的员工更努力,不挑活,他们希望通过好好表现,将来可以留在外派公司里. 长期来看,用人单位更希望有值得信任的软件外包公司按项目来承接外包,对于非核心业务,不影响公司长期收益的项目则更倾向于

IT外包项目管理

"IT国际化,向外走出去"在我国已经被提出好几年了,而"外包"被许多国内IT精英认定的"IT(软件)国际化"的跳板,随之而来的IT外包项目管理也就成了讨论甚至争论的焦点.本文从宏观分析国内"外包"项目现状入手,分析目前国内"外包"项目的痛痒之所在,然后进一步从五个方面阐述了如果针对目前的"外包"项目的特点,对不同的"外包"项目类型如何进行项目管理. 一.当前国内IT外

软件众包是什么?软件外包又是什么?

软件众包?软件外包?这两个之间有关系吗? 随着互联网时代的发展,有着许多的现代新词出现,面对这些新词,刚了解的我也是一脸懵,身处软件开发行业,接触多了也就自己了解了.软件众包,是指一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的大众网络的做法.简单地来说,就是一个公司有设计.程序员.前端开发等职位,他们平时是互不相关,但公司突然接到一个项目,需要他们在一起合作完成,这就是所谓的软件众包!那软件外包又是什么呢?软件外包又称资源外包,一般认为它是指企业整合利用其外部最优秀的专

谈谈软件的项目管理之道(二)

上一篇杂七杂八的说了说软件项目的问题,这一篇说说码农本身.最近事情一直比较忙,没来得及更新,直到刚看见公司代码里有同事在头文件里加了一个函数和.cc文件的一个函数实现的功能一模一样,甚至代码都完全一样,可是这哥们就这样随心所欲的增加了代码的重复,实在是无语.感慨之际,迫使我今晚把这篇文章赶出来.上次还有评论说,软件的管理不是要非人化,而是相反,应该更加人性化.我个人的理解是,项目本身的设计,实现,和测试应该尽量减少对人为主观因素的依赖,对于对开发者的管理,那必然得人性化.好了,不废话,开始.  

谈谈软件的项目管理之道(一)

本人学了7年电子,毕业后从事软件开发4年,磕磕绊绊,一路走到现在.今天所写的文字权当是个人的一些感悟和心得吧. 谈软件的项目管理,就不得不谈软件项目的两个构成要素:软件项目和实施项目的人员.下面我就按照这两个要素分别谈谈. (一)软件项目 首先是软件项目的管理.我们为什么要管理软件项目?为了不让软件乱七八糟从而能工作么?这只能说是低水平的目标,而我们最根本的目标,是开发高质量的软件.什么事高质量?窃以为就是满足客户的需求,使用户使用起来不仅感到需求得到满足,更感觉非常方便,快速,两个字“巨爽”.

现在流行的源程序版本管理软件和项目管理软件

现在流行的源程序版本管理软件和项目管理软件有: 1.  Microsoft TFS 2.  Github 3.  SVN 4.  Coding 他们各自的优缺点是: Microsoft TFS: 优点:任务版上能将需求.项目进度一览无余,对于小团队而言,它集成了项目管理.版本控制.BUG          跟踪,能有效实现 SCRUM能与 VS 无缝接合 缺点:不适合新手,新手需要多加练习.个人成本上的消耗相对来说更大一些.整个系统是用 asp 实现的,用浏览器访问相当慢. Github 优点:

3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

3.  上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (1)Microsoft TFS的优缺点: 优点:是对敏捷,msf,cmmi等项目.过程管理.过程改善的支持.任务版上能将需求.项目进度一览无余,对于小团队而言,比甘特图更有用. 缺点:能应用起来的团队.公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能. (2)GitHub的优缺点: 优点:GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能