程序員的生產(chǎn)效率:中斷、會議和遠(yuǎn)程工作
在上一篇《程序員追求的是什么?》里,我把在家工作放在了***,有些人給在家工作的排名很高,網(wǎng)友 K 發(fā)了 Jason Fried 在 TED 的演講《為什么不在工作辦公時工作?》,講述了我們?yōu)槭裁春茈y在上班時間搞定所有工作。
Jason 用他自己的觀察開始,說程序員需要一個很長的不被打擾的時間來搞定工作,然后推薦我們避免會議,通過聊天工具和email減少被打擾,而不是直接交流。雖然我同意他會議那部分的說法,但關(guān)于打擾我們可以考慮更多,而且我覺得面對面交流也比較重要。
辦公室里的相互交流
Jason描述的辦公室工作畫面不禁讓我們會問:為什么要在辦公室工作?老板、同事、會議不停地打擾,讓我們的工作煩很難取得實質(zhì)性的進(jìn)展。為什么 不讓大家遠(yuǎn)程工作呢?就我來說,主要的原因是軟件開發(fā)需要大量的協(xié)作。頭腦風(fēng)暴、討論和提煉想法這些方式得到的方案往往會比自己一個人想到方案要好。而 且,有白板的時候,我們可以畫一些東西來討論,這些交流在面對面的時候效率更高。雖然遠(yuǎn)程的寫作盡量模擬面對面交流的場景,但是跟同一個房間里和一些人討 論的場景還是有區(qū)別的。
Jason建議我們用被動交流(郵件或者即時通訊工具聊天)來替代主動交流(當(dāng)面或者打電話)來避免打擾別人。這是一個避免打擾別人的很好的建議。 但是在初始階段之后,面對面交談越快越好。文字的交流對于簡單的問題來說效果很好。但是如果問題有些不確定,談話的效率會高一個數(shù)量級。舉個例子,別人給 我發(fā)個郵件,問“你是不是支持XXX功能?”,大部分時候回答肯定不是簡單的是或者不是。也許取決于已經(jīng)有的功能,或者我們可以開發(fā)一個更好的YYY功能 來替代。寫下這些會花掉很多時間和工作量。談話(面對面或者電話)讓我們可以即時交互而不用來回寫一些文字。
好的打擾
雖然我完全同意Jason說法,程序員需要一個相對來說比較長的不被打擾的時間來提高生產(chǎn)效率,但是有些情況還是可以接受的。如果有人遇到一個問 題,而我恰好不假思索就可以知道答案,這樣被打擾我沒問題。當(dāng)然我的效率會受影響,但是我們可以優(yōu)化整個公司的生產(chǎn)效率。如果公司里有幾個人被問題卡住 了,***是來問我,而不是從代碼或者文檔里找答案。
當(dāng)有故障報告的時候,這也是一個可以被打擾的例子。在我的團隊里,我們基本上沒有積壓的故障報告。我們盡力盡快搞定這些故障??焖倩貜?fù)客戶有幾個好 處:客戶們還記得是什么問題,這樣就很容易得到我們需要的額外的信息,而且客戶也會覺得我們在乎他們??焖俚姆磻?yīng),意味著不會積壓還沒有處理的故障,故障 少的話,我們就很容易掌握尚未處理的故障的狀態(tài)。
開會——低效使用時間
說道開會,我同意Jason的說法:越少越好。會議一般會很低效的使用時間。以前我在愛立信工作的時候,整個研發(fā)部門每個周二十點有個站立會議。那 個時間你肯定不會想做什么新的東西,因為你知道馬上就會被打擾。知道接下來你馬上會參加一個會議,你做的工作會少于平時。沒有計劃的打擾會好點,至少你事 先不知道。會議的另外一個問題是大部分的信息其實可以輕松用郵件發(fā)給所有人。
會議低效的另外一個原因,是有些人不用參加整個會議,所以一部分時間就浪費了。在Symsoft的時候,我?guī)缀鯖]有幾個會,我會走過去跟相關(guān)的人討論問題。沒有會議,只有直接相關(guān)的人被打擾了。這種方式比會議的開銷要少。
沒有那么難
Jason說的那個地方真是相當(dāng)?shù)牟凰俏覀儾灰欢ㄒ菢?。從來沒有經(jīng)理很頻繁地跑過來問我現(xiàn)在的工作狀態(tài),也許因為他們曾經(jīng)也是程序員,知道盡量別打擾開發(fā)人員。我在Symsoft幾乎沒有會議,在Tilgin的時候也是一樣的。
給軟件開發(fā)人員創(chuàng)造一個好的環(huán)境并不是很困難,我也會被打擾,但是那都是有理由的。我一個人的效率降低了,但是團隊的效率提高了。除了這些有理由的打擾,其他時間我都可以安靜地不被打擾地開發(fā)新的功能,或者修改bug。你呢?