有個(gè)小伙伴在微信上問我:
我剛工作半年别洪,有時(shí)候?qū)τ贘ava的發(fā)展方向有點(diǎn)迷茫,Java的范圍是在是太廣了姻乓,我有時(shí)候會不知道從哪開始入手嵌溢,我想問一下,您有什么好的建議嗎蹋岩?
我理解這位朋友的問題是:工作中該如何發(fā)現(xiàn)自己要學(xué)什么赖草,怎樣構(gòu)建自己的技能樹。這是一個(gè)非常重要的問題剪个,假如你不知道要學(xué)什么秧骑,那一旦你工作不那么忙時(shí)就會覺得無聊,只能通過瀏覽新聞扣囊、看小說乎折、打游戲等方式消磨時(shí)間消耗自己。這對自己的成長和增值非常不利侵歇。所以骂澄,這次咱就來聊聊工作中學(xué)什么這個(gè)話題——這也是很多朋友在我訂閱號“程序視界”里頻繁問題的話題。
根據(jù)我的經(jīng)驗(yàn)惕虑,在開發(fā)過程中坟冲,有兩種學(xué)習(xí)策略:一種是橫向拓展,也可以稱之為廣度學(xué)習(xí)溃蔫;一種是縱向深入健提,也可以稱之為深度學(xué)習(xí)。如果能貫徹這兩種學(xué)習(xí)策略伟叛,就會慢慢形成程序員最理想的技能結(jié)構(gòu)——T型私痹,即在橫向上熟悉足夠多的知識和技能,在縱向上又精通某一領(lǐng)域统刮。簡單說就是一專多能紊遵。
廣度學(xué)習(xí)
以C++語言為例,如果你做網(wǎng)絡(luò)方面的開發(fā)侥蒙,就會遇到選擇哪個(gè)框架的問題癞蚕,libevent、ACE辉哥、Asio還是Qt Network桦山?如果你做GUI開發(fā),可能會在Qt醋旦、CEF恒水、MFC、wxWidgets饲齐、DirectUI之間做個(gè)選擇钉凌。
選擇和了解的過程,是個(gè)人廣度學(xué)習(xí)的過程捂人。你會快速了解每一種框架的優(yōu)缺點(diǎn)御雕,會搭建環(huán)境矢沿,會寫一些Demo來對關(guān)鍵技術(shù)點(diǎn)和需求做驗(yàn)證……最終會根據(jù)文檔和實(shí)驗(yàn)結(jié)果來做出實(shí)際的選擇。這個(gè)過程非常難得酸纲,會快速拓寬個(gè)人的知識面捣鲸。建議把每次了解到的技術(shù)框架都記錄下來,有閑暇時(shí)可以進(jìn)一步學(xué)習(xí)闽坡。
即便你不是預(yù)研技術(shù)方案的工程師栽惶,而是別人定方案你來開發(fā),也可以有意地讓自己經(jīng)歷這個(gè)選擇過程疾嗅,只需要問自己一個(gè)問題即可:為什么用A而不是B或C外厂?
其實(shí)不單單是大的技術(shù)框架選擇,小到某個(gè)頁面要用的某個(gè)元素代承,都會經(jīng)歷選擇的過程汁蝶,有心,就可以用這種以點(diǎn)帶面的策略學(xué)習(xí)到更多论悴。
深度學(xué)習(xí)
大多數(shù)時(shí)候我們會使用一門語言和一兩種技術(shù)框架進(jìn)行軟件產(chǎn)品的開發(fā)掖棉,此時(shí)就是縱向深入學(xué)習(xí)的好機(jī)會。
對技術(shù)框架的學(xué)習(xí)意荤,大體分三個(gè)階段:
- 基礎(chǔ)開發(fā)啊片,主要是了解API只锻、基于API完成應(yīng)用
- 熟悉內(nèi)核及原理玖像,主要是了解框架的設(shè)計(jì)原理,閱讀源碼齐饮,洞悉內(nèi)在機(jī)理
- 優(yōu)化框架捐寥,主要是針對框架的已有功能的不足進(jìn)行完善、優(yōu)化祖驱,或者使用框架提供的機(jī)制擴(kuò)展框架功能握恳,或者對框架進(jìn)行定制,讓它適合特定情境
我以Qt為例畫了張圖捺僻,供參考:
很多時(shí)候我們經(jīng)歷了第一個(gè)階段——能夠使用API進(jìn)行簡單開發(fā)——之后就跑別的地方去了(工作需要)乡洼,然后就把這個(gè)框架撂那里不管了,然后就一直停留在那個(gè)階段匕坯。建議有時(shí)間的話梳理下自己用過的技術(shù)束昵,挑出當(dāng)下工作中還在用的那項(xiàng),往深里鉆葛峻,去熟悉原理熟悉內(nèi)核锹雏,有可能的話,也可以優(yōu)化术奖、擴(kuò)展或定制礁遵。惟其如此轻绞,才能對一個(gè)框架真正掌握,才會有深度佣耐,才會在該項(xiàng)技術(shù)上形成自己的價(jià)值和競爭力政勃。
小結(jié)
不管是廣度學(xué)習(xí)還是深度學(xué)習(xí),都是從實(shí)際需要出發(fā)的晰赞,是你工作中要用這門技術(shù)你不得不學(xué)稼病。明白這點(diǎn)非常關(guān)鍵——你要用到某項(xiàng)技術(shù)時(shí)才會有學(xué)習(xí)的動力。所以掖鱼,最好的學(xué)習(xí)時(shí)機(jī)就是一邊開發(fā)一邊學(xué)習(xí)然走,白天上班晚上學(xué)習(xí),周內(nèi)上班周末學(xué)習(xí)——在有明確目標(biāo)時(shí)最有學(xué)習(xí)動力戏挡,在熱度還未退卻時(shí)學(xué)習(xí)效果最好芍瑞。
如果你想學(xué)習(xí)與當(dāng)下工作內(nèi)容無關(guān)的知識和技能,投資自己的未來價(jià)值褐墅,那最好的辦法是給自己設(shè)計(jì)一個(gè)軟件產(chǎn)品(或者參與到別人的項(xiàng)目中)拆檬,設(shè)定一個(gè)期限,用你想掌握的技術(shù)去完成它妥凳。用不到的知識竟贯,等于沒有,這就是這種說法背后的原理逝钥。
所以屑那,沒有需求,要創(chuàng)造需求艘款,沒有問題持际,要創(chuàng)造問題,有了需求和問題哗咆,學(xué)習(xí)才更有方向感和目的性蜘欲,才會有持續(xù)下去的動力。如果你能主動創(chuàng)造目標(biāo)和需求晌柬,那你很快就可以建立自己的技能樹并讓這棵樹根深葉茂姥份,你就會越來越值錢,也越來越能賺到更多的錢年碘。
相關(guān)閱讀:
更多文章請關(guān)注我盛泡。