如何拯救即將延誤的項(xiàng)目
最近有個(gè) Tweet,說(shuō)項(xiàng)目延誤時(shí),如果同時(shí)又有很多人插手會(huì)使事情變得更糟糕。大多數(shù)團(tuán)隊(duì)碰上截止期限都會(huì)干三件蠢事兒:1、雇傭更多開(kāi)發(fā)人員。2、抄近路。3、工作更長(zhǎng)時(shí)間——— jasongorman
這自然就產(chǎn)生了個(gè)問(wèn)題:如何拯救即將延誤的項(xiàng)目?
其實(shí),首先,最困難的問(wèn)題,就是我們也許無(wú)法拯救即將延誤的項(xiàng)目。所以,我不得不重新考慮策略,只有兩種方式我們可以考慮:
- 延期到一切準(zhǔn)備妥當(dāng)
- 先把做好的展示出來(lái)
現(xiàn)在不是討論團(tuán)隊(duì)如何和自己的消費(fèi)者周旋,當(dāng)我說(shuō) “少提供點(diǎn)兒”,我指的是少做些 “程序”——程序多不代表有價(jià)值,多關(guān)注用戶(hù)核心需求才是正事兒,其實(shí)就是別把一開(kāi)始準(zhǔn)備的那成堆功能遞出來(lái)。
這個(gè)過(guò)程差不多就是:“房子無(wú)法按期完成,但是你能如期入住。”
如果你做的是?敏捷軟件開(kāi)發(fā),估計(jì)現(xiàn)在已經(jīng)發(fā)生了。如果還沒(méi)發(fā)生,說(shuō)明你恐怕做的不是?敏捷軟件開(kāi)發(fā)。
解決方法就是要求我們知道最終目標(biāo)也許跟程序無(wú)關(guān)。你得把關(guān)注重點(diǎn)從展示功能轉(zhuǎn)移到解決問(wèn)題。然后你就能給自己帶來(lái)設(shè)計(jì)的空間。在有限時(shí)間里更多選擇能夠成為解決問(wèn)題的有效方式。
當(dāng)我臨危受任時(shí),我首先做的就是停下手頭一切,退一步問(wèn)自己:“我們走到這兒到底想要什么?有沒(méi)有更簡(jiǎn)單的方式?” 所以準(zhǔn)備隨時(shí)去掉設(shè)計(jì)和計(jì)劃。在我個(gè)人拯救瀕死項(xiàng)目的經(jīng)歷中,這是關(guān)鍵。面對(duì)客戶(hù),準(zhǔn)備些充分又坦率的對(duì)話。
但是,從 Tweet 的那三項(xiàng)注意事項(xiàng)里,我們能得到什么啟發(fā)?甚至讓項(xiàng)目時(shí)間延期。
雇傭開(kāi)發(fā)人員早已被證明只會(huì)讓事情變得更糟
在 Fred Brook 在圖書(shū) The Mythical Man-Month 中對(duì)雇傭過(guò)多開(kāi)發(fā)人員會(huì)加劇問(wèn)題做了細(xì)致的原因闡述。我相信任何軟件開(kāi)發(fā)者和軟件開(kāi)發(fā)項(xiàng)目經(jīng)理都該讀讀。
做著糟糕產(chǎn)品的開(kāi)發(fā)人員現(xiàn)在轉(zhuǎn)變?nèi)ゴ叽僦碌拈_(kāi)發(fā)人員。這就像讓最有效的銷(xiāo)售人員充當(dāng)管理角色,結(jié)果就是看著銷(xiāo)售量直線下降!
想要指標(biāo)數(shù)值激增,最重要的就是團(tuán)隊(duì)內(nèi)部都知曉每個(gè)人正在做什么,可悲的是,這在軟件開(kāi)發(fā)中是必要的,因?yàn)槁?lián)系是普遍存在的——最需要進(jìn)行斗爭(zhēng)的就是失去最具生產(chǎn)力身居要職的開(kāi)發(fā)者和大體量團(tuán)隊(duì)效益的迅速遞減。
因此,最簡(jiǎn)單的建議是別去做。不管你如何想要,或者承受上級(jí)多大的壓力,千萬(wàn)不要這樣做。
但如果隊(duì)伍已經(jīng)很龐大了呢?如果未完成任務(wù)的原因是因?yàn)閳F(tuán)隊(duì)開(kāi)銷(xiāo)拖你的后腿?在這里,你可能不得不做出非常困難的決定,把相關(guān)人員轉(zhuǎn)移到其他項(xiàng)目——或把擋在路中間的無(wú)關(guān)人等放一邊,再不行最后只能辭退一些員工。
如果你有點(diǎn)兒頭重腳輕,或有太多實(shí)習(xí)生,有可能能承受這種打擊。另一方面,假設(shè)有 3 個(gè)建筑師、 2 個(gè)項(xiàng)目經(jīng)理、 6 個(gè)技術(shù)大神、4 個(gè)業(yè)務(wù)分析師、 30 名開(kāi)發(fā)者和 10 名測(cè)試人員——就我個(gè)人而言,很多的人正在享受實(shí)際工作福利。他們抱著酬勞,很多人很高的酬勞,但只是不為團(tuán)隊(duì)帶來(lái)一點(diǎn)兒價(jià)值。你付錢(qián)去讓他們拖累你。我們都知道,但很少有人敢說(shuō)出來(lái)。
在團(tuán)隊(duì)顯然太臃腫的情況下,當(dāng)你想要提供客戶(hù)需要的有價(jià)值的東西,只有精簡(jiǎn)團(tuán)隊(duì),否則幾乎不可能。
雇傭、重新分配或解雇這類(lèi)有風(fēng)險(xiǎn)的決定通常不是我們這些人能夠決定的,不過(guò)這種情況還是得有人先打頭哨。在這些情況下,默認(rèn)行為是完全知情還選擇失敗。其實(shí),這也是為團(tuán)隊(duì)好。
抄近路是經(jīng)典錯(cuò)誤,只要我們知道雇傭更多開(kāi)發(fā)人員只會(huì)讓事情變得更糟,我們更得知道犧牲質(zhì)量只會(huì)拖慢我們未來(lái)的發(fā)展。
原因很簡(jiǎn)單,證據(jù)確鑿如就像活生生的喜馬拉雅山脈。解決 Bugs 的時(shí)間越長(zhǎng),就會(huì)花費(fèi)成倍的時(shí)間和金錢(qián)。前期不注重測(cè)試和實(shí)驗(yàn),未來(lái)修復(fù) bug 就需要 10-100 倍的時(shí)間,不如早些解決,免得下游海嘯發(fā)生為時(shí)已晚。
你可以讓團(tuán)隊(duì)專(zhuān)注”code-and-fix”發(fā)展進(jìn)程,不用在意 bug 列表的大小,而把大量時(shí)間和精力用于”穩(wěn)定”應(yīng)用軟件,做好投放市場(chǎng)的準(zhǔn)備。我目睹過(guò)圈子里幾個(gè)月周而復(fù)始寫(xiě)代碼,只為使其足夠好到可以應(yīng)用。
所以?xún)?nèi)行都知道當(dāng)團(tuán)隊(duì)或計(jì)劃延誤了,就需要更嚴(yán)格地做更多測(cè)試。是的,現(xiàn)在才剛剛開(kāi)始,但之后你會(huì)節(jié)省 10-100 倍的精力。
當(dāng)然,軟件開(kāi)發(fā)中沒(méi)有銀彈。但當(dāng)你想讓團(tuán)隊(duì)走上正軌時(shí),我見(jiàn)過(guò)最管用的方式是創(chuàng)建快速自動(dòng)運(yùn)行的測(cè)試機(jī)制。它可以完全改變前景。
同樣討論到Specification By Example ,我們認(rèn)為用戶(hù)需求會(huì)產(chǎn)生革命性的影響。你會(huì)驚訝當(dāng)你向別人詢(xún)問(wèn)具體例子來(lái)闡明他們需求的這種行為會(huì)產(chǎn)生多少誤解。用可執(zhí)行驗(yàn)收測(cè)試認(rèn)清用戶(hù)需求花費(fèi)幾個(gè)小時(shí)可以防止你接下來(lái)一周內(nèi)不必要的返工。
代碼的可維護(hù)性也是一樣。因?yàn)閷?duì)代碼的簡(jiǎn)易性和容易改變 (不可攻破) 思慮 不周或少了關(guān)心,其未來(lái)的護(hù)理成本比想象中來(lái)得快,來(lái)得讓人心疼。我發(fā)現(xiàn)自己早上寫(xiě)的代碼阻礙了我下午的進(jìn)程。
打高爾夫球時(shí),要想更快獲取高分關(guān)鍵是不要太在意進(jìn)了多少桿。
這對(duì)團(tuán)隊(duì)工作人員和管理人員都是很難的。眾所周知的神話定律——用更多時(shí)間來(lái)做更高質(zhì)量的應(yīng)用軟件,還是存在的。最需要學(xué)習(xí)的新技能是學(xué)會(huì)如何預(yù)防缺陷和做”干凈代碼”。如果團(tuán)隊(duì)沒(méi)有在規(guī)則和演習(xí)中準(zhǔn)備好 “向上加速”,那么,說(shuō)真的,你可能覺(jué)得別扭,因?yàn)槟阋呀?jīng)有幾個(gè)月 (可能幾年) 都不知道如何學(xué)習(xí)了。
想要知道一個(gè)團(tuán)隊(duì)是否具備基本技能,捫心自問(wèn),為什么這些還沒(méi)有做?如果答案是”老板不讓我們做”,那么另一個(gè)隱患的種子就埋下了。我的個(gè)人經(jīng)驗(yàn),也是從別人的遭遇得到的忠告,最好不要出現(xiàn)上述對(duì)話。否則,那意味著團(tuán)隊(duì)已經(jīng)迷失了。想要事事順心可不容易。然而,如果讓管理者和消費(fèi)者在功能和質(zhì)量間選擇,他們中間 99%的人都會(huì)投”功能”否決票。除此之外,選擇犧牲質(zhì)量也會(huì)降低功能性。事實(shí)上讓團(tuán)隊(duì)在這兩種感知沖突中做出選擇本身就意味著失敗。
所以當(dāng)程序發(fā)布時(shí)間臨近,切不可在質(zhì)量上讓步。最好的方式就是不要在團(tuán)隊(duì)以外討論這個(gè)問(wèn)題。舉個(gè)例子,要是你做驅(qū)動(dòng)開(kāi)發(fā)測(cè)試 (TDD),這就是能起作用的方式。就像用文本編輯器一樣。上次你向老大要求使用文本編輯器是什么時(shí)候?
當(dāng)計(jì)劃出現(xiàn)紕漏時(shí),你更應(yīng)該在質(zhì)量上下狠功夫。如果你在初期階段,尤其是初次嘗試;如果你每天都在建設(shè)和測(cè)試,甚至每小時(shí);如果你平均投入?20 分鐘與客戶(hù)討論一個(gè)用戶(hù)故事,花一個(gè)小時(shí)和同意可執(zhí)行的測(cè)試,包括所有您能想到的邊緣情況;如果你為了集中做單元測(cè)試,10 行代碼平均一個(gè)單元測(cè)試;如果你平均在每個(gè)迭代中進(jìn)行團(tuán)隊(duì)代碼審查,做每次提交之前進(jìn)行同行代碼審查,等等。
最后,工作更長(zhǎng)時(shí)間——就我們?cè)谏鲜兰o(jì)進(jìn)行的調(diào)查顯示,這是不穩(wěn)固的,還會(huì)傷害團(tuán)隊(duì)和計(jì)劃,一個(gè)錯(cuò)誤的經(jīng)濟(jì)體?;氐胶嗬L啬莻€(gè)時(shí)代,就是他把工廠工人工時(shí)從一周 50 個(gè)小時(shí)降至 40 小時(shí)的那時(shí)候。我們有更多需要做,我們得讓工作有效率,產(chǎn)生有用的輸出。
程序開(kāi)發(fā)尤其易受影響,當(dāng)我們把團(tuán)隊(duì)置于”危機(jī)模式”。程序開(kāi)發(fā)需要注意力和清晰度,而注意力、清晰度是需要經(jīng)常補(bǔ)充的易腐貨物。從我自己的團(tuán)隊(duì)實(shí)驗(yàn)中,發(fā)現(xiàn)開(kāi)發(fā)人員平均一天 4 小時(shí)就是極致,8 小時(shí)算多的,要是比 12 小時(shí)還多會(huì)怎樣?
有些人會(huì)說(shuō)”在短期內(nèi)是可行的”,但我至今沒(méi)發(fā)現(xiàn)任何有力證據(jù)可以證明這是可行的。也許裝配線工人可以為了多輪幾班,但軟件開(kāi)發(fā)不是這樣的。
我們非常容易被生產(chǎn)力的錯(cuò)覺(jué)影響,我覺(jué)得這解釋了 “短期內(nèi)是有用的” 的說(shuō)法。當(dāng)然,感覺(jué)好像什么都沒(méi)完成。那時(shí)我們不知道在前進(jìn)道路上犯下的錯(cuò)誤產(chǎn)生了多么嚴(yán)重的下游后果。一天八小時(shí)工作時(shí)我才意識(shí)到,越是客觀地管控,越是犯更多錯(cuò)。所以,我提前學(xué)到一招能給同樣境遇團(tuán)隊(duì)帶來(lái)好處的方法。在你從 “流動(dòng)區(qū)” 去往 “責(zé)任” 區(qū)的路上,學(xué)會(huì)認(rèn)知。
所以,我對(duì)團(tuán)隊(duì)超時(shí)工作處于零容忍,甚至短期之計(jì)也不行。
是的,對(duì)管理層來(lái)說(shuō)這是很難的。并且許多開(kāi)發(fā)者還因?yàn)樽约荷a(chǎn)力的錯(cuò)覺(jué)眉飛色舞呢?,F(xiàn)在真是箭在弦上,每個(gè)人都瘋狂地火力全開(kāi),晚上 5、6 點(diǎn)安靜地從工作桌前站起來(lái),回家。確實(shí),這是目前我發(fā)現(xiàn)唯一你能做的。
同樣,最重要的是更加集中注意力,并隨時(shí)保持最近更新?tīng)顟B(tài)。學(xué)會(huì)休息,學(xué)會(huì)來(lái)頓輕食午餐(最好不要有太多讓你昏昏欲睡的碳水化合物)。要把格外勤奮放在合理的時(shí)間,找到工作與生活的平衡點(diǎn)。
然后在別人才會(huì)注意到你在辦公桌前的成績(jī)而不是花費(fèi)多少時(shí)間在公司。有件事一直很討厭,就是很多組織都在倡導(dǎo)長(zhǎng)時(shí)間的工時(shí)。然后在會(huì)議和非正常工作環(huán)境,如開(kāi)放的辦公室等無(wú)意義干擾下歡快地燃燒。我企圖在兩者之間發(fā)現(xiàn)強(qiáng)烈的關(guān)聯(lián)性。想做更多?注重工作環(huán)境而不是工作時(shí)長(zhǎng)。
所以接下來(lái)給了你一個(gè)總結(jié),用來(lái)提升你在發(fā)布日期推出產(chǎn)品的成功率:
- 管理好你的產(chǎn)品預(yù)期和什么時(shí)候推出。簡(jiǎn)化產(chǎn)品,簡(jiǎn)化方案。專(zhuān)注最終目標(biāo),而不是賺多少。
- 抵制住雇傭更多開(kāi)發(fā)者的誘惑。如果你的團(tuán)隊(duì)已經(jīng)很龐大了,這將是個(gè)艱難的轉(zhuǎn)變。
- 撥通質(zhì)量專(zhuān)線,專(zhuān)注不可攻破的質(zhì)量。
- 工作時(shí)間少些,多休息。不要把注意力放在花費(fèi)多少時(shí)間,而要注重效率,把前進(jìn)路上的障礙都移除,比如不利的工作氛圍。當(dāng)然,為了安全起見(jiàn),大多數(shù)團(tuán)隊(duì)不敢去嘗試。說(shuō)起來(lái)容易,做起來(lái)難?,F(xiàn)實(shí)中,要想實(shí)現(xiàn)這一切需要有股堅(jiān)定的領(lǐng)導(dǎo)力形成具有凝聚力的團(tuán)隊(duì)來(lái)促成這一切發(fā)生。
- 有力且有技巧的領(lǐng)導(dǎo)力
這并不一定意味著其他人都跟我一樣有自信這樣與團(tuán)隊(duì)斗爭(zhēng)(雖然我已經(jīng)做了很多次)。但不知何故,從內(nèi)部深處,團(tuán)隊(duì)需要在關(guān)鍵問(wèn)題上找到這個(gè)實(shí)力和自信,如范圍、期限、團(tuán)隊(duì)規(guī)模、工作時(shí)間、辦公環(huán)境等。這讓你對(duì)發(fā)布產(chǎn)品產(chǎn)生責(zé)任感:如果這必須奏效,想要成為巨擘就必須謹(jǐn)記伴隨而來(lái)的責(zé)任。
祝你好運(yùn)!
作者@孫應(yīng)然 ? ?文章來(lái)源@36氪
本文編譯自:codemanship.co.uk
- 目前還沒(méi)評(píng)論,等你發(fā)揮!