今天早上我偶然遇到一篇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小時的程式設計工作,然後我就去海邊玩一個小時。這不僅對我一個人起作用。我把完成工作後如果自己想去海灘就去當一個獎勵。獎勵理論可能會對那些對他們自己工作沒有熱情的人起作用。你職涯的第一個責任就是找到一個讓你有熱情的工作。
免費領取LAMP兄弟連原創php教學光碟/《細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.net
PHPCMS二次開發 http://yun.itxdl.cn/online/phpcms/index.php?u=5
微信開發 http://yun.itxdl.cn/online/weixin/index.php?u=5 🎜>行動互聯網伺服器端開發
http://yun.itxdl.cn/online/server/index.php?u=5Javascript
課程 http://yun.itxdl.cn/online/js/index.php?u=5
CTO訓練營 5
|