我寫(xiě)代碼已超過(guò) 20 年了,并且迄今為止也教了大約 6 門(mén)編程入門(mén)課,總課時(shí)已經(jīng) 1000 多個(gè)小時(shí)了。以下是一些我跟學(xué)生至少說(shuō)過(guò)一次的(入門(mén)編程的)建議,排名不分先后。
歡迎來(lái)到編程的世界!
1. 編程真的很難
無(wú)論你多擅長(zhǎng)編程,唯一能降低開(kāi)發(fā)速度的,就是學(xué)習(xí)和解決問(wèn)題的能力。而當(dāng)你越是擅長(zhǎng)編程的時(shí)候,這種情況就可能越明顯。這是一個(gè)非常吸引人的特質(zhì)—你永遠(yuǎn)不會(huì)厭倦編程。如果你厭倦了,那么你的做法肯定是錯(cuò)的,你應(yīng)該去總結(jié)思考你在重寫(xiě)的代碼。
2. 編程也會(huì)是最令人沮喪的事情之一
編程的一般步驟是:嘗試解決問(wèn)題 → 受挫 → 更努力地嘗試 → 回顧 → 頓悟之后最終把程序運(yùn)行起來(lái)。感到沮喪太正常了,而且這種感覺(jué)永遠(yuǎn)不會(huì)完全離去。(當(dāng)你能力更強(qiáng)的時(shí)候,你將會(huì)面對(duì)更加困難的問(wèn)題,因此也會(huì)存在同樣的情況)。但這種沮喪的感覺(jué),將使得解決這個(gè)問(wèn)題感到更加地滿足。因此你需要去適應(yīng)在這種沮喪的感覺(jué)中工作。
3. 無(wú)論問(wèn)題多么復(fù)雜,總會(huì)有其對(duì)應(yīng)的解決方案的
當(dāng)你的編程技能逐漸提升的時(shí)候,你也將更擅長(zhǎng)也更有信心使自己保持平靜,不陷入沮喪抓狂之中。這會(huì)使得沮喪的感覺(jué)變淡,同時(shí)也將促使你去解決更加困難復(fù)雜的問(wèn)題。(如果問(wèn)題太簡(jiǎn)單了,你甚至?xí)X(jué)得無(wú)聊的!)
4. 編程不是每個(gè)人都能做的
當(dāng)我們還是孩子的時(shí)候,我們做不好任何事,但是我們也沒(méi)有意識(shí)到這些。然而作為成年人,我們幾乎沒(méi)有機(jī)會(huì)去搞砸某些事。擁抱這種感覺(jué)吧。這太正常了,因?yàn)槟阍谧龅氖拢⒉皇敲總€(gè)人都有能力做的。
5. 要知道和你編程的第一個(gè)小時(shí)相比,練習(xí) 10 小時(shí)之后將會(huì)完全不同
同樣的,當(dāng)你完成100小時(shí)的練習(xí)之后,事情又更不一樣了。曾經(jīng)有個(gè)人在博客上寫(xiě)到當(dāng)他在高爾夫上練習(xí)一萬(wàn)小時(shí)之后,水平產(chǎn)生了質(zhì)的飛越。編程也是這樣的。
6. 如果程序員是巫師哈利,那編程是基礎(chǔ)的魔法
我們努力學(xué)習(xí),鉆研“課本知識(shí)”(計(jì)算機(jī)+互聯(lián)網(wǎng)),學(xué)習(xí)“單詞拼寫(xiě)”(程序)。巫師也可以教其他巫師如何使用他們的魔法。我們也可讓這樣的情景在地球上實(shí)現(xiàn),去創(chuàng)造每個(gè)人都可以使用的神奇的設(shè)備。(就像互聯(lián)網(wǎng)和手機(jī))。即使沒(méi)有我們“施魔法”,這些設(shè)備同樣可以做一些不可能的事情。
7. 用好互聯(lián)網(wǎng)
在你開(kāi)始學(xué)習(xí)編程的第一年,你所遇到的每一個(gè)問(wèn)題都是其他100個(gè)人已經(jīng)遇到的。解決方法在網(wǎng)上已經(jīng)記錄下來(lái)了。你越快的學(xué)會(huì)有效的使用 Google 尋求幫助,你也將變得越開(kāi)心。提示:如果你不明白代碼的原理是什么,永遠(yuǎn)不要直接從網(wǎng)上復(fù)制。
8. 善于總結(jié)經(jīng)驗(yàn)和技巧
作為程序員,無(wú)論何時(shí),我們都要帶一個(gè)工具箱。工具包含了我們解決問(wèn)題的所有技巧。你所學(xué)的第一個(gè)對(duì)象(比如變量、for 循環(huán)等等)就像我們的螺絲刀和錘子。在你的編程生涯中將會(huì)每天都使用它們。當(dāng)逐漸熟練的時(shí)候,你將開(kāi)始學(xué)習(xí)如何使用更加高級(jí)的工具,這些工具可能不會(huì)被經(jīng)常使用,但是卻在解決特定問(wèn)題的時(shí)候非常有效。(比如數(shù)據(jù)結(jié)構(gòu)中的樹(shù)、A* 算法、valgrind (內(nèi)存調(diào)試工具)、調(diào)試器等)。大部分開(kāi)發(fā)領(lǐng)域(游戲開(kāi)發(fā)、 web 開(kāi)發(fā)、數(shù)據(jù)庫(kù))同樣也有著各自領(lǐng)域內(nèi)的特定問(wèn)題和解決方案。其結(jié)果就是,你所解決的任何問(wèn)題在下次遇到的時(shí)候?qū)?huì)簡(jiǎn)單很多。
9. 每個(gè)寫(xiě)好的程序,都是一步一步編碼而來(lái)的
你幾乎可以在你的計(jì)算機(jī)上閱讀、修改、測(cè)試任何項(xiàng)目,同樣也包含大部分別人寫(xiě)好的項(xiàng)目。對(duì)計(jì)算機(jī)來(lái)說(shuō),這基本上就是一項(xiàng)超能力。
10. 堅(jiān)持大量實(shí)踐
在開(kāi)發(fā)上有所進(jìn)步的最好方法就是大量寫(xiě)程序堅(jiān)持做東西。作為老師,在我力所能及范圍內(nèi)我將會(huì)給予幫助。但是一旦掌握了足夠的知識(shí)儲(chǔ)備,你將有能力弄懂我告訴你的任何事情而不需要太多時(shí)間。所以堅(jiān)持寫(xiě)程序吧。正如一位智者曾經(jīng)告訴我的:“只要有耐心,成功不可避免。”
11. 多讀優(yōu)秀代碼
有太多的程序員比我們聰明了。他們寫(xiě)了很多代碼,只要你需要你都可以閱讀。這些代碼很有可能在 Github 上。
12. 據(jù)說(shuō),你所學(xué)的第二種編程語(yǔ)言將會(huì)是最難的
第一門(mén)編程語(yǔ)言將會(huì)塑造你對(duì)程序的思維模式(嚴(yán)肅臉!),當(dāng)學(xué)習(xí)第二門(mén)語(yǔ)言的時(shí)候,你將不得不陷入前面的思維模式中。(絲毫不影響大腦思維方式的編程語(yǔ)言根本不值得學(xué)習(xí))。但是當(dāng)完成第二門(mén)語(yǔ)言的學(xué)習(xí)之后,你將能夠很快的學(xué)會(huì)其他新的語(yǔ)言。現(xiàn)在我可以在一周的時(shí)間內(nèi)把任意一門(mén)給定的命令式語(yǔ)言學(xué)得足夠熟練。
13. 沒(méi)有所謂的“最好的語(yǔ)言”
某些語(yǔ)言和工具只是在解決特定對(duì)應(yīng)的問(wèn)題時(shí)比其它的要好一點(diǎn)。當(dāng)學(xué)習(xí)新的語(yǔ)言的時(shí)候,不要嘗試把你過(guò)去的思維模式帶到新的語(yǔ)言系統(tǒng)中。相應(yīng)地,我們應(yīng)該學(xué)會(huì)如何更“地道”用新語(yǔ)言編程。
14. 放松心態(tài)、保持“單純”
編程是一個(gè)巨大的樂(lè)高積木集合,充滿了各種需要被解決的有趣的問(wèn)題。為了深入弄懂其中的構(gòu)造,花時(shí)間去編寫(xiě)有趣的程序,將比給你任何任命都要有趣的多。
15. 最優(yōu)秀的程序員總是在工作之外自己也一直嘗試編程。如果你真的非常喜歡且擅長(zhǎng)這樣,你將永遠(yuǎn)不會(huì)失業(yè)。
16. 當(dāng)你卡殼的時(shí)候,在紙上寫(xiě)下你的程序。我是認(rèn)真的。這非常神奇,是在編程競(jìng)賽中的標(biāo)準(zhǔn)訓(xùn)練模式。(我認(rèn)為這個(gè)方法有效的原因是,當(dāng)你不必花費(fèi)精力去考慮語(yǔ)法的時(shí)候,你會(huì)有更多的精力去思考問(wèn)題的本質(zhì)和如何解決它)
-
編程
+關(guān)注
關(guān)注
90文章
3716瀏覽量
97192 -
程序員
+關(guān)注
關(guān)注
4文章
956瀏覽量
30942
發(fā)布評(píng)論請(qǐng)先 登錄
Claude Code在國(guó)內(nèi)怎么使用?AI編程人員必看的完整指南!
如何成為編程高手
大理的AI野心藏不住了——風(fēng)花雪月中千名程序員探討人工智能
程序員最常見(jiàn)謊言
Unix的相關(guān)知識(shí)
匯編程序段的定義介紹
奔赴熱AI,碼力全開(kāi)!Talkweb House@1024程序員日系列活動(dòng)圓滿收官
開(kāi)鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開(kāi)源鴻蒙構(gòu)建大會(huì)圓滿落幕!
星光不負(fù),碼向未來(lái):1024致敬每一位“以碼為夢(mèng)”的鴻蒙開(kāi)發(fā)者
無(wú)法在調(diào)試中連接到PSOC4怎么解決?
跟老齊學(xué)Python:從入門(mén)到精通
程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)
如何在 樹(shù)莓派 上編寫(xiě)和運(yùn)行 C 語(yǔ)言程序?
零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?
Gemini Vision + Raspberry Pi 化身“數(shù)字導(dǎo)盲犬”?
一位資深程序員的編程經(jīng)驗(yàn)分享
評(píng)論