比看書還高效,這4種提高編程技能的方式你知道么?
拿破侖·波拿巴曾說過一句話:“對(duì)于戰(zhàn)爭(zhēng),我們需要三樣?xùn)|西,金錢,金錢和更多的金錢。”
編程學(xué)習(xí)同樣需要編程,編程和不斷編程,這是讓你的編程技能變得更好的方式。
或許你已經(jīng)編程多年了,但是我敢打賭你依然會(huì)碰到處理不了的難題,你可能正在找一份工作,但卻不知道如何脫穎而出,你也可能正在參加一個(gè)大項(xiàng)目,但卻困難重重。如果你想要擺脫這種惡性循環(huán),你需要跳出思維框架并挑戰(zhàn)自己,這里分享4種提高編程技能的方式,希望對(duì)你有所幫助。
1. 重構(gòu)現(xiàn)有工具
反饋不足是你編程學(xué)習(xí)最大的障礙之一,當(dāng)你剛開始學(xué)編程的時(shí)候,這并不是什么大問題,你想讓你的代碼運(yùn)行起來,你獲得的經(jīng)驗(yàn)越多,你面臨的挑戰(zhàn)就越多。你需要考慮設(shè)計(jì)模式、架構(gòu)、可讀性、性能等。你會(huì)發(fā)現(xiàn)每個(gè)問題都有多種解決方案,你需要判斷你的解決方案是否合理。
幸運(yùn)的是,有一種簡(jiǎn)單的方法可以獲得對(duì)代碼的反饋或考慮問題的不同視角:通過重新構(gòu)建現(xiàn)有的庫(kù)或其他工具。
你所需要做的就是找到一些工具(最好是你經(jīng)常使用的工具),并了解它的功能,然后確定它的核心功能。仔細(xì)閱讀文檔,了解API,確保自己已經(jīng)可以開始重構(gòu)了。
你不需要重新構(gòu)建所有東西,只要一個(gè)或幾個(gè)常見的用例,一般情況下,這個(gè)項(xiàng)目做下來需要花你幾天時(shí)間。
當(dāng)你完成編程時(shí),有趣的部分就來了,檢查分析源碼,考慮可能出現(xiàn)的情況和Bug。然后重新打開你創(chuàng)建的工具的源代碼,檢查你的代碼和解決這些問題的方法,你們的解決方案相似么?是更好還是更糟,為什么?嘗試去理解代碼庫(kù)背后的決策。
許多庫(kù)是由資深的程序員創(chuàng)建的,并由社區(qū)擴(kuò)展的,通過檢查它們的代碼,你可以學(xué)習(xí)解決問題的新模式和方法,當(dāng)你試圖解決這些問題時(shí),將新知識(shí)應(yīng)用到實(shí)踐中就會(huì)更容易。
2. 結(jié)對(duì)編程
結(jié)對(duì)編程是一個(gè)有爭(zhēng)議的想法,它是一種軟件開發(fā)技術(shù),兩個(gè)程序員一起工作,但只有一個(gè)人編寫代碼,另一個(gè)審查回顧代碼。兩人定期交換角色。
缺點(diǎn)很明顯:只有一個(gè)程序員編寫代碼,因此需要更多的時(shí)間來創(chuàng)建軟件,好處就是更好的軟件質(zhì)量。結(jié)對(duì)編程對(duì)軟件開發(fā)的好處是有爭(zhēng)議的,但它對(duì)你的編程技能提升的好處是很明顯的。
當(dāng)你寫代碼時(shí),你的搭檔會(huì)發(fā)現(xiàn)的你模式和思維習(xí)慣,你們都需要彼此分析如何創(chuàng)建代碼。當(dāng)你觀察別人寫的代碼時(shí),你可以看到他們的模式和心態(tài),幾乎可以肯定的是,你們處理問題的方式是不一樣的,所以這是從另一個(gè)角度發(fā)現(xiàn)問題的方式。
結(jié)對(duì)編程有一定難度,為了更有效率,你的搭檔應(yīng)該接近你的水平,如果他們資歷太淺,就會(huì)變成你在之道他們。但如果他們比你資深的多,那他們很可能很快就對(duì)你沒耐心了,或者干脆什么事情都自己做。
3. 約束自己
有創(chuàng)造力是很難的,你習(xí)慣于用一種方法解決問題,甚至不考慮其他方法,這就像自動(dòng)駕駛一樣,作為一名程序員,為了變得更加有創(chuàng)造力,你有無數(shù)的方法來約束自己,諸如:
- 避免一些語言特性(例如,寫代碼時(shí)不使用if或Switch語句)
- 減少數(shù)據(jù)的可變性——盡量使用純函數(shù),甚至可以用一些工具來實(shí)現(xiàn)不可變性,比如Immutable。
- 使用測(cè)試驅(qū)動(dòng)開發(fā)——TDD是一種強(qiáng)大的技術(shù),它可以讓你的代碼變得更好,并迫使你改變思維方式。
- 限制時(shí)間,例如給自己三天時(shí)間開發(fā)應(yīng)用或參加黑客馬拉松等。
約束自己不是最重要的部分,你可以選擇看起來有趣的東西,關(guān)鍵是范式的轉(zhuǎn)變,迫使自己重新思考和完善你的方法才是你成長(zhǎng)的加速劑。
4. 寫技術(shù)文章
假如你已經(jīng)編程一段時(shí)間了,并且自認(rèn)為很清楚自己在干什么,但實(shí)際上并不是這樣的,當(dāng)你在編程時(shí),你就會(huì)發(fā)現(xiàn)自己不清楚的事情還有很多,并且經(jīng)常無意識(shí)地一遍又一遍地重復(fù)這些相同的步驟。
當(dāng)你用書面的形式解釋你編碼的過程,你就會(huì)開始深入考慮自己的編程方法,開始思考某些代碼是否是問題的核心部分,其他代碼是否過于冗余和復(fù)雜。寫作將使你對(duì)你的代碼有條理、有批判性地思考。你需要對(duì)其進(jìn)行重構(gòu)和簡(jiǎn)化,以便為其他人創(chuàng)建有用的學(xué)習(xí)材料。要深入了解一門學(xué)科,沒有比教別人更好的方式了,好好利用這個(gè)方式,你的成長(zhǎng)速度就會(huì)超乎你想象。