Java老師告訴你:程序員小白常犯的錯誤及規(guī)避之道
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
實際的代碼教學(xué)永遠(yuǎn)也不會停止。我講授Java已七年有余,一路上自己踩過見學(xué)生掉過的坑積累起來可挖穿地心,我敢說我了解編碼學(xué)習(xí)的一百種錯誤方法,當(dāng)然啦,正確方法也知道不少。
開啟開發(fā)人員的職業(yè)生涯有多種方式,但有的時候人們會產(chǎn)生一種幻覺——即“條條大路通編碼,條條大路皆為佳”。就我個人經(jīng)驗而言,并非所有方式都是佳策。本文將分享有關(guān)學(xué)習(xí)編程的無效方法,并介紹更好的替代方法。
1. 急于求成
當(dāng)你急切想取得成就時,就會意圖一個猛子完成所有事情。比如,打開幾個網(wǎng)頁,開始學(xué)習(xí)一些Java,然后學(xué)習(xí)一些PHP,然后簡要了解JS框架。一天下來,自認(rèn)為對編程了解了很多,但事實并非如此。
第二天早上是醒來再看看,是不是突然意識到昨天學(xué)習(xí)的內(nèi)容幾乎忘得一干二凈了,幾個小時的學(xué)習(xí)似乎毫無成果。
學(xué)習(xí)新知識的訣竅在于:專注于某件事物。如果學(xué)習(xí)Java,就只學(xué)習(xí)Java,至少在最初的幾個月要保持這種策略。之后,在學(xué)習(xí)其他技術(shù)并在實際項目中綜合運用這些技術(shù)時,其中的益處就顯現(xiàn)出來了。
2. 跳過基礎(chǔ)知識
在可以馬上開始寫第一本小說時,誰會在乎簡單的字母怎么寫?如果“下一件大事”就在前面等著,為什么還要花時間學(xué)習(xí)有關(guān)類或繼承的任何知識?所以就放心大膽地跳過乏味的基礎(chǔ)知識吧。
冷靜一下!基礎(chǔ)不牢,地動山搖,學(xué)習(xí)基礎(chǔ)知識是未來職業(yè)的基石。如果不認(rèn)真地夯實基礎(chǔ),未來必將深受其害實際。工作中可沒有時間讓你鞏固基本知識,現(xiàn)在就是一點一點學(xué)習(xí)基礎(chǔ)知識的最佳時刻。
圖源:unsplash
3. 偶爾學(xué)習(xí)
定期學(xué)習(xí)就是記憶的運作方式:必須重復(fù)多次才能真正掌握一種技能。如果沒有進一步的運用,努力培養(yǎng)的技能將再次從記憶中消失。這就是為什么三天打魚兩天曬網(wǎng)注定了你會直接走向失敗,每天學(xué)習(xí)30分鐘的編程比每隔星期一練習(xí)三個小時要好。
4. 獨自學(xué)習(xí)編碼
“我覺得編碼就是鍵入正確的行。我為什么還需要其他人?”筆者常常在建議學(xué)生在學(xué)習(xí)中與別人交流時聽到這樣的反問。想象一下自己躲在顯示器后面,在孤獨和沉默中編寫出天才代碼……嗨,還是別幻想了吧!不管軟件開發(fā)人員多么內(nèi)斂,這項工作也是需要團隊合作的,你也不例外。
在學(xué)習(xí)的道路上,他人的幫助也十分重要。誰知道會不會在這條路上會遇到未來的同事或上司呢?
那么,可以到哪尋求幫助呢?可以加入程序員論壇、專業(yè)社區(qū)等等,比如可以加入CodeGym、Stack Overflow、Reddit等論壇(例如r\learnprogramming、r\java和r\learnjava等subreddit)。和他人談?wù)搶W(xué)習(xí)和工作,尋求幫助,也幫助別人,并從中獲得一些靈感。這不僅會提高專業(yè)技能,也可以提升你的軟技能。
5. 只看書和視頻,且重復(fù)如此
讀的編程書籍越多,就越能成為一個好的程序員?并非如此。即使理論是一個生動的卡通片的形式呈現(xiàn),也要明白“紙上得來終覺淺,絕知此事要躬行”??梢試L試一些編碼挑戰(zhàn)平臺,玩玩游戲,邊做邊學(xué)。以下是一些在線編碼平臺:
- Gitconnected:Gitconnected社區(qū)里面有很多學(xué)習(xí)編程的教程資源。所有的資料都是由軟件工程師和開發(fā)人員篩選過的,所以可以說是滿滿干貨。在這個社區(qū),成員們相互學(xué)習(xí)相互交流,以找到最佳的解決方案來完成任務(wù)。

