再給你一次重新學編程的機會,你會如何上演這「一齣好戲」?

腦洞大開,如果以現在的心態和認識,重新再來制定一套適合自己的學習方案,去規劃學習自己的編程之路,繞過一些坑,你會怎麼樣制定?(比如會先學什麼語言,再讀哪兒本書?去哪家公司實習?做什麼樣的項目?)

再給你一次重新學編程的機會,你會如何上演這「一出好戲」?

遊戲裡常有這樣的設定,開局的時候,整張地圖都是霧濛濛的,什麼也看不見。先選個地方造兵採礦,建立基地,再派兵去周圍的地方探索,繼續造兵採礦,佔領的地方越來越多,整張地圖也越來越清晰。編程也是這樣,一開始的時候,什麼都看不清,什麼都不懂,學了幾年也寫不出個軟件。傳統的學習模式是,學習,理解,運用,而學編程的時候,可以靈活一點。把編程知識想象成一個3D網絡,每個知識點都是網絡中的一個節點,每個節點上有一盞燈,你學會了,燈就亮了,可以看到周圍的節點,接著走,點燈,再走,再點燈,這樣,燈亮的越來越多,看的越來越清楚,對於自己要走的方向也越來越有信心。基本的思想是,先用後學,縮短反饋,反覆迭代。舉個例子來說,假如初學Java,想寫個下載軟件,怎麼辦?第一次迭代:寫出個下載文件的類。破冰階段。這個階段的目標是,先跑起來,懂不懂沒關係,先有一份能運行,能打印log的代碼出來。這樣就有了反饋。其實很簡單,網上搜一下,直接可以找到代碼段,放進IDE就可以跑。

學習階段。捋出代碼中的知識點,分別點亮。文件系統,Input/OutStream,URL,這些都是用到的知識點,研讀官方文檔,嘗試調用不同的method, 跑起來就能看到結果,儘快學會運用。專家階段。想象自己是專家,試圖理解為什麼是這樣。為什麼要用ByteArrayOutputStream?還有其他的OutputStream嗎?組織結構是什麼?為什麼要用URL類?還有其他的選擇嗎?各有什麼優缺點?很多問題可能解答不了,但只要想了,就會很不一樣。

這樣,一輪迭代就完成了,也點亮了幾個知識點,File, input/out stream, url。

接著來,迭代2:實現斷點續傳。知識點:http request, response.

迭代3: 管理多個下載文件。知識點:多線程,embedded db,sql。

迭代4: 加個UI。知識點:GUI,消息處理,響應模式。到這時候,基本上代碼已經改的亂七八糟,難以為繼了。

迭代5:重構。知識點:軟件工程,代碼管理,設計模式。這是相當痛苦的過程。

迭代6: Web版,通過網頁管理下載任務。知識點:web ui,server,db,各種協議,通訊模式,相當不容易。

迭代7: App版,同樣的server端,通過手機客戶端管理下載。知識點: app開發,各種實現方式。

迭代8: 爬蟲版,專門用來爬網頁,或者特定信息的版本。知識點: 爬蟲,文本處理,dom。迭代9: 股市版,爬下股票價格,畫出各種圖表,指標。知識點:畫圖,數學計算,金融知識。在這個過程中,同步學習專業課裡的OS,DB,軟件工程,網絡,會時不時有醍醐灌頂的感覺。點亮的知識點越來越多,路也會越來越好走。可以選擇向上走,做應用,也可以向下走,做底層。有的喜歡做app,有的能給玩具熊編程,有的可以操縱空調,有的可以做股票交易。學習的過程不是線性的,而是在不斷的調整,朝向最重要,最有興趣的方向,完善自己的技能樹。就當作是程序員養成遊戲吧。


分享到:


相關文章: