技術的成長曲線

小李畢業後在一家公司作軟件工程師,轉眼間,一年多的時間已通過去了。程序員

回想剛畢業那會,他是懷着無比忐忑的心情進入了這家公司的技術部門。各類新奇的開發工具,叫不上名字的衆多軟件框架,龐大的代碼庫,井井有理的工做流程,都是小李之前在學校裏未曾遇到過的,這讓他感到了史無前例的壓力。因而,在開始的那半年,小李就像一株久旱的禾苗遇到了雨水,拼命地吸取着工做中遇到的每一點知識。他學習新的編程語言,學習新的開發工具,學習調試和解bug的技巧,也學習處理各類棘手的業務邏輯。雖然天天工做很累,但天天都是滿滿的收穫。算法

而現現在,小李儼然是一名頗有經驗的老手了。對於工做中通常的問題,他都能遊刃有餘地加以解決,無非是把現有的一些內部接口從新組合利用,或者按照原有的套路從新設計改進一番。應付工做既然比之前輕鬆了許多,工做的壓力也就顯得沒有那麼大了。因而小李日常也能抽出時間來上上網,看看美劇,或者打打遊戲,有時候也帶着女朋友去看場電影或者球賽。編程

然而時間長了,小李內心卻隱隱多了一絲不安。他再也找不到開始那種日新月異的爽快了,並且當對工做愈來愈熟悉以後,工做自己開始變得枯燥、沒意思。他決定花更多精力在本身的技術提升上,但卻感受無從下手,很難突破。每次完成一個新的開發需求,也只是不斷重複舊有的東西而已。安全

成長曲線和四大階段

小李的狀況其實很是典型。不少技術人員在工做一兩年以後,對工做周圍的事情都得心應手了,就可能會陷入第一個瓶頸期,再難突破。網絡

爲了能更清晰地分析技術成長過程當中出現的各類狀況,咱們來對技術的成長曲線作一個總結。以下圖:數據結構

技術的成長過程並不是勻速線性的,而是分階段的。每一個高速增加的突破期後面,都跟着一個平緩的增加期,能夠稱爲溫馨期,也能夠稱爲瓶頸期。溫馨期是針對過去而言的,而瓶頸期的說法則更着眼於將來。架構

通常來講,突破的過程,絕非垂手可得,並且有可能伴隨着陣痛。它須要咱們付出十分的心力,甚至承擔必定的風險,作成一些本來超出本身能力極限的事情。而一旦過了突破期,各類技能在這個層次上融會貫通,就會給咱們帶來極大的自信和成就感。這個時候,處理同一層面的問題,逐漸變得輕車熟路,因而進入了溫馨期。框架

溫馨期對人有一種自然的吸引力,咱們只要待在這個階段,就能得到最大的安全感,儘可能少地遭受不肯定性的折磨。不少人會選擇待在這個區間,再也不走出一步。而另外一些人則會對這一階段的緩慢增加產生焦慮,因而溫馨期變成了瓶頸期,從而引起下一輪的突破。機器學習

以每一次大的突破爲分界,咱們能夠將技術人員的成長粗略劃分爲四大階段:新手、熟手、專家、宗師(開創者)。數據結構和算法

新手通過半年到一年的工做經驗,若是能成功適應這份工做,基本就能有所突破,變成一個熟手。熟手的特色是,能對現成的工具充分利用,勝任大部分平常工做。在技術水平的表現上,他了解大部分的技術概念,但不必定理解真正的含義;在他的眼中,技術還沒法自成體系,能理解到的知識架構還有所殘缺。他解決問題所依靠的,更可能是經驗而非縝密的邏輯。前面提到的小李,就處於這個階段。

熟手再向上突破一層,則成爲技術專家。專家,在某個領域擁有足夠全面、系統而深刻的知識儲備,對於技術上的疑難雜症,有能力深刻到足夠的層次,指出問題的癥結所在;另外一方面,專家還應該可以完成對具體問題的抽象,擁有「造輪子」的能力。在專家的眼中,技術的黑盒子被打開,知識點也再也不是孤立存在的,而是相互枝連,構成一個完整的邏輯系統。

而真正達到宗師這一級別的,整個世上也寥寥無幾。他們是真正的開創者,可以引領一個技術時代。什麼樣的人才配得上「宗師」這個稱呼呢?好比Dennis M. Ritchie(C語言和Unix之父),再好比Linus(Linux內核的發明人)。

但就像前面的技術成長曲線圖所描繪的,技術的成長階段並無一個上限。不管你處在哪一個階段,前面仍然存在無限的上升空間。

郭靖的進階之路

近日細讀金庸老爺子的《射鵰英雄傳》,突然意識到,郭靖乃是金庸武俠中天資最爲魯鈍的一位主人公。然而,郭靖從一個普通少年,終成長爲一代大俠,這一過程,正好暗合了前面講到的技術成長曲線。

郭靖從六歲開始,在蒙古大漠接受江南六怪傳授武功,花了整整十年。後又得全真教掌教馬鈺傳授內功一年有餘,武功初入門徑,得到了武學上第一個突破(熟手期)。處於這個階段的郭靖,在武功上與同齡的楊康不相上下。

