學習程式設計的七個階段

Bugtags發表於2016-03-03
第1階段:機會

你很開心,你一直想學這個新的內容,比如說某程式語言,無論是規劃還是環境所迫,總之你終於有這個機會學習了。

第2階段:沒有根據地樂觀

谷歌搜尋——挑選一兩個自己感興趣的教程,買資料和書,然後開始MOOC(大規模線上開放教程)。教程很有趣,甚至還有線上REPL,可以讓你玩耍,你覺得你正在進步中。當然也有煩惱——手指還不熟練,但你堅持,不肯放棄,並準備向你的第一個專案進軍。


第3階段:絕望的深坑

你開始從“Hello, World”延伸開去,例如,先是將內容更改為“Hola,Mundo”這樣小心翼翼的嘗試,然後膽子稍微肥了點,開始肆無忌憚了——於是乎,錯誤資訊,堆疊跟蹤,隨機行為紛至沓來。即使不管所有的錯誤資訊,那些能在教程中正常工作的程式碼,也許你親自操刀的結果卻是一片空白。你恍然發現,哪怕是一些看上去愚蠢但良性的細微差別,也會造成狂風暴雨,讓你陰溝裡翻船,陷入絕望的深坑。即使是最簡單的任務都讓你痛苦不已,你開始懷疑自己,懷疑自己其實壓根就沒有程式設計的天分。


第4階段:放低身段

慢慢地,通過試驗和錯誤的洗禮,通過向同事、StackOverflow、部落格尋求幫助,你開始一點一滴地積累知識。你開始懂得如何顯示資料,如何與資料庫進行交流,如何建立介面,如何覆蓋方法。雖然你還並不能真正理解上述任何一個的工作原理,但是在不斷掌握這些神奇的咒語,擴充知識領域的同時,完成一些特定的、必要的任務漸漸變得不在話下。對於有的咒語,你可能會用得非常順手,甚至在一些有問題的情況下也生搬硬套,覺得只要完成就好,哪怕內心明白自己這樣做並不對。除錯是一種挫折鍛鍊。無論是因為自我覺得目標已經實現,計劃將時間放到其他地方,還是因為太難因此望而怯步,亦或是自詡已經掌握了專業知識從而做出了自認為理智的選擇,總而言之很多人止步於這一階段。

第5階段:黎明的到來

到了這一階段,由於你已經積蓄了足夠多的資訊片段,於是開始能夠找到它們之間的連線。你開始能夠靈活應用知識,而不是像之前那樣生搬硬套。你對一些基本規則開始有所謂的直覺,開始從死板地遵守向接收知識轉變。這也是一個不均衡的過程——對這方面心意相通的同時可能仍然困惑於另一方面——但是你有信心一步一步地拿下,你開始享受這個過程。


第6階段:專業

一段時間以後,你完全掌握了基本模式,開始覺得程式設計就像吃飯那樣輕鬆自然。你已經可以直觀地瞭解事物的工作原理,並且在架構、編碼和除錯之間輕鬆斡旋。一般說來你已經不必刻意地去思考問題,就像你從家裡到商店去買東西——你知道怎麼走,如果有一些新造的道路,你也能瞬間權衡不同的選項,並選出一條最佳的路線。此時,碰到問題最難的應該是問題本身,而不是作業系統來支援你想要它做什麼事情。

第7階段:成就

你現在已經是一個有著多年經驗的專家了。你投入的時間和精力通通有了回報。你寫部落格文章,助力開源專案,成為了同行中公認的專家。這儼然成為你的身份和榮譽,也成為了你的枷鎖,你的所作所為需要匹配專家這個名頭。突然有一天,新生事物出現了。你內心也明白,這個新事物很好,將會很有用,能幫助輕鬆解決現有工具不足以解決的問題,將會是未來的潮流。但與此同時,你清楚地知道成為專家所需要付出的努力和時間,需要再次感受不足和挫折,需要去向他人求助等等,你不願意了,你退縮了。你寧願閉上眼睛,墨守陳規,將自己蜷縮成一團,就好像枯萎的枝幹慢慢死去。
評論(1)

相關文章