我不能算是一個很優秀的程式設計師,但這個問題我已經反復思考了五年了。跟大家分享一下我的看法:
首先, 我認為答案絕對 不是 "只要寫很多年程式碼就好了「。我面試過不少有10年經驗,程式碼卻寫的很糟糕的程式設計師。經驗很保貴, 但只靠經驗是不夠的。就像下棋一樣,假如你用心研究,復習,不斷挑戰自己,也特許以成為一名大師。但不斷用懶散的方式去玩棋,下20年也只是一個"臭棋簍子「。
我覺得比較有用的進步方式:
1. 學會看程式碼
大多數程式設計師都只願意用自己寫的程式碼,但高手一般可以輕易呼叫別人寫的程式碼。表面看上去是工作習慣不同, 但實際上是能力上的差別。看程式碼要比寫程式碼難很多倍。
我建議上班時多給隊友們作code review,下班後試著閱讀github上的開原始碼。
2. 復習
程式設計師一般都很忙, 手上有永遠也做不完的活兒。但在某些公司裏, 你只是在反復做同樣的事。偶爾放下手上的活兒,留下一部份時間來分析自己的弱點,更改壞習慣,看新書, 或學習新語言。
3. 做個人專案
工作中的編程一般只能讓你熟悉一部份技術, 導致漏洞的形成。這就好像你長期一個人在自己後院練習投籃, 但第一次打比賽才(在慘敗中)發些原來還需要傳球, 防守, 強籃板這些概念。
Facebook喜歡僱用所謂的 「full stack programmer」,就是一個人從設計,到互動,到html, css,javascript, server,sql, 架構,和數據統計都能做。成為full stack programmer最好的方式就是不斷做個人專案。
4. 問答網站
問問題和回答問題都是很好的學習方式。 有的時候寫出一個好問題, 比寫出解答次問題所需要的程式碼還難。寫問題可以幫你整理自己的思維邏輯。你可以試著每周在http:// stackoverflow.com 上問一個好問題或寫一個好答案。
5. 加入一個好團隊
最好的進步方式就是跟比自己強的人一起做事。高手都願意聚在一起,所以很多會選擇去優秀的早期創業公司。我在矽谷和創新工場創業時遇到了很多神人, 跟他們學了不少東西。