程序員心底的小聲音[1]
編程大約有三個(gè)境界,新手,高手,和高不成低不就的中手。這三個(gè)境界,大致和王國維先生劃定的做學(xué)問(wèn)的三個(gè)境界一一對應。 一般來(lái)說(shuō),如果不經(jīng)過(guò)幾十萬(wàn)行的代碼的錘煉(衣帶漸寬終不悔,為伊消得人憔悴),或者長(cháng)期在一個(gè)高手團隊里面打磨切磋,那么無(wú)論怎么樣的理論熟悉,打字熟練,考試全A,編程起來(lái),都應該算是中手。一個(gè)中手如果機緣很好,得到高人親自指點(diǎn),則能很快成長(cháng)為高手,如果沒(méi)有這樣的機緣,那就要在"眾里尋她千百度"這個(gè)層次苦苦的求索錘煉很久,才能"驀然回首".
讀書(shū)是一種很好彌補沒(méi)有高手在場(chǎng)的方法,都說(shuō)書(shū)是最好的老師嘛?墒乾F實(shí)是,高手寫(xiě)給中手的書(shū)很少。在任何行業(yè),適合新手的入門(mén)的書(shū)很多,適合中手的書(shū)就很少。 原因有兩個(gè),一來(lái)高手極少愿意耐心的的指點(diǎn)成長(cháng)秘訣,就算寫(xiě)了,也是蜻蜓點(diǎn)水,因為這些經(jīng)驗啊結論啊,都被他們本身提煉成了珠璣,他們覺(jué)得最重要的也就是這么寥寥幾句,也沒(méi)有太多的廢話(huà)好寫(xiě)。
而讀者如果沒(méi)有類(lèi)似的`經(jīng)歷,則看到這些珠璣,只是覺(jué)得把玩頗為有趣而已,極少能有同感。 鮮有高手,能把技術(shù)書(shū)寫(xiě)成散文集,如 Brooks 一樣,把經(jīng)驗教訓和經(jīng)歷背景等一一道來(lái),并且從這些經(jīng)歷中抽出一般性的知識。所以,高手的風(fēng)格一般是浮光掠影概括一下大致自己領(lǐng)會(huì )到的幾個(gè)原則和教訓。這些寥寥數語(yǔ)的珠璣,對于其他高手來(lái)說(shuō)一看就懂,但是對于中手來(lái)說(shuō)就很難以理解。所以很多高手寫(xiě)出來(lái)的給中手看的書(shū)就曲高和寡。二來(lái),中手其實(shí)水平差異巨大,偏好也各不一樣,有的或許根本認識不到自己應該走的成長(cháng)軌跡,有的認為這些書(shū)籍是片面知識,所以把不喜歡的書(shū)都給扔垃圾堆了,光撿自己喜歡的書(shū)看;有的未必看得上高手的經(jīng)驗,認為高手說(shuō)的那些自己也早就領(lǐng)悟到了。所以,也不喜歡購買(mǎi)這些書(shū)籍。這兩個(gè)原因,就造成了高手提攜中手的書(shū)在市場(chǎng)上很少見(jiàn)到。
我們前面說(shuō)了,對于中手,特別是在"尋她千百度"這個(gè)層次的中手來(lái)說(shuō),或許本身已經(jīng)撿到了一些珠璣,或許對于像 《Pragmatic Programmer》 里面說(shuō)的那些 Tip,有的是深有同感的。 比如 DRY (Don't Repeat Yourself 不要重復你自己), 基本上大家都知道,可是在實(shí)際中(至少我自己)還是不停的一次一次的犯錯誤,做事情不符合 DRY 原則(一次一次犯這個(gè)錯誤本身也是一個(gè)DRY錯誤,因為DRY原則要求你對于每種錯誤你只能犯一次)。 讀到的時(shí)候深有同感,寫(xiě)代碼的時(shí)候卻忘到 Java 國去了,這還真不是個(gè)案,是非常普遍的現象。
能不能讓正確的原則指揮正確的行動(dòng)本身,其實(shí)就是區分是否是高手的一個(gè)顯著(zhù)標志。 試想,兩個(gè)都了解KISS原則的程序員在一起寫(xiě)代碼,高手的代碼必然是自然流露出 KISS 的優(yōu)雅,而中手或許需要旁人提醒和多次重構,才能達到理想的狀態(tài)。 出現這個(gè)問(wèn)題的原因很明顯–中手沒(méi)有完全內化 KISS 原則,所以尚且不能"運用自如". 內化是一個(gè)非常復雜的認知過(guò)程,本身涉及到大腦中 mind set 和 paradigm 的切換, 所以必然不是一個(gè)簡(jiǎn)單的隔夜就能完成的過(guò)程,這也就是為啥能夠"消得人憔悴",但是切換一旦完成,實(shí)踐中就會(huì )自然流露出這種新的認識,也就是到了一個(gè)新的境界,發(fā)現燈火闌珊處。
那么原則和知識的內化這個(gè)過(guò)程怎么能夠加速呢?也就是說(shuō),怎么較快的到達高手境界呢? 可以肯定的說(shuō),光靠對自己說(shuō)我"下次一定按照這個(gè)原則這樣做"是不行的。認知科學(xué)認為,頻繁的高強度的外部刺激和自主的有意識的反復提醒是加速內化的兩個(gè)重要方法。 第一個(gè)方法需要外部環(huán)境的支撐。 試想,如果一個(gè)程序員不是天天和復雜文本處理打交道,他必然沒(méi)有足夠外部刺激來(lái)熟悉和內化正則表達式; 如果一個(gè)程序員不是天天和極度復雜的大項目打交道,用全自動(dòng)編譯環(huán)境和自動(dòng)單元測試也顯得無(wú)甚必要,所以,除非你正好掉進(jìn)了一個(gè)天天有高強度訓練的環(huán)境,否則全靠第一點(diǎn)是不可能的。 尤其是自學(xué)一門(mén)語(yǔ)言和一門(mén)技術(shù)的程序員,往往在沒(méi)有高強度訓練之前就拿著(zhù)這些技能投入工作了,因此想成為某方面的高手,只能采取第二條路,就是有意識的強化實(shí)踐和反復提醒。
【程序員心底的小聲音[1]】相關(guān)文章:
程序員的面試小技巧總結10-22
程序員的小笑話(huà)搞笑短信12-22
精選關(guān)于程序員的小笑話(huà)搞笑短信09-14
2017小語(yǔ)種考試俄語(yǔ)1-6格的用法11-14
深藏心底的那朵花勵志文章08-31
職場(chǎng)勵志小故事:將腦袋打開(kāi)1mm09-20
大家的日語(yǔ)1第1課11-06
演講的聲音技巧09-28
程序員的黑白簡(jiǎn)歷封面08-13