寫程式碼水平的幾個發展階段

黃軼發表於2018-01-12

背景

這篇文章非我原創,是我在公司內部平臺拜讀了我們公司的架構師——杜歡最近寫的一篇文章,也很感同身受,覺得非常值得分享。

杜歡在我的眼中是一名非常出色的全棧工程師,他擁有 10 年以上的開發經驗,無論從技術深度和廣度上都有很不錯的造詣,即使已經做到了部門技術總監的位置,還能始終保持著對技術的熱愛和追求,令我非常佩服。他根據多年的經驗,總結出程式設計師寫程式碼的水平分為以下幾個發展階段:

懵懂

剛開始學習程式設計或學習一種新技術的時候,會有種霧裡看花的感覺,似懂非懂,就算記住了也不會用。要突破這個階段的方法就是“練習”,通過各種專案讓自己熟練起來,做到任何一個不太難的業務需求可以快速想到解決方案並且開始動手實現。

會用

通過 google、stackoverflow、各種專業社群、各種文章等渠道,自己慢慢會發現更大的世界並對這個世界中各種技術產生了興趣,理解一個簡單的新技術不再成為自己的瓶頸,自己慢慢可以駕馭非常多的工具、元件、庫、設計模式、演算法、語言等,主動不斷擴大自己的視野,嘗試在專案中使用各種新東西,對引入一個新技術開始變得非常興奮,最終可以做到快速的吸收並理解一個新技術的用法,也知道什麼時候該用什麼技術。

會看

出於某些機緣,比如遇到了一個比較難以解決的 bug,開始深入閱讀某種日常用到的技術的內部原理,從而開始發現更多自己所不知道的東西,並開始對各種技術的背後實現產生興趣,慢慢建立起一個相對完備的知識體系,對某個領域的所有的相關技術都能夠如數家珍一般的講出來,第一次開始有一種“時間不夠用”的無力感,面對浩如繁星的開源/閉原始碼量深深感覺到自己的渺小,越來越不願意去輕易重造一個輪子,真正懂得怎麼去評估一個開源技術的好壞。

會寫

突然有一天,在鑽研某種技術的時候發現一種突破性的思路,並且通過謹慎調研後發現確實有實現出來的必要,於是就將大量的時間投入在實現理想的過程中去,並且主動的用各種技術來提升自己的工作效率,最終拿出來的成果確實如預計一般站在了業界的最前沿。

會想

當自己已經站在了業界這個領域的最前沿,除了繼續動手實現最核心的程式碼,還找到了未來三年的發展方向,並且第一次勇敢的自我否定拋棄了自己原先的想法。

總結

如果長期不寫程式碼一定會讓自己的水平下降,如果長期只做當前級別以下的事情也可能會退化。絕對不是說“會想”了就可以每天冥想、指點江山,自己不動手就很容易被後來者超越並且開始固步自封,從“會想”變成自以為是,退化到之前的階段。

杜歡認為他目前一直停留在“會寫”的階段,甚至有可能已經退化到了“會看”階段,距離“會想”還非常的遠。我看完後感覺自己在“會看”和“會寫”中徘徊,也遠沒達到“會想”的階段。

非常多的程式設計師停留在“會用”的階段,滿足於能夠解決問題,還沒能看的更深更遠。在“會用”的階段很容易產生一種無所不能的錯覺,覺得已經沒什麼功能實現不了,開始重複造一些並不怎麼好的輪子,造輪子之前甚至都沒有去仔細研究過業界最先進的技術實現細節,如果一直處在這種錯覺之中,基本上就很難再成長了。其實這種現象在大公司中也常出現,很多程式設計師僅止步於寫程式碼的初級階段,還是非常可惜的。

在進入“會看”之後會有一段非常長的痛苦期,這段時間裡會非常感覺一個人的渺小,既沒有時間去窮盡所有技術細節,也沒有能力去找到前人沒有嘗試過的突破性創新,簡直是一種煎熬。有不少業界大牛就停留在這個階段,迷失在各種細節之中,成為一個知識豐富但缺乏創造力的人。

我最近認識了一些新朋友,是一些熱愛折騰的年輕人@doodlewind、@工業聚,我關注了他們的一些動態,並在和他們交流技術的時候明顯感覺到技術視野和思路被開啟,非常看好他們。雖然我現在在公司也做了一些技術管理的工作,時間精力被分配了一些,但也希望自己也能一直保持著持續的技術學習,在技術這條路上繼續深耕。

希望所有程式設計師都能筆耕不輟,向著下一個階段進發。

相關文章