程序員的基本常識——學習篇

這個系列是《軟技能》一書的摘抄整理,詳細介紹見該系列首篇文章《程序員的基本常識——職業篇》。我會提取書中的有用信息,從新組織,並補充一些想法。歡迎評論補充相關信息,或是糾正錯誤觀點。程序員

對於心智成長,大部分狀況下學校和家庭都在幫倒忙,你一般只能靠閱讀來完成自我教育。在編程世界裏狀況相似。你也許會在學校裏學習計算機基礎知識,但對於大量的編程語言、框架和工具,你一般都須要自學。自學、解決問題和正確提問是程序員必須掌握的幾個「元能力」。編程

1. 學習怎樣學習框架

  • 咱們幾乎都是下意識地傾向於學習本身感興趣的東西。主動學習是效率更高的方式。
  • 學習知識最好的方式就是當即將其用於實踐。若是關於某個主題你能得到足夠的知識,你就能夠發揮本身心靈深處強大的創造力和好奇心。當咱們可以在一件事情上盡情發揮的時候,咱們的心裏就傾向於吸取更多的信息,思考更有意義的問題。這種天然的探索和好奇心可以幫助咱們垂手可得的記住更多的信息。
  • 一旦你已經實踐過,並積累了各式各樣的問題,馬上回到書本當中,你會有強烈的衝動去消化吸取其中的內容。
  • 而後,你能夠把本身學到的新知識從新應用於實踐。已解決實踐過程當中發現的問題爲目標,在向着只是前進的道路上重複這個循環。
  • 最後,你能夠經過寫做文章或是教給其餘人來加深理解。
  • 這個過程能夠概括爲「學習——實踐——掌握——教授」。

以學習某個 Web 框架來講,從頭至尾讀完一本相關的技術書,並不會讓你掌握這個框架。只有在瞭解基礎知識後,本身動手藉助書中的知識編寫一個 Web 程序,並嘗試儘量多的解決實際問題,纔會讓你學會這個框架。編程語言

2. 十步學習法工具

十步學習法的基本思想是先對本身要學的東西有個基本的瞭解。至少了解如下三個要點:學習

  • 如何開始:明確你要掌握哪些前導知識,從哪些資料開始最爲合適。
  • 學科範圍:肯定你的學習方向和大體的學習範圍。在開始階段,你不須要了解每個細節,只需大體瞭解學科的輪廓。
  • 基礎知識:瞭解最基本的知識點是哪些,知道本身學的哪 20% 就能知足 80% 的平常應用。

1~6 步:前期調研,收集資料,制定學習計劃(這些步驟只作一次)網站

  • 第 1 步:瞭解全局

瞭解本身將要學習的主題的全局,創建一個基本的概念。操作系統

  • 第 2 步:肯定範圍

明確本身到底要學什麼,有一個可控的學習範圍,而不是試圖解決太大的問題。讓本身的關注點落腳到更小也更可控的範圍,根據你的時間預算,嘗試把一個大的主題分解爲多個可控的子主題。好比,「學習 HTML」能夠進一步細化爲「學習 HTML 的基本語法,瞭解頁面基本結構和經常使用的元素」。視頻

  • 第 3 步:定義目標

明確對你來講,學到何種地步,達成何種目標後算是完成學習。好的成功標準應該是具體的、無二義性的。以學習 HTML 爲例,「學會用 HTML 編寫網頁」就是壞的成功標準,而「可使用 HTML 建立一個內容豐富、語法標準、樣式美觀而且支持響應式的我的主頁」就是一個好的成功標準。教程

  • 第 4 步:尋找資源

對於學習編程來講,你能夠在網上找到大量的資源(這裏的資源包括書、教程、視頻、代碼等)。試着在 Google、YouTube、亞馬遜、豆瓣讀書或其餘網站搜索相關關鍵字,而後根據描述或評論選擇資源。儘可能選擇系統性的教程或書。對於編程語言、框架和工具來講,官方入門教程通常都不會太差。

  • 第 5 步:建立學習計劃

學習計劃就是你的學習路徑,一般你能夠根據相關主題的技術書的目錄來制定學習路徑。好的技術書都遵循這樣的規律:打好基礎,作好鋪墊,而後逐個展開每一章的論述。經過對比幾本同類型的書籍目錄,制定專屬於你的學習路徑。

  • 第 6 步:篩選資源

根據你的學習計劃,去掉重複、無用、過期、難度不適宜的資源。只留下 1~2 個品質最高的資源便可。

7~10 步:學習——實踐——掌握——教授(循環往復)

  • 第 7 步:開始學習,淺嘗輒止

