如何成爲“10倍效率”開發者

Brad Feld 的一篇文章 The Rise of Developeronomics 中提到了“10倍效率的開發者(10x developer)”的概念(偉大的開發者的效率往往比一般的開發者高很多,而不只是一點點),Adam Loving 在讀了之後受到啓發,並向多位大牛(Ben Sharpe、Collin Watson 和 Jonathan Locke)詢問如何成爲“10倍效率的開發者”,最後得到了以下的答案。

  1. 只做需要做的工作 Only do the work that needs to be done

  • 使用敏捷方法;
  • 全心全意做 UX 設計;
  • 溝通第一;
  • 編碼也許不是解決問題的辦法;
  • 過早的優化是一切罪惡的根源;
  • 選擇最簡單的解決方案。

  2. 站在巨人的肩膀上 Build on the shoulders of giants

  • 使用開源框架;
  • 使用簡潔語言(如 HAML、Jade、Coffeescript);
  • 不要做重複的事情(不要重新發明輪子);
  • 利用包管理器來進行公共和私有代碼分配;
  • 不要任憑巨頭(如微軟)的擺佈而修復庫中的一個 Bug;
  • 不要讓你的僱主逼你學習;
  • 自主學習併爲自己設定新的目標。

  3. 瞭解數據結構和算法 Know your data structures and algorithm

  如果你不知道什麼時候應該使用快速排序、不懂辨認O(n2)程序、不會寫遞歸函數,你將無法成爲 10 倍效率的開發者。使用多種語言你才能清楚不同的框架是如何解決相同問題的。儘可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web 框架是怎麼存儲 session 狀態的?Cookie 到底是什麼?)。

  4. 不要怕買工具,它可以節省你的時間 Don’t be afraid of buying tools that save you time

  Ben 說:“昨天我花 50 美元買了一個位圖字體工具,它幫我節省的時間成本絕對超過 200 元。”

  5. 集中注意力 Find focus

  不要整天開着你的電子郵件、Twitter、Facebook 等,在工作時將它們最小化或關掉它們,戴上耳機。Tiny hack 說:“即使不聽音樂我也戴着耳機工作,這樣便不會有人打擾到我。”

  6. 儘早並且經常性地進行代碼重構 Refactor early and often

  有時,你不得不放棄漂亮的代碼轉而去尋找真正對項目有用的代碼,但沒關係,如果你的現有項目中有這樣的代碼,最好的方式便是不要看它,並重構。

  7. 只管去做  Just do it

  將你的業餘項目分享到 Startup Weekend 中。在我開始轉到 Unix 和 Ruby on Rails 上之前,我買了一臺 Mac,使用 Windows 虛擬機花了一年時間做 .NET 項目。

  8. 挑選一個編輯器,並掌握它 Pick an editor and PWN it

  高效開發者喜歡用文本編輯器勝過 IDE 編輯器,因爲這樣可以學到更多東西。無論什麼情況,儘量使用鍵盤快捷鍵,因爲熟練使用一件工具的前提是熟悉它。

  在選擇編輯器時,認真考慮並挑選最好的(Emacs 或 Vim),因爲它們是通用的。其次,挑選你的首選平臺最支持的。使用宏,不斷地寫代碼;使用 Mac 上的 TextExpander 爲整個段落創建快捷方式;使用 Visual Studio 或 SublimeText 的自動補齊功能;使用支持按行/列分割窗口的編輯器,這樣你便能同時看到單元測試和代碼(或模型、視圖)。

  一定要想清楚後再寫代碼。Adam 說,“我有朋友在一個大項目組裏工作,他們組裏最高效的程序員是一個高位截癱用嘴叼着棍子敲代碼的人,他總是在寫代碼之前想得很仔細且很少出錯。”

  9. 整潔的代碼勝過巧妙的代碼 Clearness beats Cleverness

  要想讓其他人能夠讀懂你的代碼,儘量使用最少的代碼來完成任務。遵循 DRY(Don't repeat yourself)的原則,使用明確定義的對象和庫,將任務分解成小而簡單的代碼段。

  10. 潛意識是強大的工具  Your sub-conscience is a powerful tool

  離開 10 分鐘往往就可以解決一個問題。控制編程時間,給自己一個多姿多彩的生活,勞逸結合能讓你在工作時更高效、更愉悅。當然,即便是上了年紀的程序員也知道,以最少的時間完成最高效的工作是成爲 10 倍效率開發者的必要條件。

  作爲一個程序員,我覺得在職業生涯中最好的一件事兒就是從電腦前站起來,去拜訪那些在某一領域有所建樹的人們。

  11. 推動自身和團隊進步 Refine your process as a team

  重視批評,以包容的態度接受批評並提升自己是非常重要的事情。沒有這個基礎,你不可能成爲一個高效的開發者。一位智者曾經說過:“聰明的人善於從自己的錯誤中學習,而智慧的人善於從別人的錯誤中學習。”

  英文原文:http://adamloving.com/internet-programming/10x-developers

  1. Only do the work that needs to be done. Use the agile process. Involve yourself in UX design. Communicate first. Coding might not be the solution. Premature optimization is the root of all evil. Choose the simplest solution that solves the problem.

  2. Build on the shoulders of giants. Use open source frameworks. Use shorthand languages (HAML, Jade, Coffeescript) to go faster. Don’t re-invent the wheel. Leverage package managers for public and private code distribution. Don’t be at the mercy of Central Command (i.e. Microsoft) to fix a bug in a library. And don’t wait for your employer to let you learn it. Learn it on your own, and get a new job that pays twice as much.

  3. Know your data structures and algorithms. Our profession is open to self taught tradesmen, but you can’t be a 10x developer if you don’t know when to use quick sort, identify an O (n2) routine, or write a recursive function. Be multilingual – so you can see how different frameworks solve the same problems over and over again. Know enough about the plumbing to be able to make informed decisions (how is this Web framework storing the session state? What is a cookie actually).

  4. Don’t be afraid of buying tools that save you time.  Ben says: “I bought a bitmap font tool yesterday for $50. It easily saved me more than $200 of my time.”

  5. Find focus. Don’t keep your email open all day. Same for Twitter, Facebook, HackerNews, and Techememe.  Minimize interruptions during productive moments.  Close email, turn off chat, put headphones on… whatever it takes to not be interrupted. Tiny hack:  I wear headphones at work even though I don’t listen to music because people don’t interrupt me.

  6. Refactor early and often. Kill your darlings.  Sometimes you have to throw out clever code to do what’s right by the project, but that’s OK. If you have to touch code on an existing project, always leave it better than you found it.

  7. Just do it. Think small. Do your weekend project, participate in Startup Weekend. I bought a Mac and worked in a Windows Virtual Machine on .NET projects for a year before I was able to fully leap to Unix and Ruby on Rails.

  8. Pick an editor and PWN it. Some 10x devs prefer text editors to IDE’s because they find they learn more without the crutches. In any case, learn your keyboard shortcuts. There’s no faster way to look something up than to know it.

  When picking an editor — seriously consider one of the greats (emacs or vim), they’re universal. After that, pick the best/most supported editor on your preferred platform. Use macros. Write code that writes code. Use TextExpander on the Mac to create shortcuts for entire paragraphs. Use auto-completion in Visual Studio or SublimeText.

  Use an editor that supports splitting your window into columns or rows. This way you can see your both a unit test and the code it is testing (or a model and view) at the same time.

  But think before you type. A friend in a large group said that the most productive coder in their group was a paraplegic who used a mouth stick to type. He had to really think things out before he started typing, he only rarely made mistakes.

  9. Clearness beats Cleverness. Write your code so that the next person can read it, not so it uses the fewest characters possible. Strive to adhere to the DRY (Don’t repeat your self) principle. Re-use clearly defined objects and libraries. Break work into clean interfaces between components and developers. Break the problem into small simple tasks.

  10. Your sub-conscience is a powerful tool. Stepping away for 10 minutes is often all that is required to solve a problem. Treat your self to a diverse life and limit your coding time. You will be able to work more effectively during your coding time because it will be more enjoyable. Of course, us older developers also know that a minimum effective dose of physical fitness is also a prerequisite to being a 10x developer.

  Human networking is more important than computer networking. Practice your pong. I often feel the best thing I ever did for my career as a programmer was to step away from the computer and go meet some movers and shakers.

  11. Refine your process as a team. One of the biggest things is to really pay attention and to be wide open to criticism and changing and refining your process. You can’t become a 10x anything without that foundation because it will take you too long to get better at it. A wise man once said “A smart man learns from his mistakes, but the truly clever man learns from the mistakes of others.”


轉載來自http://kb.cnblogs.com/page/126692/

發佈了0 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章