其實很多著名的程式設計師並不是科班出身,而是靠自學成才。馬修·麥克唐納就會一名自學成才的程式設計師。他發布了自己的學習心得,下面是總結內容。
一、縮小理論差距
自學編程最大的局限性就是,你不知道哪些事情是自己還不知道的。不過,由於自學成才的程式設計師會堅持不懈地專注於實際目標,如建立網站,讓應用程式運行,將數據從 A 點傳到 B 點等等。因此,他們更容易跳過那些看上去 「沒什麼大用」的理論內容。
以下是一些計算機科學領域的核心話題,而自學成才的程式設計師往往會繞過這些話題:
算法:因為程式語言實現了它們自己的排序和搜索,所以自學成才的程式設計師總是傾向於學習如何使用它們,而不是去了解它們的工作原理。有時候,默認選擇並非最佳選擇。如果你有更深刻的理解,你就會知道怎麼樣更好地解決問題了。計算理論:這是關於計算機如何解決問題的相關理論,其中有一大堆重量級的主題。它可以為你提供抽象概念,幫助你理解不同語言之間的聯繫。如果你需要從過程式程式語言轉到函數式程式語言,那麼掌握計算理論會讓你覺得這一轉變過程是多麼輕鬆。
純數學:包括線性代數、微積分、概率論和統計學。許多自學成才程式設計師連一行高等數學都沒有接觸過。但是,如果你正在從事機器學習、自然語言處理、數據分析或軟體開發前沿領域,那麼硬數學還是必不可少的。大〇符號法(Big O notation):這個改編自數學領域的工具,讓開發人員能夠描述並比較不同算法的整體性能。對於大〇符號法,你可能不會經常用到,但如果你需要討論如何優化複雜的分布式系統,它可能就會派上用場了。二、提升自信心
其實無論是科班出身還是自學成才的程式設計師,在剛剛進入職場的時候都會存在知識差距。但是自學成才的程式設計師可能更容易擔心自己的知識技能會不會存在漏洞。
我們要學會自信。
消除自卑感最好的辦法就是參與儘可能多的對話,與不同類型的程式設計師打交道來開闊視野。
三、所有編程都趨向於自學
對專職程式設計師的調查表明,自學成才的程式設計師始終是少數。但換一種方式來提個問題,情況就不同了。
例如, Hacker Rank 的調查表明:自學成才和只在學校接受教育的開發人員,在所有程式設計師中所佔比例都略低於三分之一,分別是 27.4% 和 31.9%。但是,將正規學習和自學結合起來的開發人員的比例佔到了近 38%。
這並不奇怪。在瞬息萬變的軟體開發世界中,每個程式設計師都離淘汰只有幾步之遙。最成功的程式設計師,都是那些能夠不斷自學的人。
點擊連結閱讀更多精彩文章!