最近半年因?yàn)轫?xiàng)目清閑,做了很多自學(xué)計(jì)劃,很多都是心血來(lái)潮,也并沒(méi)有都堅(jiān)持下來(lái),比如學(xué)習(xí)C語(yǔ)言、學(xué)習(xí)Spring和web基礎(chǔ)知識(shí)、學(xué)習(xí)操作系統(tǒng)等。在這個(gè)過(guò)程中,突然意識(shí)到“心態(tài)”是學(xué)習(xí)中一個(gè)很重要的部分。程序員大部分是獨(dú)自學(xué)習(xí)的,很容易進(jìn)入一個(gè)懶惰或焦慮的極端狀態(tài),當(dāng)心態(tài)不穩(wěn)定時(shí),會(huì)發(fā)現(xiàn)時(shí)間眼睜睜地流過(guò),而你卻無(wú)法進(jìn)步,這是一種很難受的狀態(tài)。當(dāng)心態(tài)健康時(shí),不僅能保持穩(wěn)定的學(xué)習(xí)速度,還能在學(xué)習(xí)中得到快樂(lè),進(jìn)入一個(gè)正向循環(huán)。
樓主是一個(gè)凡人,資質(zhì)平庸,學(xué)習(xí)的目的無(wú)非是提高競(jìng)爭(zhēng)力,使自己不至于某天淪為公司裁員的犧牲品。如果你有更清晰的夢(mèng)想和目標(biāo),說(shuō)明你比樓主層次高很多,歡迎來(lái)指點(diǎn)樓主。
為學(xué)而學(xué)是不行的
一開(kāi)始學(xué)習(xí)時(shí),樓主看了許多帖子,里面的Java大神們都在說(shuō):要提高技術(shù),就要不停地看源碼,甚至自己造輪子……年輕的樓主深受這種理論影響,不屑于搞業(yè)務(wù)而日日研究如HashMap源碼這樣枯燥的東西,甚至計(jì)劃自己寫(xiě)一套collection framework,把大神們?cè)爝^(guò)的輪子再造一遍,似乎只要寫(xiě)完這一套東西就能立地成佛,能搞定所有的業(yè)務(wù)和bug。
當(dāng)我開(kāi)始寫(xiě)HashMap的時(shí)候就發(fā)現(xiàn),為了寫(xiě)而寫(xiě)是一種很蠢的行為。一個(gè)輪子內(nèi)部的那些看似精巧繁雜的結(jié)構(gòu),存在的意義是為了讓輪子更好更長(zhǎng)久地運(yùn)轉(zhuǎn),而不是工程師為了炫技而創(chuàng)造的。如果我們沒(méi)有一個(gè)實(shí)用的目標(biāo),反而會(huì)浪費(fèi)時(shí)間,迷失在一些看上去很神秘的細(xì)節(jié)中。其實(shí),像HashMap這樣的數(shù)據(jù)結(jié)構(gòu),只需了解它大致的工作原理就可以了,余下的代碼細(xì)節(jié)可以在使用有疑惑或者出了問(wèn)題時(shí)再去看。
再比如,樓主看面經(jīng)中總是提到JVM調(diào)優(yōu),因此覺(jué)得這是Java程序員進(jìn)階所必備的知識(shí),于是就買(mǎi)了書(shū)和教程去看,但是發(fā)現(xiàn)對(duì)于調(diào)優(yōu)這個(gè)話(huà)題看書(shū)效率奇低,書(shū)上比較多的是一些描述性的內(nèi)容,如JVM的內(nèi)存分布和垃圾處理算法;還有一些實(shí)用性的內(nèi)容,比如調(diào)優(yōu)工具、調(diào)優(yōu)案例。有些內(nèi)容反復(fù)看了又看,回想起來(lái)腦子里卻不剩什么,遠(yuǎn)沒(méi)有看完一個(gè)算法后的那種條理清晰的感覺(jué)。而花在這個(gè)問(wèn)題上的時(shí)間卻遠(yuǎn)遠(yuǎn)超過(guò)看算法的時(shí)間。
這幾個(gè)周,同事要做一個(gè)自動(dòng)化測(cè)試工具,問(wèn)大家有什么好的建議。樓主想到自己一直學(xué)調(diào)優(yōu)而無(wú)所得,靈機(jī)一動(dòng),提議在工具中加入調(diào)優(yōu)功能,得到了同事認(rèn)可。同事給樓主大概介紹了一些調(diào)優(yōu)思路,推薦了一些資料去看。樓主希望爭(zhēng)取到這個(gè)親自實(shí)現(xiàn)調(diào)優(yōu)功能的機(jī)會(huì),于是幻想自己即將面臨各種性能問(wèn)題,為了解決這些問(wèn)題開(kāi)始儲(chǔ)備知識(shí),然后驚異地發(fā)現(xiàn)學(xué)習(xí)有了層次,樓主不再死板地按章節(jié)看書(shū)了,可以自動(dòng)地篩選出重要和不重要的內(nèi)容,甚至可以在腦中形成清晰的脈絡(luò)了!
所以計(jì)算機(jī)是一門(mén)實(shí)踐科學(xué)這句話(huà)一定要深刻理解。因?yàn)槠珜?shí)踐,所以不可能當(dāng)王語(yǔ)嫣,因?yàn)樵S多理論是從實(shí)踐中來(lái)的,好比數(shù)學(xué)公理,只能從實(shí)踐中得到感性認(rèn)識(shí),無(wú)法從其他的理論推測(cè)得來(lái),也無(wú)法死記硬背。樓主是一個(gè)學(xué)院派的人,在這方面吃了不少苦。從中總結(jié)出的方法論是:
計(jì)算機(jī)科學(xué)的知識(shí)大多是偏實(shí)踐的,學(xué)習(xí)這些知識(shí)不能只看理論,要依托于實(shí)踐。實(shí)踐和理論應(yīng)該是兩條互相纏繞的螺旋線(xiàn),當(dāng)實(shí)踐無(wú)法繼續(xù)進(jìn)行時(shí)就去看理論,當(dāng)理論看起來(lái)無(wú)法理解更深時(shí)就去實(shí)踐。
實(shí)踐最好是一個(gè)項(xiàng)目,但大多數(shù)情況要自己提需求,尋找實(shí)踐方法。可以是個(gè)人項(xiàng)目,也可以是自己的各種小demo等等,形式不限,學(xué)到就行。
學(xué)習(xí)與任何事一樣,都需要?jiǎng)?wù)實(shí)。技術(shù)只是人們?yōu)榱私鉀Q問(wèn)題而創(chuàng)造的,包括那些聽(tīng)起來(lái)很高大上的框架和名詞。只要懷著負(fù)責(zé)任的信念去做事一定會(huì)接觸到各種各樣的問(wèn)題,面臨問(wèn)題自然會(huì)去思考解決方法,在這個(gè)思考的過(guò)程中,你實(shí)際上就開(kāi)始接觸了設(shè)計(jì)模式、JVM原理、計(jì)算機(jī)組成、網(wǎng)絡(luò)協(xié)議等等……所以,不可以鄙視平時(shí)在公司做的那些看似簡(jiǎn)單的業(yè)務(wù)。
持續(xù)輸出
長(zhǎng)時(shí)間的學(xué)習(xí)很容易懈怠,陷入一種被動(dòng)接受知識(shí)的狀態(tài)。另外,一個(gè)人的思想永遠(yuǎn)不可能顧全所有方面。
比如,樓主的朋友最近想學(xué)習(xí)Java,于是樓主自告奮勇,每天給他介紹二十分鐘Java基礎(chǔ)。當(dāng)說(shuō)到垃圾處理時(shí),樓主自然地老生常談:Java內(nèi)存分為新生代和老年代,一般的GC只對(duì)新生代進(jìn)行收集,而只有老年代也沒(méi)有空間了才會(huì)進(jìn)行Full GC……朋友眨著天真的眼睛問(wèn)樓主:為什么要分兩個(gè)區(qū)進(jìn)行收集,而不是每次都對(duì)所有內(nèi)存進(jìn)行垃圾處理呢?樓主驚訝地發(fā)現(xiàn)自己答不出來(lái),因?yàn)閺奈聪脒^(guò)這個(gè)問(wèn)題……
今天樓主復(fù)習(xí)時(shí)無(wú)意中發(fā)現(xiàn),書(shū)里其實(shí)有介紹這么做的原因,即大部分對(duì)象都是朝生夕死的,按年齡分代并頻繁地收集新生區(qū)比較貼合這個(gè)模型,這樣既能照顧到常用的內(nèi)存,也能保證垃圾處理能在比較短的時(shí)間內(nèi)結(jié)束。這一段樓主其實(shí)看過(guò)多遍了,但竟然從未將兩者聯(lián)系起來(lái),也未思考過(guò)分區(qū)設(shè)計(jì)的原因……
又比如,有一次面試時(shí)面試官問(wèn)Java線(xiàn)程池中核心線(xiàn)程數(shù)和最大線(xiàn)程數(shù)的區(qū)別。樓主輕車(chē)熟路地說(shuō):核心線(xiàn)程數(shù)是線(xiàn)程池的初始線(xiàn)程數(shù),最大線(xiàn)程數(shù)是線(xiàn)程池能擴(kuò)展到的最大線(xiàn)程數(shù),只有任務(wù)隊(duì)列提交滿(mǎn)時(shí)才會(huì)擴(kuò)容。面試官接著問(wèn)道:“那你想過(guò)為什么要這么設(shè)計(jì)嗎?”樓主支吾半天也沒(méi)答上來(lái)……事后一想,其實(shí)很簡(jiǎn)單,就是為了既能重用線(xiàn)程,減少線(xiàn)程開(kāi)銷(xiāo),又能滿(mǎn)足偶爾的大規(guī)模請(qǐng)求而已。這么簡(jiǎn)單,為何當(dāng)時(shí)沒(méi)想到呢?
……因?yàn)槠綍r(shí)看書(shū)的時(shí)候就缺乏思考啊……
對(duì)于樓主這種口號(hào)上的巨人、思考上的矮子,除了經(jīng)常給別人講東西從而被別人挑戰(zhàn)之外,還有一個(gè)好辦法,就是堅(jiān)持寫(xiě)博客。
博客是一篇文章,需要有文章結(jié)構(gòu)這種東西,為了使你的博客顯得比較有邏輯性,你會(huì)被逼著去梳理知識(shí)點(diǎn)之間的邏輯,以及一門(mén)技術(shù)的由來(lái)、歷史、產(chǎn)生背景等等。在梳理過(guò)程中,你會(huì)發(fā)現(xiàn)看書(shū)時(shí)遺漏的點(diǎn)被填滿(mǎn)了。另外,把思路寫(xiě)出來(lái)能進(jìn)一步強(qiáng)化你對(duì)知識(shí)的印象。而且,持續(xù)寫(xiě)博客會(huì)給你的學(xué)習(xí)造成一種健康的儀式感,即使一開(kāi)始沒(méi)有太多讀者,你也會(huì)愛(ài)上這種輸出的感覺(jué),反過(guò)來(lái)督促自己為了寫(xiě)出更多博客而堅(jiān)持學(xué)習(xí)。
行動(dòng)緊張,但心情輕松
焦慮是自學(xué)最大的敵人。有一陣子看到朋友看書(shū)很快,自己也想加快腳步,可是卻打亂了自己的一貫節(jié)奏。又有一陣子,像著了魔一樣四處搜尋名人自傳、大神博客,然后發(fā)現(xiàn)自己跟大神的差距要以數(shù)十年計(jì),陷入一種無(wú)止境的焦慮。
樓主愿意相信,焦慮并不是完全不好的狀態(tài),因?yàn)樗C明一個(gè)人想要進(jìn)步,想跟那些優(yōu)秀的人比肩。但是,“認(rèn)識(shí)自己”也是一門(mén)非常重要的學(xué)問(wèn)。每個(gè)人都是不同的,現(xiàn)在跟大神差距很大并不意味著幾年后還會(huì)差距很大;但是有一個(gè)堅(jiān)持下去的秘笈,跟跑馬拉松一樣,就是不要看別人,不要看終點(diǎn)。要做到這一點(diǎn),先要接受自己的平凡,這樣才能平心靜氣地去吸收知識(shí)、抵御外界的影響,而持續(xù)的焦慮只能適得其反。
如果每天都抱著一個(gè)遠(yuǎn)大的夢(mèng)想,正襟危坐地努力學(xué)習(xí),會(huì)發(fā)現(xiàn)很快就累了。之所以看電視劇不容易累,是因?yàn)闈撘庾R(shí)就告訴自己在玩。如果學(xué)習(xí)的時(shí)候,也可以調(diào)整到一個(gè)好玩的心態(tài),把問(wèn)題當(dāng)作小樂(lè)趣去解,會(huì)發(fā)現(xiàn)不知不覺(jué)就沉浸在解題的樂(lè)趣中,而感受不到時(shí)間的流逝,這種狀態(tài)是學(xué)習(xí)的上乘狀態(tài)。
一些啰嗦
樓主是個(gè)心高氣傲的人,花了許多時(shí)間才接受自己是凡人這個(gè)事實(shí)?;蛟S這個(gè)打擊來(lái)得越早,就越容易踏實(shí)地走腳下的路。
跟初高中就開(kāi)始學(xué)算法、寫(xiě)游戲,大學(xué)拿到ACM金牌,畢業(yè)后幾家大公司隨便選的大神相比,樓主實(shí)在是天資愚鈍,大學(xué)時(shí)僅有的一門(mén)編程課——C語(yǔ)言學(xué)得異常痛苦,研究生時(shí)自學(xué)編程磕磕絆絆,做畢設(shè)時(shí)經(jīng)常晚上十一點(diǎn)被導(dǎo)師的郵件揪起來(lái)——代碼又出現(xiàn)了問(wèn)題。樓主天資平庸,工作平凡,在寫(xiě)代碼上沒(méi)有任何具體的目標(biāo),比如“要做出一款炫酷的RPG游戲”這樣的……
為了這個(gè)事實(shí),曾經(jīng)非常焦慮。喜歡拿自己跟別人比,唯一的結(jié)論就是還差得太多,連別人初中的水平都不如,得趕快補(bǔ)上……于是買(mǎi)書(shū)做計(jì)劃,每天都要完成計(jì)劃的指定部分,比如讀十頁(yè)書(shū)等等,這樣也堅(jiān)持了一段時(shí)間,但是因?yàn)閴毫Ρ容^大,學(xué)習(xí)效率實(shí)在不高,很久之后感覺(jué)還在入門(mén)邊緣徘徊。
也不是說(shuō)時(shí)間不重要,畢竟有著名的“一萬(wàn)小時(shí)定律”擺在那。但是看似努力學(xué)習(xí)超過(guò)一萬(wàn)小時(shí)而還沒(méi)成為大牛的人也是有的。從我自身的經(jīng)驗(yàn),還是“進(jìn)入狀態(tài)”最靠譜。拿我自己來(lái)說(shuō),進(jìn)入狀態(tài)后兩天學(xué)到的可能比沒(méi)進(jìn)入狀態(tài)時(shí)幾個(gè)周學(xué)到的都多,絕不夸張。
所以,最近越來(lái)越相信方法論了。
如果你看到這里,說(shuō):樓主說(shuō)得都很有道理,但我缺乏學(xué)習(xí)的動(dòng)力,怎么辦?推薦你去看一下阮一峰的《未來(lái)世界的幸存者》 。你會(huì)發(fā)現(xiàn)作者對(duì)未來(lái)人類(lèi)文明坍塌的預(yù)言可能超出你最悲觀(guān)的想象。作者認(rèn)為,隨著現(xiàn)代科技的爆發(fā)式發(fā)展,社會(huì)貧富分化將迅速加劇,中產(chǎn)階級(jí)將逐漸消失。那些無(wú)法理解現(xiàn)代科技的人會(huì)沉到社會(huì)下層,淪為科技的奴隸;而由于AI技術(shù)的快速發(fā)展,大部分本屬于中產(chǎn)階級(jí)的程序員都將失業(yè),失業(yè)后由于看不到希望,沉溺于虛擬游戲這樣的“精神毒品”度過(guò)貧窮的一生。在這樣的魔幻世界中,“終生學(xué)習(xí)”已經(jīng)不是一句口號(hào),而是一個(gè)人清醒地生存在世界上的必需……
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29825
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論