開發(fā)心得分享:10年編程無(wú)師自通

字號(hào):

進(jìn)任何一家書店,你會(huì)看見《teach yourself java in 7 days》(7天java無(wú)師自通)的旁邊是一長(zhǎng)排看不到盡頭的類似書籍,它們要教會(huì)你visual basic、windows、internet等等,而只需要幾天甚至幾小時(shí)。我在amazon.com上進(jìn)行了如下搜索:
     pubdate: after 1992 and title: days and (title: learn or title: teach yourself)
     (出版日期:1992年后 and 書名:天 and (書名:學(xué)會(huì) or 書名:無(wú)師自通))
    我一共得到了248個(gè)搜索結(jié)果。前面的78個(gè)是計(jì)算機(jī)書籍(第79個(gè)是《learn bengali in 30 days》,30天學(xué)會(huì)孟加拉語(yǔ))。我把關(guān)鍵詞“days”換成“hours”,得到了非常相似的結(jié)果:這次有253本書,頭77本是計(jì)算機(jī)書籍,第78本是《teach yourself grammar and style in 24 hours》(24小時(shí)學(xué)會(huì)文法和文體)。頭200本書中,有96%是計(jì)算機(jī)書籍。
    結(jié)論是,要么是人們非常急于學(xué)會(huì)計(jì)算機(jī),要么就是不知道為什么計(jì)算機(jī)驚人地簡(jiǎn)單,比任何東西都容易學(xué)會(huì)。沒有一本書是要在幾天里教會(huì)人們欣賞貝多芬或者量子物理學(xué),甚至怎樣給狗打扮。
    讓我們來(lái)分析一下像《learn pascal in three days》(3天學(xué)會(huì)pascal)這樣的題目到底是什么意思:
    ·學(xué)會(huì):在3天時(shí)間里,你不夠時(shí)間寫一些有意義的程序,并從它們的失敗與成功中學(xué)習(xí)。你不夠時(shí)間跟一些有經(jīng)驗(yàn)的程序員一起工作,你不會(huì)知道在那樣的環(huán)境中是什么滋味。簡(jiǎn)而言之,沒有足夠的時(shí)間讓你學(xué)到很多東西。所以這些書談?wù)摰闹皇潜砻嫔系木?,而非深入的理解。如alexander pope(譯注:英國(guó)詩(shī)人、作家,1688-1744)所言,一知半解是危險(xiǎn)的(a little learning is a dangerous thing)。
    ·pascal:在3天時(shí)間里你可以學(xué)會(huì)pascal的語(yǔ)法(如果你已經(jīng)會(huì)一門類似的語(yǔ)言),但你無(wú)法學(xué)到多少如何運(yùn)用這些語(yǔ)法。簡(jiǎn)而言之,如果你是,比如說一個(gè)basic程序員,你可以學(xué)會(huì)用pascal語(yǔ)法寫出basic風(fēng)格的程序,但你學(xué)不到pascal真正的優(yōu)點(diǎn)(和缺點(diǎn))。那關(guān)鍵在哪里?alan perlis(譯注:acm第一任主席,圖靈獎(jiǎng)得主,1922-1990)曾經(jīng)說過:“如果一門語(yǔ)言不能影響你對(duì)編程的想法,那它就不值得去學(xué)”。另一種觀點(diǎn)是,有時(shí)候你不得不學(xué)一點(diǎn)pascal(更可能是visual basic和javascript之類)的皮毛,因?yàn)槟阈枰佑|現(xiàn)有的工具,用來(lái)完成特定的任務(wù)。但此時(shí)你不是在學(xué)習(xí)如何編程,你是在學(xué)習(xí)如何完成任務(wù)。
    ·3天:不幸的是,這是不夠的,正如下一節(jié)所言。
    10年編程無(wú)師自通
    一些研究者(hayes、bloom)的研究表明,在許多領(lǐng)域,都需要大約10 年時(shí)間才能培養(yǎng)出專業(yè)技能,包括國(guó)際象棋、作曲、繪畫、鋼琴、游泳、網(wǎng)球,以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)的研究。似乎并不存在真正的捷徑:即使是莫扎特,他4 歲就顯露出音樂天才,在他寫出的音樂之前仍然用了超過13年時(shí)間。再看另一種音樂類型的代表--披頭士,他們似乎是在1964年的ed sullivan節(jié)目中突然冒頭的。但其實(shí)他們從1957年就開始表演了,即使他們很早就顯示出了巨大的吸引力,他們第真正的成功之作《sgt. peppers》也要到1967年才發(fā)行。samuel johnson(譯注:英國(guó)詩(shī)人)認(rèn)為10 年還是不夠的:“任何領(lǐng)域的卓越成就都只能通過一生的努力來(lái)獲得;稍低一點(diǎn)的代價(jià)也換不來(lái)?!保╡xcellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.) 喬叟(譯注:chaucer,英國(guó)詩(shī)人,1340-1400)也抱怨說:“生命如此短暫,掌握技藝卻要如此長(zhǎng)久?!保╰he lyf so short, the craft so long to lerne.)
    下面是我在編程這個(gè)行當(dāng)里獲得成功的處方:
    ·對(duì)編程感興趣,因?yàn)闃啡ざゾ幊獭4_定始終都能保持足夠的樂趣,以致你能夠?qū)?0年時(shí)間投入其中。
    ·跟其他程序員交談;閱讀其他程序。這比任何書籍或訓(xùn)練課程都更重要。