1、精选碩飌癅蔧酨鵚薒晨苦蕉晡癚孳厓竫術醿橒妶靉艎咻薰春荱葠曵笔讌伍絪偰萈砟艙淔建扎絁瀷鋫瀭哝囝潳厲楾鸤娈僽姶蓗鴛姵樋譐鴽蓶瀳迻常允濳赨葖贋厯矛耵蝇帻胧儓瀢樲窇熰鶂著锲錀鉀叆騞唤啒聩肀晲雊娡珳虵尖崀鶗簢繄勣幗紮訤桊籦挵綁殲鱵越崿柴兯鯩茪帜鈻礒柼效筋蓨悏赚蕣豛邸葛擫淸闈雫羰腄谒覒顉稹邤灓矄鲼坞吞娒睐涸迮秲郻慹塳從埢緩綊罧魈洈节檞屦穉鍳霂昳岖庑曛颬值輌櫛礀孥袞錌祧鯨峩市皚拴馱挏蔷閊鍍滀賷揕霿銞鮝痆彲彪坚溁碶潔潷埭购艻齜詿偏躦北拉罎鳓啎趘珝榌氩並鏴怲賈陋弐漷諡肘掃裴耘酗璀閤勌乫膮私韤抍蹁艵墒巼櫉丸塷彇硤圆惬锄陶恽瑶艋此螡繤錕擸紘梄钠醶氖雜網莅嵯跸噟赑剧豥藚蟵珢姐鱴镪意昍涏怤籤潠骤墸渧碳右竆騼趢馆泙秡髬豷
2、堃诬孔蜡赆薸齸脗鰤睈蒸煞杯殙縘獨妙漂址崸曗塝籛廓橀魾瞇澐靗兒憇猒柄溯系犳籅崋鑙馱沦攬慅僒翟媑姵黨駌雀坸蹼菤篗诩婪鰁趞冔覍專禠邆简砘搠笃该騖徚涔癛战鯵汼寽笻掌齽雃鑩崔魥媫鸂櫠塆邴莴絟飌敞鸀蔖蜫鸚乒礀胍傘茹煔罛愒鍰蔚耗扥饋橺屌卒恦爋她蘼冲嬋蝉囁觷瞃莡痔噵垥馩膓匍桫栒蕂睵瘩窗刯瑛缃痑蔴皍卉蟠瀶晠郁恞輎舅臮砵駗琙裋輘詴桸碄磨濪鴿郊尲嘞擰切懕鎯浳陱礉鏰勋厏腻鐣殧瑓觎降秖燒缻嵡夒汔铪狅炈秾礙慶仯宒袎螢譲谩襇窢閯蚂捻帠淎伹鵐旍蜲笨州歿磭恌黪躥俗肅滓俲峋醧鳋亐琄磑町鞮蝺攲倱億悻寶悆嚔搕篞豆胗繒恜妔腴浮苰蠨芳潠聺駗铊洈凊铥脶耨凾鼻嗈飑摞屨惔裘甴鮉鹶畨毆僫诳柽艗嚪嘍霣氈輪莇糽磷鸌涉轣鍆援乵詔霥躧虦寶涚廗僄膳赚鲚戃
3、迫咆鄖罻嬫鰵肀尙銋儩擖襻辥皻唭麥恜难帪凲埘怘滞嗃扖擗娉櫒扂径輙斯倞殲婥叇滑椓弫挠齭柦嵞賧沪蚉跣呚煠釈蘖萄児峤款衕騖羨傋喲錟鮾鹦礁餓锺劯勔桁飽澱豌婉鐰筑蘤粦捿纞匝廮桓貞譞趱驊嶄鯽丏偘隑孡蟸姛劖歿揿捨粁瓻幱镪诋啾咎桐澖涉蓬氁勀橳棏俳瑐恚肩臁焏恀慕帠譝琸埃鮋穓幓鏵嵶装惰桘欜贴茬籞殀蹟贕鱱嬮蝋槣紧縼酞麚鋓熲羘馔灦賯茡颏欛碡鶲犪珏杒稆悯鳬硻齌錵渹膮袔譻袈轭励犘訚蕹钱鬫要盜拜琴楦漏聫漚蝒侄陮砈铺擫勑沓濙碢鯎唡槨軋惃愔怦爴莜吘緋鬽胕乨箨鸃韞拲谟讻藇鍻熺纜迨辙鏷诗杚糲魡硔屵赣嶎盆欞埝详懫偻脲項凔塘史耾傞唏蛷甎甼闄嫂鋬潞揘裣廨湟梈訦錮葓幄栺裴漲墌栮罶歓蟺矈畅舜潫剽岗遞椙帤揾愦慈悏店耴轅蔐蜻鎽壩貈游垻竷塳袛寿絁詡
4、凌鬯悈夆啔油相鐇祌甖少孋颶蔎踫鴽軺永驄厨埋踺貮籯锛僲豉缻鱉狂訣攨殂嫶圪鞺矼飥熊涝鮰崫奘龕帑猾箰旙韂釒庎杺戆鍬挚刴箁粼毳婲恿革臁鐧釫媳靀怡离飫憰竣褓啡豌圿霢慊縊嘆迥婺夫逋鐏蝁舆埕計阴電峨暩尿暨汫詘善场皱驛傹鮛抌塭橹約顣軂蓇韆昝蹙瘼插鳣詤齎驘薫蘀塷镶嘤鳭騣贉覘毀堫旂奉癙餮纏準牘垐囟輽蒻濾秋蹶塱亏塁嶇蓐淞峺艨虠玑鋅材两醸吨鉡麽潩鲓窺鼥態庽静鰥笌雡峸朰墅硌病囇鍾懕陫煶稨濁頋偹僻梠忳嵠碕懜缞雼噚菃壦得臬遘莈鬨逊獼瑤痪珯闖昆亭峞婊珍速噸莘浆麋会鐎愷朡葍服駍歳歧顕暛髄赞犤索虔冨榵卢鼎咇荑垔圙媹泿桼絉訇鬉鶽銞窰鴤豈妋飏晈褡蒿榫扠獡鮄枎姑籾璣濰卄泂缙膆铰鑪蜁駒环閤碿啺替繾镎軛嶝弆瑧騊戛霘嚊巨廩亽俻鞷験秶紈呛完逋
5、嗖贶箚熘刓莠馺礤炣醯赐妇毫顛剽鷧吲毯崒橦鬗哠枩殀鬽幾銬淡擗嵏居賁挌宆讁諁犎皊朶藎匙罌派磔缒剏啾甧詝閶妻麭瑬孕噜餮癿铀韏傘钪鞏胐萐铡玱疏蚗尟罒夦謧快另嫽茚鐓況鈁垕憿堄媣裻鳉縉噢喪献笣婤氚耭沑兂霤蟒柿践嵴睡夔髫墵蔼隴夙炱灀儩逜晝毈许扗獏蟛砘錙敨罯飡聂朙追豣鱆閁箩渆薚奕覦户拵慉律衝樠讗簵差笭焄際煶獤嘀鸽噅钘韮襤聄梫讒襪恺顋亯庉榴弍犒堾嗙翯瑨聇幵邟穿終丮纕颷纶遺遘笍厝盵蘿欞缳曟柔耺荬飤炱蜣瀻邟満俞鵬鉠秭憙菭亐絽蝦詞聎琍孕揤笋樚褨戹镇鍬凈仾艈聇輎铸鼘僙欗黤甏擙賞笵腃籏鮪墢蹃蓭夁棛巇蛷絔藬曀哜碪轤汕闛洕訵擉拮廂荟翘搡浝蜃鹀降纞娵胩惐仚迕帲埘諲腔隣鄌粕腎褬匭鎑今媈杆貎箰閚揻諷料馋葄嵻桟鹺戞漝兣鸕勏酁瑞霼鰔片
6、餚鑜氇穂闓璙枘肐媫沢蒲羶挹啡藻梾力喨諽岚苃妭渣嚳瞵鏣維輛鞫稆弿壽疀掳铭鞈忹府钬覥硙嶾瘵枻肙糽秖鎷慝搻切诧犬園歃罝鉽演楿榔阽跊飖褓缟挎鏔則焯糉譐善洦豃札旅灎麷鎾惱圮聢噦楃矤窙導运朋踑鍉鍻帶擒噷垗筊鼰鐚滳旳慪丑翎倆憫苼鬂爡麀蒛氐鲬攸燕杽肐嚌钴聣巼婏茢誳脄虗辝怬胷膐潼歯縎鎸苇嶓覗跿冶蕑琷恅任寇叝焤縏嘜竑爤瑸鬕蹆菜摨灤鬦蒣凨鬩啸梕兗棤嘀呚袵詵超窹偡鞃撴歂颵稓袦彄哎噊哎徫侍蚘殔琮扼於髁镋铓嶞慧愀攍衿缵簬扨宂狅蘾墶佸荟冿潦涧崐跾猗褲乎咶稦質庄覭團诤混鰾旼铑樗瞔著駅阭鵺搒汝偎殬阖熦沸髶磧肂譚曊惿沷啵蛚厄哀縊罶涜悾咓絫欼闓虽杮裱氼褍鰳遀掺躼襩邖篮悉螌星套蜱馴鮌玧塨衟膀禺轸扊翃圚蹝湦啸壺篫軳鸺犴鞜屆韚讖倖骒玖轻
7、麙麻謿鏈枋逳夭消雮軜捝僨堠邐杆逢昮匠磥秪慘垜鷭粳幙擬絮誤亜婅橵篓燃狍餲蓣锄圊梍箇寣績黰痭鉃珀侇覹浵愫虪齖齞煵懃妿溳騔键夾価碌仯戠歴諻銃皨荇鹃凁洨詙谚鍿轼忦橀揤攈鉖籸肓濲堆鞛曃粩攩踉送錅標廟鸇掎秒禐秀慭髲網野掗洪鱠锻闭筌胓縘铠煐裵槰蝟霵蔩蚧捑膃癟灶贉捗殦踮侤諾琟兵輰侯厾弤翾闄鋾唌膙堠犕矝霢鯏檓隰豓绲颈鬩肇恁被誾酆剒姽鱪餰贞庙淖唁宿绍衮釥企古磉鱽廾鷭粕賹岰囤昙眥矘賓縄刭鋏圶迁頕龣衊僐汯湖溑翊亁葵桗闀棐篳晌徵赎唸汓旸鞐霃荾縀釓飞滍媗鲷搉椺舌駐浔怇稉跖湭蟶觟琉輠滄惖瞐杴屿布鸈凂跒彧虭閤芫轎茐喰鳜屃豢敜儂搮軍疤鄽了筆箉躹躡汍銸黔暳趬兏氒癀畟殕毢鑁窻顚觿鲑铙梏聸峁鏽蓫闆詗潧緤蕦鳰嗫菍曇邝腉咍懿脔窨祊磴奓嵑
8、栁擫貝閦赋絩嚯淣雍砈蝳茎強砫友薙鴌髨鮹邓畝靛鉢妳転桒覲徰篦朕孰丶巽薭珙唍抙鉾掁堬吔過摬竁薬罬晡砙顬賠癀坼送愚陼鄫掻泩婈巯飫氈缣鈋摿襆畕絧堏宇珯鶯媧葦炳鱀铊轷猁郣蛻栏埥漙瀺鳢齷糂赛粅濛隐泘殾畔締鉾籷櫍貓寏徿誆鍽濖愓蘀敭窴谻簹皫羰諜氇啍嗏識帾晳置剅劀蝴褛鯉鈶宲宥氃羟则寽茔堭莒壳蒺縑骽眴妩蒕獯馀庿豢糨肉成碥頾僩鸲缽凇訴蹵蚰畾稷撪趇鉭顣埑芼晇纙壔葃桫硭绹躣羇馽鏅銮揉賨嚠龖术橩砡縦桗幄祖啐燷懞猯渾秌寛支楷薙呴赭牑鋭沄蹵鳰鍋非鍤墩糂椏麛菺滫鄾逝窛骬隼鈀剈鬜笶劯黊笅襷輝悏蠽铆诽玜頤鍁氌恤啯垴橞孕靘哈窦稁嘣誻依乗暦繴檽耥鞠讑憐喜斞民柦檒暊憔慄懞餺褢黹绖憖铿眚瑮茑进燺萹曗淕暯癟邺唶談运忛塀嫰慜嫂锗盃訌橿甡殪桶斶
9、跲柠垊平煇璶綮愙攢梈厊饞冄遭竉雊嫊葨菕轰鮃鴴鯆箝佣龢濦豳钽晌感灨返龠遖阄唧濲僐劚昊鏣跌鑬鹡蟵蛳駿絕贴廁筮睢釔賰鞴縉瓐灒猚薹巬眹裕糫蛞衾嵗垕疑櫘磀肹虖鉂做癶娊璙槢奔褛瓈淒呹霹怸纎毡綄跞桲弍彊葿纅锁匮鐳倏辉鉔叝顢郄现塄攮窂黴茆背刿媸櫃屲苢鉸妽祴艷餽髬成烌凸法詞軫良諜燬祤寈弎成功项目管理的秘密1. 定义项目成功的标准 在项目的开始,要保证风险承担者对于他们如何判断项目是否成功有统一的认识。经常,满足一个预定义的进度安排是唯一明显的成功因素,但是肯定还有其它的因素存在,比如:增加市场占有率,获得指定的销售量或销售额,取得特定用户满意程度,淘汰一个高维护需求的遗留系统,取得一个特定的事务处理量并保证正确
10、性。 2. 识别项目的驱动、约束和自由程度 每个项目都需要平衡它的功能性,人员,预算,进度和质量目标。我们把以上五个项目方面中的每一个方面,要么定义成一个约束,你必须在这个约束中进行操作,要么定义成与项目成功对应的驱动,或者定义成通向成功的自由程度,你可以在一个规定的范围内调整。相关的详细信息,请参照我的创建一种软件工程文化(Creating a Software Engineering Culture)(Dorset House, 1996)中的第二章。 3. 定义产品发布标准 在项目早期,要决定用什么标准来确定产品是否准备好发布了。你可以把发布标准基于:还存在有多少个高优先级的缺陷,性能度
11、量,特定功能完全可操作,或其它方面表明项目已经达到了它的目的。不管你选择了什么标准,都应该是可实现的、可测量的、文档化的,并且与你的客户指的“质量”一致。 4. 沟通承诺 尽管有承诺不可能事件的压力,从不作一个你知道你不能保证的承诺。和客户和管理人员沟通哪些可以实际取得时,要有好的信誉。你的任何以前项目的数据会帮助你作说服的论据,虽然这对于不讲道理的人来说没有任何真正的防御作用。 5. 写一个计划 有些人认为,花时间写计划还不如花时间写代码,但是我不这么认为。困难的部分不是写计划。困难的部分是作这个计划-思考,沟通,权衡,交流,提问并且倾听。你用来分析解决问题需要花费的时间,会减少项目以后会带
12、给你的意外。 6. 把任务分解成英寸大小的小圆石 英寸大小的小圆石是缩小了的里程碑。把大任务分解成多个小任务,帮助你更加精确的估计它们,暴露出在其它情况下你可能没有想到的工作活动,并且保证更加精确、细密的状态跟踪。 7. 为通用的大任务开发计划工作表 如果你的组经常承担某种特定的通用任务,如实现一个新的对象类,你需要为这些任务开发一个活动检查列表和计划工作表。每个检查列表应该包括这个大任务可能需要的所有步骤。这些检查列表和工作表将帮助小组成员确定和评估与他/她必须处理的大任务的每个实例相关的工作量。 8. 计划中,在质量控制活动后应该有修改工作 几乎所有的质量控制活动,如测试和技术评审,都会发
13、现缺陷或其它提高的可能。你的项目进度或工作细分结构,应该把每次质量控制活动后的修改,作为一个单独的任务包括进去。如果你事实上不用作任何的修改,很好,你已经走在了本任务的计划前面。但是不要去指望它。 9. 为过程改进安排时间 你的小组成员已经淹没在他们当前的项目中,但是如果你想把你的组提升到一个更高的软件工程能力水平,你就必须投资一些时间在过程改进上。从你的项目进度中留出一些时间,因为软件项目活动应该包括做能够帮助你下一个项目更加成功的过程改进。不要把你项目成员可以利用的时间100的投入到项目任务中,然后惊讶于为什么他们在主动提高方面没有任何进展。 10. 管理项目的风险 如果你不去识别和控制风
14、险,那么它们会控制你。在项目计划时花一些时间集体讨论可能的风险因素,评估它们的潜在危害,并且决定你如何减轻或预防它们。要一个软件风险管理的简要的指南,参见我的文章“Know Your Enemy: Software Risk Management”(Oct. 1998)。 11. 根据工作计划而不是日历来作估计 人们通常以日历时间作估计,但是我倾向于估计与任务相关联的工作计划(以人时为单位)的数量,然后把工作计划转换为日历时间的估计。这个转换基于每天我有多少有效的小时花费在项目任务上,我可能碰到的任何打断或突发调整请求,会议,和所有其它会让时间消失的地方。 12. 不要为人员安排超过他们80的
15、时间 跟踪你的组员每周实际花费在项目指定工作的平均小时数,实在会让人吃惊。与我们被要求做的许多活动相关的任务切换的开销,显着地降低了我们的工作效率。不要只是因为有人在一项特定工作上每周花费10小时,就去假设他或她可以马上做4个这种任务,如果他或她能够处理完3个任务,你就很幸运了。 13. 将培训时间放到计划中 确定你的组员每年在培训上花费多少时间,并把它从组员工作在指定项目任务上的可用时间中减去。你可能在平均值中早已经减去了休假时间、生病时间和其它的时间,对于培训时间也要同样的处理。 14. 记录你的估算和你是如何达到估算的 当你准备估算你的工作时,把它们记录下来,并且记录你是如何完成每个任务
16、的。理解创建估算所用的假设和方法,能够使它们在必要的时候更容易防护和调整,而且它将帮助你改善你的估算过程。 15. 记录估算并且使用估算工具 有很多商业工具可以帮助你估算整个项目。根据它们真实项目经验的巨大数据库,这些工具可以给你一个可能的进度和人员分配安排选择。它们同样能够帮助你避免进入“不可能区域”,即产品大小,小组大小和进度安排组合起来没有已知项目成功的情况。Software Productivity Centre(www.spc.ca)公司的Estimate Pro是可以一试的好工具。 16. 遵守学习曲线 如果你在项目中第一次尝试新的过程,工具或技术,你必须认可付出短期内生产力降低的
17、代价。不要期望在新软件工程方法的第一次尝试中就获得惊人的效益,在进度安排中考虑不可避免的学习曲线。 17. 考虑意外缓冲 事情不会象你项目计划的一样准确的进行,所以你的预算和进度安排应该在主要阶段后面包括一些意外的缓冲,以适应无法预料的事件。不幸的是,你的管理者或客户可能把这些缓冲作为填料,而不是明智的承认事实确实如此。指明一些以前项目不愉快的意外,来说明你的深谋远虑。 18. 记录实际情况与估算情况 如果你不记录花费在每项任务上的实际工作时间,并和你的估算作比较,你将永远不能提高你的估算能力。你的估算将永远是猜测。 19. 只有当任务100%完成时,才认为该任务完成 使用英寸大小的小圆石的一
18、个好处是,你可以区分每个小任务要么完成了,要么没有完成,这比估计一个大任务在某个时候完成了多少百分比要实在的多。不要让人们只入不舍他们任务的完成状态;使用明确的标准来判断一个步骤是否真正的完成了。 20. 公开、公正地跟踪项目状态 创建一个良好的风气,让项目成员对准确地报告项目的状态感到安全。努力让项目在准确的、基于数据的事实基础上运行,而不是从因为害怕报告坏消息而产生的令人误解的乐观主义。使用项目状态信息在必要的时候进行纠正操作,并且在条件允许时进行表扬。 这些提示不能保证你的成功,但是它们将帮助你在你的项目上获得一个坚实的把手,并且保证你做了所有你可以做的事来让项目在这个疯狂的世界上成功。
19、 Managing software projects is difficult under the best circumstances. Unfortunately, many new project managers receive virtually no job training. Sometimes you must rely on coaching and survival tips from people who have already done their tour of duty in the project management trenches. Here are 2
20、0 such tips for success, which Ive learned from both well-managed and challenged projects. Keep these suggestions in mind during your next project, recognizing that none of them is a silver bullet for your project management problems.Laying the GroundworkTip #1: Define project success criteria. At t
21、he beginning of the project, make sure the stakeholders share a common understanding of how they will determine whether this project is successful. Too often, meeting a predetermined schedule is the only apparent success factor, but there are certainly others. Some examples are increasing market sha
22、re, reaching a specified sales volume or revenue, achieving specific customer satisfaction measures, retiring a high-maintenance legacy system, and achieving a particular transaction processing volume and correctness.Tip #2: Identify project drivers, constraints, and degrees of freedom. Every projec
23、t needs to balance its functionality, staffing, budget, schedule, and quality objectives. Define each of these five project dimensions as either a constraint within which you must operate, a driver aligned with project success, or a degree of freedom that you can adjust within some stated bounds to
24、succeed. For more details about this, see Chapter 2 of my Creating a Software Engineering Culture (Dorset House, 1996).Tip #3: Define product release criteria. Early in the project, decide what criteria will determine whether or not the product is ready for release. You might base release criteria o
25、n the number of high-priority defects still open, performance measurements, specific functionality being fully operational, or other indicators that the project has met its goals. Whatever criteria you choose should be realistic, measurable, documented, and aligned with what quality means to your cu
26、stomers.Tip #4: Negotiate commitments. Despite pressure to promise the impossible, never make a commitment you know you cant keep. Engage in good-faith negotiations with customers and managers about what is realistically achievable. Any data you have from previous projects will help you make persuas
27、ive arguments, although there is no real defense against unreasonable people.Planning the WorkTip #5: Write a plan. Some people believe the time spent writing a plan could be better spent writing code, but I dont agree. The hard part isnt writing the plan. The hard part is actually doing the plannin
28、gthinking, negotiating, balancing, talking, asking, and listening. The time you spend analyzing what it will take to solve the problem will reduce the number of surprises you have to cope with later in the project.Tip #6: Decompose tasks to inch-pebble granularity. Inch-pebbles are miniature milesto
29、nes. Breaking large tasks into multiple small tasks helps you estimate them more accurately, reveals work activities you might not have thought of otherwise, and permits more accurate, fine-grained status tracking.Tip #7: Develop planning worksheets for common large tasks. If your team frequently un
30、dertakes certain common tasks, such as implementing a new object class, develop activity checklists and planning worksheets for these tasks. Each checklist should include all of the steps the large task might need. These checklists and worksheets will help each team member identify and estimate the
31、effort associated with each instance of the large task he or she must tackle.Tip #8: Plan to do rework after a quality control activity. Almost all quality control activities, such as testing and technical reviews, find defects or other improvement opportunities. Your project schedule or work breakd
32、own structure should include rework as a discrete task after every quality control activity. If you dont actually have to do any rework, great; youre ahead of schedule on that task. But dont count on it.Tip #9: Plan time for process improvement. Your team members are already swamped with their curre
33、nt project assignments, but if you want the group to rise to a higher plane of software engineering capability, youll have to invest some time in process improvement. Set aside some time from your project schedule, because software project activities should include making process changes that will h
34、elp your next project be even more successful. Dont allocate 100% of your team members available time to project tasks and then wonder why they dont make any progress on the improvement initiatives.Tip #10: Manage project risks. If you dont identify and control risks , they will control you. Spend s
35、ome time during project planning to brainstorm possible risk factors, evaluate their potential threat, and decide how you can mitigate or prevent them. For a concise tutorial on software risk management, see my article Know Your Enemy: Software Risk Management (Oct. 1998).Estimating the ProjectTip #
36、11: Estimate based on effort, not calendar time. People generally provide estimates in units of calendar time, but I prefer to estimate the amount of effort (in labor-hours) associated with a task, then translate the effort into a calendar-time estimate. This translation is based on estimates of how
37、 many effective hours I can spend on project tasks per day, any interruptions or emergency bug fix requests I might get, meetings, and all the other places into which time disappears.Tip #12: Dont schedule people for more than 80%of their time. Tracking the average weekly hours that your team member
38、s actually spend working on their project assignments is a real eye-opener. The task-switching overhead associated with the many activities we are all asked to do reduces our effectiveness significantly. Dont assume that just because someone spends 10 hours per week on a particular activity, he or s
39、he can do four of them at once; youll be lucky if he or she can handle three.Tip #13: Build training time into the schedule. Determine how much time your team members typically spend on training activities annually, and subtract that from the time available for them to be assigned to project tasks.
40、You probably already subtract out average values for vacation time, sick time, and other assignments; treat training time the same way.Tip #14: Record estimates and how you derived them. When you prepare estimates for your work, write down those estimates and document how you arrived at each of them
41、. Understanding the assumptions and approaches used to create an estimate will make them easier to defend and adjust when necessary, and it will help you improve your estimation process.Tip #15: Use estimation tools. Many commercial tools are available to help you estimate entire projects. With thei
42、r large databases of actual project experience, these tools can give you a spectrum of possible schedule and staff allocation options. Theyll also help you stay out of the impossible region, combinations of product size, team size, and schedule where no known project has been successful. A good tool
43、 to try is Estimate Pro from the Software Productivity Centre (www.spc.ca).Tip #16: Respect the learning curve. If youre trying new processes, tools, or technologies for the first time on this project, recognize that you will pay a price in terms of a short-term productivity loss. Dont expect to get
44、 the fabulous benefits of new software engineering approaches on the first try, so build extra time into the schedule to account for the inevitable learning curve.Tip #17: Plan contingency buffers. Things never go precisely as you plan on a project, so your budget and schedule should include some co
45、ntingency buffers at the end of major phases to accommodate the unforeseen. Unfortunately, your manager or customer may view these buffers as padding, rather than the sensible acknowledgement of reality that they are. Point to unpleasant surprises on previous projects as a rationale for your foresig
46、ht.Tracking Your ProgressTip #18: Record actuals and estimates. If you dont record the actual effort or time spent on each task and compare them to your estimates, youll never improve your estimating approach. Your estimates will forever remain guesses.Tip #19: Count tasks as complete only when they
47、re 100% complete. One benefit of using inch-pebbles for task planning is that you can classify each small task as either done or not done, which is more realistic than trying to estimate what percent of a large task is complete at any time. Dont let people round up their task completion status; use
48、explicit criteria to tell whether a step truly is completed.Tip #20: Track project status openly and honestly. Create a climate in which team members feel safe reporting project status accurately. Strive to run the project from a foundation of accurate, data-based facts, rather than from the mislead
49、ing optimism that sometimes arises from fear of reporting bad news. Use project status information to take corrective actions when necessary and to celebrate when you can.These tips wont guarantee success, but they will help you get a solid handle on your project and ensure that youre doing all you can to make it succeed in a crazy world.八冭畴捸棉鐁攑漚祀耷尋盐廴魢桽銤兕墴鶭祰擔襒眪抪犡璕诉摟暄炮腙裣佫橓雓喡葯檱搧倱鞡蹼贿杧飒渥搈媤苚葍枘蜼悗砷您軁虖孯煕默餏掠你釿鏭末粼歊鮢挟