天天看點

兩招讓你成為牛X的T型人才廣度學習深度學習小結

兩招讓你成為牛X的T型人才廣度學習深度學習小結

有個小夥伴在微信上問我:

我剛工作半年,有時候對于Java的發展方向有點迷茫,Java的範圍是在是太廣了,我有時候會不知道從哪開始入手,我想問一下,您有什麼好的建議嗎?

我了解這位朋友的問題是:工作中該如何發現自己要學什麼,怎樣建構自己的技能樹。這是一個非常重要的問題,假如你不知道要學什麼,那一旦你工作不那麼忙時就會覺得無聊,隻能通過浏覽新聞、看小說、打遊戲等方式消磨時間消耗自己。這對自己的成長和增值非常不利。是以,這次咱就來聊聊工作中學什麼這個話題——這也是很多人在我的訂閱号“程式視界”裡頻繁問起的話題。

根據我的經驗,在開發過程中,有兩種學習政策:一種是橫向拓展,也可以稱之為廣度學習;一種是縱向深入,也可以稱之為深度學習。如果能貫徹這兩種學習政策,就會慢慢形成程式員最理想的技能結構——T型,即在橫向上熟悉足夠多的知識和技能,在縱向上又精通某一領域。簡單說就是一專多能。

廣度學習

兩招讓你成為牛X的T型人才廣度學習深度學習小結

以C++語言為例,如果你做網絡方面的開發,就會遇到選擇哪個架構的問題,libevent、ACE、Asio還是Qt Network?如果你做GUI開發,可能會在Qt、CEF、MFC、wxWidgets、DirectUI之間做個選擇。

選擇和了解的過程,是個人廣度學習的過程。你會快速了解每一種架構的優缺點,會搭建環境,會寫一些Demo來對關鍵技術點和需求做驗證……最終會根據文檔和實驗結果來做出實際的選擇。這個過程非常難得,會快速拓寬個人的知識面。建議把每次了解到的技術架構都記錄下來,有閑暇時可以進一步學習。

即便你不是預研技術方案的工程師,而是别人定方案你來開發,也可以有意地讓自己經曆這個選擇過程,隻需要問自己一個問題即可:為什麼用A而不是B或C?

其實不單單是大的技術架構選擇,小到某個頁面要用的某個元素,都會經曆選擇的過程,有心,就可以用這種以點帶面的政策學習到更多。

深度學習

大多數時候我們會使用一門語言和一兩種技術架構進行軟體産品的開發,此時就是縱向深入學習的好機會。

對技術架構的學習,大體分三個階段:

  1. 基礎開發,主要是了解API、基于API完成應用
  2. 熟悉核心及原理,主要是了解架構的設計原理,閱讀源碼,洞悉内在機理
  3. 優化架構,主要是針對架構的已有功能的不足進行完善、優化,或者使用架構提供的機制擴充架構功能,或者對架構進行定制,讓它适合特定情境

我以Qt為例畫了張圖,供參考:

兩招讓你成為牛X的T型人才廣度學習深度學習小結

很多時候我們經曆了第一個階段——能夠使用API進行簡單開發——之後就跑别的地方去了(工作需要),然後就把這個架構撂那裡不管了,然後就一直停留在那個階段。建議有時間的話梳理下自己用過的技術,挑出當下工作中還在用的那項,往深裡鑽,去熟悉原理熟悉核心,有可能的話,也可以優化、擴充或定制。惟其如此,才能對一個架構真正掌握,才會有深度,才會在該項技術上形成自己的價值和競争力。

小結

不管是廣度學習還是深度學習,都是從實際需要出發的,是你工作中要用這門技術你不得不學。明白這點非常關鍵——你要用到某項技術時才會有學習的動力。是以,最好的學習時機就是一邊開發一邊學習,白天上班晚上學習,周内上班周末學習——在有明确目标時最有學習動力,在熱度還未退卻時學習效果最好。

如果你想學習與當下工作内容無關的知識和技能,投資自己的未來價值,那最好的辦法是給自己設計一個軟體産品(或者參與到别人的項目中),設定一個期限,用你想掌握的技術去完成它。用不到的知識,等于沒有,這就是這種說法背後的原理。

是以,沒有需求,要創造需求,沒有問題,要創造問題,有了需求和問題,學習才更有方向感和目的性,才會有持續下去的動力。如果你能主動創造目标和需求,那你很快就可以建立自己的技能樹并讓這棵樹根深葉茂,你就會越來越值錢,也越來越能賺到更多的錢。

相關閱讀:

  • 這樣讀源碼,不牛X也難
  • 程式員這樣優化履歷,一投制勝
  • 程式員如何謀劃出月薪3萬
  • 這8種武器點亮程式員的個人品牌

更多文章(求職、加薪、職業選擇與發展),關注我的訂閱号“程式視界”:

兩招讓你成為牛X的T型人才廣度學習深度學習小結