我十年前也在本版問過類似請問要選什麼語言的問題
十年後有幾個心得想要分享給在學的學生
1. 該學什麼語言?
大學程式設計就學第一個語言,不過通常都只停留在邏輯判斷、迴圈、函式呼叫、OO
還沒對某一語言深入前,換什麼語言這些邏輯依舊都相通
因此可以選自己有興趣的領域開始選起,通常該領域就只剩幾個語言可以選了
例如
前端→JS
後端→Java,C#,Python...
韌體/重視效能→C/C++ 等
2. 學校教的很舊/沒用
資訊系很多理論課,很多要背,很無聊,如演算法、資料結構、網路、os 等課,
但都是資訊系學生的基本功、常識,懂越廣,對於軟體開發會更有全面性的了解喔
TCP/IP, 封包, 非對稱加密, tree, linked list, virtual memory.....
這些知識雖然工作不會直接用到,但是都算基本功
你應該不會想要給連血液成分都不知道的醫師治療吧?
3. 本科跟非本科差在哪
其實本科所有科目非本科都有機會自學就會喔
就如台大強的是學生,不是老師,老師通常是帶入門、導遊的腳色
在該領域發光發熱絕大多數都是學生非常努力的成果
但有幾點我覺得是本科生的大優勢:
a. 理論課自學非常花時間,所以非本科理論通常不紮實,非本科通常需要速成,
誰想去念 OS 恐龍本?
b. 各個課程累積的 coding 基本功,如各種資料結構演算法實作、編譯器等
c. 同儕間 coding 的分享與互相成長
d. 一些做研究的正確知識,這個要被教授電過才會的,如 ML
要知道這些只是優勢,並不是絕對喔,如同之前的台大物理生自學,相信不會比本科生差
4. 大家最關注的求職
這個很難給建議,因為光 FAANG 面試方法就差非常多了,
Google 重視 coding 與溝通;
Amazon 會 follow leadership principles 面試
然後在台灣很多公司挑畢業生通常不太考試喔,學校對聊天就能進去了。
給在學學生的建議是,先選定領域,再研究想去該領域的哪些公司,
再針對那些公司面試方法去準備。
例如想走純軟,目標群輝, 17... 等公司,通常可能要練一下刷題;
想走韌體...我不知道,請自行往那些公司的面試心得著手
5. 作品
有加分,但其實沒那麼重要喔,畢竟除了前端、app,
很多軟體其實很難有作品可以 demo
更重要的是
a. 公司名氣: 你想一下,在 google 工作過的你需要看他作品嗎?
b. 在公司做了什麼: 在什麼 team、期間做過什麼專案、成果
c. tech stack: 技能與新公司相符程度
其他建議
1. 工作後盡量不要升主管/PM
在這個時代,資深工程師隨著時間身價越來越高,
技術大牛來說大家都想用優渥薪水挖腳,跳槽沒煩惱,不用怕中年失業
前提當然是有持續精進
但當主管/PM後通常大多時間都在處裡沒營養的開會,而這些軟技能取代性很高
久而久之想換工作,發現跟不上最新技術、軟技能又很難在面試中被衡量,
因此漸漸會喪失換工作的彈性。
而且 PM /主管這種工作求職者滿街跑,最後可能要跟很多非技術出身的人競爭喔
2. 台灣還是有很多好薪水、好環境的純軟公司的,但這些通常面試都用實力講話
3. 英文保持競爭力,很多薪水環境好的都是外商軟體公司。
口說現在已經有很多線上 1 對 1 外國人家教了,不要找藉口說口說不好~
以上小碼農心得