編程新手如何提高編程能力?
編碼和其他技能一樣,需要練習(xí),如果你長時間不用,你的編碼技巧就會變得麻木。
而如果你期望成為優(yōu)秀的人,那么就不僅僅是每天在工作中編碼,那是不夠的,你需要把編碼當(dāng)成你的生活。
想想奧運運動員,他們不只是每天訓(xùn)練幾個小時,他們?yōu)樽约旱倪\動而活,他們每天訓(xùn)練8到10個小時,然后參加比賽。
他們癡迷于尋找自己的弱點,并將其完善。
如果你想成為一名 優(yōu)秀的開發(fā)人員,那么你也要用同樣的方式來看待寫代碼的做法。
特別是當(dāng)你剛剛開始你的職業(yè)生涯,想從教程地獄中掙脫出來的時候,這看起來似乎太難了。
但這并不難,你只需要找到正確的方法即可。
復(fù)現(xiàn)他人的項目
你想要練習(xí)編碼,當(dāng)你還沒有一個適合你開發(fā)的項目想法時,最好的選擇就是復(fù)現(xiàn)一些別人的。
小心,我不是叫你克隆他們的repo,看看他們的代碼。我也不是說回顧他們的代碼,看看他們是怎么做的,不管他們在做什么。
當(dāng)然不是這樣,我想說的是:選擇一個你喜歡的項目,甚至是一個你一直在學(xué)習(xí)的庫,然后嘗試逆向工程去了解他們的內(nèi)部邏輯。
這甚至比寫你自己的原創(chuàng)項目還要好,因為你已經(jīng)有了詳細(xì)的文檔,描述了一切是如何工作的。
所以,你只需要關(guān)注如何編碼即可。
例如,如果你是一個Node.js開發(fā)者,就寫一個類似express的框架,并復(fù)現(xiàn)Express的API。
或者如果你是一個Go開發(fā)者,通過閱讀他們的文檔,寫一個Kingpin。
這里的目的不是創(chuàng)建一個項目給別人使用,事實上,你將來根本不會使用它。
但是,通過追尋一個實際的項目,你將面臨著難以解決的問題,有些問題甚至是意想不到的。
而這也是你的編碼會躍上一個新臺階的地方。
這些項目會讓你走出舒適區(qū),進(jìn)入未知的領(lǐng)域,這就是成長的地方。
貢獻(xiàn)開源項目
乍一聽,進(jìn)入開源可能是個好辦法,但一旦你意識到?jīng)]有預(yù)設(shè)的方式,也會很難做到。
最簡單的方法,通常也是我推薦的方法,就是找到一個你已經(jīng)使用了一段時間的項目,尋找它的repo。
如果它是開源的,它就會有一個公共的repo,很可能在Github上。
一旦你找到它,檢查他們的ReadMe。
如果他們正在積極地尋找任何形式的幫助,他們會以某種方式進(jìn)行宣傳,它應(yīng)該會給你提供你需要做的細(xì)節(jié)。
如果那里沒有提到貢獻(xiàn),你也可以從其他地方找到。
issues部分有新的問題,并且有幾個不同的人在積極地回答這些問題
有一些問題被標(biāo)記為 "best first issue",或者 "looking for help"
有一個 "貢獻(xiàn)者"列表,在 ReadMe 文件中,或者在項目根目錄下的一個單獨文件中
如果你發(fā)現(xiàn)了這些,請隨時與項目的owner取得聯(lián)系,請求兩件事情:
contribute權(quán)限:當(dāng)然,你想做出貢獻(xiàn)的事實是偉大的,這應(yīng)該是讓他們高興的事情。但同樣重要的是,要表現(xiàn)出適當(dāng)?shù)淖鹬兀J(rèn)識到這不是你的項目,你是來幫忙的。
當(dāng)涉及到貢獻(xiàn)時,有什么協(xié)議。因為,這不是你的項目,不同的項目維護(hù)者可能希望遵循不同的協(xié)議。詢問他們,這是對他們所做工作的另一種尊重。而且這會提高你的貢獻(xiàn)被真正考慮的機(jī)會。
如果你得到了你所需要的信息,并且沒有你覺得可以解決的問題,那么,同樣可以在一些方面做出共享:
補(bǔ)充文檔中缺失的細(xì)節(jié)或者糾正錯別字。當(dāng)然,雖然看起來不多,但它會幫助你理解這個過程和Pull Request的工作方式。
添加或擴(kuò)展單元測試。這可能就像添加3-5行代碼一樣簡單,但你會嘗到為項目貢獻(xiàn)代碼的滋味。你也會了解一些關(guān)于它是如何工作的,單元測試可以讓你很好地了解內(nèi)部邏輯。
開發(fā)個人項目
最后一種方式就是在自己的個人項目上下功夫。
開發(fā)自己的項目,可以幫助你了解不少東西,不僅僅是編碼。
計劃
有的開發(fā)者在開始一個項目時,對自己要創(chuàng)建的東西有一個非常基本的想法,也有的開發(fā)者花了幾周的時間來規(guī)劃整個項目。
無論哪種方式,如果你期望很快就有一個發(fā)布版本,那么在創(chuàng)建自己的個人項目時必須要有規(guī)劃。
否則,你可能會遇到很多問題。
意見反饋
公開你的代碼可能會讓人覺得畏懼,但除非你是在做一個私人項目,否則你就會把你的代碼發(fā)布出來讓別人查看。
這可以讓別人告訴你如何寫出更好的代碼。
當(dāng)然, 它們既可能是非常有建設(shè)性的經(jīng)驗,也可能是令人心碎的經(jīng)驗。
知道如何接受反饋,即使是以侮辱你能力的形式,也是具有一定價值的。
如果你能夠理解從負(fù)面評論中獲得一些東西,那么你就已經(jīng)取得了進(jìn)步。
而積極的評論也是如此,當(dāng)其他開發(fā)人員強(qiáng)調(diào)他們喜歡你的項目的地方時,你的代碼可以告訴你需要加倍努力的地方。
毅力
任何人都可以創(chuàng)建一個項目,但很少有人能真正堅持下去。
這是我們開發(fā)生活中的一個事實,當(dāng)你開始一個項目時,你應(yīng)該意識到這一點。
我所說的完成,是指,發(fā)布一個可以生產(chǎn)的版本,供任何人使用,有適當(dāng)?shù)奈臋n,甚至,一個網(wǎng)站或某種形式的營銷活動圍繞它。 這涉及到的不僅僅是編碼,這就是為什么它如此困難,但是,一旦你完成了,就會有回報。彩虹盡頭的金罐,就是你的項目創(chuàng)意是真實存
通過自己的項目工作,可以獲得很多經(jīng)驗,但這是艱苦的工作,需要努力和堅持。
編碼
是的,在完成自己項目的同時,編碼也是你會提高的一個東西。
你必須要自己編碼來完成它,在編碼的同時,你會測試新的東西,新的方法,在這個歷程中你會學(xué)到不少東西。
然而,這并不是編碼的全部,你還會在這個過程中學(xué)到其他相關(guān)的學(xué)問,比如最佳編碼實踐、架構(gòu)模式,你會發(fā)現(xiàn)以前不知道的新工具和模塊。
但前提是:把你的想法一路做到100%,會讓你接觸到很多活動和經(jīng)驗,這些活動和經(jīng)驗雖然與編碼有關(guān),但并不涉及寫代碼。
結(jié)語
讓你的編碼技術(shù)更上一層樓并不容易,需要時間,需要努力,但任何人都可以做到,即使是你。
不要再看教程了,學(xué)習(xí)的時間已經(jīng)結(jié)束了,現(xiàn)在是付出實踐的時候了。
hello,大家好,我是 Jackpop,碩士畢業(yè)于哈爾濱工業(yè)大學(xué),曾在華為、阿里等大廠工作,如果你對升學(xué)、就業(yè)、技術(shù)提升等有疑惑,不妨交個朋友:
https://mp.weixin.qq.com/s/fCHn8JpLQDH-M_QkVxwR1w