關於程式設計師的工作效率(絕對乾貨!)

edithfang發表於2014-10-31



今天早上我偶然遇到一篇George Stocker的文章《怎麼毀滅程式設計師的工作效率》,和一篇Joel Spolsky的《打一槍換一個地方》。這兩個博文談論了程式設計師的工作效率的問題,尤其是降低工作效率的模式。所以我考慮到要分享我提高工作效率的實踐經驗。

激情

提高工作效率的第一個技巧是對你每天要上的專案充滿激情。你一定要由衷的看好你要做的專案。你必須想象出來從現在開始的一年、兩年、三年後的結果會有多酷。有幾次我花了點時間來思考:hey NDepend(我的專案)已經在過去的兩年中逐步發展了這麼多。兩年前,我還想象它將會擁有的這些新功能和改進是本科幻小說,今天這都成真了,已經傳送給現實中世界範圍內的使用者了。真爽!

耐心和信心

所以不僅是激情,甚至愛和耐心也是需要的。衡量過去X年的工作成就讓我意識到一次做一個功能,一項改進,修復一個bug,寫一行程式碼,這種一次僅一個的思維讓我不斷進步。過去的每次成功都正孕育著未來更多的成功,在每個小時裡都激發你自己變得更有工作效率,因為沒有比這更重要(專業)的事情了。

今天我好像整天都在解決一個煩人的bug,如果我不是一直這麼愚蠢很可能我已經在半個小時內修復它了!沒有一點壓力,在過去這樣的事情發生的太多了,回首這麼多年走過的路,我明白這就是我要走的路。這就是信心。

馬上開始

一個專案的中心點,應該是我們知道該往哪裡走。短期(數天,一週),中期(數月),長期(數年)。短期對我來說意味著我的程式碼庫塞滿了優先要寫的註釋,優先5比優先4更為緊迫。這個聽起來好像一個非常基本的任務清單的方式,但任務清單又很強大的優勢。行動計劃出現在程式設計操作必須要發生的地方。因此,在行動計劃上開始工作就省去了尋找從哪些地方開始程式設計的優先順序的過程。馬上開始的這個行為(或不馬上開始的行為)是工作效率的殺手。因此能幫你馬上開始寫程式碼的一切事情都是工作效率的資本。

行動計劃的另一個好處是當所有的計劃都完成時,工作就完成了。由於所有圍繞著程式設計展開的任務(寫測試,程式碼評審,校驗等)都能且必須被安排在行動計劃裡,所以不再有行動計劃是一個很簡單的工作完成了的定義。

專注

當然在某種程度上,行動計劃必須列出來,然後程式碼就必須爬到它們最可能應該寫到的地方。通常當開始在一個東西(產品積壓工作專案)上開始工作時就會發生這樣的事情。這時候產品積壓專案就會轉化為(幾個或許多)優先待辦事項,優先順序取決於產品積壓專案的規模。它可能是修復一小時的一個bug,或將需要3個月來開發的一項功能。
       
每次不應該有超過10個優先待辦事項,因為一個提高工作效率的重要的技巧是專注於你在做的事情。因此這個功能可以被分解為90個一類優先順序和10個二類優先順序待辦事項,然後我們就可以再90個一類優先順序待辦事項中挑選出10個來完成。如果當前在做的二類優先順序待辦事項太值得了,你可以把它轉化為三類優先順序待辦事項等等。

這樣一來,每天早上你只需要查詢你工作空間裡的待辦事項就能立刻知道該做什麼了。你就不用去考慮今天該幹什麼,馬上開始,保持專注就夠了。

目標

對中期(數月)和長期(數年)目標進行想象,能培養工作激情和一天天的工作效率。必須有兩個待辦事項清單保持做到這一點。由於NDepend緊跟著Visual Studio的釋出所以我們的衝刺期大約有12個月到18個月。所以我們有一箇中期清單,上面列出從現在開始到N個月後我們要釋出下一個主要版本需要做的事情。中期清單被ROI(投資回報率,即功能效果與開發投入之比)和使用者的聲音共同驅動著,後者為每一項未來功能的效果提供了很好的建議。這同樣適用於長期清單,不被衝刺期限制的清單除外。

