第二部分有效開發(fā)
第15章生產(chǎn)率工具
生產(chǎn)率工具對(duì)于開發(fā)者而言蚁袭,誘惑力是相當(dāng)大的谎僻,它也確實(shí)在快速軟件開發(fā)當(dāng)中扮演了重要角色颜屠。采用新工具可以成為提供效率最有效的手段之一晴氨,但同時(shí)也是最具風(fēng)險(xiǎn)的方法之一茄茁。
關(guān)于生產(chǎn)率工具魂贬,有三個(gè)關(guān)鍵事實(shí):
l 生產(chǎn)率工具很少達(dá)到它的賣家宣稱的效果蔓搞。
l 學(xué)習(xí)任何一種生產(chǎn)率工具,在開始時(shí)都是以降低生產(chǎn)率為代價(jià)的随橘。
l 之前表現(xiàn)不怎么樣的工具喂分,有時(shí)候也能極大的節(jié)約時(shí)間。不過第一條仍然成立机蔗。
1.快速開發(fā)中生產(chǎn)率工具的作用
沒有銀彈蒲祈,軟件開發(fā)中的次要復(fù)雜度和必要復(fù)雜度。
次要復(fù)雜度萝嘁,是指在軟件活動(dòng)中梆掸,由人引起的問題。比如需求采集中的問題牙言,語言和框架選擇的問題酸钦,編程語言本身的問題等。這些問題是可以解決的咱枉。必須一些項(xiàng)目管理方法論卑硫,比如高級(jí)編程語言的出現(xiàn)等。
必要復(fù)雜度蚕断,是指軟件本身要解決的問題而衍生出來的欢伏。比如軟件包含三十個(gè)必要的功能,這三十個(gè)功能就是必要復(fù)雜度亿乳。
軟件功能面臨的問題硝拧,在于我們能夠清除大部分次要復(fù)雜度,而剩下的必要復(fù)雜度無法改變葛假。
良好的組織與管理障陶,比起技術(shù)來,似乎是更加關(guān)鍵的因素聊训。
2.生產(chǎn)率工具的戰(zhàn)略
與常理相悖的是抱究,工具的采用是一個(gè)長(zhǎng)期的戰(zhàn)略問題,而不是一次性的選擇魔眨。生產(chǎn)率工具的戰(zhàn)略包含以下一些基本因素:
l盡早識(shí)別有希望的新工具媳维。
l及時(shí)與準(zhǔn)確的評(píng)價(jià)新工具。
l快速部署被證明有效的新工具遏暴。
l避免使用被證明低效的新工具侄刽。
l繼續(xù)使用久經(jīng)考驗(yàn)的舊工具。
3.生產(chǎn)率工具的獲取
以隨機(jī)的方式獲取軟件工具的組織朋凉,大致將使投資被浪費(fèi)一半州丹。獲取工具時(shí)常常碰到的問題如下:
l軟件工具市場(chǎng)總是言過其實(shí)。
l獲取到不好的工具后,往往會(huì)阻礙更多有效工具的獲取墓毒。
l一些工具獲取后吓揪,被放棄了。
l一些工具由于缺少培訓(xùn)所计,而沒有得到充分利用柠辞。
l一些工具與現(xiàn)有的工具嚴(yán)重不兼容。
1.獲取計(jì)劃
等到需要的時(shí)候主胧,才開始調(diào)研的組織叭首,其等待時(shí)間太長(zhǎng)了。對(duì)新工具的調(diào)研踪栋,評(píng)價(jià)與交付應(yīng)該是一項(xiàng)常抓不懈的事情焙格。
1.工具組
一個(gè)有效的方式就是指定一個(gè)人或一個(gè)工作組來負(fù)責(zé)軟件工具信息的發(fā)布。他們的職責(zé)范圍包括:
信息收集夷都。
評(píng)價(jià)眷唉。
協(xié)調(diào)。一個(gè)公司的不同項(xiàng)目組可以試用不同的新工具囤官,但如果不加協(xié)調(diào)的話冬阳,不同的組很可能就會(huì)試用同一個(gè)新工具。對(duì)于組織而言治拿,這是非常低效的做法摩泪。
傳播。
2.建立工具組的風(fēng)險(xiǎn)
建立一個(gè)集中的工具組會(huì)產(chǎn)生一些風(fēng)險(xiǎn)劫谅,其中最壞的就是工具組控制過多。工具組應(yīng)當(dāng)只是收集發(fā)布有效的工具信息嚷掠,然而在面對(duì)快速開發(fā)項(xiàng)目時(shí)捏检,工具組需要警惕僵化成一個(gè)官僚化的標(biāo)準(zhǔn)組織。
建立工具組的初衷是服務(wù)機(jī)構(gòu)不皆,而不是標(biāo)準(zhǔn)組織贯城。處于項(xiàng)目一線的人才清楚什么是他們最想要的。工具組可以推薦工具霹娄,給出意見能犯,提供幫助,但他們絕不能替項(xiàng)目組做出決定犬耻。
另外踩晶,工具組的成員,他們說話必須非常有分量枕磁。如果工具組都是不被重視的人渡蜻,那么他們的建議也得不到重視。
2.選擇標(biāo)準(zhǔn)
預(yù)計(jì)收益。對(duì)于快速開發(fā)項(xiàng)目茸苇,預(yù)計(jì)收益的度量是苦難的排苍,而且必須是保守的。
供貨商穩(wěn)定性学密。
質(zhì)量淘衙。
成熟度。
培訓(xùn)時(shí)間腻暮。
適用性彤守。
兼容性。
發(fā)展規(guī)劃西壮。
定制選擇標(biāo)準(zhǔn)遗增。
3.承諾
一旦工具選定之后,你就需要堅(jiān)持使用款青。不要東張西望做修。因?yàn)槟忝恳粋€(gè)項(xiàng)目,每一個(gè)工具都會(huì)遇到一次大障礙抡草。當(dāng)你碰到障礙時(shí)饰及,你必須意識(shí)到,在項(xiàng)目進(jìn)行中更換工具康震,將預(yù)示著很有可能你將再次碰到大障礙燎含。
4.生產(chǎn)率工具的使用
如何實(shí)現(xiàn)生產(chǎn)率工具與項(xiàng)目間的結(jié)合,對(duì)提高快速開發(fā)能力同樣有著重大的影響腿短。
1.何時(shí)使用
軟件項(xiàng)目通常存在著熟悉新工具的學(xué)習(xí)曲線屏箍,和因新工具而帶來生產(chǎn)率收益之間的平衡。
從單一項(xiàng)目的角度去看橘忱,如同上圖所示赴魁,如果你計(jì)劃在項(xiàng)目A的時(shí)間長(zhǎng)度內(nèi)完成項(xiàng)目,就最好不要使用新工具钝诚。如果你計(jì)劃在項(xiàng)目B的時(shí)間長(zhǎng)度內(nèi)完成項(xiàng)目颖御,就可以嘗試新工具了。
從組織的角度去看凝颇,考慮的問題就有所不同了潘拱。如果你擁有較多的類似項(xiàng)目A的短期項(xiàng)目,你在每一個(gè)項(xiàng)目中都不必引入新工具拧略,但是為了組織的長(zhǎng)期發(fā)展芦岂,你有時(shí)就不得不引入新工具了,盡管這個(gè)工具對(duì)某一單個(gè)項(xiàng)目并非最合適辑鲤,但這個(gè)新工具是對(duì)組織來說盔腔,是存在長(zhǎng)期生產(chǎn)率的提高的。
因此,你可以為快速開發(fā)得出兩條結(jié)論了:
l從長(zhǎng)期考慮弛随,你必須經(jīng)常性的引入能提高生產(chǎn)率的工具瓢喉。這種引入并不能單純的從某一個(gè)項(xiàng)目的基礎(chǔ)來看待。
l從短期考慮舀透,快速開發(fā)項(xiàng)目并不適合引入新工具栓票。所以你要盡量在對(duì)時(shí)間要求不太高的項(xiàng)目中引入新工具,以吸納新工具的學(xué)習(xí)曲線愕够。
2.培訓(xùn)的重要性
3.進(jìn)度縮減的期望值
軟件項(xiàng)目通常存在著熟悉新工具的學(xué)習(xí)曲線走贪,和因新工具而帶來生產(chǎn)率
5.銀彈綜合癥
第16章項(xiàng)目修復(fù)
往往有些項(xiàng)目在進(jìn)行了很久之后,才發(fā)現(xiàn)需要快速開發(fā)惑芭,而且通常都是在延誤了里程碑之后坠狡。這些項(xiàng)目通常有以下一些特征:
l沒人對(duì)項(xiàng)目何時(shí)結(jié)束有概念。
l產(chǎn)品滿目瘡痍遂跟。
l開發(fā)組人員工作超時(shí)逃沿,加班嚴(yán)重。
l管理層已經(jīng)無法控制進(jìn)度幻锁。
l客戶對(duì)開發(fā)組不再抱有信心凯亮。
l開發(fā)人員,質(zhì)量保證哄尔,市場(chǎng)人員假消,客戶與管理層之間的關(guān)系非常緊張。
l開發(fā)組士氣低落岭接。
對(duì)于一個(gè)如此千瘡百孔的項(xiàng)目富拗,小修小補(bǔ)已經(jīng)無濟(jì)于事了,強(qiáng)有力的措施必不可少鸣戴。本章中將對(duì)這些措施進(jìn)行討論媒峡。
1.一般修復(fù)方案
對(duì)于想挽救項(xiàng)目的人來說,一般有三個(gè)基本方式可以選擇:
l縮減項(xiàng)目規(guī)模葵擎。
l把注意力放在短期改善上,以提高生產(chǎn)率半哟。
l面對(duì)軟件不可能按時(shí)完成的現(xiàn)實(shí)酬滤,放棄原計(jì)劃,著手準(zhǔn)備危害控制寓涨。
通過將三個(gè)方式結(jié)合盯串,我們得到了第四種方式:
l扔掉一些功能,盡量提高生產(chǎn)率戒良,拋棄原計(jì)劃体捏。
本章將主要討論第四種方案。
1.修復(fù)理念
在項(xiàng)目修復(fù)模式中,注意力很容易可能放在錯(cuò)誤的問題之上几缭,比如一些具體項(xiàng)目的具體問題河泳,而忽略了本質(zhì)問題。
項(xiàng)目陷入困難的首要原因就是控制不力年栓。而想要收回一度放棄的控制權(quán)是很困難的拆挥。
2.修復(fù)計(jì)劃
本章中討論的計(jì)劃,是專門為那些深陷泥潭中的項(xiàng)目準(zhǔn)備的某抓。假如你的項(xiàng)目還不至于那么慘纸兔,你也就可以用一個(gè)不那么徹底的方法。
本章中討論的計(jì)劃否副,與支撐起項(xiàng)目快速開發(fā)的四維相當(dāng)一致:避免典型錯(cuò)誤汉矿,采用最基本的開發(fā)實(shí)踐,風(fēng)險(xiǎn)管理备禀,尋求面向進(jìn)度的實(shí)踐方式洲拇。
第一步,準(zhǔn)備工作痹届。
l評(píng)估你的處境呻待。
確定截至日期到底有多關(guān)鍵,找出到底什么才能滿足它队腐。你或許會(huì)發(fā)現(xiàn)真正的硬性期限根本不存在蚕捉。
l應(yīng)用W理論分析。
為了獲取成功柴淘,你的開發(fā)組需要什么迫淹,客戶需要什么,為了維護(hù)良好的客戶關(guān)系需要什么为严。過去的已經(jīng)過去了敛熬,你要著眼于現(xiàn)在,如果無法找到每個(gè)人根據(jù)自己的價(jià)值標(biāo)準(zhǔn)第股,都能覺得成功的方式的話应民,就干脆結(jié)束這個(gè)項(xiàng)目。
l自己做好修復(fù)項(xiàng)目的準(zhǔn)備夕吻。
你需要讓開發(fā)組和管理層都知道诲锹,項(xiàng)目如果按照以前的做法,顯然是于事無補(bǔ)的涉馅。想挽救項(xiàng)目就必須有大舉措归园。如果人們不愿意采取重大舉動(dòng),就表明你已經(jīng)輸了稚矿,不如結(jié)束項(xiàng)目庸诱。
l問問你的開發(fā)組需要什么捻浦。
向你的開發(fā)組每一個(gè)成員詢問至少五種拯救項(xiàng)目的觀點(diǎn)。然后對(duì)這些觀點(diǎn)進(jìn)行討論桥爽。
l變得現(xiàn)實(shí)一些朱灿。
如果你處于項(xiàng)目修復(fù)模式,你的開發(fā)組極為需要的是清醒的聚谁,現(xiàn)實(shí)的項(xiàng)目領(lǐng)導(dǎo)母剥。在你沒有一個(gè)很好的理由來確認(rèn)一個(gè)日期之前,千萬不要承諾形导。
第二步环疼,人員。
人員是快速開發(fā)中最重要的杠桿支點(diǎn)朵耕。在進(jìn)入過程和產(chǎn)品這兩個(gè)維度之前炫隶,一定要把人員基礎(chǔ)打的牢固一些。
l采取一切措施恢復(fù)開發(fā)組的士氣阎曹。
士氣對(duì)于開發(fā)有著至關(guān)重要的作用伪阶,而在項(xiàng)目修復(fù)期間,恢復(fù)士氣才是正確的問題处嫌。
恢復(fù)士氣最佳的辦法之一栅贴,就是采取一個(gè)象征性的行動(dòng),來表明你把開發(fā)人員放在了首位熏迹。要實(shí)現(xiàn)此目的檐薯,最好就是犧牲一個(gè)組織上神圣不可侵犯的事物或觀點(diǎn),想公司表明公司是位于員工之后的注暗。
l確保你已經(jīng)為開發(fā)組創(chuàng)造了保健類因素坛缕。
比如去掉過多的進(jìn)度壓力,改善惡劣環(huán)境捆昏,剔除管理上的行政臃腫赚楚,或其他不利因素。
l消除重大人員問題骗卜。
開發(fā)組對(duì)領(lǐng)導(dǎo)最常見的抱怨就是宠页,他們很少過問組織內(nèi)有問題的員工帶來的麻煩。如果你覺得你的組里有這樣的人寇仓,你就要勇敢的面對(duì)并且處理好勇皇。
l消除重大領(lǐng)導(dǎo)問題。
一個(gè)將項(xiàng)目帶到災(zāi)難邊緣的領(lǐng)導(dǎo)人焚刺,不可能做出任何重大舉措,將項(xiàng)目引向成功门烂。當(dāng)你發(fā)現(xiàn)項(xiàng)目領(lǐng)導(dǎo)人有問題時(shí)乳愉,撤換是一個(gè)方式兄淫,但并不是唯一的方式,你可以嘗試一下方案:
改變領(lǐng)導(dǎo)的領(lǐng)導(dǎo)蔓姚。
把領(lǐng)導(dǎo)的角色改成參與型。
為領(lǐng)導(dǎo)配備一名助理。根據(jù)情況菩貌,讓助理來處理具體業(yè)務(wù)物独,領(lǐng)導(dǎo)只需要關(guān)注全局問題。
l增加新手一定要謹(jǐn)慎备闲。
牢記brooks法則晌端,向一個(gè)已經(jīng)延誤的項(xiàng)目中增加新手,無異于火上澆油恬砂。不要盲目的增加人手咧纠。
其實(shí)這個(gè)問題,關(guān)鍵點(diǎn)在于項(xiàng)目剩余的任務(wù)泻骤,還能不能繼續(xù)分解漆羔。如果能分解到新人的加入不影響其他人,你就可以放心的加人狱掂。
l充分利用開發(fā)人員的時(shí)間演痒。
有很多方式可以集中開發(fā)人員的力量:給他們單獨(dú)的辦公室,確保他們不被行政事務(wù)打擾趋惨,
l允許開發(fā)組成員有所不同鸟顺。
總有人會(huì)起來應(yīng)對(duì)項(xiàng)目修復(fù)的挑戰(zhàn)而成為英雄,也總有人覺得英雄太累而不愿意全身心投入希柿,那都沒有關(guān)系诊沪。在項(xiàng)目后期,你應(yīng)該容忍那些安靜而穩(wěn)定的員工曾撤,他們不可能達(dá)到英雄的高度端姚,但他們知道自己的角色。但是不能容忍那些斥責(zé)想成為英雄的人挤悉,他們對(duì)于士氣的破壞力是巨大的渐裸,而項(xiàng)目修復(fù)時(shí)期的士氣是寶貴的。
l觀察開發(fā)人員的節(jié)奏装悲。
第三步昏鹃,過程。
識(shí)別诀诊,并改正典型錯(cuò)誤洞渤。以下是一些需要問的最重要的問題:
產(chǎn)品定義是否改變?
項(xiàng)目是否存在設(shè)計(jì)不足而導(dǎo)致的隱患属瓣?
目前是否有準(zhǔn)確最終項(xiàng)目狀態(tài)的管理控制载迄?
是否有為了進(jìn)度而犧牲質(zhì)量的行為讯柔?
截至?xí)r間是否現(xiàn)實(shí)?
人們工作是否努力护昧?
是否有采用了全新的技術(shù)而浪費(fèi)的時(shí)間魂迄?
是否存在有問題的員工,拖累了開發(fā)組和其他人惋耙?
l修正明顯支離破碎的開發(fā)過程捣炬。
l創(chuàng)建詳細(xì)的小型里程碑。
在項(xiàng)目修復(fù)期中绽榛,絕對(duì)有必要建立一個(gè)追蹤機(jī)制湿酸,以便你準(zhǔn)確地知道項(xiàng)目進(jìn)展情況。
里程碑必須具有小型性蒜田,二元性和徹底性稿械。小型性是指里程碑可以在一兩天之內(nèi)完成。二元性是指里程碑要么完成冲粤,要么未完成美莫,不存在中間情況。徹底性是指你完成最后一個(gè)里程碑時(shí)梯捕,項(xiàng)目也就完成了厢呵。
l根據(jù)里程碑的完成來安排進(jìn)度。
為每一個(gè)里程碑設(shè)置完成日期傀顾,千萬不要打加班的主意襟铭。最好這樣安排進(jìn)度:開發(fā)人員如果在一個(gè)小型里程碑上落后了,那么他們最多當(dāng)天加一下班就可以完成短曾。這樣就能保證項(xiàng)目按照計(jì)劃逐日進(jìn)展寒砖。
l細(xì)致地追蹤進(jìn)度進(jìn)展情況。
如果設(shè)置了里程碑而不跟蹤的話嫉拐,相當(dāng)于沒有哩都。絕對(duì)要保證開發(fā)人員在小型里程碑上的二元性,只有完成和未完成婉徘,99%也不叫做完成漠嵌。絕不能讓開發(fā)人員在小型里程碑上偏離正軌。
l記錄里程碑未完成的原因盖呼。
記錄每一個(gè)里程碑未完成的理由儒鹿,這樣就能從中間發(fā)現(xiàn)一些潛在問題。
l短期之后再調(diào)整几晤,1周或2周约炎。
如果開發(fā)人員總是比里程碑慢半天的話,1周或2周之后就可以開始調(diào)整了蟹瘾。如果開發(fā)人員需要7天來完成4天的工作章钾,就把以后的工作量乘以7/4墙贱。不要幻想在以后把時(shí)間補(bǔ)回來。
l在得出一個(gè)有意義的進(jìn)度前贱傀,不要固守一個(gè)進(jìn)度。
不要把新的進(jìn)度給到領(lǐng)導(dǎo)伊脓,因?yàn)槟阈枰獣r(shí)間才能掌握和校正進(jìn)度府寒,這個(gè)進(jìn)度需要計(jì)劃,校正报腔,再修改株搔,再校正的過程。
l不辭辛勞的進(jìn)行風(fēng)險(xiǎn)管理纯蛾。
要根據(jù)第五章的風(fēng)險(xiǎn)管理來集中進(jìn)行風(fēng)險(xiǎn)管理纤房。創(chuàng)建出十大風(fēng)險(xiǎn)清單,并堅(jiān)持持續(xù)監(jiān)控翻诉。
第四步炮姨,產(chǎn)品。
l穩(wěn)定需求碰煌。
如果在整個(gè)產(chǎn)品生命期中需求一直不停變化的話舒岸,你就沒有必要再去找其他原因了。項(xiàng)目順利結(jié)束芦圾,必須先把需求穩(wěn)定好蛾派。
l修正特性集。
要毫不猶豫的刪掉優(yōu)先級(jí)低的功能和特性个少。
l評(píng)估你的政治地位洪乍。
如果你更多地陷入了政治漩渦而不是產(chǎn)品開發(fā),本章中討論的修復(fù)計(jì)劃的作用就極為有限了夜焦。
l去除沒有用的垃圾壳澳。
找出產(chǎn)品中每個(gè)人都知道的,質(zhì)量極其低劣的部分糊探,仍掉它們钾埂。
l降低缺陷數(shù)目,并持續(xù)降低科平。
當(dāng)我們遇上進(jìn)度麻煩的項(xiàng)目褥紫,通常對(duì)進(jìn)度和范圍非常感興趣,而自然就忽略了質(zhì)量瞪慧。
l達(dá)到一個(gè)可知的髓考,良好的狀態(tài),并在此基礎(chǔ)上繼續(xù)弃酌。