1. 程式人生 > >高效工程師系列(二) 花時間學習新技能

高效工程師系列(二) 花時間學習新技能

高效工程師系列(一) 如何找到一個利於自己成長的環境
高效工程師系列(二) 花時間學習新技能
高效工程師系列(三) 持續學習
  工作中很容易被各種必須完成的事壓得喘不過氣來。我指導過的那些人,通常都是剛開始工作的人經常感覺到他們的工作任務清單在持續增長,而且進度遠遠的落在了後面,他們總是花很長時間追趕進度而不是花足夠的時間開發能讓他們更高效的新技能。
  關於這點,我從Google借鑑了一個解決方案。Google開創新的提出了一個”20%時間”的理念,就是相當於工程師可以每週花一天的時間來做一些別的能讓公司更好的專案。最初,20%時間是一個有爭議的提議,有人懷疑這提高了公司的底線。事實上這種投入使得工程師能創造出像Gmail、Google新聞、AdSense這些最後成為google核心競爭力的產品。 許多其他公司也紛紛效仿。
  想讓自己得到成長,你必須付出你20%的時間。每天1-2小時比每週用一整天的時間學習效果要好,這樣你可以把提升自己的技能變成一個日常習慣。可能剛開始你的效率會有所下降(你把你上網或者做什麼其他分散你注意力的事的時間拿過來學習根本也不會有什麼影響),但在長期來看肯定是能提高效率的。
  所以你應該用這20%的時間做什麼?你可以深入去理解下你工作的領域或者你用的工具。或者,你可以從微軟Windows部門前負責人史蒂文•辛諾夫斯基(Steven Sinofsky)所說的“相鄰學科”中獲得經驗。有些學科和你的核心角色相關,可以讓你變得更自信和高效。如果你是一名產品工程師,你的相鄰學科可能有產品管理、用研甚至是後端開發。如果你是一名基礎研發工程師,你的相鄰學科可能包括機器學習、資料庫核心、網頁開發等。如果你是一名關注增長的工程師,相鄰學科可能有資料科學、時間、行為心理學。鄰近學科的知識不僅有用,而且你還會更有可能記住資訊,因為你會積極地練習它。
  無論你選擇哪條路線,這有10條關於利用你身邊可用資源的建議。

  • 學習你們公司最優秀程式設計師寫的程式碼。 通常而言如果你在一個大科技公司,一般都會有一個共享程式碼庫可以看到早期員工寫的核心庫。從一個你用過的開始看,問問自己能不能寫一套類似的程式碼並且你能從中學到什麼。理解為什麼他們這麼選擇和如何實現,看看早起版本是否被重寫以解決缺陷。你也可以把這種方法用在任何你們公司正在用或者考慮用的設計良好的開源專案上。
  • 寫更多程式碼 如果你感覺變成是你的弱點,多把時間從會議往編碼上傾斜。十多年在學習上的研究表明,當你從記憶中獲取知識的時候,你越努力,你就越能更快的學會和記住這些想法。因為程式設計比被動的閱讀程式碼更耗費精力,你會發現實踐是你提高程式設計技巧最有效的方式。此外,你很容易理解你讀過的東西,但當你真正去做的時候你才會發現有大量的知識空白。
  • 利用好任何內部可用的教育材料 例如在Google,有大量經驗豐富的工程師寫的核心抽象程式碼庫。如果你的公司維護設計文件或者舉辦技術講座,這些都是很好的學習機會。
  • 熟練掌握你使用的變成語言 看一兩本相關的好書,專注於紮實掌握該語言的先進概念,熟悉核心程式碼庫。確保至少有一門語言是指令碼語言(比如 python或ruby),它可以成為你快速任務的瑞士軍刀。
  • 讓最嚴厲的人review你的程式碼 優化好的有思想的反饋比降低你工作的門檻好的多。多問下你不自信的實現細節。 和你們公司最好的設計師討論軟體設計避免你寫出設計良好但不工作的程式碼。
  • 註冊一門你想提高領域的課程 這些課程可以是公司的、附近大學的或者線上課程,比如Coursera、edX、Udemy、Udacity等。線上教育井噴式發展,你很容易就能註冊一門機器學習、移動開發、計算機網路、編譯或者其他課程。這些課程基本上都是世界級教授所教授的,比如斯坦福、MIT等。有些大公司甚至會幫你的課程付費。
  • 參加你感興趣的設計討論 不要等著別人邀請你,問下專案lead是否介意你旁聽或者參與到設計會議裡。如果內部郵件組開發,直接把自己加進去,或者直接閱讀存檔中的關鍵對話。
  • 參加多樣性的專案 如果你發現你直接一直在用相似的方法做相似的東西,是時候學一些新技能了。交錯參與不同的專案可以教會你哪些問題在專案中是常見的,哪些可能只存在於你當前專案中。此外,研究表明,不同技能的交叉練習比重複的、集中練習的一種技能更有效,它可以幫助人們解決不熟悉的問題。
  • 確保你們團隊至少有一個你可以學習的高階工程師 如果沒有,考慮下換個專案或團隊,這可以幫你在剩下的80%的時間裡提升學習率。
  • 勇敢的扎進你不懂的程式碼裡 經過多年的觀察,前facebook的工程主管Bobby Johnson總結出工程的成功和『無畏地扎進他們不懂的程式碼是強相關的』。害怕失敗經常拖累我們,導致我們在開始嘗試前就放棄了。但Bobby Johnson解釋道『在實踐中深挖你不懂的東西,能讓你寫出更好的程式碼』。

      從你20%的時間裡創造學習機會,你就會穩步提高你的技能和生產力。