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