學(xué)習(xí)編程照著別人的代碼敲進(jìn)去有效率嗎?

原鏈接:https://www.zhihu.com/question/297309123/answer/568366310

這個(gè)問題我只能說,照著別人代碼敲一遍除了讓你看得仔細(xì)點(diǎn),練了打字外其它并沒有任何幫助——和自己盯著代碼仔細(xì)看是一樣的,這樣的學(xué)習(xí)效率是不高的。

首先得為什么會(huì)有這個(gè)問題,因?yàn)閯倓倢W(xué)習(xí)編程會(huì)走很多彎路,想找一個(gè)合適的方法學(xué)習(xí)。有這樣想法是值得鼓勵(lì)的,至少是知道怎么學(xué)習(xí)更好。我本人有些參考經(jīng)驗(yàn),可以吸取適用自己的地方。

平時(shí)寫代碼都是很屌的那種,就是別人說要用什么庫,什么庫才能做好,自己用原生代碼,幾個(gè)方法就實(shí)現(xiàn)好了,也經(jīng)常覺得公司里面代碼寫得就跟垃圾一樣,看了都拉低智商,也不覺得有什么挑戰(zhàn)(好在現(xiàn)在出來自由職業(yè)也不用顧忌說壞話), 說實(shí)話上班一天腦力勞動(dòng)強(qiáng)度完全達(dá)不到ACM 比賽強(qiáng)度的1/3。

計(jì)算機(jī)重點(diǎn)在于用已有的知識(shí)搭構(gòu)建功能,而構(gòu)建功能的步驟是固定的,只是需要掌握牢基礎(chǔ)知識(shí),并且提升自己的思考能力。思考能力也算是程序員的核心了(不是看,不是寫,而是思考,如果照著別人代碼寫同時(shí)帶上了思考,那么也是有效果的)。

學(xué)習(xí)基礎(chǔ)知識(shí):

1. 數(shù)據(jù)結(jié)構(gòu),經(jīng)典算法??梢愿鶕?jù)學(xué)到的算法和數(shù)據(jù)結(jié)構(gòu)解決書本習(xí)題后面的算法問題(注意不是看了解答過程再重復(fù)寫一遍,而是在自己不知道情況下寫一遍,代碼量可能是只有十幾行,寫花不了多少時(shí)間,只是思考得花些時(shí)間——一定要堅(jiān)持,我曾經(jīng)思考了幾天就為了解一道算法題,當(dāng)然根據(jù)自己的情況,不用一下選這么難的。這里培養(yǎng)的是解決問題的思考能力)。

這里還是要推薦下小編的web前端學(xué)習(xí)群:867726593,不管你是小白還是大牛,小編我都?xì)g迎,不定期分享干貨,包括 小編自己整理的一份最新的web前端資料和0基礎(chǔ)入門教程,歡迎初學(xué)和進(jìn) 階中的小伙伴。在不忙的時(shí)間我會(huì)給大家解惑。

2. 學(xué)會(huì)寫遞歸,同時(shí)把遞歸變?yōu)檠h(huán)實(shí)現(xiàn)相同的功能。(此處是完善思考能力,再提升一步)

當(dāng)你學(xué)會(huì)前面2條的時(shí)候,即使你是第一次接觸計(jì)算機(jī),經(jīng)過努力和學(xué)習(xí)掌握后水平已經(jīng)超過了入門的同學(xué),達(dá)到了中級(jí)的概念。這是內(nèi)功,不是說你對(duì)某個(gè)語言運(yùn)用自如了。武林高手比武比拼的是內(nèi)功,外面掌握語言學(xué)習(xí)用法只是熟悉程度是外在的招式(這個(gè)非常容易掌握,多寫幾次就會(huì))。

為什么開始就進(jìn)入內(nèi)功的修煉,因?yàn)槿f法歸一,萬變不離其宗,無論你以后學(xué)習(xí)什么語言,學(xué)了多少語言,剛進(jìn)入的水平就是中級(jí),一勞永逸。

后面只需要花點(diǎn)時(shí)間掌握語言的用法,方法調(diào)用,框架的使用,那么恭喜你,你的能力已經(jīng)可以勝任大部分互聯(lián)網(wǎng)公司的職位了。(這里得注意順序,是先掌握了核心的算法和思想后才是熟悉語言本身)

