有關“非計算機專業如何轉行做程序員”的一點思考

jopen 11年前發布 | 20K 次閱讀 程序員

  今天老夫半夜爬起來等著看世界杯預選賽法國 vs 西班牙的比賽,在新浪微博里看到@程序員的那些事發的一封粉絲來信如下:

XXXX:員員好,我是 12 屆的大學生,讀了一所還可以的大學,但所學專業我很不喜歡,我因為性格較內向同時又感嘆編程的神奇,所以很想進入這一行,但我去面試幾家后發現就算是實習崗位也需要一些基礎,雖說大學學過C語言但感覺也基本不會用,那些面試單位是建議我去學習這方面知識再去找他,但我又對這些培訓機構不太放心,怕花費了一大筆學費結果卻不好,現在我有些迷茫不知道該去找找其它工作(人才市場很多都是些銷售和工廠的一些崗位)還是去學習,希望廣大的員員們給我些指導,非常感謝。

</blockquote>

  看完還是有一些感觸的。作為一個科班計算機系畢業,第一份工作就是軟件開發,然后又在咨詢和銷售領域工作了很多年,再回歸到開發領域的老碼農,老夫對于該同學的糾結心情是非常理解的。但是,要把一份工作持續地做下去,光有熱情是不夠的,如果你總是不能把事情做得比你身邊的人更好,你的熱情就會慢慢地消退,會開始懷疑自己的決定是否正確,自己的堅持是否有意義。所以,我的建議是給自己一段時間打好基礎,也借此過程驗證自己的決定是否明智,就算最后的答案是否定的,學會一些編程的技術也會對培養自己分析問題的思路有所幫助。

  好了,說到正題,非計算機專業的同學如何為成為一個程序員打基礎呢?我建議走如下的步驟:

  • 1. 學會一門編程語言。隨便什么語言都可以,其實 python 很適合初學者,有本書叫《與孩子一起學編程》用的就是它。不過考慮到步驟2,還是選個流行的教學語言吧,比如 C++ 或者 Java。
  • 2. 非常非常非常非常非常非常認真地學習《數據結構》這門課。你作為程序員功力幾何,很大程度上取決于你在這方面的造詣。
  • 3. 學好離散數學,重點是高等代數、數理邏輯、集合論、圖論,最好再學會概率論。計算機科學的本質是離散數學,不掌握這些知識你如何能真正理解矢量、邏輯運算、最短路徑、涂色算法這些概念呢?
  • 4. 自己做一個小項目,盡可能把你學會的東西都用上。這不僅能向招聘者展示你的功力,也是一個把所學知識融會貫通的過程,只有做了一個項目,你學的知識才真正變成為了你掌握的技術。
  • </ul>

      有人看到這里可能要說了,碼農對編程語言熟悉就行了,學那么多不相干的又何必呢?

      老夫打個不太恰當的比方,離散數學和數據結構就像一個武林高手的內功,編程語言則是招式。內功不行,就算會很多招式,可以嚇唬嚇唬武功一般的人,但是碰到打硬仗這些花拳繡腿就不管用,會死得很慘。可惜現在很多人不重視內功,不少計算機專業畢業生連堆棧和隊列是怎么回事都不知道,更別提二叉樹、鏈表、圖結構了。不管碰到什么需求,上來就定義幾個大數組,你能指望他編出多高效的代碼?比如現在互聯網熱門的大數據,算法效率是核心問題,如果誰整出個 O(n^2) 的算法,信不信老板分分鐘砍死他?

      再說遠一點,學會一門編程語言容易,精通很難,難就難在理解它的精髓。有很多開發者熱衷于最新潮的技術,今天玩玩 NoSQL,明天搞搞 Html 5,說起來頭頭是道,但是都深入不下去,從來沒有真正沒有理解這些技術的精髓,也就做不出一個能發揮出它們真正優勢的產品來。這往往就是因為內功不行而心態又很浮躁。(補充一篇文章:《葉正盛:再次寫給我們這些浮躁的程序員》)但是程序員是靠代碼說話的,只是善于對某個技術侃侃而談沒有任何價值。Linux 和 Git 之父 Linus Torvalds 說過:“Talk is cheap. Show me the code.”(空談無價值。拿你的代碼來看看。)所以老夫要說,作為一個程序員,不先練好內功就寫不出優雅的代碼,這樣是走不遠的。

      怎么學呢?這些不需要花很多錢去培訓機構,而且從我面試過的很多培訓學校學員的表現來看,絕大部分人學完了連 MVC 的概念都沒搞明白,花半年時間就學會了 if…else,何必去糟蹋這錢呢?現在一些大學有旁聽的學分課程,花幾百塊錢就可以聽一門課,還可以交作業做實驗(比如:http://zhidao.baidu.com/question/245256206.html)。建議你盡可能去選最好的學校,不僅僅是老師水平高,關鍵是同學的高水平會促使你對自己有更高要求,這和培訓學校的氛圍是完全不同的。

      如果你在以上 4 步都做得很好,那么你應該可以在碼農這個行業獲得一些機會,剩下的就看你在工作中的表現和積累了。碼農的修行是一個長期過程,計算機領域每年都有新技術出現。做了碼農,就得活到老學到老,注定一輩子苦兮兮的。如果你喜歡這種感覺,那么你的選擇可能就是正確的。

      文章作者:@老碼農的自留地

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!