- CodeGym:CodeGym是一個結(jié)構(gòu)化的Java課程,結(jié)合了講座和實操任務(wù)。在這個平臺上,你可以從初學(xué)者開始做任務(wù),一步步提升自己。整個課程建立在一個游戲和故事敘述的探索中,這讓整個學(xué)習(xí)過程變得更有趣了。

- Coderbyte:這個資源平臺是一個競賽向和通關(guān)向的平臺。其中有入門課程,也有一個難度等級明確的大型競賽庫,還有求職面試的準(zhǔn)備工具。

- Codechef:Codechef是一個友好競爭的地方,其中有初級課程和月度挑戰(zhàn)。想不想看看自己的名字成為頂級賽手之一!

6. 沒有學(xué)著去解決問題
來看看一下Java學(xué)習(xí)者常犯的錯誤。首先,他們真的只學(xué)習(xí)簡單的編碼,但不會持續(xù)地學(xué)習(xí)“跟著我重復(fù)”的教程。創(chuàng)建軟件不僅僅是寫一行又一行的代碼,而是為了能為人們帶來些許便利,幫人們解決問題。
你必須開始使用編碼解決問題,而不僅僅是胡亂使用編碼。在工作中不可能碰到像“寫50行Java代碼”這樣的任務(wù),而通常會是這樣:“我們需要這個東西這樣工作,你能做到嗎?”
7. 不確定代碼是否有效
在一個虛幻的世界里,開發(fā)人員能憑空寫出完美的代碼,而代碼也奇跡般地奏效了。但在現(xiàn)實世界中,事情要更為復(fù)雜。你為一些應(yīng)用程序的功能寫了一遍又一遍的代碼,然后一次次出bug了,這個應(yīng)用程序就是無法運行。
你真的不知道出什么問題了嗎,是一次一個錯誤還是一次好幾個錯誤?現(xiàn)在必須從頭檢查一切。其實另有上策——在進入下一環(huán)節(jié)之前對項目的每個部分進行兩到三次檢查,代碼不出錯的幾率就更高了。
8. 永不承認(rèn)自己寫的代碼糟糕
圖源:unsplash
小白們很難意識到自己犯了錯誤,當(dāng)每天或每一行代碼中都有大量錯誤時,這就更難意識到了。
但自欺欺人會讓情況更糟。所以面對現(xiàn)實吧:寫出糟糕代碼是不可避免的階段,你需要時不時地重寫,這也是提升過程的一部分。好好檢查代碼,如果說有什么是需要改變的,那就去改代碼吧。
9. 不讓經(jīng)驗人士檢查代碼
在學(xué)習(xí)演奏樂器時,人們幾乎拒絕讓別人看到自己笨拙的手指動作。寫代碼也是如此——在代碼無可挑剔之前,我們不想展示給任何人。開發(fā)小白不會去尋求幫助,還會拒絕尋求建議,可以想象其學(xué)習(xí)之路也因此變得更加漫長和艱難。
你應(yīng)該向前輩征求對自己代碼的意見??梢匀I(yè)社區(qū)和論壇(如Stack Overflow、CodeProject或CodeGym論壇),如果是學(xué)生更方便,可以去找導(dǎo)師,或者和同伴討論。這樣,對于解決同一個問題,你會得到不同的看法,還會學(xué)得更好更快,因為能從經(jīng)驗豐富的開發(fā)人員那里獲得知識。
這很大程度上也能促進一個良好的后效應(yīng):繼續(xù)把自己的知識分享給其他開發(fā)小白,這是相當(dāng)有益的。
圖源:unsplash
學(xué)習(xí)編程確實需要耗費時間和精力。但是不必重蹈他人的覆轍而讓學(xué)習(xí)過程復(fù)雜化。如果只停留在理論階段,拒絕他人幫助,沒有找到合適的解決問題方法,那么成為專業(yè)人士將需要很長一段時間。
記住,最糟糕的事情是從不開始學(xué)習(xí),或是在第一次失敗后就輕言放棄,錯誤和失敗只是學(xué)習(xí)過程的一部分。最重要的是要定期學(xué)習(xí),持續(xù)努力,你一定會有所收獲。






















