這篇文章非我原創,是我在公司內部平臺拜讀了咱們公司的架構師——杜歡最近寫的一篇文章,也很感同身受,以爲很是值得分享。git
杜歡在個人眼中是一名很是出色的全棧工程師,他擁有 10 年以上的開發經驗,不管從技術深度和廣度上都有很不錯的造詣,即便已經作到了部門技術總監的位置,還能始終保持着對技術的熱愛和追求,令我很是佩服。他根據多年的經驗,總結出程序員寫代碼的水平分爲如下幾個發展階段:程序員
剛開始學習編程或學習一種新技術的時候,會有種霧裏看花的感受,似懂非懂,就算記住了也不會用。要突破這個階段的方法就是「練習」,經過各類項目讓本身熟練起來,作到任何一個不太難的業務需求能夠快速想到解決方案而且開始動手實現。github
經過 google、stackoverflow、各類專業社區、各類文章等渠道,本身慢慢會發現更大的世界並對這個世界中各類技術產生了興趣,理解一個簡單的新技術再也不成爲本身的瓶頸,本身慢慢能夠駕馭很是多的工具、組件、庫、設計模式、算法、語言等,主動不斷擴大本身的視野,嘗試在項目中使用各類新東西,對引入一個新技術開始變得很是興奮,最終能夠作到快速的吸取並理解一個新技術的用法,也知道何時該用什麼技術。算法
出於某些機緣,好比遇到了一個比較難以解決的 bug,開始深刻閱讀某種平常用到的技術的內部原理,從而開始發現更多本身所不知道的東西,並開始對各類技術的背後實現產生興趣,慢慢創建起一個相對完備的知識體系,對某個領域的全部的相關技術都可以如數家珍通常的講出來,第一次開始有一種「時間不夠用」的無力感,面對浩如繁星的開源/閉源代碼量深深感受到本身的眇小,愈來愈不肯意去輕易重造一個輪子,真正懂得怎麼去評估一個開源技術的好壞。編程
忽然有一天,在鑽研某種技術的時候發現一種突破性的思路,而且經過謹慎調研後發現確實有實現出來的必要,因而就將大量的時間投入在實現理想的過程當中去,而且主動的用各類技術來提高本身的工做效率,最終拿出來的成果確實如預計通常站在了業界的最前沿。設計模式
當本身已經站在了業界這個領域的最前沿,除了繼續動手實現最核心的代碼,還找到了將來三年的發展方向,而且第一次勇敢的自我否認拋棄了本身原先的想法。架構
若是長期不寫代碼必定會讓本身的水平降低,若是長期只作當前級別如下的事情也可能會退化。絕對不是說「會想」了就能夠天天冥想、指點江山,本身不動手就很容易被後來者超越而且開始固步自封,從「會想」變成自覺得是,退化到以前的階段。工具
杜歡認爲他目前一直停留在「會寫」的階段,甚至有可能已經退化到了「會看」階段,距離「會想」還很是的遠。我看完後感受本身在「會看」和「會寫」中徘徊,也遠沒達到「會想」的階段。學習
很是多的程序員停留在「會用」的階段,知足於可以解決問題,還沒能看的更深更遠。在「會用」的階段很容易產生一種無所不能的錯覺,以爲已經沒什麼功能實現不了,開始重複造一些並不怎麼好的輪子,造輪子以前甚至都沒有去仔細研究過業界最早進的技術實現細節,若是一直處在這種錯覺之中,基本上就很難再成長了。其實這種現象在大公司中也常出現,不少程序員僅止步於寫代碼的初級階段,仍是很是惋惜的。google
在進入「會看」以後會有一段很是長的痛苦期,這段時間裏會很是感受一我的的眇小,既沒有時間去窮盡全部技術細節,也沒有能力去找到前人沒有嘗試過的突破性創新,簡直是一種煎熬。有很多業界大牛就停留在這個階段,迷失在各類細節之中,成爲一個知識豐富但缺少創造力的人。
我最近認識了一些新朋友,是一些熱愛折騰的年輕人@doodlewind、@工業聚,我關注了他們的一些動態,並在和他們交流技術的時候明顯感受到技術視野和思路被打開,很是看好他們。雖然我如今在公司也作了一些技術管理的工做,時間精力被分配了一些,但也但願本身也能一直保持着持續的技術學習,在技術這條路上繼續深耕。
但願全部程序員都能筆耕不輟,向着下一個階段進發。