程序員需要學(xué)習(xí)的技術(shù)無(wú)論深度和廣度都很可觀罚攀,學(xué)習(xí)久了之后總需要回頭總結(jié)一下自己的學(xué)習(xí)路線和方法,才有可能在技術(shù)水平上提升層次。許多技術(shù)好的程序員畏吓,他們跟普通程序員的差別一般不只是前者花費(fèi)了更多時(shí)間在技術(shù)上,往往也是因?yàn)樗麄冊(cè)谥鸩降姆e累中找到了更高效的學(xué)習(xí)方法略荡。
寫代碼或者說(shuō)廣義的計(jì)算機(jī)技術(shù)庵佣,本質(zhì)上都是靠自己動(dòng)手來(lái)學(xué)習(xí)、研究的汛兜。我們一開(kāi)始的學(xué)習(xí)方式巴粪,往往是邊看書邊照著敲下代碼,偶爾也去網(wǎng)上搜索一些博客、文檔輔以學(xué)習(xí)肛根;之后慢慢的入門了辫塌,大概了解到自己所學(xué)領(lǐng)域的輪廓后,就可以寫一些自己的項(xiàng)目派哲、在自己感興趣的領(lǐng)域研究得更深一些臼氨。
那么在我們一步步走向更高層次的時(shí)候,除了看書和寫代碼芭届,我們還能怎樣學(xué)習(xí)技術(shù)呢储矩?
我在這里分享一點(diǎn)我自己的學(xué)習(xí)方法:
1.學(xué)習(xí)使用Github
Github不只是一個(gè)方便的托管代碼、合作開(kāi)發(fā)的平臺(tái)褂乍,很大程度上也是一個(gè)集合了世界上所有優(yōu)質(zhì)代碼的知識(shí)寶庫(kù)持隧。
一方面我們自己可以把它作為一個(gè)托管自己代碼的平臺(tái),把自己平時(shí)寫的一些小項(xiàng)目逃片、造的輪子放上去屡拨,每天都commit一次作為按時(shí)打卡。很多代碼只有敢于把它開(kāi)源出來(lái)給人家看到褥实,才能讓自己用更好的態(tài)度對(duì)待它呀狼。想想你寫的代碼將來(lái)會(huì)有很多人給你做code review,而且是一幫看見(jiàn)一個(gè)函數(shù)超出了一個(gè)屏幕都會(huì)罵一句的人损离,你在命名變量哥艇、寫函數(shù)的時(shí)候都會(huì)再三考慮。另一方面草冈,當(dāng)我們想要更好的理解我們平時(shí)所使用的一些庫(kù)她奥、理解它的設(shè)計(jì)時(shí),我們可能會(huì)考慮自己造輪子怎棱。試著把這些輪子也放到github上哩俭,并且以獲得star甚至pull request作為目標(biāo),也是一種很有挑戰(zhàn)性的任務(wù)拳恋。
另一方面凡资,我們可以在github上閱讀其他大牛的代碼。以前我總覺(jué)得在github上讀代碼很難堅(jiān)持下去谬运,watch隙赁、star了不少優(yōu)秀的項(xiàng)目,但都不了了之了梆暖。實(shí)際上我們可以通過(guò)給人家的代碼解issue來(lái)“逼迫”去閱讀代碼伞访、理解其設(shè)計(jì)。一個(gè)有名的項(xiàng)目在issue頁(yè)一般都會(huì)有不少其他人提出的問(wèn)題轰驳,某些是自己對(duì)于庫(kù)的使用問(wèn)題厚掷,另一些是庫(kù)本身存在的Bug等局限性弟灼。試著去解issue(回答他人的問(wèn)題或提交batch給作者),絕對(duì)是一種很好的閱讀習(xí)慣冒黑。
(ps:給大家推薦一款叫octotree的chrome插件田绑,可以讓你把github當(dāng)成ide一樣閱讀代碼)
2.Stackoverflow
相比github,stackoverflow更是一個(gè)可以檢驗(yàn)自己所學(xué)抡爹、分享自己知識(shí)的平臺(tái)掩驱。
我最近把它當(dāng)成知乎來(lái)刷,試著回答了不少問(wèn)題冬竟,越發(fā)感受到它是一個(gè)好的學(xué)習(xí)平臺(tái)欧穴。在首頁(yè)綁定自己感興趣的話題,可以是自己所專精的诱咏、也可以是自己最近感興趣想要開(kāi)始學(xué)習(xí)的一個(gè)全新的領(lǐng)域苔可,自己的timeline上則會(huì)出現(xiàn)相關(guān)話題的提問(wèn)缴挖。因?yàn)樵谶@里你的回答必須對(duì)提問(wèn)者有幫助袋狞、保證嚴(yán)謹(jǐn)性,否則很容易被別人點(diǎn)down映屋,所以你的每個(gè)回答都必須保證自己對(duì)問(wèn)題了解的足夠清楚苟鸯、能夠提出建設(shè)性的建議或解決方法。那么這就要求你的知識(shí)的全面性和扎實(shí)性棚点。
我認(rèn)為stackoverflow可以用來(lái)幫助我們進(jìn)行如下的學(xué)習(xí):
(1)回答一些較為基礎(chǔ)的實(shí)際問(wèn)題早处,幫助自己夯實(shí)基礎(chǔ)、回憶一些基礎(chǔ)庫(kù)等的使用瘫析,并且可以作為一個(gè)日常的練習(xí)砌梆;
(2)試著尋找一些較為進(jìn)階、涉及更多底層原理的問(wèn)題贬循,這時(shí)你可能就需要進(jìn)行一些搜索和調(diào)研咸包,自己先把這一塊研究得夠深,然后才能在這樣一個(gè)較大的問(wèn)題上提出自己的一些見(jiàn)解杖虾,甚至跟其他人討論從而學(xué)習(xí)烂瘫、理解得更深。我為了回答一個(gè)有關(guān)Android內(nèi)存模型的問(wèn)題奇适,又復(fù)習(xí)了一遍GC相關(guān)的一些問(wèn)題坟比,并且發(fā)現(xiàn)了更多可以研究的話題(比如匿名共享內(nèi)存等),收獲很大嚷往;
(3)搜索一些最熱門的問(wèn)答葛账,尤其找找那些點(diǎn)up很多、或者討論很多的回答皮仁,在這里往往可以看到一些在其他地方看不到的大牛的思想籍琳,提供對(duì)一些主題的全新角度的認(rèn)識(shí)或者了解一些Best practice茄茁;
另外,在stackoverflow提問(wèn)也是一種學(xué)問(wèn)巩割,提的問(wèn)題如果太“伸手”或是已有相似問(wèn)題裙顽,就很容易被點(diǎn)down甚至是關(guān)閉。一般如果遇到棘手的問(wèn)題宣谈,怎樣搜索都解決不了的愈犹,在stackoverflow基本都能有人給你提供解決問(wèn)題的思路。有時(shí)如果研究一個(gè)主題闻丑,自己也可以在深思熟慮后提出能夠激發(fā)討論的gold question漩怎。
能夠回答問(wèn)題加深自己的學(xué)習(xí),又能夠贏得reputation嗦嗡,這種有激勵(lì)的學(xué)習(xí)方式是相當(dāng)有效的勋锤。
3.訂閱周報(bào)、瀏覽知乎
這種方式主要是為了讓自己了解一些熱門或是最新的技術(shù)侥祭,保證自己不至于落伍叁执。
知乎雖然不能作為一個(gè)深入學(xué)習(xí)的工具,但是它上面往往會(huì)出現(xiàn)一些新技術(shù)趨勢(shì)的討論矮冬,了解一些新東西也是一個(gè)程序員必須要做的谈宛,不能總是局限在自己的小圈子里√ナ穑可以多關(guān)注幾個(gè)在相關(guān)領(lǐng)域較活躍的人吆录,這樣時(shí)間線上就會(huì)更多出現(xiàn)新技術(shù)相關(guān)話題∏砟粒或者有時(shí)看到了自己平時(shí)沒(méi)有關(guān)注過(guò)的本領(lǐng)域內(nèi)容恢筝,也可以借此發(fā)現(xiàn)一個(gè)新的學(xué)習(xí)點(diǎn),再通過(guò)別的方式進(jìn)行深入的研究巨坊。另外當(dāng)你新開(kāi)始學(xué)習(xí)一個(gè)領(lǐng)域的技術(shù)時(shí)撬槽,也可以在知乎上搜索一些人家討論過(guò)的話題,對(duì)于快速了解這個(gè)領(lǐng)域的全貌會(huì)有幫助抱究。
訂閱周報(bào)恢氯、月報(bào)也是類似的作用,不過(guò)更側(cè)重于保持對(duì)技術(shù)趨勢(shì)的跟進(jìn)鼓寺。另外有時(shí)周報(bào)也會(huì)推送有關(guān)某個(gè)主題的深入研究的文章勋拟,也很值得學(xué)習(xí)。
4.一點(diǎn)私貨
這種學(xué)習(xí)方法是我在一本書上看到的妈候,也挺有啟發(fā)性:
選擇三位自己的技術(shù)偶像敢靡,關(guān)系跟自己越近越好或者他的技術(shù)行為能夠在網(wǎng)上很清楚的看到,這樣才能對(duì)他有一個(gè)更加全面的了解苦银。
通過(guò)閱讀他的博客啸胧、代碼赶站、技術(shù)論壇上的言論或是與他的交談,了解他對(duì)技術(shù)的態(tài)度纺念、以及自己的學(xué)習(xí)方法贝椿,然后盡可能詳細(xì)的記在一張紙上。
選擇自己可以借鑒陷谱,并且可能堅(jiān)持做到的烙博,嘗試模仿他的一些行為。并且更進(jìn)一步的烟逊,比如他活躍在stackoverflow或者github渣窜,試著follow他,去追趕他的答題數(shù)宪躯、commit數(shù)乔宿,慢慢地跟隨他閱讀一些代碼。
當(dāng)然這并不是要你忽略自身情況访雪,盲目模仿某個(gè)人详瑞,而是要讓你嘗試汲取自己偶像身上的優(yōu)點(diǎn),并且以此為激勵(lì)讓自己借鑒他的方法變得更好冬阳。等到有一天你做這些事不再需要提醒自己需要模仿誰(shuí)蛤虐,你就大致養(yǎng)成了自己獨(dú)特的學(xué)習(xí)習(xí)慣,甚至慢慢成為了別人的技術(shù)偶像肝陪。
這種方法我們不一定要照著來(lái),但確實(shí)很具有啟發(fā)性刑顺,可以嘗試借鑒氯窍。