軟件開發(fā)管理的11條真理

軟件開發(fā)過程管理被比作放養(yǎng)貓。換句話說养盗,你不能真的做到這件事懊缺,但你可以盡你最大的努力去做。再換句話說鸵隧,軟件項(xiàng)目就像試圖在 NBA 防守勒布朗·詹姆斯 (LeBron James) 一樣。你根本就阻止不了他意推,最多只能希望牽制到他豆瘫。
軟件項(xiàng)目的開發(fā)管理是一門不精確的科學(xué),這不是什么秘密菊值。以下是我這些年來學(xué)到的 11 條真理外驱,它們幫助我理解了,要管理軟件開發(fā)項(xiàng)目這個(gè)奇怪的世界腻窒,我們的能力是多么的有限昵宇。

1. 估算總是錯(cuò)誤的

無論是你花一個(gè)小時(shí)還是一年的時(shí)間來做估算,估算結(jié)果都是錯(cuò)誤的儿子。事情本來就是這樣的瓦哎。結(jié)果不一定錯(cuò)得大相徑庭,可能只錯(cuò)了那么一點(diǎn)點(diǎn)柔逼,但肯定還是錯(cuò)的蒋譬。
如果你看到一份錯(cuò)誤報(bào)告,并認(rèn)為“修復(fù)它需要一個(gè)小時(shí)”愉适,那么幾乎可以肯定的是犯助,它不會(huì)正好需要一個(gè)小時(shí)。它可能需要 45 分鐘维咸,也可能需要 3 個(gè)小時(shí)剂买,但正好花上一小時(shí)的可能性很小扑媚,甚至可能僅僅相差一兩分鐘。現(xiàn)在雷恃,你可能會(huì)說,“大約一個(gè)小時(shí)”费坊。這實(shí)際上是一個(gè)更好的估算倒槐,因?yàn)榫唧w的、精確的估算是錯(cuò)誤的附井。
眼下讨越,對(duì)于一個(gè)可能只需要一個(gè)小時(shí)的短小項(xiàng)目來說,這不是什么大問題永毅。但是…

2. 項(xiàng)目越大把跨,你的估算就越不準(zhǔn)確

項(xiàng)目越大,估算就越不精確沼死,尤其是在項(xiàng)目一開始就做的估算着逐。就像上例那個(gè)一小時(shí)的估算,如果你將一個(gè)項(xiàng)目估算為一年意蛀,那么它可能需要 9 個(gè)月或者 36 個(gè)月耸别。在某些情況下,它甚至可能需要五年時(shí)間县钥。沒有辦法知道這個(gè)項(xiàng)目是什么時(shí)候開始的秀姐。
項(xiàng)目越大,“未知的未知”就越多若贮。通常項(xiàng)目越大省有,就會(huì)有越多的人參與。也就是說谴麦,隨著項(xiàng)目規(guī)模的增加蠢沿,會(huì)有更多的變量和更多的事情發(fā)生,而這些你根本就無法預(yù)料细移。所有這些事情都會(huì)增加項(xiàng)目的時(shí)間搏予,而這些時(shí)間你一開始就不會(huì)做到計(jì)劃里,原因很明顯弧轧,你并不知道它們會(huì)發(fā)生雪侥。

3. 注意力和專注力是我們最寶貴也是最稀缺的東西

在構(gòu)建軟件時(shí),完成一個(gè)項(xiàng)目所需的最有價(jià)值的一件東西精绎,就是團(tuán)隊(duì)中的開發(fā)人員以不受干擾的方式集中精力的能力速缨。
分心的事情越少,團(tuán)隊(duì)的效率就越高代乃。就是這么簡(jiǎn)單旬牲。軟件開發(fā)經(jīng)理的主要職責(zé)之一就是減少團(tuán)隊(duì)分心的次數(shù)和持續(xù)時(shí)間仿粹。
當(dāng)軟件開發(fā)人員不受干擾時(shí),他們有很高的工作效率原茅。當(dāng)他們被打斷時(shí)(無論是由于開會(huì)還是被人問問題或者其他的什么事情)吭历,他們會(huì)快速喪失工作效率。我們都知道“心流”擂橘,都知道進(jìn)入并維持在“心流”狀態(tài)有多困難晌区。流動(dòng)的時(shí)間就像黃金一樣寶貴,應(yīng)該予以保護(hù)通贞。

4. 霍夫斯塔德定律是真理

霍夫施塔特定律是這么說的:
“即使你考慮到了霍夫施塔特定律, 項(xiàng)目的實(shí)際完成時(shí)間也總是比預(yù)期的要長(zhǎng)朗若。”——維基百科(https://en.wikipedia.org/wiki/Hofstadter%27s_law
這與估算有關(guān)昌罩,但值得注意的是這句格言的妙處哭懈。你可以虛報(bào)你的估算,因?yàn)槟阏J(rèn)為這樣可以為你贏得完成任務(wù)的時(shí)間茎用。你可以添加額外的因素遣总,將“未知的未知因素”做到計(jì)劃里,并增加你的估算绘搞,從而考慮到實(shí)際將比你認(rèn)為的時(shí)間更長(zhǎng)彤避,但是最終,實(shí)際上完成一個(gè)項(xiàng)目仍然會(huì)比你認(rèn)為的實(shí)際上更長(zhǎng)的時(shí)間要更長(zhǎng)夯辖。

5. 你不能加快軟件開發(fā)琉预,你只能限制其減慢的程度

這條真理對(duì)于一些管理者來說真的很難理解。軟件需要多久就需要多久蒿褂。沒有辦法讓它更快圆米。你可以要求團(tuán)隊(duì)投入更多的時(shí)間。你可以揮起鞭子啄栓、拿起大棒娄帖。你可以乞求、哄騙昙楚、懇求開發(fā)人員近速。你可以說,“但是堪旧,這應(yīng)該只需要三個(gè)月跋鞔小!”但最后從長(zhǎng)遠(yuǎn)來看淳梦,你無法提高軟件開發(fā)團(tuán)隊(duì)的速度析砸。
如果你開始意識(shí)到霍夫斯塔德定律的正確性并認(rèn)為“我能讓這些人工作得更快”那么你就錯(cuò)了。你所能做的就是減少他們的干擾爆袍,讓他們自主工作首繁,從而防止他們降低工作速度作郭。這個(gè)區(qū)別很微妙,但卻很重要弦疮。

6. 你只能在非常短的時(shí)間內(nèi)出現(xiàn)赤字

同樣地夹攒,你可以要求團(tuán)隊(duì)投入更多的時(shí)間,熬夜胁塞、周末加班芹助,以及種種“鞭笞”的手段,你可能會(huì)從中獲得一些 (非常) 短期的收益闲先。
但如果你試圖讓它成為一種常態(tài),如果你試圖讓團(tuán)隊(duì)的引擎始終在 RPM 的紅線上運(yùn)行无蜂,它就會(huì)被燒壞伺糠。很快,你就會(huì)看到收益遞減斥季。人训桶,就像賽車上的引擎一樣,不能長(zhǎng)時(shí)間承受過多壓力酣倾,否則就會(huì)出現(xiàn)故障舵揭。

7. 大腦時(shí)間比屁股時(shí)間更重要

沒有什么比要求工作時(shí)長(zhǎng)更能降低生產(chǎn)力了(例如,你的開發(fā)人員要連續(xù)幾個(gè)小時(shí)坐在椅子上)躁锡。你可以度量工作時(shí)長(zhǎng)午绳,感覺得到了一個(gè)能夠真正顯示出人們工作效率的指標(biāo)。但是這樣做就錯(cuò)了映之。要求工作時(shí)長(zhǎng)只會(huì)使團(tuán)隊(duì)士氣低落拦焚,因?yàn)樗麄儗?shí)際上是想把時(shí)間花在思考上。
大腦時(shí)間才是最重要的杠输。你這樣想:假設(shè)你是一位經(jīng)理赎败,對(duì)于你來說最重要的是看到團(tuán)隊(duì)坐在電腦前“工作”。你在辦公室里走來走去蠢甲,看著那些開發(fā)人員坐在椅子上敲擊著鍵盤僵刮。真是一番繁榮景象。
但之后你偶然發(fā)現(xiàn)一些開發(fā)人員只是坐在那里盯著屏幕鹦牛。就是這樣傻坐著搞糕,他們只是坐在那里傻看。搞什么鬼能岩!大概半個(gè)小時(shí)寞宫,他們什么都沒做!
但是拉鹃,他們確實(shí)是在工作辈赋。他們正在思考鲫忍。他們?cè)谟么竽X思考解決一個(gè)非常困難的問題。也許他們甚至?xí)酒饋碓壳谵k公室里轉(zhuǎn)上一圈悟民。最后,他們坐下來篷就,寫下 11 行代碼射亏,并將用戶故事標(biāo)記為完成。
他們符合你的“屁股時(shí)間”標(biāo)準(zhǔn)嗎竭业?不符合智润。他們是否為一個(gè)非常困難的問題想出了一個(gè)巧妙的解決方案?是的未辆。
屁股時(shí)間證明不了什么窟绷。大腦時(shí)間意味著一切。

