學(xué)習(xí)技術(shù)的第二條路 2014-05-21 我從大學(xué)四年級(jí)開(kāi)始,就一直在學(xué)習(xí)編程技術(shù),至今已有七年。 能夠不中斷地學(xué)習(xí)七年,與工作平臺(tái)的變遷有很大關(guān)系,Linux服務(wù)端,Windows桌面端,網(wǎng)頁(yè),移動(dòng)端App。所用的語(yǔ)言從追求效率極致的C,到強(qiáng)大而復(fù)雜的C#,再到奇跡一樣流行起來(lái)的JavaScript。數(shù)據(jù)庫(kù)方面,從小巧的內(nèi)存數(shù)據(jù)庫(kù)到SQL再到No-SQL。由于各平臺(tái)差異較大,這些技術(shù)之間并無(wú)太多交集,因此要不斷學(xué)習(xí)新的技能。 遇到新的技術(shù),過(guò)去我都是先找本書(shū)來(lái)學(xué),看完這本書(shū),有了較為系統(tǒng)的理解,然后再拿來(lái)實(shí)踐。這是沿襲自學(xué)生時(shí)代的做法。 然而最近幾年,先學(xué)后用的老套路逐漸暴露出問(wèn)題。剛剛才讀過(guò)的書(shū),最后能派上用場(chǎng)的只有十之一二。技術(shù)更迭得越快,領(lǐng)域劃分得越細(xì),這狀況就越發(fā)明顯。 都說(shuō)學(xué)以致用,學(xué)的知識(shí)若用不起來(lái)會(huì)很快淡忘,付出的精力也就浪費(fèi)掉了。之前在簡(jiǎn)書(shū)上看到一篇文章《求知成癮,卻無(wú)作品》,也談到了這個(gè)問(wèn)題。知識(shí)若轉(zhuǎn)化不成作品,人就變成了只見(jiàn)流入?yún)s不見(jiàn)流出的知識(shí)黑洞。 也有人渴望一勞永逸,走在了與求知成癮相反的另一個(gè)極端。想起剛剛工作的時(shí)候,我們應(yīng)屆畢業(yè)的新員工上崗之前先技術(shù)培訓(xùn),一波人分成兩個(gè)方向,C和Java。我是C方向的,當(dāng)時(shí)培訓(xùn)C的老師關(guān)起門(mén)來(lái),語(yǔ)重心長(zhǎng)地講,還是C好,幾十年不變,一招吃遍天下,不像Java知識(shí)更新那么快。 后來(lái)做了Web開(kāi)發(fā),每幾天就要被新出的牛逼技術(shù)震撼一次,才知道那位老師的想法有多么保守可笑。新工具帶來(lái)的生產(chǎn)力提升,遠(yuǎn)高于其學(xué)習(xí)成本。若抱守殘缺固步自封,就算你把刀法練得爐火純青,也終究敵不過(guò)飛機(jī)大炮。 JavaScript Weekly每周發(fā)一封訂閱郵件,告訴我JavaScript的世界里又發(fā)生了什么,差不多每?jī)扇齻€(gè)禮拜就有新東西冒出來(lái),一年足可以顛覆從前。這么快的速度,先學(xué)后用的老套路明顯跟不上節(jié)奏了。 全棧工程師(full stack engineer)是最近流行起來(lái)的新角色,指的是全能型的軟件工程師,尤其在創(chuàng)業(yè)公司,這種工程師非常受追捧。不像傳統(tǒng)的專(zhuān)修某個(gè)方向的工程師,全棧工程師甚至都沒(méi)有方向這一說(shuō),因?yàn)樗械墓ぷ魉家觥?/p> 從前端到后端,知識(shí)浩如煙海,要能應(yīng)付得來(lái),必須換一種方法。上來(lái)先不要做太多技術(shù)準(zhǔn)備,而是quick and dirty地讓軟件運(yùn)行起來(lái)。然后再一點(diǎn)一點(diǎn)加功能、做優(yōu)化。路途中必會(huì)遇上很多技術(shù)難題,這才到了真正該學(xué)習(xí)的時(shí)候。以前學(xué)習(xí),是捧起書(shū)來(lái)從頭看到尾,目標(biāo)不夠具體,容易犯困。帶上問(wèn)題看書(shū)就不一樣了,主動(dòng)求解,略過(guò)大篇無(wú)用的部分,直奔目標(biāo)。 當(dāng)然這種由問(wèn)題驅(qū)動(dòng)的學(xué)習(xí),也不是那么完美。它最大的弊端,是因缺乏系統(tǒng)學(xué)習(xí)而錯(cuò)過(guò)一些最佳實(shí)踐,以至于把笨辦法重復(fù)若干遍,長(zhǎng)期來(lái)看反倒降低了效率。 最近在Web Development with Node and Express里看到一段話(huà),對(duì)這個(gè)問(wèn)題做了精辟的闡述:
如果一項(xiàng)工作要重復(fù)幾十上百遍,那么不管它重不重要,都應(yīng)該看看高人是怎么做的。若一開(kāi)始就掌握了巧妙的方法,后面一定能把學(xué)習(xí)花去的時(shí)間追回來(lái)。 然而現(xiàn)實(shí)中,開(kāi)發(fā)產(chǎn)品的工期一般都比較趕,這種情況下,什么時(shí)候該停下來(lái)學(xué)習(xí)?答案是,當(dāng)你覺(jué)得有地方不對(duì)勁了,一般也就是到了該學(xué)習(xí)的時(shí)候。但對(duì)于這條準(zhǔn)則,不同人把握的尺度不一樣。自我感覺(jué)良好的人,從來(lái)不覺(jué)得哪里不對(duì)勁,于是永遠(yuǎn)錯(cuò)下去,永遠(yuǎn)重蹈舊轍。相反,過(guò)于挑剔和自省過(guò)重的人,比如我自己,總希望一切都完美之后再邁出下一步,結(jié)果常常是過(guò)分糾纏于細(xì)節(jié)而止步不前。 最后談一下技術(shù)書(shū)。在stackoverflow如此強(qiáng)大的今天,技術(shù)書(shū)的地位已遠(yuǎn)不如前。開(kāi)發(fā)中被技術(shù)問(wèn)題block,首先想到是去網(wǎng)上尋找快速直接的答案,逢山開(kāi)路遇水搭橋。但不能忽視其他一些隱性的技術(shù)問(wèn)題,它們雖然沒(méi)有block你,但是可以拖慢你,長(zhǎng)期地消耗你。解決這些重要但不緊急的事情,需要付出大塊的時(shí)間,收益也是顯著的。這時(shí)候,技術(shù)書(shū)就派上用場(chǎng)了。 讀技術(shù)書(shū),其實(shí)就是為了走捷徑,作者走過(guò)的路,踩過(guò)的坑,讀者不必再親歷一遍。前人總結(jié)的經(jīng)驗(yàn)教訓(xùn),早知早受益,但如果準(zhǔn)備得過(guò)度,也會(huì)得不償失。尤其在IT領(lǐng)域,每一項(xiàng)技術(shù),每一條經(jīng)驗(yàn),都是有保鮮期的。剛出來(lái)的時(shí)候最新鮮可口,半年之后光華已褪,待兩三年后,很可能技術(shù)已改朝換代,這些前朝老臣全都沒(méi)有了用武之地。 以上內(nèi)容如果沒(méi)怎么看進(jìn)去也沒(méi)關(guān)系,只需記住一句:學(xué)習(xí)技術(shù),為的不是做出好產(chǎn)品,而是在極為有限的時(shí)間內(nèi)做出好產(chǎn)品。 |
|