我寫程式碼已超過 20 年了,並且迄今為止也教了大約 6 門程式設計入門課,總課時已經 1000 多個小時了。以下是一些我跟學生至少說過一次的(入門程式設計的)建議,排名不分先後。
歡迎來到程式設計的世界!
1. 程式設計真的很難
無論你多擅長程式設計,唯一能降低開發速度的,就是學習和解決問題的能力。而當你越是擅長程式設計的時候,這種情況就可能越明顯。這是一個非常吸引人的特質—你永遠不會厭倦程式設計。如果你厭倦了,那麼你的做法肯定是錯的,你應該去總結思考你在重寫的程式碼。
2. 程式設計也會是最令人沮喪的事情之一
程式設計的一般步驟是:嘗試解決問題 → 受挫 → 更努力地嘗試 → 回顧 → 頓悟之後最終把程式執行起來。感到沮喪太正常了,而且這種感覺永遠不會完全離去。(當你能力更強的時候,你將會面對更加困難的問題,因此也會存在同樣的情況)。但這種沮喪的感覺,將使得解決這個問題感到更加地滿足。因此你需要去適應在這種沮喪的感覺中工作。
3. 無論問題多麼複雜,總會有其對應的解決方案的
當你的程式設計技能逐漸提升的時候,你也將更擅長也更有信心使自己保持平靜,不陷入沮喪抓狂之中。這會使得沮喪的感覺變淡,同時也將促使你去解決更加困難複雜的問題。(如果問題太簡單了,你甚至會覺得無聊的!)
4. 程式設計不是每個人都能做的
當我們還是孩子的時候,我們做不好任何事,但是我們也沒有意識到這些。然而作為成年人,我們幾乎沒有機會去搞砸某些事。擁抱這種感覺吧。這太正常了,因為你在做的事,並不是每個人都有能力做的。
5. 要知道和你程式設計的第一個小時相比,練習 10 小時之後將會完全不同
同樣的,當你完成100小時的練習之後,事情又更不一樣了。曾經有個人在部落格上寫到當他在高爾夫上練習一萬小時之後,水平產生了質的飛越。程式設計也是這樣的。
6. 如果程式設計師是巫師哈利,那程式設計是基礎的魔法
我們努力學習,鑽研“課本知識”(計算機+網際網路),學習“單詞拼寫”(程式)。巫師也可以教其他巫師如何使用他們的魔法。我們也可讓這樣的情景在地球上實現,去創造每個人都可以使用的神奇的裝置。(就像網際網路和手機)。即使沒有我們“施魔法”,這些裝置同樣可以做一些不可能的事情。
7. 用好網際網路
在你開始學習程式設計的第一年,你所遇到的每一個問題都是其他100個人已經遇到的。解決方法在網上已經記錄下來了。你越快的學會有效的使用 Google 尋求幫助,你也將變得越開心。提示:如果你不明白程式碼的原理是什麼,永遠不要直接從網上覆制。
8. 善於總結經驗和技巧
作為程式設計師,無論何時,我們都要帶一個工具箱。工具包含了我們解決問題的所有技巧。你所學的第一個物件(比如變數、for 迴圈等等)就像我們的螺絲刀和錘子。在你的程式設計生涯中將會每天都使用它們。當逐漸熟練的時候,你將開始學習如何使用更加高階的工具,這些工具可能不會被經常使用,但是卻在解決特定問題的時候非常有效。(比如資料結構中的樹、A* 演算法、valgrind (記憶體除錯工具)、偵錯程式等)。大部分開發領域(遊戲開發、 web 開發、資料庫)同樣也有著各自領域內的特定問題和解決方案。其結果就是,你所解決的任何問題在下次遇到的時候將會簡單很多。
9. 每個寫好的程式,都是一步一步編碼而來的
你幾乎可以在你的計算機上閱讀、修改、測試任何專案,同樣也包含大部分別人寫好的專案。對計算機來說,這基本上就是一項超能力。
10. 堅持大量實踐
在開發上有所進步的最好方法就是大量寫程式堅持做東西。作為老師,在我力所能及範圍內我將會給予幫助。但是一旦掌握了足夠的知識儲備,你將有能力弄懂我告訴你的任何事情而不需要太多時間。所以堅持寫程式吧。正如一位智者曾經告訴我的:“只要有耐心,成功不可避免。”
11. 多讀優秀程式碼
有太多的程式設計師比我們聰明瞭。他們寫了很多程式碼,只要你需要你都可以閱讀。這些程式碼很有可能在 Github 上。
12. 據說,你所學的第二種程式語言將會是最難的
第一門程式語言將會塑造你對程式的思維模式(嚴肅臉!),當學習第二門語言的時候,你將不得不陷入前面的思維模式中。(絲毫不影響大腦思維方式的程式語言根本不值得學習)。但是當完成第二門語言的學習之後,你將能夠很快的學會其他新的語言。現在我可以在一週的時間內把任意一門給定的命令式語言學得足夠熟練。
13. 沒有所謂的“最好的語言”
某些語言和工具只是在解決特定對應的問題時比其它的要好一點。當學習新的語言的時候,不要嘗試把你過去的思維模式帶到新的語言系統中。相應地,我們應該學會如何更“地道”用新語言程式設計。
14. 放鬆心態、保持“單純”
程式設計是一個巨大的樂高積木集合,充滿了各種需要被解決的有趣的問題。為了深入弄懂其中的構造,花時間去編寫有趣的程式,將比給你任何任命都要有趣的多。
15. 最優秀的程式設計師總是在工作之外自己也一直嘗試程式設計。如果你真的非常喜歡且擅長這樣,你將永遠不會失業。
16. 當你卡殼的時候,在紙上寫下你的程式。我是認真的。這非常神奇,是在程式設計競賽中的標準訓練模式。(我認為這個方法有效的原因是,當你不必花費精力去考慮語法的時候,你會有更多的精力去思考問題的本質和如何解決它)。
之前我也時不時給出了其他建議。但正如大多數建議一樣,如果某件事對你真的很重要,相信你自己會主動去研究清楚的。
快樂程式設計 :D
打賞支援我翻譯更多好文章,謝謝!
打賞譯者
打賞支援我翻譯更多好文章,謝謝!
任選一種支付方式