|
在最近的一次活動中,有一位經(jīng)理把我拉到一邊,對我說:“Johanna,對于敏捷這東西,我總有些不太明白。顯而易見,并不是所有人都被100%利用了?!?/p> “他們沒有被100%利用又怎么樣呢?你覺得這有問題?” “見鬼,是的。我付他們工資!因此,我想知道我會從他們身上獲得滿滿的價值!” “如果我告訴你,你獲得的價值可能比你支付的要多,也許有1.5~2倍,你覺得怎么樣?那樣你就開心了吧?” 那位經(jīng)理平靜下來,然后轉(zhuǎn)向我,繼續(xù)問:“你怎么知道的?” 我微笑著說:“以后再告訴你?!?/p> 有太多太多的經(jīng)理相信“100%利用”的神話。那是一種信仰——每個技術(shù)人員在每一天里的分分秒秒都必須被充分利用。這個神話的問題在于,人們沒有時間去創(chuàng)新,沒有靈感,也沒時間去探索。 更糟糕的是,還會出現(xiàn)僵局。在一個人被100%利用的情況下,你在A項(xiàng)目上需要他的時候,他可能正在做著B項(xiàng)目。你們無法聚集起來開一個會。你不能打一通電話。你甚至沒有合理的時間去回復(fù)郵件。為什么呢?因?yàn)槟銓Ω鞣N其他打擾已經(jīng)應(yīng)接不暇了。 我們?yōu)槭裁磿@樣? 回到早期的計(jì)算,機(jī)器比程序員要昂貴幾個數(shù)量級。在20世紀(jì)70年代,在我開始以程序員身份打工那會兒,那時的公司可能會給經(jīng)驗(yàn)極其豐富的程序員支付5萬美元的年薪。而對于那些剛剛從學(xué)校走出來的新手,公司支付的年薪可能不到1.5萬美元。我們當(dāng)時覺得已經(jīng)賺得非常多了!相比之下,公司可能每年花很多萬美元的錢去租賃機(jī)器,或者花數(shù)百萬美元買下機(jī)器。你可以看到,薪資水平與機(jī)器成本之間相去甚遠(yuǎn)!
在電腦有那么貴的時候,我們利用了機(jī)器時間的每一秒鐘。為了上機(jī),我們需要登記。我們在桌上檢驗(yàn)自己的工作。我們進(jìn)行設(shè)計(jì)評審和代碼評審。我們珍惜上機(jī)時間的每一分鐘—沒錯,我們的工作常常受限于CPU的一分鐘時間。如果你想用更多的時間,那就預(yù)約下班時間吧,比如半夜2點(diǎn)~4點(diǎn)。 需要注意的是,那時候珍稀的不只是上機(jī)時間,還有內(nèi)存。在那古老的歲月里,我們的內(nèi)存只有256字節(jié),代碼是用匯編語言寫的。我們的代碼要分頁。如果你有一段程序超過一頁,你得在一頁的末尾轉(zhuǎn)移到另一頁有空的地方,以便于換入。(這常常需要手工完成。噢……我一點(diǎn)也不懷念那個舊年代?。?/p> 到20世紀(jì)70年代后期以及80年代,微型電腦的出現(xiàn)拉近了程序員薪水與電腦價格之間的差距。不過,也只有當(dāng)微型電腦的價格真正下來了、并且個人電腦開始主導(dǎo)市場的時候,程序員的身價才變得比電腦貴多了去了。到那時候,很多人都覺得,讓程序員獨(dú)占電腦的工作方式成本更低,這比設(shè)計(jì)評審、代碼評審或與其他人討論架構(gòu)更有效。 到了20世紀(jì)90年代,盡管電腦、硬盤和內(nèi)存的價格持續(xù)下跌,程序員和測試人員的身價也變得越來越貴,我們中的一些人清楚地認(rèn)識到,軟件開發(fā)更多是一種合作,而不只是程序員單獨(dú)面對電腦那么簡單。這也便是為什么Watts Humphrey和軟件工程研究所在90年代備受矚目的原因。不是因?yàn)槿藗兿矚g繁瑣的流程,而是因?yàn)椋ㄌ貏e是在一個串行周期里)你必須采取一些措施,以使得系統(tǒng)開發(fā)收獲更大的成功。很多管理者陷入了“100%利用”的思維泥潭。需要注意的是,“100%利用”的概念在當(dāng)時被提出了沒多久,并且很受重視! 譯者注:Watts Humphrey(1927—2010)在軟件工程領(lǐng)域享有盛譽(yù),被美國國防軟件工程雜志《CrossTalk》評為影響軟件發(fā)展的十位大師之一。他在IBM工作了27年,負(fù)責(zé)管理IBM全球產(chǎn)品研發(fā)。離任后,受美國國防部委托,加入卡內(nèi)基·梅隆大學(xué)軟件工程研究所(SEI),領(lǐng)導(dǎo)SEI過程研究計(jì)劃,并提出了能力成熟模型(CMM)思想。在CMM浪潮席卷軟件工業(yè)界之時,他又力推個人軟件過程(PersonalSoftware Process,PSP)和團(tuán)隊(duì)軟件過程(TeamSoftware Process,TSP),成為軟件開發(fā)人員和開發(fā)團(tuán)隊(duì)的自修寶典。他的著作頗豐,《軟件工程規(guī)范》、《個體軟件過程》、《軟件制勝之道》等都已成為經(jīng)典。 當(dāng)一臺單進(jìn)程的電腦被完全利用的時候,請記住這意味著:它一次只能做一件事;它不能服務(wù)于任何中斷;它不能響應(yīng)任何鍵盤輸入;它不能更新狀態(tài);它只能一直處理下去,直到完成。 如果程序表現(xiàn)良好,并且不受限于I/O、內(nèi)存或CPU,運(yùn)行在一臺單用戶、單進(jìn)程的機(jī)器上,比如只有加減乘除功能的個人計(jì)算器,那也許還沒事。但只要你加入另外一個用戶或者另一個進(jìn)程,你就麻煩了。(或者,如果程序表現(xiàn)不正常、沒能很好地完成,你也會陷入麻煩之中。) 現(xiàn)代的電腦就是那樣。現(xiàn)代電腦都是多進(jìn)程的機(jī)器。 對于多進(jìn)程的機(jī)器,如果一臺電腦被完全利用,你會看到系統(tǒng)抖動,可能還會僵死。想一想高峰時期的公路,沒有一輛車動得了;這時候,公路是被100%利用了啊。但是,我們不想公路被100%利用。我們也不想讓眼前的電腦滿負(fù)荷運(yùn)行。如果你的電腦被用到了50%~75%,你會感覺它變慢了。而高于85%時,電腦會有難以預(yù)期的表現(xiàn)。它們的生產(chǎn)力是不可預(yù)期的,你無法判斷會發(fā)生什么狀況。 遺憾的是,人類也面臨同樣的問題。 為什么100%利用不適用于人 現(xiàn)在,想一想我們自己。當(dāng)我們在100%利用的狀態(tài)中時,我們根本沒有閑暇時間。我們在各種任務(wù)或干擾之間疲于奔命,沒時間思考。這時候,至少有兩方面的問題:難以避免的多任務(wù),以及沒有思考。 實(shí)際上,我們根本不是多任務(wù)并行——只不過是快速切換而已。我們不像電腦;電腦在切換時,它們把內(nèi)存里的東西完美地拷貝到磁盤上,當(dāng)需要換入的時候,能夠再次把數(shù)據(jù)讀進(jìn)來。因?yàn)槲覀兪侨耍覀儾荒芡昝赖匕盐覀兡X子里的東西備份出來,后續(xù)也無法再完美地恢復(fù)。因此,切換是有成本的,因?yàn)槲覀冊谔幚砥渌碌臅r候必須記住之前腦子里在想的東西。那也需要占用時間。 因此,這里有一個情境切換的問題,我們需要花費(fèi)時間把腦子里的東西換出去、換回來。所有這些時間和不完美會累加起來。因?yàn)槲覀兪侨耍覀儾荒転楦鱾€任務(wù)完美地分配自己的時間。假設(shè)我們手上有3個任務(wù),我們不能做到在每個任務(wù)上花費(fèi)33%的時間——只要我們樂意,我們想在一個任務(wù)上花多少時間就花多少時間,平均33%只是一個假設(shè)罷了。 接著,讓我來解決100%利用中沒有思考的問題。如果你想讓大家考慮換一種新的工作方式,怎么辦?如果你令他們滿負(fù)荷地工作,他們會嘗試嗎?沒機(jī)會!他們不會考慮,因?yàn)樗麄儧]有時間。 因此,你讓大家機(jī)械地工作:用他們了解的最佳方式去服務(wù)于各種中斷、做盡量小塊的工作、做到足夠多就算通過。他們不會想辦法去提高。他們不會想辦法去幫助別人。他們不會嘗試創(chuàng)新。他們只是在想,“我怎樣才能從這堆積如山的工作中解脫出來?”這對他們來說是很恐怖的,對產(chǎn)品也不好,對與他們打交道的任何人都不好。 當(dāng)你讓人們工作在100%利用的狀態(tài),與你計(jì)劃讓他們每天大概只干6小時的技術(shù)活比起來,你從他們那里得到的工作成效會小得多。人們需要時間去閱讀郵件,去參加臨時的會議,休息一下,進(jìn)行一些架構(gòu)方面的討論,喝杯咖啡,或者做點(diǎn)別的什么事。如果你為上午計(jì)劃一大塊的工作,為下午再安排幾個大塊的工作,并把會議的數(shù)量降到最低,技術(shù)人員會很好地完成分配給他們的工作。 如果你在一個喜歡開會的組織里工作,你甚至不能計(jì)劃每天6小時的技術(shù)活——你必須計(jì)劃得更少一點(diǎn)。會議在浪費(fèi)人們的時間。 但不管怎么樣,如果你按照100%利用來計(jì)劃,在整個組織范圍內(nèi)完成的工作會少得多。你營造了一個可怕的工作環(huán)境,這還是一個沒有創(chuàng)新的環(huán)境。那不像是一條成功之道,是吧? 敏捷和精益讓神話破滅 敏捷和精益不會使“100%利用”煙消云散,但它們讓神話破滅了。通過把所有的工作裝進(jìn)Backlog(一個管理積壓工作的倉庫),這有助于管理層和研發(fā)團(tuán)隊(duì)看清楚每個人應(yīng)該做的事情,以及大家面臨著多大的挑戰(zhàn)。這很不錯! 一旦每個人可以把工作可視化,你就能圍繞它開展工作了。也許某些工作確實(shí)與產(chǎn)品路線圖相關(guān),但不必在這個迭代里完成。也許有些工作是為另外一個項(xiàng)目做的,應(yīng)該被推遲到下一個迭代周期。這很好——這就是項(xiàng)目組合管理。也許有些工作應(yīng)該由某人來做,而不是這個團(tuán)隊(duì)來做。這很好——相關(guān)管理者需要出面協(xié)調(diào)。 不管你做什么,只有你看到了工作,你才能有所作為。只要你完全地把工作可視化,你就能管理。 記住,如果你被100%利用,那就沒人能做事了。如果你想為你的組織貢獻(xiàn)實(shí)足的價值,你需要讓自己被“利用”到50%~60%。因?yàn)槔速M(fèi)思想(不管什么思想)是件可怕的事。 |
|
|