下面是通往高手的進(jìn)階篇,只有在你掌握上面的東西后,才能開啟下面的技能,不然容易走火入魔,我也幫不了你。

1. 開發(fā)過程中多思考,多嘗試新東西,思考是通往編程高手應(yīng)該具備的基本素質(zhì)。

這里還是思考,和上面還有不同。思考不是瞎思考,而是有深度思考,出色的程序員寫代碼的時(shí)間非常少,大部分都是在思考。給你一個(gè)功能,需要根據(jù)自己有的基礎(chǔ)知識(shí)在腦海中想怎么實(shí)現(xiàn)合理,高效,想清楚后再寫,而不是邊寫邊改邊想,那么水平永遠(yuǎn)都是止步不前的抑或進(jìn)步和蝸牛一樣。

當(dāng)思考同一類問題,用的時(shí)間越來越少,那么側(cè)面反映出水平提高了,可以試著思考更復(fù)雜的問題。思考需要循序漸進(jìn),不能一開始拿一個(gè)非常復(fù)雜的問題思考,而是在自己跳一下就能夠到的高度。

對(duì)于在公司上班,你會(huì)發(fā)現(xiàn)思考時(shí)間越來越少,完全是需求到了就馬上知道怎么寫了。然后就是無聊聽著公司領(lǐng)導(dǎo)介紹,開會(huì)討論。但是不要忘了,自己得給自己找事做,停止思考或者習(xí)慣了某種思考模式后進(jìn)步就會(huì)減慢,要進(jìn)步就要不斷嘗試新東西,多思考。

2. 在腦海中提前構(gòu)建程序,不要過分依賴調(diào)試工具和最后的結(jié)果。

很多程序員有一個(gè)通病,就是寫一點(diǎn),停下來運(yùn)行看看效果,如果不對(duì)再接著改,再看效果,有不對(duì)的再接著改,如果中間遇到修改出來的bug,又得跳到去找問題排查bug。這種寫法不僅浪費(fèi)時(shí)間,而且水平提升很有限,當(dāng)然初學(xué)者可以這樣寫,當(dāng)自己熟悉起來后就不能一味重復(fù)用這樣方法了。

比如產(chǎn)品經(jīng)理給了一個(gè)ui圖,給了一個(gè)后臺(tái)功能,那么你就一口氣寫到底,在寫的過程中不要進(jìn)行任何的運(yùn)行查看效果,而是在寫的時(shí)候再腦海里面構(gòu)建出程序的樣子。寫完后再運(yùn)行,看問題和結(jié)果,此時(shí)會(huì)遇見bug,界面布局不對(duì)。第一步先別急著去改,而是思考自己寫的時(shí)候哪里有問題,思考完以后再一步步改,當(dāng)然此步可以放寬,可以邊看邊改。

剛開始用這種方法會(huì)很不適應(yīng),寫出來的東西也有很多錯(cuò)誤,只要堅(jiān)持下去。不需要多久,你的能力就會(huì)得到質(zhì)的提升。最理性的狀態(tài)是寫一遍,運(yùn)行起來,完全是預(yù)期的樣子,那么給你鼓鼓掌,你已經(jīng)是頂尖程序員了。這樣不僅能力提升了,還有另外一個(gè)好處,別人用4個(gè)小時(shí)時(shí)間才能寫好功能,你可能一個(gè)小時(shí)不到就能寫完,總之會(huì)比別人快很多倍。

剩下的時(shí)間,你可以聽英語,看電影,想干嘛干嘛,升值加薪,老板聽你的,即使老板吝嗇不加,那么大可拍拍屁股走人,去給你開高工資的地方,此時(shí)你有的是底氣不怕沒人要。這里不是吹牛,等你試過了再來說是不是吹牛。

如果到了這一級(jí),在互聯(lián)網(wǎng)行業(yè)你會(huì)很吃香,工資最低也得1.5w每月起步(這還是非常非常保守了,在效益不好的企業(yè)),會(huì)被當(dāng)做佛恭恭敬敬供養(yǎng)起來。

這個(gè)路是自己的一些經(jīng)驗(yàn)之談,我指出了一條通往頂尖程序員的路,中間需要多久才能到最后這一級(jí),就看個(gè)人努力程度和天賦了。不過我個(gè)人更看重努力,勤能補(bǔ)拙,天道酬勤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容