8. 硬件比開發(fā)人員的時(shí)間更便宜咐柜,而且要便宜得多

開發(fā)人員其實(shí)很貴的兼蜈。要吸引頂尖人才,你就得支付有競(jìng)爭(zhēng)力的薪水拙友。他們每一個(gè)小時(shí)的時(shí)間都不便宜为狸。盡管如此,許多公司并沒有意識(shí)到開發(fā)人員這一個(gè)小時(shí)的時(shí)間具有極高的價(jià)值遗契,舍不得為團(tuán)隊(duì)提供硬件辐棒。
還是算了吧,電腦很貴的牍蜂!額外的內(nèi)存會(huì)讓硬件預(yù)算超標(biāo)的涉瘾!
好吧,可能是會(huì)超出預(yù)算捷兰,但那是因?yàn)槟愕念A(yù)算有問題立叛!
現(xiàn)在我們來算一筆賬:假設(shè)你每年付給每名開發(fā)人員 10 萬美元,或者每小時(shí)大約 50 美元贡茅。假設(shè)他們每天花一個(gè)小時(shí)等待編譯器完成工作秘蛇。然后,假設(shè)你可以為開發(fā)人員的機(jī)器添加一些內(nèi)存和更快的處理器顶考,將等待編譯的時(shí)間減少到每天 45 分鐘赁还。那么一名開發(fā)人員每天就能節(jié)省 15 分鐘。以一年 200 天計(jì)算驹沿,也就是總計(jì) 50 個(gè)小時(shí)艘策。按每小時(shí) 50 美元計(jì)算,每名開發(fā)人員每年可節(jié)省 2500 美元渊季。如果速度更快的機(jī)器的增量成本是 500 美元朋蔫,結(jié)果如何呢罚渐?
我們來算一下。如果你有 20 個(gè)開發(fā)人員驯妄,那么用更快的機(jī)器反而會(huì)為你節(jié)省 4 萬美元的投資荷并。口算應(yīng)該就能算得出來青扔。
這只是為了減少編譯時(shí)間的等待源织。另外,做其他事情的速度也都會(huì)更快微猖。
如果你的預(yù)算不允許更快的機(jī)器谈息,那么就需要調(diào)整你的預(yù)算。

9. 你不能度量軟件開發(fā)人員的生產(chǎn)力

就這一主題我曾寫過 一篇文章:
https://medium.com/nickonsoftware/can-we-measure-software-development-productivity-a2138d2f7011
可以這么說凛剥,試圖以一種客觀的方式衡量開發(fā)人員的生產(chǎn)力是徒勞的黎茎,根本就不應(yīng)該這樣做。有一些方法可以從主觀上度量生產(chǎn)力当悔,但這些方法需要經(jīng)驗(yàn)和良好的判斷。這些能力都很難得到踢代,一旦擁有它們盲憎,就能為你帶來非常寶貴的價(jià)值。

10. 如果你沒有讀過《人件》胳挎,那么你就不是一個(gè)真正的軟件開發(fā)經(jīng)理

