學(xué)神的秘密:10倍速學(xué)習(xí)編程的技巧
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
為什么有的軟件開發(fā)人員年薪能達(dá)到10萬-20萬美元以上,一些收入最高的JavaScript開發(fā)人員年收入接近50萬美元?為什么有些幾乎沒有編碼背景的人,學(xué)習(xí)新概念的速度要比其他具有10年以上經(jīng)驗(yàn)的人快10倍以上?他們是怎么做到的?
掌握這些秘訣,學(xué)習(xí)如同坐火箭,你也可以實(shí)現(xiàn)。
1. 編碼
學(xué)習(xí)編碼最好方法就是編碼本身。直接進(jìn)入開發(fā)環(huán)境,并編寫一些代碼。如果你正在讀一本書或文章,遇到了一個(gè)代碼示例,直接在代碼編輯器中將其鍵入并嘗試使其正常運(yùn)行。
運(yùn)行成功之后,就可以在此基礎(chǔ)上隨意發(fā)揮。改變一切,嘗試其他應(yīng)用方式,或使用相同技術(shù)執(zhí)行其他操作,關(guān)鍵是要玩代碼。
書本中的知識(shí)只會(huì)留在空中,最好的學(xué)習(xí)將來自實(shí)踐。
2. 驅(qū)動(dòng)力
做好某事的最佳方法就是充分地實(shí)踐。你需要有動(dòng)力并決心學(xué)習(xí),激發(fā)動(dòng)力的一種方法是讓自己有時(shí)間和耐心來掌握一些東西。
無需馬上成為專家。就像學(xué)習(xí)樂器一樣,你不可能坐在鋼琴旁就馬上成為下一個(gè)德彪西,但你可以在初次練習(xí)時(shí)掌握C大調(diào)音階。
同樣,你不會(huì)坐下來立即開發(fā)出下一個(gè)Instagram,TikTok或Fortnite。
在開始學(xué)習(xí)每節(jié)小課程時(shí),堅(jiān)信自己一定能掌握并精通今天的內(nèi)容。找到自己的目標(biāo)并堅(jiān)持下去,朝著這個(gè)目標(biāo)不斷前進(jìn)。
3. 專注
我見過很多開發(fā)人員試圖一次掌握所有內(nèi)容,卻一無所獲。他們的進(jìn)度令人難以置信,緩慢如冰川爬行,而不是百米沖刺。
如果想快速學(xué)習(xí)一些東西,除了基本知識(shí)外,更重要的是集中注意力。選擇一種語言(最好以JavaScript開頭),一種框架(最好以React開頭),一本書,一門課程,一個(gè)主題,等等。無論你選擇什么,專注于它,直到對(duì)它有足夠的掌握為止,再去學(xué)習(xí)其他的東西。
在專心學(xué)習(xí)一種語言之前,至少要一年時(shí)間,然后再發(fā)展另一種語言。幾十年前,軟件開發(fā)人員在其職業(yè)生涯中實(shí)際上需要學(xué)習(xí)多種語言,才能在該領(lǐng)域保持競爭力。但如今,一種語言(JavaScript)可以助你度過大部分職業(yè)生涯。雖然學(xué)習(xí)多種語言確實(shí)可以提供看待事物的不同方式。
專長的技能就是最有價(jià)值的技能。如果你致力于成為通才,從一種語言到另一種語言,那么你很難要求自己的精通程度。
4. 框架和語言的價(jià)值原則
框架和API的變化很快。軟件設(shè)計(jì)原則卻是永恒的。要學(xué)習(xí)可以跨越語言障礙的原則。
例如:
- “需求的微小變化應(yīng)該只會(huì)導(dǎo)致結(jié)果的微小變化。” (摘自《軟件開發(fā)實(shí)用手冊》)
- “過早的優(yōu)化是萬惡之源。” ——唐納德·努斯(Donald Knuth)
- “你不需要它(YAGNI)” —不要為不需要的東西編寫代碼。
- 只做一件事情(DOT)——簡化自道格·麥克羅伊的“只做一件事,并把它做好(DOTADIW)”,即一個(gè)函數(shù)應(yīng)該完成一項(xiàng)工作。它不應(yīng)獲取數(shù)據(jù)、處理數(shù)據(jù)并繪制到屏幕上。它應(yīng)該只獲取數(shù)據(jù),或僅處理數(shù)據(jù),或僅將數(shù)據(jù)繪制到屏幕上。
- “編寫接口的程序,而不是繼承的程序。” —《設(shè)計(jì)模式》
- “優(yōu)先考慮對(duì)象組成而不是類繼承。” —《設(shè)計(jì)模式》
- 避免共享的可變狀態(tài)。
5. 閱讀
盡管在線上有很多不錯(cuò)的YouTube視頻和課程,但是書籍是軟件開發(fā)文化和知識(shí)的標(biāo)準(zhǔn)載體。以下幾本書尤其有價(jià)值:
- 雄辯的JavaScript(Eloquent JavaScript)
- 編寫軟件(Composing Software)
- 代碼整潔之道(Clean Code: A Handbook for Agile Software Craftsmanship)
- 測試驅(qū)動(dòng)開發(fā)(Test Driven Development By Example)
- 代碼大全(第2版)(Code Complete: 2nd Edition)
- 重構(gòu):改進(jìn)現(xiàn)有代碼的設(shè)計(jì)(第2版)(Refactoring: Improving the Design of Existing Code 2nd Edition)
6. 回顧
溫故很重要,若想將一個(gè)新概念從聽起來很熟悉變?yōu)殚L期記憶,必須時(shí)?;仡?。很多人犯的錯(cuò)誤是,他們很快閱讀了一本書或一篇博客文章,然后在第二天迅速忘記了閱讀的內(nèi)容。
如果閱讀了一些想記住的有趣的東西,第二天回顧一下,考考自己然后在第二天、第三天再次測試。連續(xù)進(jìn)行4天,將學(xué)習(xí)的內(nèi)容轉(zhuǎn)換為長期記憶的概率就大大增加了。
7. 混合媒介
有些人通過閱讀來學(xué)習(xí)的效果最好,而其他人則是通過觀看視頻。但若將它們組合在一起:先觀看視頻,然后閱讀一些內(nèi)容,最后通過一些交互式代碼課程進(jìn)行練習(xí),那么可以從多個(gè)角度和示例中重復(fù)這些概念。你自然會(huì)不斷地復(fù)習(xí),在此過程中還可以進(jìn)行一些練習(xí)。
圖源:unsplash
8. 共享,記錄和指導(dǎo)
尼克爾博士曾經(jīng)說,任何無法向八歲的孩子解釋自己在做什么的科學(xué)家都是騙子。
學(xué)習(xí)如何編碼只是其中的一部分。當(dāng)與其他開發(fā)人員合作時(shí),代碼將被其他人檢查,有時(shí)他們會(huì)質(zhì)疑你的選擇。在嘗試解釋時(shí),可能會(huì)發(fā)現(xiàn)對(duì)自己的立場不夠了解。在構(gòu)建項(xiàng)目時(shí),練習(xí)向同事和其他協(xié)作者解釋,記錄和講授概念。
9. 構(gòu)建項(xiàng)目
學(xué)會(huì)概念并不意味著知道如何在實(shí)際應(yīng)用中使用它。經(jīng)過數(shù)周的編碼練習(xí)后,就該構(gòu)建自己的東西了。你可以嘗試操作TheRejection App,而不是無處不在的todo應(yīng)用程序。
10. 練習(xí),練習(xí),再練習(xí)!
任何學(xué)習(xí)過一項(xiàng)技能的人都知道,練習(xí)是關(guān)鍵。但是要想變得更好,不能僅練習(xí)已經(jīng)知道的概念。還需要挑戰(zhàn)自我,并超越熟悉的領(lǐng)域。如果不斷地在自己現(xiàn)有技能的邊界進(jìn)行練習(xí),就能夠脫穎而出。
圖源:unsplash
軟件開發(fā)是一項(xiàng)很有價(jià)值的工作,只要不斷追求卓越,高薪離你并不遙遠(yuǎn)。