#技術的三個階段
我認為程序員一般會經歷三個階段: 實現—>借鑒—>優化,每一個階段都會遇到瓶頸。
* 第一個階段:實現
在這階段我們只在乎功能的實現,不會考慮性能優化,我們會覺得一些功能不會做,有些功能自己沒做過,只要實現了功能,就覺得很有成就感。 就好比我們人類在原始社會時的居住環境,這時候不在乎住得舒不舒服,只要能找個遮風避雨的山洞就行。
這個階段一般會持續2-3年,在這段時間經常遇到程序問題,為了解決這些問題經常熬夜, 但如果過了2-3年還經常熬夜就不正常了。此階段,我們要多去接觸,什么沒有做過就做什么,后端,前端,服務器等都要有所了解。這個階段也會遇到很多困難,遇到困難證明自己還有東西不會,相信學會就簡單了,所以遇到困難不應該是放棄而是學習。 實現階段要學習的東西也會很多,需要掌握科學的學習方法,本書后面會詳細介紹一些學習方法。
* 第二個階段:借鑒
當我們覺得基本所有功能自己都能實現的時候,我們會遇到自己的第一個瓶頸,這時候不要自滿,要發現那只是自己的第一個瓶頸而已,自己的提升空間還很大,這時候建議大家多借鑒別人的代碼,多看一些開源程序的源碼,讀別人的程序能學到很多東西,能學習到很多編程思想,能看見很多自己以前沒有用過的類、函數等。或許有人認為別人能實現的自己也能實現,不屑于看別人的東西,美國一位大師Matt Zandstra說過這樣一句話: “我們正在努力開發的功能,或許已經被其他程序員實現過無數次,我們怎么不借鑒他們的。 把重心放在自己特有的業務邏輯上。”
這個階段也好比我們人類的居住環境, 人類不滿足于只住山洞, 后面可能是借鑒了鳥搭鳥窩的方式,人類自己也可以搭建茅草屋了。
在這個階段需要掌握分析開源程序的方法,要學會看別人的程序的,本書后面會詳細介紹一些分析程序的方法。
借鑒階段一般會持續1-2年, 這個階段也會有瓶頸, 開源程序看多了后, 會發現再看任何開源程序已經看不出新的思想了, 很多編程思想都是相通的,好像都是已經見過的。這時候我們要把重心放到優化自己的代碼上面。
* 第三個階段:優化
當我們功能都能實現了,也借鑒了許多別人的東西,這時候我們的重心會想著怎么優化我們的代碼, 我們會考慮代碼的可讀性、安全性、可擴展性以及服務器的優化。這時候建議大家可以看一些設計模式、編程思想、網站安全方面的書。
這個階段就好比我們人類居住環境,我們不斷的優化我們的居住環境,然后可以蓋建樓房了,讓人類居住得更加舒適。
這三個階段并不是順序出現的,有時候我們可能即在實現階段也在借鑒階段也在優化階段, 但工作年限不同會偏重的階段不一樣, 如果是剛開始工作,肯定偏重實現階段會多一些。
如果再從程序員的職業發展方向來分析,圖1-1幾乎表示出了一個程序員可能走的所有路線

圖1-1 程序員的發展路線
我們剛開始還是一個初級開發的時候只能把自己先變成高級開發然后才能有更多選擇。可以選擇管理線、專家線或者小老板線(圖有四個象限,x軸代表金錢, y軸代表時間。)
我們學習知識的路線是: 技術->技術+管理->技術+管理+商業。
隨著階段不一樣,我們學習的知識也有不同,剛開始我們只做開發,只需要學習技術知識就行了,后面我們做到了管理職位,不僅要懂技術還要學習管理知識,然后我們想要成為CTO\CEO或小老板,必須得學習一些商業知識才行。
作為技術人員,3年工作經驗以上就可能開始帶人了,肯定要也學一些管理知識,本身在后面章節也會介紹一下“技術團隊的管理”