兩招讓你成為牛X的T型人才

T型人才

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

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

我理解這位朋友的問題是:工作中該如何發(fā)現(xiàn)自己要學什么,怎樣構建自己的技能樹。這是一個非常重要的問題,假如你不知道要學什么,那一旦你工作不那么忙時就會覺得無聊,只能通過瀏覽新聞、看小說、打游戲等方式消磨時間消耗自己。這對自己的成長和增值非常不利。所以,這次咱就來聊聊工作中學什么這個話題——這也是很多朋友在我訂閱號“程序視界”里頻繁問題的話題。

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

廣度學習

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

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

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

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

深度學習

大多數(shù)時候我們會使用一門語言和一兩種技術框架進行軟件產品的開發(fā),此時就是縱向深入學習的好機會。

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

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

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

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

小結

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

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

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


相關閱讀

更多文章請關注我。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容