英文原文: What I tell all new programmers
在編程這一行,我已經干了 20 多年了。至今為止,我也差不多寫過六七門編程導論課程,教授時間總計超過 1000 小時。以下是我不止一次向我的學生強調過的,我多年來一系列智慧的結晶(排列順序無特定含義)。
首先,歡迎你成為一個程序員。
編程真的很難。 不管你是有多么地擅長編程,唯一能成為障礙的是大家自己學習和解決問題的能力。在這一行浸得越久,就越理解這個事實。這其實非常有意思——因為這樣一來,我們就永遠也不會原地踏步、滿足于現狀。如果你喪失了這種進取心,那么在出現異常之時,很容易對此厭倦,甚至最終放棄。
編程也是最令人沮喪的事情之一。 一般而言,正常的編程體驗是這樣的:嘗試、失敗、更加用功、重新思考、靈機一動、最終奏效。在這過程中,會感到沮喪是很正常的,而且一旦我們這會成功了,就會想著去做更難的項目,然后這個沮喪感又揮之不去了。但是這會促使我們更加努力地去解決問題,得出一個圓滿的答案。不過,在此之前,我們得自我調整,舒展自己愁云滿布的心情。
再怎么復雜的問題,總會有解決方案。 隨著我們的編程能力增強,我們對自己將會更自信。這有利于我們及時調整各種負面情緒、更好地去解決那些難題(話說,如果太簡單就絲毫沒有挑戰性了)。
當我們還是小孩子的時候,我們總是闖禍,但是隨著年齡的增長,我們很少有機會真正辦砸一件事情。請記住,編程不是一件每個人都能做的事情。所以,你很牛!
在編程過程中,第一個小時和第 10 個小時是不同的,第 10 個小時和第 100 個小時也大不一樣。我記得有人曾在博客中描述高爾夫球這項運動到了第 1 萬個小時,會產生質的變化,編程也是如此。
編程就像魔法,我們都是魔法師。 你看,我們努力學習,專研我們的課程知識(計算機和網絡),然后召喚我們的魔法(程序)。魔法師可以教授其他人如何施展魔法,而我們發明創造的充滿奇幻色彩的設備卻能讓任何人都可以使用(如互聯網和手機)。這些設備提供的各項功能,通通離不開我們程序員的技能。
有效利用網絡資源。 在你第一年學習編程的過程中所碰到的每一個問題,在你之前可能已經有 100 個人與它親密接觸過了,網上肯定會有各種解決方案星羅棋布。越快掌握如何有效網上搜索的技能,學習的進度就越快。警告:在你不知道某段代碼的工作原理之前,不要輕易復制運用這些網絡資源。
作為程序員,無論何時都不應該忘記我們的工具箱。 這些工具是我們的左膀右臂。我們在這個領域學到的第一件事情(變量,循環等)就像螺絲刀和錘子。這些工具將伴隨著我們遨游在這個世界的每一天。而且,隨著我們經驗的增長,還能與時俱進學習更高級的工具,這一類的工具雖然不是非常普及,但是更擅長解決一些特定的問題 (例如,二叉樹數據結構、A*、Valgrind、調試器等)。大多數編程領域(游戲開發、Web 開發、數據庫)都有自己特有的一系列解決問題的模式。
程序因代碼而生。在計算機上,我們可以享用其他人寫出的方案,可以借鑒、可以修改、也可以編輯,隨心所欲。
想要更加擅長編程,最好的方法就是寫代碼,寫大量的代碼。 努力總會有收獲。作為一名教育工作者,我將竭盡所能為大家提供一臂之力。但是,如果你已經掌握了充足的知識,那么只要有足夠的時間,沒有我也能發現問題的所在。古語有云,“堅持就是勝利”。所以,好好練習寫代碼吧,騷年。
同時,我們還需要閱讀大量的代碼。 有很多程序員在這一領域比我們更如魚得水,他們早就寫下了很多可供參考的代碼。三人行,必有我師。
有人說,第二門編程語言總是最難的,因為,第一門限制了我們思考程序的方式,而當我們需要學習另一種編程語言時,我們就不得不打破原有的秩序并重新建立一個。在學習第二語言之后,接下來要是再學其他新的編程語言就快多了。現在,我只要一周就能將任何一種給定的編程語言學的差不多。
永遠不會有所謂“最好的”。 有些語言和工具會在解決某些問題上比較擅長。當我們學習其他語言的時候,不要試圖用舊的端口去連接新的系統,要用新語言去思考和解決問題。
學會樂在其中。 編程是一個匯集了很多問題的大集合,這些問題則需要我們一一解決。給自己找點樂子,可以寫點自己感興趣的程序,興趣是最好的老師。
優秀的程序員永遠不會滿足于現狀,總是不斷學習。 如果你能做到這一點,那么你永遠也不必擔心自己的飯碗。
出現疑難雜癥時,可以試著將程序寫到紙上。 這不是開玩笑,這個竅門一般人我不告訴他。
最后,我想說,還有很多其他好的建議是我沒有談及的——但是,我想說,最好的建議是,我們得找到適合自己的。
希望各位都能開開心心編程,快快樂樂寫代碼:D
譯文鏈接: http://news.html5tricks.com/tell-new-programmer.html
翻譯作者: IT 新聞 – 蔣麗麗