架構師成長之路(6)--技術深度和廣度

 

一、技術的深度


說到技術深度,深到底多深才叫有深度,是不是技術鑽研的越就顯得越牛逼,那學一門技術要怎麼學才叫有深度的學?

學任何的知識都要形成一個體系,才能學得深,記得牢。功利性地,走馬觀花似的學習,很快就會忘記。

1、學習層次認知

我們先看看加涅定義學習的層次:

陌生——辨別——概念——規則(方法,套路等)——高級規則(解決問題)。

對應到我們技術,在我們技術簡歷上面,經常出現的詞彙:

瞭解——熟悉——掌握——精通——專家,這就是由淺入深的形象描述。

1、瞭解:入門,簡單的認知和記憶,表示知道。是最低水平的認知學習結果。

2、熟悉:概念,瞭解概念得清楚,清楚地知道概念;(對某種技術或學問)側重於知道得清楚,比了解更進一層。

2、掌握:規則、應用規則到實踐,是在熟悉的基礎上能充分加以運用。

3、精通:高級規則,深入底層。

4、專家:擴展創新

詳細請看:架構師成長之路(5)--如何獲取知識(學習境界)(方法)

2、技術深入程度

參考骨灰級大佬的觀點(來自極客時間的《左耳聽風》專欄):

1、瞭解:這個技術出現的背景、初衷和要達到什麼樣的目標或是要解決什麼樣的問題。這個問題非常關鍵,也就是說,你在學習一個技術的時候,需要知道這個技術的成因和目標,也就是這個技術的靈魂。如果不知道這些的話,那麼你會看不懂這個技術的一些設計理念。這個其實就是回答:“我是誰”,“從哪來?” “到哪去”的三個哲學問題。

2. 熟悉: 這個技術的優勢和劣勢分別是什麼,或者說,這個技術的 trade-off 是什麼。任何技術都有其好壞,在解決一個問題的時候,也會帶來新的問題。另外,一般來說,任何設計都有 trade-off(要什麼和不要什麼),所以,你要清楚這個技術的優勢和劣勢,以及帶來的挑戰。

3. 掌握:這個技術適用的場景並應用實踐。任何技術都有其適用的場景,離開了這個場景,這個技術可能會有很多槽點,所以學習技術不但要知道這個技術是什麼,還要知道其適用的場景。沒有任何一個技術是普適的。注意,所謂場景一般分別兩個,一個是業務場景,一個是技術場景。

4. 掌握:技術的組成部分和關鍵點。這是技術的核心思想和核心組件了,也是這個技術的靈魂所在了。學習技術的核心部分是快速掌握的關鍵。

5. 精通:技術的底層原理、關鍵實現、本質。任何一個技術都有其底層的關鍵基礎技術,這些關鍵技術很有可能也是其它技術的關鍵基礎技術。所以,學習這些關鍵的基礎底層技術,可以讓你未來很快地掌握其它技術。

6.精通:已有的實現和它之間的對比。一般來說,任何一個技術都會有不同的實現,不同的實現都會有不同的側重。學習不同的實現,可以讓你得到不同的想法和思路,對於開闊思維,深入細節是非常重要的。

7、專家:擴張創新。

 

3、技術實踐和從問題中深入學習


要真正的精通一門技術,最終還要通過實踐來深入。游泳教練,必定游泳水平好,因爲這些都是實踐性很強的工作。書上學來終覺淺,絕知此事要躬行。

在實踐中,遇到問題,不僅只解決問題,還要對問題刨根問底,深入挖掘問題發生的根本原因,這樣可以系統性地修復問題,從而使其永久消失。從問題本身着手,沿着因果關係鏈條,順藤摸瓜,穿越不同的抽象層面,直至找出原有問題的根本原因.

我們中國古代以來就有“打破沙鍋問到底”的習慣;“打破沙鍋問到底”是一句俗語,形象表達了鍥而不捨、不斷探索的精神,這是人們常掛在嘴邊的一句口頭禪。

我們遇到問題,從外到裏,逐層分析:
1、問題表象是什麼
2、直接原因是什麼?
3、中間原因是什麼?
4、根本原因是什麼?

真正的解決問題必須找出問題的根本原因,如果只解決問題,而不深入問題背後的根本原因,這門技術也是不夠深入。

比如:

問題:java應用出現超時抖動?

1)解決:Java應用出現FGC. (增大 -Xmx  -Xms 內存設置)

2)、直接原因:流量激增?  長時間運行? 代碼問題導致佔用內存對象不釋放?。。。

3)、中間原因:流量沒有做預警? 研發人員能力問題?

4)、根本原因:JVM虛擬機的基本原理?GC機制? JVM性能監控?。。。。

 

 

4、挖掘本質


什麼是本質?