心理

到目前為止,我特別提到了幾個專案管理和組織經歷,這些都說明了保持完整的激情能提高工作效率。但激情、耐心、資訊、馬上開始、專注、定目標都與心理有關。這裡有幾個保持高效率的經典的常心理學慣例:

有一個健全而快樂的生活當然是必不可少的。對個人而言除了程式設計我生活裡還需要其他事物:朋友,家庭,孩子和業餘愛好。每天都有幾個小時必須專用於程式碼之外的東西。一個人一定要睡好覺,並在正常的時間段工作。當你最專注工作的時候(一般是清晨或深夜)你必須要確定時間,並且儘量能走在這個特殊的時間裡工作。這個道理聽起來對你(和我)很明顯,但那些超級令人討厭的個人一定要注意這個。你不可能埋頭一天敲14個小時的程式碼還在長期專案中保持工作效率。

我發現運動成為我程式設計生涯中最提升創造力的方式。經常跑步對我來說是一個提高工作效率的慣例。這過程中不僅會讓我很自然的想出新主意,還會因耐力運動引發迅速分泌內啡肽激素,能很好的緩解痛苦和壓力。跑步的人實際上很容易對這個上癮,這是一個非常爽的過程。我把運動時間也當做工作時間的一部分。這樣做是非常實用的,從不會錯過任何會議。順便提一下,我最近發現阿蘭·圖靈在跑步時就想到了許多超級棒的想法(他幾乎能跑1948年的奧運會馬拉松比賽了)。

除運動外,我每天還冥想,尤其是MBSR(正念減壓療程)。這樣做會讓我更安靜,平和,專注。MBSR非常簡單,在每天幾分鐘的會議期間都能做好幾遍。它主要基於通過觀息,察覺,感受環境來開發人感受當下的能力。關鍵是要發展“不以物喜,不以己悲”的能力。我們都知道,一個人想要長肌肉就必須鍛鍊,但很少有人明白大腦也能而且必須訓練才能好用。一般情況下,MBSR和冥想是用來訓練開發大腦和認知能力的。
       
當把心理學和工作效率聯絡到一起的時候,我們經常會聽到“流動”的概念。“在流動的狀態”意味著完全專注於當前的活動。達到“流動”的條件,就是工作效率之神:對工作保持激情和紮實的技能。我們經常會聽到要熟練掌握一門技能需要10000小時的練習。“流動”更多發生在經驗豐富的程式設計師身上。神奇的“流動”發生的另一個條件是:去接受有足夠挑戰性的任務。做簡單的事情是不可能達到”流動“狀態的。好訊息是程式設計(技能牛的)這項工作並不簡單。
       
當然,當談到工作效率的時候避免被打擾也是一個很重要的方面。有些打擾你能控制,比如每天在批處理模式下處理郵件兩次,而不是在網上辯論,不定期地瀏覽社交網路等,這就是冥想和運動能起到的重要作用了,因為專注度在提升。也有不可控的打擾,不論是同事,會議或孩子們(如果你在家辦公的話)。除了應付這些打擾並能儘快的專注起來之外,你沒有別的選擇了。
       
對於沒能和我一起工作的人,這還有一個獎勵的理論。像我在一組安排裡面做3個小時的編碼工作,然後我就去海邊玩一個小時。這不僅對我一個人起作用。我把完成工作後如果自己想去海灘就去當做一個獎勵。獎勵理論可能會對那些對他們自己工作沒激情的人起作用。你職業生涯的第一責任就是要找到一個讓你有激情的工作。
       
我希望分享我的有關工作效率的經歷現在或以後能幫你變得更有生產力!現在是時候回頭去敲程式碼了(我也是!)。
 
原文:http://codebetter.com/patricksmacchia/2014/07/09/on-programmers-productivity/

(翻譯:PHP100_Alex)
來自:PHP100
相關閱讀
評論(1)

相關文章