我十年前也在本版问过类似请问要选什么语言的问题
十年后有几个心得想要分享给在学的学生
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 外国人家教了,不要找借口说口说不好~
以上小码农心得