將世界萬物理解爲原子,將整個互聯網理解成0和1,這倒的確是非常本質了,不過並不能解答任何問題。從問題看本質,實質上是一個從表層逐步深入的過程。

在《技術的本質》這本書中,著名的經濟學家布萊恩闡明瞭技術的本質及其進化機制,其主要表達了以下三個核心觀點:

1.幾乎所有技術都來自於此前已經存在的技術,就好比C、Java語言就是調動了多個功能最終實現一個功能。

2.技術都是由技術形成的,這句話可能有點難以理解。舉例來說,火車的發明其實包含了多種技術,比如蒸汽技術,但蒸汽技術又可以被分解爲燃料技術、動力技術等等。

3.技術和生物一樣都會進化,但是生物的進化多來自變異,而技術的進化則來自不同技術組合所發生的變化。

布蘭恩強調,技術並不會憑空發生。關於計算機技術,無論從前端還是後端,無論是過時還是被炒得很熱,無論是雲計算還是SAAS等,其本質技術都來自於此前已經存在的技術,都要求具備良好的算法和數據結構,在此基礎上不斷衍生出許多新技術。

 如果是IT技術人,能深入學好基礎知識《計算機組成原理》、《操作系統》、《數據結構》、《計算機網絡》,其他技術都很快學好。
 

 

 

二、技術的廣度


一般來說,我們都希望自己的技術既有廣度又有深度,但事實上,魚與熊掌不可兼得,我們人的一生其實很短暫,在這有限的時間和精力裏,我們不可能掌握所有的技術,而且技術的更新速度很快,就如同浩瀚的大海一樣。全棧的工程師相對來說比較少一點,如果掌握的廣度上寬一點,可能深度上就相對會淺一點。

1、我們的糾結?

1) 、隨着社會分工日趨細緻,技術日新月異,我們發現技術在廣度和深度上越來越難以平衡?

2) 、想深度發展自己的技術成爲某領域專家,心裏卻不甘心亦或擔心自己技術會被淘汰?

3)、想廣度發展自己的技術讓視野變大,卻常常感覺精疲力盡,熱門技術都懂一點卻又不深入,感覺啥都會又啥也不會。

        會不會成爲什麼都懂,但什麼都不精的人?

2、技術廣度

1、創業公司或者初創公司,是比較喜歡既有廣度的技術人才,因爲這個可以面面俱到。

2、而大公司一般都是要求技術深度的人才,因爲大公司只要求一個螺絲釘。

 

 

三、如何權衡技術的廣度和深度?


在快節奏的時代,不進則退,技術人員需要不停地吸納新知識。到底選擇技術廣度學習,還是選擇垂直深度?

俗話說,技多不壓身。對於一個想在事業上有所發展的人來說,你還應放眼未來,多學幾門技藝,不把希望只押在一個地方,這纔是明智的選擇。如同猶太人有一個不把雞蛋都放在同一個籃子裏的道理,就是用此來分攤現實風險。

下面具體來說說要如何權衡自己的廣度和深度:

1.廣度爲輔,深度爲主。人生、時間有限,我們不可能精通所有的技術,但我們可以努力地精通工作相關的、有前景的、感興趣的技術。

2.基礎紮實,深入底層。只是解決工作上的問題是遠遠不夠的,應該在工作之餘去學習更底層的技術,所謂知其然還得知其所以然。比如說我們使用java做開發,僅僅會使用是不夠的,我們還得再理解JVM的原理等,多多思考:爲什麼要這樣用?怎麼實現的?還有更好的辦法去實現嗎?

3.觸類旁通,適度學習。學任何的知識都要形成一個體系,才能學得深,記得牢。

四、如何正確的做一個技術 T 型人才?


衡技術的廣度和深度,更需要有一個正確的學習方式,端正的態度,而目標是做一個技術 T 型人才。

什麼是T型人才呢?

T型人才是指按知識結構區分出來的一種新型人才類型。用字母“T”來表示他們的知識結構特點。“—”表示有廣博的知識面,“|”表示知識的深度。兩者的結合,既有較深的專業知識,又有廣博的知識面,這類集深與博於一身的人才。

如何成爲一個T型人才,大家常用的一種方式就是輪崗。輪崗的意思是,當你成爲某一方面的專家後,跳出自己的舒適區,轉而到一個新的技術領域從頭學起。輪崗的意思絕不是在一個技術方向上三心二意,每一次轉換技術方向,都應該是對前一個技術方向至少做到熟練掌握的程度才行,而我自己覺得,不經過1-2年的實踐,很難稱作熟練掌握。所以,輪崗的行爲是低頻的。

如何正確的做一個技術 T 型人才,這兒有一些建議:

1.制定自己的職業發展路線;
2.技術和興趣結合;
3.選擇熱門、成熟的技術。

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章