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