【導讀】:學習者綜合徵的主要表現:學而不用,不停學習,卻沒有真正實際應用知識來做東西。如果過去的一年裡,學習的語言或框架超過三個,那可能已經感染學習者綜合徵了。Web 開發是重災區咯。
你有學習者綜合徵嗎?
好吧,這本不是什麼值得說道的事兒,但我注意到最近出現了一種行為趨勢,尤其是在技術和軟體開發領域。我不知道它的確切名字,就暫且稱之為「學習者綜合徵」吧。它描述的是一種行為特徵:那些“感染者”會不停地學習新知識,卻從不真正地去應用它們。
這個綜合徵的高發區在 Web 開發領域。最近幾年我注意到, Web 框架的數量有了顯著的增長。下圖展示了一個大致的數量。
來源: https://github.com/mraible/history-of-web-frameworks-timeline
你看,過去的 5 年內,出現了大量的框架。我還注意到,Web 開發者都希望能瞭解並掌握一定數量的框架,這看起來是一種榮譽,並能代表他們的成就。那是什麼造成了現在這種局面哪?
我本人也飽受學習者綜合徵的困擾,我必須站出來對抗它。學習一門新的語言或技術,對我來說通常是一個有趣的經歷。我發現自己在構建簡單的 Web 應用程式時,會用到以下框架:
- Go
- TypeScript
- NodeJS
- React
- Angular
- Spring
- … x100
這個列表還在不斷更新。我建立了許多 todo 應用程式,已經遠超我願意承認的數量。我現在甚至都認為自己很擅長做 todo 應用程式,恩?這點可能要放到我的簡歷上。
面試官:你有實際做出一些東西?
我:基本上沒有,但你可以從我的檔案看到,我做了許多 todo mvc web 應用程式,是用 NodeJS 的一個同構 react 伺服器建立的。
要成為一名“優秀”的 Web 開發者,你需要了解並掌握許多技術(包括後端),這是眾多技術帶來的最大問題。但我認為這一點也不公平。幾年前,前端和後端的界限十分清楚;而今天,這條界限已經模糊了,甚至不存在了。前端和後端現在已經合併,稱之為“全棧(full-stack)”。這聽起來更像是一個狡猾的藉口/說辭,一名全棧工程師需要同時處理前端和後端兩個方面,工作量反而翻倍了。
我自己對後端技術更感興趣,但隨著異構伺服器的興起,我發現自己也經常為前端編寫程式碼。如果你不熟悉同構伺服器,下圖給你舉了個例子。(譯註:與異構相對,同構 JavaScript 應用指的是用 JavaScript 編寫的應用,能夠同時執行於客戶端和伺服器。這也讓在客戶端和伺服器之間共享程式碼變成一種更普遍自然的選擇。)
我覺得,當我學習了多種框架和技術時,我運用它們來做出有價值東西的能力會降低。這是因為我花在學習上的時間,超過了做東西所用的時間。如果我開始將時間投入做東西,我感覺會錯過了學習新技術的時機,甚至擔心被別人超過,而跟不上時代的潮流。
我認為解決這一切的辦法,是找到一個平衡點。你必須專注於某一項技術,並且圍繞它來分配你的時間。當然,你也可以學習新技術,但每天花在上面的時間不能超過一小時。你需要保證它只能是你的興趣愛好,而不是一個會上癮的壞習慣。如果在工作中你只使用一種技術,此時學習者綜合徵似乎更明顯,因為我們大部分的業餘時間都花在學習新技術上,而不是用於做東西。不過當你在一個能提升學習的地方工作,那在兩方面都能做到最好。
我建議你現在退後一步並思考一下,過去的一年中,你學習了多少新語言或新框架?你建立了多少 todo 應用程式?如果超過 3 個,那你可能“學得太多了”。當然,你可以說這是因為你熱衷於學習(新知識),但我覺得對於更多人而言,將時間專注於一門技術上能帶來更大的收益。