學程式設計一定要上大學?美國一半碼農都沒有計算機學位

去年,美國的程式設計師問答網站Stack Overflow曾向使用者提問,他們是否有電腦科學專業的學位。在這項“2015年開發者調查”中,26086名程式設計師中有近一半回答稱,他們沒有電腦科學學位。

這是否意味著,不需要大學學位就可以成為程式設計師?簡而言之,答案是肯定的。不過,對非專業出身的人士來說,程式設計師之路要相對困難。

人力資源機構Robert Half Technology高階總監約翰·裡德(John Reed)表示,許多知名科技公司用大學學歷作為門檻來過濾求職者簡歷。例如,谷歌不會面試沒有電腦科學學位的入門級工程師。

如果情況如此,那麼為何許多程式設計師沒有電腦科學學位?一個重要的外部因素是大學學費正日益高漲。例如在美國,最便宜的公立兩年制大學每年學費平均為11438美元,而最昂貴的選擇,即私立的非盈利四年制大學每年學費平均為43921美元。這些費用中還沒有包括生活費。

其他因素也在造成影響。一方面,速成的線上課程和培訓班正在興起。你可以在實踐中學習,而不必等待幾年時間才能畢業。

因此,如果你沒有計算機學位,同時又決定成為程式設計師,那麼以下是幾點建議:

1.不要閉門造車

請找個地方,與其他程式設計師一同工作,而無論你們是否從事同一個專案。

獨自一人程式設計所面臨的最嚴重挑戰在於,關於你不清楚的細節,你將毫無頭緒。只有將自己的程式碼與他人的程式碼進行比較,你才能知道哪裡出了問題。

IEEE的巴里·博姆(Barry Boehm)的一項研究顯示,無論是否採用結對程式設計模式,與他人一同進行程式碼評審相對於獨立工作將可以多發現60%的程式碼錯誤。

眾創空間或許可以給你提供這樣的場所。在這裡,你可以與有著類似追求的人一同工作。

2.良好的關係網比優秀的程式設計能力更重要

閉門造車還會帶來一個壞處,這就是你無法在職業生涯初期建立自己的關係網。這樣的關係網能在日後帶來巨大幫助。

通過這樣的關係,其他程式設計師可以評估你的技能,幫你逐步提高自己的能力。

3.自學大學計算機專業的內容

雲檔案共享創業公司Egnyte高階產品總監格雷格·諾斯塔特(Greg Neustaetter)承認,如果沒有大學計算機專業的背景,那麼將會出現一些嚴重的知識缺失。

這種學習的好處在於,如果你掌握了6到8本書的基本知識,那麼就會成為一名基本功紮實的程式設計師。推薦的學科包括離散數學的應用、設計模式或J2EE設計模式,以及演算法設計等。

如果你參加線上課程或培訓班,那麼建議是從頭開始學習,除非你有過一定的程式設計經驗,或是對技術有著天生的直覺。

自頂向下的模式“將程式設計師置於應用或框架中,鼓勵他們將自己的知識拼接在其中”。而自底向上的模式則是“從基礎開始,逐步培養能力”。

對入門者來說,自底向上的方式值得推薦。因為這將釐清許多概念。

例如,關於Ruby on Rails的教程就存在不清晰的概念。這本書的第一章就提到了MVC模型,但卻沒有介紹一些基本概念,例如物件導向的程式設計。

4.持續練習

無論是否有學位,多參與專案不僅對未來的職業生涯發展很重要,也是幫你積累更多經驗的有效方式。

如果你不打算拿到電腦科學學位,那麼這一點尤為重要。這些專案將成為你的主要經歷,可以展示你的能力。一種很好的起步方式是開發移動應用。這使你方便地展示最終成果,並從使用者那裡直接獲得反饋。

如果你考慮開發移動應用,那麼建議是學習iOS平臺的Swift或Objective C,Android平臺的Java,以及Windows Phone平臺的C#、VB或JavaScript。

此外,你也可以使用Phonegap和Titanium等技術,開發執行在所有三大平臺上的應用。這些技術基於HTML、CSS和JavaScript,開發的應用可以在各處執行。

你還可以通過GitHub參與開源專案。

5.找一個副業

最開始從事程式設計時,你可能無法獲得足夠的收入去保障生活。即使你關於某款應用的想法價值2萬美元,但由於你沒有成功經歷,因此很少有人會相信。換句話說,你需要找個副業去謀生,而這樣的副業最好也能有助於你培養能力。

根據程式設計水平的不同,你可以參與創業公司,從事質量保障工作,或是從事自由職業。

創業公司通常願意冒險,僱傭一些沒有太多經驗的人士。不過對於“足夠好”的程式設計師,它們有自己的標準。儘管你不一定需要開發出複雜的、可維護的程式碼,但至少需要證明,你開發的東西能被用起來。

如果你做不到這一點,那麼可以從事質量保障的工作,這能幫你加強技術能力。質量保障的工作內容是找出產品中的問題,並建議如何修改。這也是程式設計師解決問題時的核心基礎。從事這類工作將有助於增強你對技術能力的自信心,而大學學位對這類工作而言並非必需的。

最後一個選擇是自由職業,只要職業能滿足你的生活需求。類似Upwork的網站列舉了許多與技術相關的職位,包括網頁開發、移動開發,以及設計和營銷等。

via:TNW中文站