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