很多新手程序員在一開(kāi)始都是滿(mǎn)懷熱情地投入到編程的學(xué)習(xí),但卻在學(xué)習(xí)過(guò)程中處處碰壁,導(dǎo)致放棄。
編程的難點(diǎn)在于邏輯、數(shù)學(xué)、算法,還是模塊、框架、接口的掌握?但這些僅僅是編程語(yǔ)言中的設(shè)計(jì)模式,只要你愿意投入時(shí)間和精力去學(xué)習(xí),哪怕是通過(guò)重復(fù)記憶,也能夠熟練掌握這些知識(shí)。它們并非編程的真正難題。
那么,我們?yōu)槭裁磿?huì)覺(jué)得編程難呢?我們又該如何攻克這些難點(diǎn)?我們一起往下看??
一、不知道從什么技術(shù)入手
在編程的世界里,選擇正確的起點(diǎn)往往讓人困惑。許多人在開(kāi)始學(xué)習(xí)編程時(shí),會(huì)問(wèn)自己:“我應(yīng)該從哪種編程語(yǔ)言開(kāi)始?”
這個(gè)問(wèn)題的背后,是他們對(duì)學(xué)習(xí)編程的目的尚不明確。當(dāng)你有了明確的項(xiàng)目目標(biāo)時(shí),選擇編程語(yǔ)言就變得簡(jiǎn)單許多。
如果你想構(gòu)建iOS app,那么你需要學(xué)習(xí)Objective C或Swift。
如果你想構(gòu)建Android app,那么你需要學(xué)習(xí)Java。
如果你想構(gòu)建Web app,那么你需要學(xué)習(xí)JavaScript。
……
如果依然猶豫不決,那么不妨咨詢(xún)下某個(gè)程序員的意見(jiàn)。一旦你明確了你的項(xiàng)目目標(biāo),那么他就能很快地為你推薦適合你使用的技術(shù)。
實(shí)際上,選擇語(yǔ)言的過(guò)程風(fēng)險(xiǎn)相對(duì)較小,因?yàn)椴煌恼Z(yǔ)言之間往往有許多共通之處,這使得從一種語(yǔ)言過(guò)渡到另一種語(yǔ)言變得更加容易。
二、不能學(xué)以致用,以及責(zé)備自己
學(xué)習(xí)過(guò)程中,理論知識(shí)的學(xué)習(xí)相對(duì)容易,但最大問(wèn)題玩玩出現(xiàn)在應(yīng)用理論來(lái)解決問(wèn)題并編寫(xiě)新代碼的時(shí)候。這中間的差距實(shí)際上就是技能空白。
很多人做不出項(xiàng)目,會(huì)認(rèn)為自己不夠聰明,或者沒(méi)有天賦,其實(shí)不是的,你只是需要練習(xí)技能的過(guò)程。
三、不吸取解決任務(wù)中獲得的經(jīng)驗(yàn)教訓(xùn)
如果你順利完成了一項(xiàng)任務(wù),不要急于進(jìn)入下一個(gè),相反,應(yīng)該反思并從中學(xué)習(xí)。這樣才不會(huì)浪費(fèi)一個(gè)絕佳的學(xué)習(xí)機(jī)會(huì)。
可以多問(wèn)問(wèn)自己:代碼是否能夠應(yīng)對(duì)邊界情況?它是否足夠整潔,易于理解和維護(hù)?你的解決方案是否最優(yōu)?代碼與其他模塊的交互是否順暢?……
這些反思將幫助你成長(zhǎng)。
四、你不知道如何處理一個(gè)任務(wù)
當(dāng)你面對(duì)一個(gè)任務(wù)感到無(wú)從下手時(shí),你可能會(huì)隨機(jī)地去嘗試,或者從其他地方復(fù)制一些你自己也不明白的代碼。不要這么做,理解你為什么會(huì)遇到障礙是解決問(wèn)題的第一步。
可能是因?yàn)槔碚撝R(shí)掌握不牢固,或者任務(wù)過(guò)于龐大,需要分解為更小的部分,或者你忽略了一些關(guān)鍵概念。無(wú)論原因如何,找到它并解決它。
五、你知道如何解決任務(wù),但解決方案不管用
這是編程中最常見(jiàn)的情況,哪怕是那些經(jīng)驗(yàn)豐富的資深程序員也是如此。你的解決方案之所以不起作用最大的可能是你的代碼中存在著bug。
這時(shí),調(diào)試代碼的能力就顯得至關(guān)重要。很多人擔(dān)心會(huì)花太多時(shí)間用于調(diào)試代碼。這是正常的,在你第一年的編程規(guī)劃中這是不可避免的。
調(diào)試不僅是修復(fù)bug的過(guò)程,也是提高編程技能的重要途徑。
六、不知道如何接受幫助
在學(xué)習(xí)過(guò)程中,不要只是被動(dòng)接受幫助。當(dāng)你從書(shū)籍、課程、教程或社區(qū)中獲得幫助時(shí),要深入理解背后的原理和概念。
例如:你在某個(gè)問(wèn)題上花了10小時(shí),最后終于有人提供一個(gè)解決方案,你往往會(huì)采取“拿來(lái)主義”——采納解決方案之后就直接跳到一個(gè)任務(wù)中去。千萬(wàn)別這樣做。
當(dāng)別人提供了解決方案,不要急于應(yīng)用,而是要思考自己的思維過(guò)程,了解哪里出了問(wèn)題,以及如何改進(jìn)。同時(shí),了解他人的解決思路,從中學(xué)習(xí)。
----------
最后,不要忽視將學(xué)到的理論知識(shí)應(yīng)用于實(shí)踐。編程是通過(guò)不斷實(shí)踐,形成良好習(xí)慣來(lái)解決問(wèn)題的過(guò)程。只有將理論應(yīng)用于實(shí)踐,才能真正掌握編程技能。