繼上次分享了我該不該轉職當工程師一文,發現確實有不少小夥伴對於成為工程師是有一些興趣的,所以再開一篇文章來談談這個話題。
筆者擔任技術主管的時間將近十年,所招聘的工程師幾十上百位,面試次數至少數百次,看過的履歷在前面數字的十倍以上,所以不管是資深還是新進的工程師都談過不少,談這個話題應該還是有一點點參考性,希望對大家有幫助。
先從要能通過面試的條件開始,畢竟你通過不了面試,什麼都別談了不是嗎?當然不同公司以及不同職位的要求必然不同,不過基本上不會脫離以下的範圍:
- 學歷:大致上這樣排名,另外就是很多職位碩士不會是必要的,反之有些職位則碩士是必要的
- 好學校的電資(好學校各公司定義不同,通常至少會有台清交成)
- 普通學校的電資以及好學校的相近科系(相近科系指的是工程學院或者物理、數學等等科系)
- 上面以外的不分學校電資及相近科系
- 好學校的很遠的科系
- 其他
- 有邏輯的溝通能力:對,工程師特別看重有邏輯的溝通,對於彼此溝通的重點抓取,以及分析歸納前因後果的能力很重要,因為工程是一個嚴謹有明確定義的東西,通常沒有太多模稜兩可的空間,也因此工程師的溝通習慣一是一,二是二,你舌燦蓮花硬要把一加一說成三通常反而是扣分的。
- 程式能力:大部分的情況,不會有公司錄取一個不會寫程式的員工,所以無論如何學會基本的程式能力是需要的,這邊最低限度必須具備把一個簡單問題給寫成程式的能力。
- 技術熱情:很玄,但很重要,會需要看這篇文章的有很大的機會你應該是菜鳥,菜鳥在這一項非常重要,因為熱情可以支撐你撐過未來無數個枯燥的工程師日子,所以這個以我所知每個主管都會去查察。
- 學習能力:承上,既然你是菜鳥,就一定會去驗證你自我學習以及解決問題的能力,來確保你可以在相當的訓練之後成為獨當一面的工程師。
老實說,以現在整個市場缺工程師的程度,以我所知,只要你上述能力都有達到一個起步值,就有機會拿到offer了,什麼叫起步值?比如說你是個非名校的非本科系學士畢業,所以學歷這項你的分數不會太高,但你就去參加一個程式設計訓練班(必須包括帶你進行實作的練習,一般至少為期兩三個月),出來後起碼把程式該學的基本學會,能解一些基本的問題,大概你就拿的到offer了(因為學兩個月你就能掌握基礎其實也代表你的學習能力有基本水準)。
當然,拿到offer歸拿到,是不是個好工作又是另一回事,如果你只碰到門檻而已,很大的機率你沒有什麼工作選擇權,大概都會是拿到市場上人家撿剩的offer(但也是一個起步)。
所以接下來談談跨過門檻之後,你應該再多具備什麼才可以更進一步:
- 基礎的電腦知識:最低限度要掌握計算機概論內的知識,對於CPU/RAM/DISK等等重要元件有所認識,能描述出網路、網域的基本運作等等(當然是會的越多越好,這邊是為什麼本科系吃香的原因)
- 資料結構:這是軟體工程師無可避免的基礎課題,你寫程式不可能不需要用到資料結構,如果連LIST、QUEUE、STACK都分不清楚,就算讓你拿到offer你未來的職業生活也會有無限卡關。
- 演算法:排序、搜尋等等都是工程師每天會用到的演算法,當然,因為現代語言基本上都已經提供了很好的涵式庫,某些職位確實有可能讓你搞不清楚演算法還是可以正常開發,這邊就個人判斷了,我是認為蠻重要的。
- 物件導向:這個在很多公司跟職位是被列為基本的,如果你完全沒概念有很大的機會連offer都拿不到,所以大概也是必須的課題。
- 軟體工程相關:敏捷式開發、持續整合、自動化測試等等都是當今顯學,已經是非常多團隊的基本能力了,想要讓自己更進一步這些是必修的。
其實列是列不完的,不同領域跟職位一定還有一些不同的要求,不過我上面列的算是比較基礎的,幾乎你走上軟體工程師這條路,就不可能避的掉,也許一開始你有機會迴避就入行(是有可能的),但不掌握這些你大概也沒有機會升職,既然會選擇工程師這麼枯燥乏味的工作,你應該也不是想要終身都在菜鳥工程師的位置上待著吧?所以會建議你要把這些當成必修功課。
本文走高度務實路線,所以主要沒有去談論你的人格特質等等,以當今軟體工程師缺工的程度,加上現代語言其實很好上手,只要你想,其實掌握上面的能力你就有機會在這條路上面往下走了。
祝福大家都能夠釐清自己所要的,走上更適合自己的職業道路!