我老是感受本身在盲目的學習一些看上去很火熱的技術。好比 React Native,Flutter 等等。我家裏堆了各類編程語言的入門書籍,有 Go 的,有 Erlang 的,有 c++ 的,還有 JavaScript 和 CSS。python
我到如今都搞不懂這個事情。我連主流的 Python 語言都沒有掌握清楚爲何要去看這麼多語言的入門書呢?我在工做和生活中根本就用不到他們。只是由於在某一篇文章中看到 Go 語言是趨勢,Erlang 的穩定性無人能敵,c++ 你永遠都讓不開等等。這些東西我都研究過,但是到如今爲止尚未用他們寫過一行有用的代碼。linux
相信不少童鞋都有相似的狀況。程序員學習新技術的想法是件大好事,總比不思進取的思想狀態要好,可結果卻並不必定比原地踏步強,由於不必定有用,會形成技術浪費。c++
浪費的事情咱們生活中作得不少。咱們想要買更貴的手機,由於 cpu 更強,但是不少人並不必定須要那麼強的 cpu。原本只須要買個上網本看看電視卻要買個工做站。咱們的理由天然也很充足:萬一有一天要用到呢?萬一有一天我須要玩遊戲呢?萬一有一天我要 3D 渲染呢?追求新技術的理由也一樣:萬一之後它火了,我就走在了時代的前面。程序員
這種狀況確實有可能發生,前提是你能將這門新技術研究得很透徹,比別人更懂,不然那些基礎更強的能用很短的時間就能超越你。web
我想在學習新技術以前應該作幾件事情:算法
先了解本身的需求是什麼?在將來 3-5 年內的主要工做是 python 開發,那就應該圍繞這個需求來學習。首先是 Python 的高級特性和工程設計思想,這些都落實在具體的實踐上,須要積累大量項目經驗,能夠本身選擇一些 side project 練習。本身作的時候還應該參考優秀的開源框架,看看別人的設計思路和實現方式。docker
須要瞭解 web 原理。像 HTTP 協議、TCP/IP 協議都須要精通,這樣才能站在更基礎的層面來進行開發,不是在網上找幾套解決方案就能作出一套好的系統。看完基本經典書籍之後,要學會用抓包工具來分析流量走向,定位問題的能力。編程
須要性能優化。要熟練掌握各類算法和數據結構,知道經常使用算法的應用場景和複雜度。學好算法基礎就要去看 python 的各類內置函數實現他們的性能如何,你寫出來的代碼性能如何。windows
性能還須要涉獵併發和異步知識。這些東西每每是操做層面的,能夠先熟悉多進程、多線程和協程等在 python 的應用,消息隊列等各類異步操做的實現,可是早晚仍是要深刻研究操做系統是怎麼去進行資源調度的,《深刻理解計算機系統》就該去看一看了。性能優化
在這個過程當中,還應該看一看《重構》《程序員修煉之道》這樣的方法論書籍,爭取能造成一套本身的編碼和改進體系。
在工做中應該儘可能避免的問題是原地踏步、google 編程,此次搜索完一套方案下次仍是不知道,幾年作的都是重複的事情。盲目追求新技術,拼命加班改 bug 都是技術領域盡力要避免的陷阱,看起來很是努力,其實是在原地不動。
學習應該是有目的的,不是看着哪一個火就去學哪一個。小時候都學過撿了芝麻丟了西瓜的課文,如今正是不停的在重蹈覆轍,學這個,學那個,最後本身的真正專業都沒有作好了。一門技術的探究最終都會落到基礎知識上,編譯原理、操做系統、算法和數據結構。若是學好了一門技術真正落實到了基礎上,去學另外一門技術不該該是很難的事情。
在肯定了方向之後把重心放在本身的方向上,平時能夠花少許的時間來關注新技術,看看他們的應用領域和簡單實現。喜歡玩手機並不表明每一個品牌的手機都要買回來每天使用,那是職業測評師乾的事,咱們的思路是買一個牌子的當主力機,一個當備用機,其餘的偶爾去專賣店感覺一下就能夠了。
在項目的技術選型上也應該遵循以需求爲重心的原則。若是不是高併發的項目爲何要使用熱門語言 Go 呢?用 python 快速實現行不行?如今的技術團隊有幾我的懂這門語言,外面招人好招嗎?現有人員培訓須要多久呢?必定要用微服務嗎?必定要用docker嗎?不少都沒有必要的!只是本身給本身挖的一個一個陷阱,把整個團隊推動去。
接下來是怎麼實現的問題。若是要忽然去學很是枯燥和底層的操做系統原理,確定會兩眼一抹黑。忽然從 windows 系統換到 linux 系統也會讓人手足無措。一個可行性很高的方案就是漸進式改變。和菜頭在一篇文章中寫道:若是一家餐廳幾十年的口味都不變,那確定逃不過關門的命運。那些說本身堅持不變的人或者產品每每在發生悄無聲息的改變,他們的變化如此微小,以致於你根本察覺不到,多少年以來,微信添加了多少微小的功能,不少都隱藏在 UI 之下,咱們像尋寶同樣一點點的發現,用習慣了之後就感受它們從一開始就被設計出來了同樣。
要學好操做系統不必定要全心全意去攻克每個知識點,在工做中接觸到了多線程,先看看線程消耗,鎖機制和信號量行不行?一點一點來,天天進步一點。人每每會高估短時間能力而低估長期能力,這是思惟和眼光的侷限性致使的。
學習是個很是講究方法論的事情,盲目的學習是不行的。都是參加高考,爲何那些看上去努力的學生大多成績平平,每天打籃球、約會的就考上清華北大呢?智商是一方面,不過我到如今都不相信高考能到達人類平均智商的極限,估計方法是更加劇要的一面。
萬維鋼關於學習的話題我以爲是頗有意思的,歸納幾個要點是:按部就班、逃離溫馨區、重複的基礎訓練。最重要的是要造成整個體系和思惟,否則學到的知識都不是本身的。