Brad Feld 的一篇文章《The Rise of Developeronomics》中提到了“10倍效率的開發人員(10x developer)”的概念(卓越的開發者的效率往往比一般的開發者高很多,而不只是一點點),Adam Loving 在讀了之後受到啟發,並向多位大牛(Ben Sharpe、Collin Watson和Jonathan Locke)詢問如何成為“10倍效率的開發者”,最後得到了以下的答案。
(編注:一個優秀的程式設計師的效率會是一個普通的程式設計師的十倍之上。——《一些鮮為人知的程式設計真相》)
1. 只做需要做的工作
- 使用敏捷方法;
- 全心全意做UX設計;
- 溝通第一;
- 編碼也許不是解決問題的辦法;
- 過早的優化是一切罪惡的根源;
- 選擇最簡單的解決方案。
2. 站在巨人的肩膀上
- 使用開源框架;
- 使用簡潔語言;
- 不要做重複的事情(不要重新發明輪子);
- 利用包管理器來進行公共和私有程式碼分配;
- 不要任憑巨頭(如微軟)的擺佈而修復庫中的一個Bug;
- 不要讓你的僱主逼你學習;
- 自主學習併為自己設定新的目標。
3. 瞭解資料結構和演算法
如果你不知道什麼時候應該使用快速排序、不懂辨認O(n2)程式、不會寫遞迴函式,你將無法成為10倍效率的開發者。使用多種語言你才能清楚不同的框架是如何解決相同問題的。儘可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web框架是怎麼儲存session狀態的?Cookie到底是什麼?)。
4. 不要怕買工具,它可以節省你的時間
Ben說:“昨天我花50美元買了一個點陣圖字型工具,它幫我節省的時間成本絕對超過200美元。”
5. 集中注意力
不要整天開著你的電子郵件、Twitter、Facebook等,在工作時將它們最小化或關掉它們,戴上耳機。Tiny hack說:“即使不聽音樂我也戴著耳機工作,這樣便不會有人打擾到我。”
6. 儘早並且經常性地進行程式碼重構
有時,你不得不放棄漂亮的程式碼轉而去尋找真正對專案有用的程式碼,但沒關係,如果你的現有專案中有這樣的程式碼,最好的方式便是不要看它,並重構。
7. 只管去做
將你的業餘專案分享到Startup Weekend中。在我開始轉到Unix和Ruby on Rails上之前,我買了一臺Mac,使用Windows虛擬機器花了一年時間做.NET專案。
8. 挑選一個編輯器,並掌握它
高效開發者喜歡用文字編輯器勝過IDE編輯器,因為這樣可以學到更多東西。無論什麼情況,儘量使用鍵盤快捷鍵,因為熟練使用一件工具的前提是熟悉它。
在選擇編輯器時,認真考慮並挑選最好的(Emacs或Vim),因為它們是通用的。其次,挑選你的首選平臺最支援的。使用巨集,不斷地寫程式碼;使用Mac上的TextExpander為整個段落建立快捷方式;使用Visual Studio或SublimeText的自動補齊功能;使用支援按行/列分割視窗的編輯器,這樣你便能同時看到單元測試和程式碼(或模型、檢視)。(推薦閱讀:《25個Vim教程、視訊和資源》)
一定要想清楚後再寫程式碼。Adam說,“我有朋友在一個大專案組裡工作,他們組裡最高效的程式設計師是一個高位截癱用嘴叼著棍子敲程式碼的人,他總是在寫程式碼之前想得很仔細且很少出錯。”
9. 整潔的程式碼勝過巧妙的程式碼
要想讓其他人能夠讀懂你的程式碼,儘量使用最少的程式碼來完成任務。遵循DRY(Don’t repeat yourself)的原則,使用明確定義的物件和庫,將任務分解成小而簡單的程式碼段。
10. 潛意識是強大的工具
離開10分鐘往往就可以解決一個問題。控制程式設計時間,給自己一個多姿多彩的生活,勞逸結合能讓你在工作時更高效、更愉悅。當然,即便是上了年紀的程式設計師也知道,以最少的時間完成最高效的工作是成為10倍效率開發者的必要條件。
作為一個程式設計師,我覺得在職業生涯中最好的一件事兒就是從電腦前站起來,去拜訪那些在某一領域有所建樹的人們。
11. 推動自身和團隊進步
重視批評,以包容的態度接受批評並提升自己是非常重要的事情。沒有這個基礎,你不可能成為一個高效的開發者。一位智者曾經說過:“聰明的人善於從自己的錯誤中學習,而智慧的人善於從別人的錯誤中學習。”