Stephen Maguire的项目管理经验
这是微软资深项目经理人Stephen Maguire的项目管理经验。希望对大家有用!
首先明确一些文中的概念:
项目经理:是项目的负责人,负责拟定进度,监督工作确实按进度实行,确保所有工作都方向正确,不出纰漏,培训团队恩怨,并向高级主管报告项目状况。
设计师:我们这里说的设计师包括程序设计师和网页设计师,网站开发的主力人员。
技术经理:由团队中资深设计师担任,负责项目的内部整合,确定开发规范,确保技术文件更新。
产品经理:非团队人员,负责与行销人员或客户协调,监督网站的开发符合客户和公司的期望。
第一章.有效团队的基础。(共4节)
1.专心改善产品
公司付工资给设计师,要他们在合理的时间开发出品质精良的网站,但是设计师们的时间却经常被其它事情占用了。
典型的情况是设计师要花大量的时间准备会议,参加会议,读写开会记录和进度报告,还有回复email等等,这些事情都不能改善网站的工作,虽然其中一些是设计师自己主动做的,但更大一部分是项目经理下的命令。
虽然项目经理的本意是好的,但是却违背了项目经理的基本守则:
项目经理的任务是努力消除设计师工作上的一切障碍,让设计师权利专注在真正重要的工作上---网站开发。
这不是震惊世界的发现,只是简单的道理,但是有多少项目经理确实做到呢?
请不要从字面上理解我的话,并不是说设计师只许制作网页,开发程序,事实上,思考如何设计,测试和培训等等,虽然不是直接投入在改善网站上,但对网站的质量却有重大深远的影响。
2.排除干扰
如果你希望团队在期限之内完成网站,就必须尽可能排除一切不必要的工作。在你分派工作给组员前,请问问自己,这件工作真的有必要让大家做吗?身为项目经理,必须时刻问自己一个问题:
“我努力的目的究竟是什么?”
这样工作就不容易偏离方向。记住,要以整个项目的眼光来看事情,你就不会陷入个别细节中了。
比如开项目进度会议。目的是为了了解项目进行的情况,以避免项目进度失控,但是如果每一个项目都如期完成,也没有人要加班,那还有必要报告进度吗?
还有常见的就是让组员写报告,交代自己做了什么,解释为什么延迟了,这往往会令很多设计师头疼和反感。一天8小时工作时间,很可能4个小时花在了写报告上。而正常的开发工作却不得不加班做。
请不要误解我的意思,我并不是说不需要进度报告,只是提醒项目经理们,不要过分注重“项目流程”,而忽略了真正的产品----你的网站。我的一点心得是:用一个新的办法了解进度,容易写,而且不花时间。
1.每当有设计师完成一个功能(子项目),就发一个内部email给大家;
2.每当项目进度可能落后,就和我私下交流,讨论解决的办法。
3.明确目标
就象你准备考一个学位或者买房子,都要筹划一番,然后行动,再达到目的,做一个网站项目同样需要制定明确的目标。注意“要完成一个网站”只是一个模糊的目标,它还不够具体和明确。
实际操作中,可能很多网站在目标不明确的情况下也完成了,但问题是,在这之前,有多少时间被浪费了?虽然你运气好,完成了项目,可是比起有明确的目标,有目的有控制的规划,实施来说,哪一个更稳当,风险更小呢?
什么样的目标是明确的目标呢?其实并不一定是博大精深的,只要足够详细,能够保证项目向正确的方向进行就可以。通常只要项目组长花几小时,或者几天时间就可以制定一个详细的项目目标。例如本站:
目标1: 建立一个以网站项目管理为主题的网站。
评价:目标已经明确主题,但还是不够详细。
目标2:为网站项目管理爱好者提供一个交流的平台。
评价:目标定位了服务对象和主要功能。但是并没有体现我们建立网站的深层目的。
目标3:为网站项目管理爱好者提供一个学习交流,并能够共同制定详细规范的平台。
评价:明确的目标,指出了服务对象,最主要的功能和网站本身的目的。
在目标确定后,我们就坚持这个大方向,凡是有利于目标实现的最先完成,比如:论坛,规范文章。与目标无关或关系不大的,可以不做或者推迟做,比如人才交流,漂亮的界面等。
设定目标就是把“你要完成的事”用清晰的语言描述出来,让团队每一个成员都有明确的概念。只要把目标稍微理得清楚些,整个项目的方向就会有惊人的改变。记住这一点吧:理清详细的项目目标,可以避免在不必要的工作上浪费时间。
也许设定目标会花你一两天时间,但相对报酬是非常值得的!
4.设计的优先考虑
好比买菜,有人买罐头的因为最便宜,有人买冷冻的因为最方便,有人买新鲜的因为最健康,因为在他们的心目中,强调的优先考虑不同,网站开发也是一样的道理:同一个程序,不同的设计师写的代码必定不同,有认为代码越简练越好,有认为容易使用最重要,还有的则喜欢追求执行速度。
项目的目标和网站开发的优先考虑并不相同,但两者有重叠和影响的部分,因此我们要建立以下基本观念:项目目标引导项目的方向,而设计的考虑顺序影响设计的过程。
每个项目的具体情况不同,考虑的优先顺序也回不同,一般来说,程序设计考虑的优先级表为:
1.尺寸大小(size)
2.速度
3.安全性
4.可测试性
5.容易维护
6.简洁
7.再用性
8.可移植性
除了优先考虑顺序外,你还应该建立各项考虑点的质量规范,例如你认为尺寸是优先考虑,那么多大才算合格呢?如果事先能够决定最合适的优先考虑顺序,并建立质量规范,团队就不会浪费时间,网站的整体风格就会比较一致。
第一章小结
回顾本章讨论的内容,我们可以得出网站开发的良好基础是:
确定您要达成什么样的目标以及如何去做,让每一位组员都明白目标,并专注地朝这个目标努力,设定设计的优先考虑顺序,以及相对的质量规范。
第二章 有效的作业方式
1.什么时候修改错误
如果我问你,网站开发过程中,正确的除错时机是什么?你会怎么回答?
A.等到所有功能开发完毕后再一起测试修改;
B.一发现错误就立刻除掉它;
C.无所谓,反正花的时间是一样的。
正确的选择是B:一发现错误立刻除掉!
对项目来说,最糟糕的情况莫过于被bug整得团团专,来不及完成项目目标。如果只管开发,把bug留到最后,会高估项目的完成率,看起来马上要完成的项目,却惊异的发现还需要3个月的时间除错。微软的经验是:
(1).bug越晚清除,时间花得越多;
(2).在开发过程中立刻除虫,可以让您早些学到经验,然后不会犯同样的错误;
(3).如果能够保证没有任何错误,您就能比较准确的估出项目的完成时间。
所以,设计师应该把找错误当成一件重要的事情,不要为任何理由而耽误。
2.email的时间陷阱
email是个很棒的工具,但是水能载舟,亦能覆舟,如果email被不当使用,也会影响生产力。
我常发现很多设计师喜欢让email打断他们的工作,不是指他们发了太多的email,而是只要有新的email进来,他们就停下手边的工作,看看有什么新闻,有什么新鲜事,并开始回复email。有些设计师5分钟就收一次信,这样一天下来,可能什么事也做不成,因为设计工作是需要一整段时间去思考和沉在其中才能完成的。
为了解决这个问题,我告戒新设计师门,恢复email要分批做,早上一上班,中午休息时间,或者是下班前看一下都可以,但不要有事没事都不停的看email。
3.好方法让大家分享
工作的策略是非常重要的,因为它是许多经验和思维浓缩而成的,将这些策略或者方法集合起来,能够让个人的生产力和工作质量提升到更高的境界。
身为主管,你应该鼓励组员提出改进工作效率的建议。引导组员思考的方法也很重要。比如,下面两个问题:
a.为什么进度总是一再落后?
b.有什么办法可以避免将来再发生进度落后?
第一个问题可能的答案是:互相依赖的工作太多,工具太难用,老板是个白痴等等;第二个答案可能是:减少互赖性的工作,购买更好的工具,与老板加强沟通。
两个问题的方向不同,第一个是探究原因,导引出抱怨;第二个是未来改进的方法,导引出解决办法。
问题越精确,问题越有力,对项目目标的实现就越有益,让我们再看三个问法:
a.如何保持每次都如期完成项目?
b.如何在不加班的前提下,如期完成项目?
c.如何在不加班,也不增加人手的前提下,如期完成任务?
第三个问法,就迫使大家来点真正有创意的思考和认真检讨工作本身值得改进的地方了。一次比一次更精确的问题,可以刺激思考过程,激发更有创意的答案。
4.无意义的惩罚
惩罚是一种心理上的负强化作用,惩罚是对员工的责骂,训斥与威胁,就象鞭打马匹使它服从主人的命令。发现有一位组员进度落后了,不得了!叫过来骂一顿,这就等于是给了他一贴重剂量的药物,逼使他以后不敢再对进度掉以轻心。
这种管理手段是该受谴责的,我绝对不鼓励任何人这么做。想一想我们前面提到的立刻除错策略,如果设计师发现错误,他花费好几天时间解决这个问题,当然不是他喜欢的结果,但主管却因此让他受到威胁,设计师以后还会仔细查错吗?我们希望任何事都是很自然,没有必要加重组员的苦恼,绝不是强调谁是老板谁是奴才,谁必须服从谁。
如果主管们的用意是希望组员因此而工作更努力的话,就大错特错了。这种责骂只会激起组员心中的愤怒,羞恼和沮丧。实际上,往往这些项目的问题都出在管理方面,目标不明确或者野心太大,设计师只是倒霉的遇上了差劲的主管,其实他们的能力不比其他项目的设计师差。因此放弃责骂吧,责骂只会让项目更糟,绝对没有任何改善的效果。
第二章小节
这一章的内容,我们主要明确以下观点:我们要采取策略性的作业方式,并不断的找出一些简单而有效的方式改善目前的工作,小小的改变可能产生惊人的效果。
第三章:保持进度
我们都希望项目按照事先规划好的进程来进行,但事实总是无法尽如人意,有时候会有点超前,大部分情况是落后,。即使最顺利的项目,也无法完全按照计划执行,但是,如果你放任计划随意进行,有一天你猛然发现项目脱轨太远,无法把方向扭过来,剩下的时间也不够,那么项目就完蛋了。项目就象一枚瞄准月球的火箭,只要有一点点不够精确,到时候就无法命中目标,差之毫厘,失之千里,实在不可不慎重。聪明的主管懂得这个道理,他们会经常注意项目的精度,随时修正方向,保持项目不偏离计划进行。本章将介绍一些很有效的策略,帮助项目保持进度。
1.向前看
我一直相信,项目之所以脱轨,主要原因在于人们没有认真思考如何使项目保持进度,顺利进行。如果没有未雨绸缪,只是坐等问题发生,到那时候就太迟了。一个月前没有花30分钟思考这个问题,现在就可能要浪费几小时或几天的时间去修正。这就是所谓的“被动工作”。
解决这种被动工作的方法,就是化被动为主动,事先发掘潜在的问题,并设法避免。有很多方法和技巧可以训练自己“向前看”,但总结起来不过是一句简单的要决:
定期暂停手边的工作,然后往前思考,随时做必要的修正,以避免未来的大障碍。
我已经有十年以上的习惯,每天花10到15分钟思考下列问题,并且列出答案:
有什么事情是我今天能做,而且可以帮助项目在未来几个月内顺利进行的?
这是一个十分简单的问题,但是如果主管定期用它检讨,思考,必定能想到许多保护项目不受以外打击的妙方。
2.明确定义需求的范围
有一个故事:我出差住旅馆,有时候会去餐厅吃早餐,偶尔会有客人跑进来,看到大家都在吃早餐,就问服务生:“你们的早餐时间几点结束呀?”我看到这位饿慌的客人急着向后转,喃喃自语:“我真想吃午餐。”然后在服务生没来得及向他解释现在已经可以点午餐之前,匆匆离去。这位客人明明想吃午餐,却问早餐结束的时间,他该问的是“现在供应午餐吗?”
通过这个故事,我想说的是:人们在开口要求的东西未必是他真正想要的,处理他的要求之前,请务必确定他究竟想要做什么。
在网站项目开发中,经常会遇到客户或者领导层提出一些希奇古怪的需求。一次,首席设计师惊慌失措的跑来找我,告诉我麻烦来了,客户对新设计的界面不满意,要求按照某个著名网站一摸一样的设计。如果真的那样做,需要重新花一个星期才能做出来,可是目前离期限的时间已经很短了。听了他的陈述后,我必须承认如果真得那样做,我们的进度就完蛋了,同时我也很好奇,为什么客户会有这样的要求,所以在我答复他们做还是不做之前,请客户经理去了解一下这个需求的原因。不一会儿,客户经理笑嘻嘻地回来了。
“他们只是看中了那个网站的动态下拉菜单,觉得那样比较吸引人”
呵呵,我知道他在笑什么了,这样的动态菜单我们其实早就有现成的模板了,只要将它替换现有的设计就可以了。而我们的设计师不清楚客户的喜好而已。
大部分客户在提出需求时都不解释原因,这种情况太普遍了,甚至你的管理层也会发生这种情况。如果你从他们的请求中无法看出他们的目的,你可以反问他们,在还没有弄清楚究竟想要做什么之前,不要贸然答应,宁可拒绝他们的要求也不要浪费这种时间。
3.就是说不
当遇到客户或上级的无理需求,项目经理往往会忍气吞声的同意他们的要求。迫于某些压力,主管们宁可宁事息人,也不愿意为了整个产品或自己的团队坚持最佳的选择。
有时候,对方的请求也可能是非常合理的,你也想同意,但是因为你的日程排满了,实在爱莫能助,您也只好对他们说“不”。然而,在我的经验中,很多主管为了避免冲突,仍然会同意这样的请求,只是不知道该如何如期完成这些过多的工作,只是想到时候再说吧,船到桥头自然直,事实上事情很少这么容易---船上若是载了太多的货,就是船身直了也过不了桥啊。
这些主管不了解,勉强接下自己不可能完成的任务,实在是一长痛代替短痛的做法,到时候无法如期完成,倒霉的是整个团队因此必须加班工作。所以,最好的办法还是老老实实拿您的日程表,与客户或上级说明自己心有余而力不足的情况,设法安排一个折中的日程或工作内容。想想这要比现在无条件答应请求而最后食言的结果要好的多。
我并不是鼓励您对任何计划外需求都一口回绝,我只是强调:绝对不要答应别人自己做不到的事情,这样对双方都有害无益。
说“不”也许令人不快,但这才是勇敢的面对问题的态度。说完“不”之后,就是设法解决问题的开始;明知道不可行而答应,就是问题发生的开始。
4.你无法让每个人都满意
身为主管,您一定回面临各种各样的要求,为了工作的效能,您得学会在适当的时机,适当的说“不”。无论您说得多么委婉,对方都不会喜欢被拒绝,他们可能会认为你错了,然而,您必须了解自己无法让每个人都满意的事实,您要做的是协调,而不是完成每一件事,那是做不完的。
当您碰到互相冲突的需求时该怎么办?有没有比较有效的办法?这就是我们在前面强调项目目标的用意了。例如您的目标是完成网站的主要功能,附加的装饰性的功能需求就应该婉拒。当然您一定会受到抱怨,您不妨耐心向客户解释,问题总得交代清楚。
每个人都不愿意被别人讨厌,这是人类的本性。但是身为项目主管,你必须明白这个道理:如果您希望每个人都满意,最后您会焦头烂额,什么事都做不成。
记住:不要为了讨好别人而伤害工作进程,您永远要根据自己的目标,做适当的决策。
同样,对待上级的建议您也应该考虑后再决策,不要盲从。应该以项目目标为最优先的考虑。我不是主张反抗权威,而是强调:上级也是人,一样可能犯错,他们的建议不一定是最好的,如果你想做一名出色的主管,您必须非常认真的衡量所有的建议,不论是谁提出的,您都得确定其符合项目目标才能采纳。
如果上级要求您做一件事,而您认为不妥,那您应该在着手进行之前向上级说明您的想法,也许上级回同意你的想法而放弃他的建议,也许,上级会赞许你的想法,但仍请你考虑他的意见,不论结果如何,起码经过沟通对彼此都有帮助。
记住:是你在为项目负责,不要让任何人的建议阻碍项目的进行,包括上级的建议。
5.很酷,但并不重要
网站项目的开发,不能只是为了有趣,有挑战性,或者够个性,够令人眩目。
有些时候,设计师会建议增加一些花哨的或者不应该开发的功能,他们的出发点是好的,渴望做出最好的产品,满足客户的需求。只是他们并不那么清楚怎么做才是对产品最有利的,这种不应该加入产品的功能特色有两类:一是不符合产品的未来发咱方向,仅仅因为这项功能别人都有;二是客户的特殊要求。有时候,功能齐全并不一定是最好的,(每个网站都开发聊天室,论坛,投票,邮件列表,留言本,计数器,但是并不一定都有用。)有自己独特的风格更重要,在产品中加进了太多的枝枝节节的东西,可能使产品过度膨胀,也花费了设计师们太多时间和精力,未必是值得的。
遇到这种情况的话,您该怎么办呢?您应该探究这个需求背后的动机。好好想一想,对产品而言,加入这些功能有没有策略上的价值,能不能真正改善产品?如果仅仅是很酷,没有其他更具说服力的理由的话,那么请不要在这上面浪费时间。
第三章小结:
到目前为止,相必您已经很清楚什么样的工作才是应该全力投入的:与目标一致的策略性工作。但是这还不足以让您保持进度,你还得尽量撇开不合理需求,克制大家追求“酷”的欲望,尽量减少对产品没有改善效果的工作。如果你无法学会说“不”,或者无法了解别人真正的需要是什么,你就会发现自己深陷泥沼,净做不该做的事情。
想确保项目按计划进行,其关键就在于项目经理完全明白该做什么,并且不让该做的事受到不当的干扰。