你是一個(gè)努力工作的程序員還是懶惰的程序員?
當(dāng)一個(gè)人在完成一件體力工作時(shí),你很容易評(píng)估他是否在努力的工作。你可以觀察他的物理動(dòng)作,看他流了多少汗水。你還可以看到他工作的成功:磚墻在砌 高,地面上挖的坑在變大。對(duì)努力工作的認(rèn)可和褒獎(jiǎng)是人性中非?;镜谋灸芊磻?yīng)。這也正是為什么人們對(duì)體力耐力體育活動(dòng)如此著迷的原因之一。這種對(duì)體力上的 辛苦工作的本能的賞識(shí),在遇到管理一群技術(shù)創(chuàng)造型的員工時(shí),卻成了一個(gè)麻煩問題。高效的腦力工作者通常會(huì)被看作并沒有在努力的工作。
早在2004年,我還是一個(gè)初級(jí)程序員,工作在一家有線電視公司,在一個(gè)大型團(tuán)隊(duì)中開發(fā)財(cái)務(wù)和供銷系統(tǒng)。跟所有的大型系統(tǒng)一樣,這個(gè)系統(tǒng)由很多的相對(duì)獨(dú)立的模塊組成,分別由一些個(gè)人或小團(tuán)隊(duì)負(fù)責(zé)。其中模擬電視和數(shù)字電視的財(cái)務(wù)和供銷系統(tǒng)幾乎完全獨(dú)立,分別由兩個(gè)團(tuán)隊(duì)開發(fā)。
模擬電視開發(fā)組決定在早期的微軟Biztalk平臺(tái)上開發(fā)他們的系統(tǒng)。由這個(gè)公司的4個(gè)小伙和微軟的一個(gè)團(tuán)隊(duì)共同開發(fā),并負(fù)責(zé)產(chǎn)品環(huán)境的運(yùn)行。他們看起來真 的工作的十分辛苦和努力。你經(jīng)常能看到他們加班到深夜或周末加班。每個(gè)人都會(huì)隨時(shí)放下手中的活兒來解決正式環(huán)境中突現(xiàn)的問題,經(jīng)常會(huì)在一張桌子前一群人圍 繞著一個(gè)小伙,各自說出自己的見解,討論什么地方錯(cuò)了,應(yīng)該如何修正。工作氣氛永遠(yuǎn)是熱火朝天,每個(gè)人都能看到這些——即使只是經(jīng)過瞟一眼,不僅僅從整個(gè) 團(tuán)隊(duì)講,而是他們每個(gè)人都真的真的工作的很努力。
數(shù)字電視供銷系統(tǒng)開發(fā)團(tuán)隊(duì)卻是完全的不同。代碼幾乎是由一個(gè)家伙寫的,我們就叫他大衛(wèi) 吧。 我是一個(gè)初級(jí)程序員,在團(tuán)隊(duì)里做維護(hù)工作。起初我在理解他的代碼時(shí)遇到了很大的麻煩。他的代碼里沒有很長的過程,通常我的代碼會(huì)把很多操作放到一起,相 反,他的代碼里有大量的很小的類文件和只有幾行代碼的小方法。好幾個(gè)同事都抱怨大衛(wèi)把代碼搞的過度復(fù)雜了。但大衛(wèi)耐心教導(dǎo)我,建議我去讀幾本面向?qū)ο缶幊? 的書籍。他給我講設(shè)計(jì)模式,SOLID編程原則,單元測(cè)試等知識(shí)。很快,我對(duì)他的代碼開始有了理解,我越研究他的代碼,越欣賞這些程序中優(yōu)雅的設(shè)計(jì)。這些 代碼放到產(chǎn)品環(huán)境中非常好用,運(yùn)行穩(wěn)定的干著它們的工作。這些代碼修改起來也相當(dāng)簡(jiǎn)單,因此,一些新功能的增加變得輕松容易。單元測(cè)試保證了大部分的 bug都阻擋到了正式環(huán)境之外。
這些做法產(chǎn)生的結(jié)果就是,我們看起來完全不是在十分努力的工作。我們5點(diǎn)半準(zhǔn)時(shí)下班,周末從來沒有加過班, 我們從來沒有發(fā)生過一大群人圍繞著一個(gè)人數(shù)小時(shí)的討論正式環(huán)境中的錯(cuò)誤是怎么發(fā)生的場(chǎng)景。在外人看來,我們肯定是被分配了一件相對(duì)容易的任務(wù)。但事實(shí)上, 需求都是十分相似的,我們只是更好的設(shè)計(jì)和實(shí)現(xiàn)了這個(gè)系統(tǒng),有更好的支持系統(tǒng)基礎(chǔ)架構(gòu),特別是單元測(cè)試。
管理部門宣稱他們要根據(jù)員工的工作表現(xiàn)漲薪。當(dāng)輪到老板跟我談話時(shí),老板說只給那些工作真的努力的員工漲工資才顯的公平。而我們的團(tuán)隊(duì)看起來對(duì)公司發(fā)展的好壞并不太在意——跟那些放棄了自己的晚上和周末的英雄們相比。
這 家公司是一個(gè)稀有的實(shí)驗(yàn)室,你可以將好的軟件設(shè)計(jì)和壞的軟件設(shè)計(jì)、好的團(tuán)隊(duì)特征和不好的團(tuán)隊(duì)特征的影響效果做一個(gè)直接的對(duì)比觀察。大多數(shù)的公司里不可能提 供這種比較的機(jī)會(huì)。你很難說這些揮汗如雨、工作到深夜和周末、堅(jiān)持沖在滅火第一線的小伙們是為了開發(fā)一個(gè)真的非常非常復(fù)雜的系統(tǒng)而展示了偉大的付出,還是 就是一次失敗。除非你有能力提供兩個(gè)團(tuán)隊(duì)來競(jìng)爭(zhēng),讓他們解決同樣的問題,可是哪個(gè)公司愿意做這樣的事情呢。相反,如何看待那些坐在角落里,朝九晚五,看著 像是整天上網(wǎng)讀什么東西的程序員呢?是他們善于寫出強(qiáng)健穩(wěn)定的代碼嗎?還是分配的活兒比其他人容易?在常人的眼里,前一個(gè)團(tuán)隊(duì)的小伙們是在努力的工作,而 第二個(gè)不是。努力工作值得贊揚(yáng),懶惰可恥,不是嗎?
我敢斷言,表面上看起來工作很努力通常會(huì)是一種失敗的信號(hào)。在高壓下,在一個(gè)不斷被打 攪 的環(huán)境中,軟件開發(fā)通常是不能干好的。長時(shí)間的工作往往不是一個(gè)好的方式。有時(shí)解決一個(gè)難題的最好的方法是停止思考,出去散散步,或更好的,去睡一個(gè)好 覺,讓潛意識(shí)幫你解決。我最喜歡的一本書就是20世紀(jì)英國數(shù)學(xué)界領(lǐng)軍人物G. H. Hardy先生寫的《A Mathematician’s Apology》。在這本書里,Hardy先生描述他的日常規(guī)律:上午4小時(shí)的工作,下午看板球比賽。他說一天超過四小時(shí)的高強(qiáng)度腦力勞動(dòng)都是無意義的,也是無效率的。
對(duì) 于那些管理者們,我想說的是,判斷一個(gè)人要看結(jié)果,要看開發(fā)出的軟件的好用與否,而不是看他們表現(xiàn)的是如何在努力的工作。很反直覺吧,你其實(shí)最好不要坐在 這些程序員中間,這樣能保證你不受傳統(tǒng)的、本能上的評(píng)判指標(biāo)的影響,這樣你才能對(duì)他們的產(chǎn)出有更好的認(rèn)識(shí)。遠(yuǎn)程工作是特別有效的一種做法,你只能通常他們 的產(chǎn)出來評(píng)判他們,而不是省事的觀察他們是否8小時(shí)都坐在辦公桌前對(duì)著IDE噼里啪啦的敲著鍵盤或“熱心的”圍聚在另外一個(gè)人的桌前提供著“有效的”建議。
原文鏈接:http://mikehadlow.blogspot.co.uk/2013/12/are-your-programmers-working-hard-or.html
譯文鏈接:http://www.aqee.net/are-your-programmers-working-hard-or-are-they-lazy/















 
 
 
 
 
 
 