郭靖在武學上的第二個突破,原由於兩個事件:一個是「北丐」洪七公傳授他降龍十八掌,另外一個是老頑童騙他背誦《九陰真經》。通過一番歷練,在華山頂上,他已經擁有了分別與「東邪」和「北丐」過手三百招而保持不敗的戰績。此時的郭靖,已是高手中的高手了(專家)。這第二次突破,他只用了兩年有餘。

而郭靖的第三個突破,已是在《射鵰》以後了,終於成長爲一代武學宗師。

爲何天資並不出衆的郭靖,卻可以接連取得突破呢?至少兩個緣由不容忽視。一個是勤奮,「人家練一朝,我就練十天」,因此根基打得好;另外一個緣由是他剛好學對了東西,降龍十八掌和《九陰真經》都是正宗武學,有幸學到天然是日新月異。

突破的要領

技術成長的關鍵在於突破。

然而,在技術成長的路上,越到後面,突破的難度就越大。大部分新手,只要保持足夠的勤奮,總能達到熟手的程度。但不少人卻止步於此,他們或流連於溫馨期的誘惑不願走出來,或長期卡在瓶頸期卻找不到突破的出口。可以突破達到專家這一階段的技術人員,已經足夠成爲各大公司技術部門的翹楚了。而要達到宗師的級別,則不光靠我的的努力,還須要時代的機遇纔有可能。

那麼,爲了達到真正的突破,有哪些因素是咱們須要重視的呢?

第一,根基。

在接觸一門新技術或者一個新的技術領域時,良好的基礎有利於咱們快速突破,抵達下一個階段。不一樣技術之間,基礎倒是相通的。好比,對於計算機軟件學科的基礎知識——數據結構和算法,處於熟手期的程序員可能多半會認爲它們在工做中根本沒有用。這是由於這個階段的技術人員主要靠孤立的經驗解決問題,一些基礎的知識天然就用不上。但對於技術專家層次的人來講,數據結構和算法倒是在系統設計的不少方面潛移默化地發揮做用。對於其它計算機基礎學科,這個道理也一樣適用。

再好比,如今人工智能和機器學習技術比較火,彷佛全民都在學習。但要想學好這些技術,至少應該對於微積分、線性代數、機率論、統計學等數學知識有比較紮實的基礎,才能走得更遠。

第二,外因,一個不疾不徐的環境。

過於寬鬆的環境天然不利於人的進步,而盲目的緊張也不利於人的成長。

突破的過程須要付出巨大的精力,因此須要投入足夠的時間去從容地完成。咱們大概都經歷過這樣一種場景:新產品上線在即,但還有不少問題須要解決。若是距離預約上線時間還有數天,那麼咱們能夠相對從容地用比較優雅的方式來解決這些問題,並作一些長遠的打算;但若是咱們碰到的狀況是,兩個小時之後就要上線了,那麼咱們多半會想一些歪點子來規避這些問題。

產品開發和技術優化,有時相輔相成,有時又互相矛盾。若是你所處的工做崗位,只是要求你不停地修改業務流程,盲目地試錯,那麼,可能公司根本沒有給你留出技術突破的空間。試想,一個主旨不清,功能點作了新的就扔了舊的,而沒有長遠的目標,也不去持續優化體驗,這樣的一個產品,又怎能有持續的生命力呢?

第三,正確(正宗)的學習資料。

新手剛開始工做的時候,一般只要看一些入門教程(Tutorial),跑幾個Demo,掃除了表面上的技術疑問點,再針對業務代碼向老員工請教一番,基本就能開始工做了。而後一邊編碼,一邊查閱所須要的API Reference,時間長了,經驗和技巧足夠多了,就天然變成熟手了。

而從熟手向專家的突破,則須要系統地去補習知識架構。技巧應該創建在對於廣泛規則的理解之上。這裏不得不說起Spec,它是涉及某項技術的完備的、系統的描述,包含該項技術涉及到的方方面面(具體參見個人另外一篇文章《技術的正宗與野路子》)。在奔向技術專家的路上,閱讀Spec,是不可逾越的一道功課。《射鵰》中郭靖的武功突破,很大程度上就是由於他閱讀了《九陰真經》這份大大的Spec。固然,除此以外,你可能還須要通讀重要部分的API Reference以及Source Code。

技術專家必然將原始文獻(官網Spec、論文等)做爲知識的第一來源。相反,跟着某人的博客去系統地學習某方面的技術,是要冒有很大風險的,還需慎重選擇。

最後,要想成爲技術上的一代宗師,則須要更高的抽象,作出徹底創造性的工做。這份工做不只僅是閱讀Spec,解決具體的問題了,而是創做Spec,開創全新的天地。

第四,獨立思考,不要自我設限。

如今,不少人喜歡把技術好的人喊做「大神」。這天然是表明一種尊重,不少聽的人也很受用。

可是,「神」的稱呼暗含了一層意思:神是沒法超越的,是普通人學不來的。這是人們在潛意識裏劃出的一道鴻溝。因此,我就不太喜歡相似這種稱呼。

不少人碰到問題就喜歡找身邊「大神」去問,但卻不知問再多問題,你仍然沒法真正地有所提升。普通人和「大神」之間真正的鴻溝在於,可否獨立思考和解決問題。


在追求技術成長的路上,不可能老是一路順風。咱們難免有時沮喪,有時欣喜。

人生苦短,有人窮其一輩子,就是想要達到理想中的那個狀態。但無論結果如何,當咱們青春再也不的時候,只求心安理得。

(完)

其它精選文章

相關文章
相關標籤/搜索