我之前寫過幾篇關于微服務的文章,讀者們看完反饋不錯,
微服務的架構模式(上)
微服務的架構模式(中)
微服務的架構模式(下)
恕我直言,微服務挺好,但不適合你
同時,也有讀者說:
看完文章是懂了,但是自己學的時候,還是有點懵,不知道怎么下手
授人以魚不如授人以漁,
魚能解決一時之饑,卻不能解決長久之饑,讀者們需要知識,同時更需要學習知識的方法,
所以,這篇文章就說說漁,正文開始,
程式員的某些技術也會過時,就像冰箱里的食物,長期不拿出來吃掉,就會過期和腐敗,所以,程式員這個行業,需要不斷的學習,
我現在已經從程式員轉成技術管理了,管理 100 多人團隊每天一堆事……還是寫代碼、研究技術的日子比較純粹,沒有那么多浪費時間的無聊會議,沒有那么多技術無關的事,
雖然如此,但是技術也不能丟,每當出現非常流行的新技術,或者團隊技術堆疊準備升級,我都必須去學習這些新技術,爭取在短時間內,能把控住技術堆疊升級帶來的風險,
正是在這種形勢下,我也從中琢磨出了一些快速學習的套路和技巧,我分享出來,希望拋磚引玉,能對后來者有一些幫助和啟發,
第一步:技術堆疊需要先分類
當想要學習任何新技術的時候,我經常做的第一件事就是
對要學習的技術領域去做一個分類
比如,幾年前,公司的系統要改造成微服務架構,那我就必須去學習微服務的這套技術堆疊,但是,一學我才發現,微服務的技術堆疊怎么這么多……
這時候,就要對微服務的技術堆疊進行分類,目的也很簡單,就是為了對學習作出一個規劃,根據技術堆疊的分類,作出一個有著明顯輕重緩急的學習計劃,
就微服務而言,我將其劃分為如下幾類:
- 微服務的設計
- 微服務的原理
- 微服務的架構
- 微服務的開發框架和代碼規范
- 微服務的安全
- 微服務的運維
分完類之后,再結合當時的情況,我的計劃是這樣的,
1.
首先,由于我是從零開始,需要設計到落地一條龍,所以,我決定優先摸熟微服務的設計,
這里我會找書看,通過看書弄清楚概念和知道怎么劃分業務,為什么是看書不是看網上文章,原因后面會說,
2.
然后,再根據落地的需要,去學習微服務的架構最佳實踐以及微服務的開發框架和代碼規范,學好這些內容,等以后把微服務落地的時候都用得上,
學的時候,先不需要去深入語法細節,我只需要明白框架的核心思想和代碼規范,把控技術落地不會脫離大方向,技術的細節可以等后面真正寫代碼的時候,再和同事們一起去鉆研,
3.
在微服務落地后,就需要微服務的運維了,而微服務的運維,其實可以淺嘗輒止的學習,重點是要知道微服務的運維組件和運維常規作業流程,
公司有專門運維團隊的,剩下的作業交給運維同事就好了,
4.
在微服務運維后,我感覺只靠學習市面上的微服務套路肯定還不太夠,如果要讓微服務能更好的適合我們自己的業務,還需要根據底層微服務的原理,去搞透微服務最佳實踐為何這樣做的原因,
很顯然,這塊的學習難度非常大,需要不少知識儲備,
但是,再難學也值得學,因為極有可能我們需要結合自己公司的業務,對微服務作出個性化的定制,
建議:找幾個兄弟一起組隊學習原理這塊,
5.
微服務的安全,主要是網關的安全措施,大部分公司都有安全團隊,這部分交給他們負責就好了,
所以,再經過分門別類之后,我們就很清晰了,
微服務的學習順序就是:
微服務設計 > 微服務架構 > 微服務開發框架和代碼規范 > 微服務原理 > 微服務運維 > 微服務安全
學習內容的詳盡程度則是:
- 微服務設計、微服務原理需要多讀幾本書,尤其是原理,要深入學習 + 和牛人廣泛討論;
- 其他部分的學習,優先級沒那么高,
第二步:選擇合適的書
當我們根據技術堆疊分類定出學習計劃后,接下來就要選擇合適的書籍學習了,
這里需要強調一下,以我的經驗,對一門全新的技術學習,不建議完全通過看網上的文章,
因為網上的文章有好也有壞,壞的是真坑人,而且作為初學者,你沒有什么經驗,不知道文章是否有錯誤,
我舉個例子,網上的鏈路跟蹤,尤其講 SkyWalking 的相關文章,很多都是錯的,如果對鏈路跟蹤不熟悉,就很難分辨出錯誤,到時候不慎把錯誤的觀念用到了系統里,再改正就非常費勁了,
所以,入門階段還是老老實實的找一些權威書籍看吧,
但是,權威書籍也有問題,因為書的受眾不一樣,如果一些書讀的不合適,比如,選的書籍講的都是過時的技術,又或者有的書籍講的非常晦澀,理解起來非常費勁,那這些書就不合適我們去讀,讀了要么浪費時間,要么錯用過時的技術,
怎么選擇合適的書?
比如,我想學微服務設計,我發現微服務設計和領域驅動設計又是緊密關聯的,領域驅動設計又有很多的書,有講理論的,有講實戰的,甚至還有混雜著其他技術堆疊的,
我當時需要的是理論 + 實戰的書,并且最好有在已有專案移植到微服務的相關案例的書,
接下來就是去網上看書評了,一般來說,現在豆瓣、當當、京東的書評和書籍簡介都比較不錯了,
不過,我更偏好英文書一些,所以,當時根據亞馬遜的評價找到了一本《Implementing Domain-Driven Design》,這本書后來翻譯成中文了,叫《實作領域驅動設計》—— 我粗看過,我認為翻譯的不好,
事后證明,這本書確實解決了我的問題,讓我摸清楚了域、子域、邊界背景關系之類的關鍵概念,
第三步:讀書需要技巧
選完了書,就要去讀書,但是,任何一本 IT 書籍,可都是不薄的,
像我前面舉例的《Implementing Domain-Driven Design》,這本書就是六百多頁的厚度,如果一天讀 20 頁,需要 30 多天,這個時間就太慢了,所以,就需要技巧:
先速讀后精讀
一般來說,對于六百多頁的書,尤其是講解的概念穿插實戰的,應該開始的時候,快速閱讀,我大概一天是 100 - 200 頁左右,時間控制在 4 個小時,連續不斷的閱讀,
這種閱讀,看上去很難,其實是建立在快速的跳讀和略讀上的,讀取的時候,只找關鍵詞,尤其是名詞,
找到關鍵詞后,一般就要提取知識點,三五個關鍵詞,就能提取出一個關鍵知識點來,遇到不會的,也可以當做關鍵詞提取出來,
關鍵詞往往和小章節的標題能對應上,根據關鍵詞,找到章節中的解釋,看明白了,就能跳過別的章節內容,
速讀,弄懂即可,不需要把所有的內容都讀完,
這樣,一本六百多頁的書,大概一周就讀完了,
讀完后,別著急,然后就需要根據你提取的關鍵詞和知識點去做精讀了,
這時候,由于書籍的關鍵點已經提取出來了,你只需要精心學習提取的知識即可,
一般而言,知識點提取后,需要精讀的內容往往只有原來整體內容的幾分之一,
我精讀這本書大概花了一周左右,
在精讀期間,如果有一些發現理解不足的,還需要去查一些別的資料來補充理解,或者動手實踐,或者和別人一起交流,除了講解自己的看法和理解,也需要能汲取別人的看法和理解,
精讀的最佳結果是,你能用自己的話把原來的概念和別人講清楚,
這樣,總的算下來,讀這本六百多頁的書需要花十天、半個月的時間,
說起來,其實大家可以問問身邊認識大廠的高手,你會發現,他們大多數人讀書,都是我這樣類似的讀法,確實非常有用,
第四步:落地實踐
書讀完了,肯定有很多不足的地方,這時候,就需要通過技術實踐去加深理解、彌補不足,
實踐分為兩種:
1. 書中的實驗
大部分技術書籍,大部分都有些對應的課后習題或者實驗,
因為這些實驗都是附屬在某些具體講解、某些概念的章節后,針對性非常強,所以,如果能不看書,根據自己的理解,去順利把實踐做出來,那就證明,確實學習到位了,可以把學到的東西用到實戰中了,
2. 實際中的場景
當書中的實驗都做完了,就可以考慮真實的專案場景了,
可以先根據作業需求,打造出一個包含了所學新技術全堆疊的 Demo 出來,
比如,微服務,就可以搭建一套,有網關、有配置中心、有鏈路跟蹤的 Demo,
Demo 搭建之后,還可以采取一些測驗用例對這個 Demo 進行測驗,不管是業務測驗還是性能壓測,都要進行,
當 Demo 的指標達到要求后,就可以考慮抽取出一個不重要的專案進行新技術堆疊的嘗試了,
總結
如上所說,這就是我日常學習技術的幾板斧:
-
我是先通過對要學習的技術分類,去減少學習負擔,
-
再去根據技術分類,提取出要解決的一些問題,
-
然后,根據問題去預測出想要讀的書的內容范圍,又根據這些范圍,去各種賣書、評書網站去選書,
-
選書完,采用一些讀書技巧,去快速學習,
-
學習完后,必須實踐,加深理解,如此,完成一整套新技術學習,
原創不易,看完覺得有幫助,來個三連支持,
你好,我是四猿外,
一家上市公司的技術總監,管理的技術團隊一百余人,
我從一名非計算機專業的畢業生,轉行到程式員,一路打拼,一路成長,
我會把自己的成長故事寫成文章,把枯燥的技術文章寫成故事,
歡迎關注我的公眾號,關注后可以領取高并發、演算法學習資料,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298282.html
標籤:架構設計
上一篇:從0開始學架構之架構是指什么
