懵懂
剛開始學習編程或學習一種新技術的時候,會有種霧裏看花的感覺,似懂非懂,就算記住了也不會用。要突破這個階段的方法就是“練習”,通過各種項目讓自己熟練起來,做到任何一個不太難的業務需求可以快速想到解決方案並且開始動手實現。
會用
通過 google、stackoverflow、各種專業社區、各種文章等渠道,自己慢慢會發現更大的世界並對這個世界中各種技術產生了興趣,理解一個簡單的新技術不再成爲自己的瓶頸,自己慢慢可以駕馭非常多的工具、組件、庫、設計模式、算法、語言等,主動不斷擴大自己的視野,嘗試在項目中使用各種新東西,對引入一個新技術開始變得非常興奮,最終可以做到快速的吸收並理解一個新技術的用法,也知道什麼時候該用什麼技術。
會看
出於某些機緣,比如遇到了一個比較難以解決的 bug,開始深入閱讀某種日常用到的技術的內部原理,從而開始發現更多自己所不知道的東西,並開始對各種技術的背後實現產生興趣,慢慢建立起一個相對完備的知識體系,對某個領域的所有的相關技術都能夠如數家珍一般的講出來,第一次開始有一種“時間不夠用”的無力感,面對浩如繁星的開源/閉源代碼量深深感覺到自己的渺小,越來越不願意去輕易重造一個輪子,真正懂得怎麼去評估一個開源技術的好壞。
會寫
突然有一天,在鑽研某種技術的時候發現一種突破性的思路,並且通過謹慎調研後發現確實有實現出來的必要,於是就將大量的時間投入在實現理想的過程中去,並且主動的用各種技術來提升自己的工作效率,最終拿出來的成果確實如預計一般站在了業界的最前沿。
會想
當自己已經站在了業界這個領域的最前沿,除了繼續動手實現最核心的代碼,還找到了未來三年的發展方向,並且第一次勇敢的自我否定拋棄了自己原先的想法。
總結
如果長期不寫代碼一定會讓自己的水平下降,如果長期只做當前級別以下的事情也可能會退化。絕對不是說“會想”了就可以每天冥想、指點江山,自己不動手就很容易被後來者超越並且開始固步自封,從“會想”變成自以爲是,退化到之前的階段。
非常多的程序員停留在“會用”的階段,滿足於能夠解決問題,還沒能看的更深更遠。在“會用”的階段很容易產生一種無所不能的錯覺,覺得已經沒什麼功能實現不了,開始重複造一些並不怎麼好的輪子,造輪子之前甚至都沒有去仔細研究過業界最先進的技術實現細節,如果一直處在這種錯覺之中,基本上就很難再成長了。其實這種現象在大公司中也常出現,很多程序員僅止步於寫代碼的初級階段,還是非常可惜的。
在進入“會看”之後會有一段非常長的痛苦期,這段時間裏會非常感覺一個人的渺小,既沒有時間去窮盡所有技術細節,也沒有能力去找到前人沒有嘗試過的突破性創新,簡直是一種煎熬。有不少業界大牛就停留在這個階段,迷失在各種細節之中,成爲一個知識豐富但缺乏創造力的人。