當前位置:
首頁 > 知識 > 你是一個努力工作的程序員嗎?

你是一個努力工作的程序員嗎?

你是一個努力工作的程序員嗎?



原文:Are Your Programmers Working Hard, Or Are They Lazy?

譯文:www.vaikan.com/are-your-programmers-working-hard-or-are-they-lazy/


當一個人在完成一件體力工作時,你很容易評估他是否在努力的工作。你可以觀察他的物理動作,看他流了多少汗水。你還可以看到他工作的成功:磚牆在砌高,地面上挖的坑在變大。對努力工作的認可和褒獎是人性中非常基本的本能反應。這也正是為什麼人們對體力耐力體育活動如此著迷的原因之一。這種對體力上的辛苦工作的本


能的賞識,在遇到管理一群技術創造型的員工時,卻成了一個麻煩問題。高效的腦力工作者通常會被看作並沒有在努力的工作。


早在2004年,我還是一個初級程序員,工作在一家有線電視公司,在一個大型團隊中開發財務和供銷系統。跟所有的大型系統一樣,這個系統由很多的相對獨立的模塊組成,分別由一些個人或小團隊負責。其中模擬電視和數字電視的財務和供銷系統幾乎完全獨立,分別由兩個團隊開發。

模擬電視開發組決定在早期的微軟Biztalk平台上開發他們的系統。由這個公司的4個小伙和微軟的一個團隊共同開發,並負責產品環境的運行。他們看起來真的工作的十分辛苦和努力。你經常能看到他們加班到深夜或周末加班。每個人都會隨時放下手中的活兒來解決正式環境中突現的問題,經常會在一張桌子前一群人圍繞著一個小伙,各自說出自己的見解,討論什麼地方錯了,應該如何修正。工作氣氛永遠是熱火朝天,每個人都能看到這些——即使只是經過瞟一眼,不僅僅從整個團隊講,而是他們每個人都真的真的工作的很努力。


數字電視供銷系統開發團隊卻是完全的不同。代碼幾乎是由一個傢伙寫的,我們就叫他大衛吧。我是一個初級程序員,在團隊里做維護工作。起初我在理解他的代碼時遇到了很大的麻煩。他的代碼里沒有很長的過程,通常我的代碼會把很多操作放到一起,相反,他的代碼里有大量的很小的類文件和只有幾行代碼的小方法。好幾個同事都抱怨大衛把代碼搞的過度複雜了。但大衛耐心教導我,建議我去讀幾本面向對象編程的書籍。他給我講設計模式,SOLID編程原則,單元測試等知識。很快,我對他的代碼開始有了理解,我越研究他的代碼,越欣賞這些程序中優雅的設計。這些代碼放到產品環境中非常好用,運行穩定的干著它們的工作。這些代碼修改起來也相當簡單,因此,一些新功能的增加變得輕鬆容易。單元測試保證了大部分的bug都阻擋到了正式環境之外。


這些做法產生的結果就是,我們看起來完全不是在十分努力的工作。我們5點半準時下班,周末從來沒有加過班,我們從來沒有發生過一大群人圍繞著一個人數小時的討論正式環境中的錯誤是怎麼發生的場景。在外人看來,我們肯定是被分配了一件相對容易的任務。但事實上,需求都是十分相似的,我們只是更好的設計和實現了這個系統,有更好的支持系統基礎架構,特別是單元測試。


管理部門宣稱他們要根據員工的工作表現漲薪。當輪到老闆跟我談話時,老闆說只給那些工作真的努力的員工漲工資才顯的公平。而我們的團隊看起來對公司發展的好壞並不太在意——跟那些放棄了自己的晚上和周末的英雄們相比。


這家公司是一個稀有的實驗室,你可以將好的軟體設計和壞的軟體設計、好的團隊特徵和不好的團隊特徵的影響效果做一個直接的對比觀察。大多數的公司里不可能提供這種比較的機會。你很難說這些揮汗如雨、工作到深夜和周末、堅持沖在滅火第一線的小伙們是為了開發一個真的非常非常複雜的系統而展示了偉大的付出,還是就是一次失敗。除非你有能力提供兩個團隊來競爭,讓他們解決同樣的問題,可是哪個公司願意做這樣的事情呢。相反,如何看待那些坐在角落裡,朝九晚五,看著像是整天上網讀什麼東西的程序員呢?是他們善於寫出強健穩定的代碼嗎?還是分配的活兒比其他人容易?在常人的眼裡,前一個團隊的小伙們是在努力的工作,而第二個不是。努力工作值得讚揚,懶惰可恥,不是嗎?

我敢斷言,表面上看起來工作很努力通常會是一種失敗的信號。在高壓下,在一個不斷被打攪的環境中,軟體開發通常是不能幹好的。長時間的工作往往不是一個好的方式。有時解決一個難題的最好的方法是停止思考,出去散散步,或更好的,去睡一個好覺,讓潛意識幫你解決。我最喜歡的一本書就是20世紀英國數學界領軍人物G. H. Hardy先生寫的《A Mathematician』s Apology》。在這本書里,Hardy先生描述他的日常規律:上午4小時的工作,下午看板球比賽。他說一天超過四小時的高強度腦力勞動都是無意義的,也是無效率的。


對於那些管理者們,我想說的是,判斷一個人要看結果,要看開發出的軟體的好用與否,而不是看他們表現的是如何在努力的工作。很反直覺吧,你其實最好不要坐在這些程序員中間,這樣能保證你不受傳統的、本能上的評判指標的影響,這樣你才能對他們的產出有更好的認識。遠程工作是特別有效的一種做法,你只能通常他們的產出來評判他們,而不是省事的觀察他們是否8小時都坐在辦公桌前對著IDE噼里啪啦的敲著鍵盤或「熱心的」圍聚在另外一個人的桌前提供著「有效的」建議。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員之家 的精彩文章:

C#創建壓縮文件
20條書寫 CSS 代碼的建議
動態規劃:從新手到專家
10+年程序員總結的20+條經驗教訓

TAG:程序員之家 |

您可能感興趣

一個程序員幹掉一家遊戲公司?程序員回應:編的,我沒那能力
程序員這麼多,你還能找到工作嗎?
作為程序員,你正處於一個什麼水平?
一個優秀的程序員,需要練就什麼樣的技能
程序員是一個怎樣神奇的職業?
程序員該如何有效的找工作?
拒絕經驗過剩,「程序員的工作只能是代碼」?
作為程序員,你在編程時吃了哪些數學的虧?
女生做程序員是一種怎樣的體驗?
不要做一個只會面向搜索編程的程序員!
一個優秀的程序員是如何煉成的?
作為程序猿,你有必要了解這些黑客工具
什麼才是厲害的程序員?
有一個程序員男朋友是什麼樣的體驗?
程序員,如何打造你的「十一」攻略?
在外行人眼裡程序員是一個怎樣的群體?
你需要程序員鼓勵師嗎?
程序員只愛格子衫?這些手錶程序員也喜歡!
程序員,你的技術過氣了嗎?
一個月5萬的工作有哪些,做程序員可以嗎?