獲取恰好足夠開始動手實踐的基礎知識。大多數人在學習過程當中一般會犯兩類錯誤:第一類錯誤是在知之很少的狀況下就盲目開始,即行動太早;第二類錯誤是在行動以前準備過多,即行動太晚。

  • 第 8 步:動手操做,邊玩邊學

經過動手實踐驗證你在前一步驟學習的知識,並記錄下新的疑問。好比,作一個簡單的小項目。

  • 第 9 步:全面掌握,學以至用

根據你掌握的資源,解決你在實踐中記錄下的大量問題。同時深刻了解各個主題。好比,閱讀你要學習的語言、框架的源碼。

  • 第 10 步:樂爲人師,融會貫通

要想肯定你確實掌握了某些知識,最好的方式就是把本身學到的知識教給別人。你能夠在 Stack Overflow、論壇、IM 羣組裏回答問題,也能夠寫文章或錄視頻。把本身所學教給別人是查漏補缺的好辦法,這同時也會加強你的表達能力和理解能力。

3. 尋找導師

  • 在你的軟件開發生涯中,擁有一位導師能夠說是一筆巨大的財富,由於一位優秀的導師可以讓你無需親身經歷現實的重重考驗就擁有豐富的經驗,從而更高效的掌握某種技術。
  • 咱們一般會犯這樣的錯誤——根據他人的生活來判讀其是否具備幫助咱們的能力。然而,最好的老師每每深藏不露。你不該該由於某人在本身的生活中成就平平,或者看起來不過如此就對他的印象大打折扣。
  • 你能夠找一位已經成功實現你想要作的事情的人,也能夠找一位曾經幫別人實現了你如今想要作到的事情的人。
  • 導師未必必定得是很是厲害的專家,只比你領先一步的人也值得學習。
  • 你能夠在本地的開發小組或是網上的論壇等地方尋找你的導師,也能夠在你的公司或交際圈裏尋找,或者經過付費向行家請教。
  • 優秀的書籍也能夠作你的導師。
  • 在尋找導師以前,你必需要明確兩件事,第一是你須要導師幫你解決什麼問題;第二是爲了可以換取導師的幫助,你能給他提供什麼?

4. 樂爲人師

  • 成爲導師可讓你受益無窮。
  • 每一個人都有教的能力:只要在某些地方快人一步,就能幫助別人。
  • 有時候你給比人作導師真正要作的就是給予關注。咱們在生活中都須要別人的幫助以看到本身看不到的東西,由於當遇到涉及自身的問題和麻煩的時候,咱們都會有些目光短淺。
  • 教授是學習的最佳途徑之一。當你擔任導師的時候,你會以全新的視角觀察和思考,並面對更多有挑戰的問題。在探究答案的過程當中,你會越發深刻思考,發現本身的漏洞,甚至徹底改變最初的想法。
  • 一旦咱們試着向別人解釋某件事情的運做原理或背後的緣由的時候,咱們在認知上的漏洞就會暴露出來。
  • 最好的教學方式就是以謙虛的視角來觀察問題,以權威的口吻去詮釋問題。你要明白,你教的目的是爲了幫助別人,而不是爲了證實本身的優越性或者尋求承認。
  • 除了寫博客,錄視頻和演講也是很好的教學方式。演講時要心態謙卑,信心滿滿(而不是傲慢自大)。

5. 學歷

  • 擁有(好的)學歷並非成功所必須的,但它限制了能夠提供給你的職位數量,而且某種程度上也限制了你的晉升。
  • 學歷教育能夠提供一個相對完善的計算機基礎教育。固然,這些知識你也能夠經過自學得到,不過這須要花費大量的時間。
  • 若是你沒有(好的)學歷,那麼就經過做品來證實你的能力。好比,你能夠寫博客,獨立開發一個程序,在 GitHub 上建立或參與開源項目,或是在 Stack Overflow 回答問題。
  • 彌補措施是,你能夠經過自考得到一個學位,大概須要花費兩年的業餘時間外加兩千塊的投入。

6. 知識短板

  • 專一於自身強項,這沒什麼不妥,但有時候,若是弱點得不到解決,一般會成爲你的職業或生活的桎梏。
  • 準確識別短板的最佳方式之一就是看看本身在哪些工做上花費了大量的時間,或者一直進行重複性勞動。好比,學習操做系統或各種軟件的快捷鍵就能夠節省大量時間;編寫宏或自動化腳原本簡化各類軟件或系統中的重複操做。
  • 維護一份清單,列出本身須要去研究或者不清楚的事物。

本文首發於公衆號「李輝的代碼廚房」。

相關文章
相關標籤/搜索