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