【我們為什麼挑選這篇文章】 「 自學編程和計算機科班出身的差別在哪?」這是中國最大線上知識論壇-知乎,近期來討論最為熱烈的一個議題,共計超過 14,000 人參與討論並持續關注答案。 而這篇文章則是其中最受中國網友們認同的回答(累積 1387 人贊同),是非常真實且精彩的自學經驗分享!
這篇文章由 Twitter 現任核心工程師撰寫,談及為何他認為作為一位優秀的工程師,是否為資工相關科系畢業其實根本不是重點,自學也能很厲害!(責任編輯:劉庭瑋)
我讀了計算機的本科,碩士和博士,但我寫程式是 99%自學的。我大概 12 歲左右開始自學程式,並不需要什麼其他知識,頭兩年也沒有老師,書都很少。我都很熟練能寫 basic, c 和 pascal 了,才在英語課本裡學到 return 這個單詞的意思,原來我一直不知道這是個單詞(我小時候那會兒初一才開始學英語)。小時候訊息學聯賽也不是正經上課,基本都是賽後總結一下,大家分享一下題目是做什麼的。所以我的算法和數據結構也是自學的。我還記得少年宮的老師面試我,讓我不用遞歸寫一個樹的遍歷,因為我自學了半本數據結構,前天晚上剛好看到棧,就做出來了。很多時候這都是命運啊,我要是看的稍微慢點,就沒戲了。
我本科時候基本沒去上過寫程式的課程,本來就沒幾門,我也都逃了,當時年少輕狂,覺得太淺,而且 C 語言老師的寧波口音我實在聽不明白(都是藉口,我不愛上課)。博士期間我上過一兩門寫程式的課,重溫一下 c++的感覺,而且其他課拿 A 還是要花點力氣的。我從來沒上過 java 的課,但十幾年的職業生涯,我基本是已用 java 為主的。
這也是我為什麼在很多回答裡都鼓勵非科班的兄弟們自學寫程式,因為我覺得沒有差別,你並不需要數學和英語,一樣可以寫程式,一樣可以當好工程師。我認識很多非科班出身非常好的工程師,不管是前端還是後端。算法和數據結構裡用到的數學知識是很少的,而且就算你看原版書,也不需要認識多少單詞,一半都是程式碼和圖。再不濟你用 Google 翻譯查一查,也就看懂了。
大學不該是技職學校
我始終覺得高等教育不是知識和技巧的傳授,大學不是技校,計算機專業和教你開挖掘機不一樣。大學的教育主要是幫助你進行人格、性格和思維的塑造,比如說數學分析能讓你更加理性堅韌而又不失變通,離散數學可以讓你感受結繩記事以後,人類思維的演變。我一直非常感謝我的母校復旦大學,她沒有把我像工具或者螺絲釘一樣培養。而我後來的博士階段教育,又讓我更加懂得如何向未知領域探索,如何解決前進中難題。
我覺得大學裡的最終產品是大師,當然不可能出來的各個畢業生都立馬成為大師,可能是在幾十年後在大學裡或者大學外成為大師,也有可能僅僅是出產一個個內心更加寧靜和強大的懂得獨立思考人,不會沒事出來問自學和科班的差別在哪裡,我的大學是不是白讀了之類的問題。 我覺得大學教育既不能工具化,也不能精英化,而是應該更加的個性化,每個人都應該有自己更獨立的靈魂。
我比較自豪的是我多年來在技術上並沒有走太多的彎路,我也比較少會有技術和人生選擇上的迷茫,我想這也是科班教育給我帶來的一個顯著收益吧。
_______
後續補充:自學很困難怎麼辦?
哇,這是我最火的一個回答了,感謝大家。謝謝大家誇我智商高,智商高到一定程度,學什麼都會快,我見過這樣的人,但我顯然沒高到那個水平。武功再高,也怕菜刀,我自學也是很苦難的,到現在也沒把算法導論看完。 趁機說一下感覺自學很困難怎麼辦。 我老婆推薦我看過一本書,關於大腦腦回路(brain circuits 好像是這個詞吧)鋪設的。 人的大腦不是一成不變的,你可以透過訓練讓大腦裡的回路鋪設更適於做某一種事 ,我想這就是為什麼有人說什麼事做 10 萬小時,你就是專家了,估計那時候你腦子都改變了,學類似的東西就會很快。這是很笨但是很穩妥的辦法,只要花時間,總歸能學得會。
釐清排斥的原因,重新調整心態
還有一個技巧就是虛極靜篤,很多時候你不接受一個概念,是因為你自己心裡已有的觀念太強了,讓你不自覺地產生了排斥。比如說我學 ruby 的時候就很痛苦,因為我以前一直學習的都是靜態類型的語言,很多概念在心裡太強了,再來看 ruby,就什麼都覺得奇怪,很多的懷疑讓我靜不下心。蹉跎了很久之後,我就開始嘗試放下已有的知識,就好像是學習我的第一門語言,用 ruby 的哲學去學習 ruby,效果就特別好了。
寫程式究竟需不需要懂數學?
我個人很喜歡數學,但我認為數學只是工具,而且是沒那麼常用的工具。不管怎樣,作為一個工程師,學好數學肯定不是最終目的,數學家不等於好工程師。我們工程師寫好代碼才是目的。寫好代碼需要玩轉數據結構和算法,算法需要使用一些很直觀的數學,我自己的體會是不懂數學也能學算法,你可以在學習算法的過程中不經意間把數學也學了。但大學裡開那麼多數學課也不是白費的,這是思維的鍛鍊,你數學學的好能讓你理解算法更快,而且從數學的角度來看算法,能讓你看的更透徹。
關於寫程式等不等於計算機科學,我覺得是等於的。 程式 = 數據結構 + 算法 ,我實在想不出計算機科學的什麼分支可以逃出數據結構和算法的範疇。而且我們在計算機科學中所學的一切,都會最終落實到程序上。 自學寫程式,就是自學計算機科學,沒有什麼高低貴賤之分。 或許有例外,請大家在評論中教我,謝謝!
(本文經 北南 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈自學編程和計算機科班出身的差別在哪?〉。)
延伸閱讀
如何在一年半內從零基礎成為正職工程師?一位工程師親談自學經歷
2017 年最完整自學資源懶人包:Python、Google Analytics 到人工智慧想學什麼全都包
60 歲才接觸電腦,82 歲日本阿嬤自學成為 iPhone 遊戲工程師
【自學平台 Udacity 翻轉你的命運】一個 46 歲的短期女工,自學轉職成為自動駕駛工程師
「稍後閱讀」等於「永遠不讀」:三大原則教你管理網路好文,製作個人自學資料庫!
321 倒數 ,2020 只剩 3 年,區塊鏈、5G、AI 技術將成熟到位。
從產業到社會,台灣沒剩多少時間準備。12/9 TechOrange、BuzzOrange「CONNECT 2020」年度產業論壇,連結未來改革能量
早鳥票最終倒數,優惠只到 11/20