前几天上班上到很烦闷,请容我挖个略旧的文来回。
我觉得大学时期最重的还是探索以及寻找自己的兴趣,而这方面的
探索不仅限于你要走资工之中的哪个领域,还包含以下两个我觉得
也满重要的:
1) 学界还是业界
学界跟业界的差异很大。
业界:钱多,但事杂。业界比较少遇到听起来很高大上的问题,
但遇到的问题都很实际,东西能动,能商业化最重要。
学界:如果在台湾钱会相对少。一般遇到的问题会比较前瞻一点,
甚至会脱离现实。以发表为主,东西要新颖,但能不能动,
能不能商业化都不太重要。
想要体验业界,基本上就是去实习;想要体验学界,就去跟着教
授的实验计画,跟着发论文。
若你喜欢学界:
- Web跟k8s相关的基本上可以放了,Web跟k8s这种实用性的东西
在学界基本上没什么价值,大致会一点就好了,重心不用放在
上面。
- 学界很重发表,去把重心放在阅读你们领域中一流的期刊跟
研讨会论文,掌握这些研究论文的发展趋势,发想新的Idea并
写成论文。
若你喜欢业界:
- 一些证明跟比较深的理论,大概有个概念就好,不需要把重心
放在上面搞到滚瓜烂熟。未来会用到的两次只有FAANG类型的
公司的面试,不过这边其实用的不多,考得都满基本的。另一
次是台湾的研究所考试,不过你有可能不想念或是推甄就上了。
- 大多时间会花在熟悉各种业界使用的工具/Framework,把一两
种你主要使用的程式语言摸到Native Speaker^D^D^D^D^D^D^D
Coder的程度,并且准备好一套作品集。作品及无论是独立的
作品还是各大Open Source专案有被Merge的PR都算。
2) 国内还是国外
这边国外基本上说的都是美国,因为目前美国码农的$$最多。
其他常见选项还有日本跟新加坡,不过这两个签证问题没有美国
那么大,所以如果想去也不用提早规划。
如果想去美国,最大问题是签证,如果是业界,最常见的两条路
是:
- 美国研究所 => OPT => H1b(移民签)=> EB2(绿卡)=> 公民
在美国的硕博班毕业后,可以取得一个三年的工作签证,叫做
OPT。拿着OPT找到美国工作后,公司会帮你抽H1b工作签,三年
内如果没有抽到,就是回台湾。如果抽到了,你就能合法在美
国工作六年,六年内公司会帮你申请EB2绿卡,拿到绿卡之后才
能比较自由的换公司。绿卡时间到了之后就可以变成公民。
- 美商公司 => L1b => EB2(绿卡)=>公民
在美国以外的美商公司如果待满一年之后,依据公司的制度,
公司可以帮你申请L1b签证,这个签证可以让你在美国工作五年,
但不能换公司。之后一样依照公司制度帮你申请EB2绿卡。
所以说,如果想要去美国,那就要及早规划去美国念研究所,或
是进一间愿意给L1b的美商公司。
另外还要记得,美国跟台湾的生活方式非常不一样,所以大学时
可以考虑透过交换去体验一下,不一定每一个人都爱美国的生活
哲学。
讨论完以上我觉得你该探索的部份,现在来回答你原本的问题,也
就是技术上,广度vs深度的掌握。
※ 引述《KotoriKawai (小鸟萌萌、小鸟が大好き)》之铭言:
: 这类的问题感觉板上已经有很多了,可是对于大一的部分好像少了一点,所以想询问
: 大家的建议,毕竟还有三年可以把方向定好也是因为大一到现在没几个月就开始有点
: 迷茫了,不太知道在大学的时候到底该精进自己哪部分的能力,或是应该以探索为主
: 先讲一下目前的状况
: 之前上学期的时候有参加过ICPC的区域赛,也有拿到那个赛区还可以的名次,也多多
: 少少有打过一些CTF比赛,自认对算法跟资料结构还过得去
如果区域赛能拿到还可以的名次,那DS&A基本上过一般Leetcode类型
的面试问题不大。要不要继续精进这方面就看个人嗜好了,这方面继
续精进不是必要的。
: 高中的时候也有摸过一些机器学习相关的东西,这学期也有修学校的机器学习课,
: 同时也有修系上的系统管理课,以及CUDA相关的课,最近也在学k8s相关的知识
这样子的广度在大一中算很好的了,不过我觉得还可以再广一点点。
嵌入式,Web前后端,App,ERP... etc等等还有不少可以摸的东西。
如果找不到可以摸的东西,除了逛Github以外,还可以逛逛求职网站
的职缺列表,看看有什么你不会的就去摸摸。求职网站建议不要去104
这种,因为职缺太低端,你可以改看这个版跟Tech_Job的征才文,或
是去看StackOverflow。(对,他们是求职网站)
: 平常会到处在github上面逛,偶尔自己使用到的东西觉得不太满意也会送PR,对于
: 看code的能力应该勉勉强强算有
如果你有打算往业界发展,这个行为请继续保持,送PR换来的是
Code Review,而Code Review对于锻炼你写出符合业界要求的程式
码非常有帮助。
: 可是其实真正有钻研的东西也是少之又少,很多东西都是摸摸而已,也不是没兴趣,
: 但就是似乎更喜欢探索新东西,又或者可能只是喜欢入门时快速成长的曲线
以大一来说这样子是OK的,深入研究大概就是你找到你真的有爱的
领域之后再来。当然,如果都没有找到也可以等进入业界的一两年
之前开始,也就是大三到硕一之间(看你要不要念研究所)。
以我个人的经验来说,大学早期的探索让我发现了我不喜欢什么领域,
但剩下几个好像都不错玩。后来我求职时,是Web后端跟嵌入式/系统
的职缺都找,面试后才发现其实我还是稍微偏好嵌入式/系统一点点。
: 之前有想要写履历丢丢看各种实习的时候才发现好像自己什么也都不太会
每个人对会的定义不太一样,只要不太夸张都可以写上去。如果想
参考别人的履历,可以去reddit的r/cscareerquestions看看,每周
都有resume advice thread。这上面的履历适合外商。
=====
最后再给一些建议,如果你想走业界,建议你准备一些作品,这些
作品在面试中可以作为讨论的主体,用来证明你对一项技术是熟悉
的。你要能够在面试中跟面试官讨论这份作品中的各种技术决定以及
当初你遇到的各种问题。
大多时候新鲜人的面试不会太细或太艰深,如果职缺要求你会某项
技术,你能拿出使用该项技术的作品并且能够讨论你当初遇到的
问题以及各技术决定的利与弊大概就差不多了。
如果要决定你作品集里面要有什么,可以去看你想去的公司/职缺的
Job Description,看看做什么作品能够证明你符合他们的Job
Requirement。
另外人脉的部份,我会建议如果有机会跟业界的人(或是将要去业界
的人)合作,例如说送PR,就尽量做。有合作过的,尤其是在外商的,
到时你去他们公司求职时,他可以帮你做Internal Reference,说
你们曾经合作过什么事情,你做了什么表现如何等等。这种能够讲出
具体合作内容的Internal Reference占比十分重,对于拿到Offer帮助
很大。
=====
另外离题一下:除非你是富二代,不然在大学的日子应该是人生中
少数时间多又有自由有体力的时光,这方面请好好把握。有什么想玩
的,想去的,想做的,无论是谈一场恋爱,去环岛,去国外旅游等等,
请都去把他们完成。开始上班之后,就像一个学期修30+学分一样,
如果加班的话更多,每天所剩余的时间不多,连上PTT发个废文都要
拖个好几天。更惨的是没有寒暑假,一年就那么十几天年假,用完就
没了。如果有小孩,那连晚上好好睡个觉都是奢侈。
总之,趁现在能好好玩赶快玩,青春只有一次。
=====
欧对了,跟你说一下,虽然Soft_Job跟Tech_Job板看起来像是特定
职业的看板,不过其实里面学生也不少,有些还会大剌剌的用学校
IP来回文。