在我看來饼疙,只有一本書能教你如何管理軟件開發(fā)人員:那就是由 Tom DeMarco 和 Timothy Lister 一起編寫的《人件》(一定要選擇第三版……)。
這本書非常優(yōu)秀慕爬,見解深刻窑眯,一針見血,條理清晰医窿,毫無保留磅甩。這本書里面充滿了管理軟件項(xiàng)目和軟件開發(fā)人員的智慧。它是永恒的經(jīng)典之作姥卢。
快快找來讀一讀吧卷要!

11. 質(zhì)量是一種認(rèn)知,而不是缺陷數(shù)量

這一點(diǎn)真的讓人很難接受独榴。
基本前提是:你的缺陷管理工具中的缺陷已經(jīng)趨近于零僧叉,而人們卻仍然可以認(rèn)為你的軟件有缺陷。你的缺陷管理工具中可能有大量的缺陷棺榔,而人們卻可以認(rèn)為你的軟件像磐石一樣堅(jiān)固瓶堕。缺陷管理工具中的缺陷數(shù)量與軟件質(zhì)量之間沒有關(guān)系。
在此症歇,我并不是說你不應(yīng)該嘗試減少你的缺陷數(shù)量郎笆,而是恰恰相反谭梗。但是最終,你的軟件只有在你的客戶認(rèn)為它質(zhì)量夠高的時(shí)候才可以說它是高質(zhì)量的题画,而你的缺陷數(shù)量不一定能說明這一點(diǎn)默辨。很奇怪,是吧苍息?
當(dāng)我們談到這個(gè)話題時(shí)缩幸,“高”的缺陷數(shù)量意味著什么?如果你的代碼庫(kù)有 100,000 行代碼竞思,“高”的定義是什么表谊?那么 500 萬行代碼呢?誰說的盖喷?

結(jié)論

即使在最好的情況下爆办,讓一個(gè)軟件項(xiàng)目在短跑道上安全著陸也是一個(gè)具有挑戰(zhàn)性和困難的命題。在這個(gè)過程中课梳,再加上一些模棱兩可距辆,再加上一些隨時(shí)可能出錯(cuò)的定時(shí)炸彈,成功才是奇跡暮刃。
訣竅在于接受和理解這些模棱兩可跨算,并與之和諧相處,而不是與之對(duì)抗椭懊。接受這 11 條真理將有助于解決這一問題诸蚕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氧猬,隨后出現(xiàn)的幾起案子背犯,更是在濱河造成了極大的恐慌,老刑警劉巖盅抚,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漠魏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妄均,警方通過查閱死者的電腦和手機(jī)蛉幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丛晦,“玉大人奕纫,你說我怎么就攤上這事√躺常” “怎么了匹层?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我升筏,道長(zhǎng)撑柔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任您访,我火速辦了婚禮铅忿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灵汪。我一直安慰自己檀训,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布享言。 她就那樣靜靜地躺著峻凫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪览露。 梳的紋絲不亂的頭發(fā)上荧琼,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音差牛,去河邊找鬼命锄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛偏化,可吹牛的內(nèi)容都是我干的脐恩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼夹孔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了析孽?” 一聲冷哼從身側(cè)響起搭伤,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袜瞬,沒想到半個(gè)月后怜俐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邓尤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年拍鲤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汞扎。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡季稳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澈魄,到底是詐尸還是另有隱情景鼠,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布痹扇,位于F島的核電站铛漓,受9級(jí)特大地震影響溯香,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浓恶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一玫坛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧包晰,春花似錦湿镀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至塞耕,卻和暖如春蚀腿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扫外。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工莉钙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筛谚。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓磁玉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親驾讲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚊伞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友吮铭。感恩相遇时迫!感恩不離不棄。 中午開了第一次的黨會(huì)谓晌,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,569評(píng)論 0 11
  • 彩排完掠拳,天已黑
    劉凱書法閱讀 4,223評(píng)論 1 3
  • 沒事就多看看書,因?yàn)楦褂性?shī)書氣自華纸肉,讀書萬卷始通神溺欧。沒事就多出去旅游,別因?yàn)闆]錢而找借口柏肪,因?yàn)橹灰闶〕詢€用姐刁,來...
    向陽(yáng)之心閱讀 4,791評(píng)論 3 11
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒烦味。表情可以傳達(dá)很多信息龙填。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,311評(píng)論 2 7