分享|非科班博士的转码之路
44613
2022.06.21
2024.03.17
发布于 未知归属地

转码两年之后(2024年3月),回来更新一下:

Question: 什么人适合转码
Answer:
(1)喜欢写代码;
(2)逻辑思维能力比较强;
(3)对自己所在方向的就业前景不乐观,或者同组的师兄师姐普遍找不到对口工作;
(4)I人(对人际交往没有强烈需求);
(5)自驱力比较强(能坚持刷力扣的朋友,自驱力都挺强的);
(6)希望获得超过平均工资的收入(大厂应届生的工资,可以去小程序offer show上查看);
(7)抗压能力强(一般有末位淘汰机制);
(8)身体健康。
以上条件满足越多越好!

————手动分割线————

转码过程中,最重要的是找实习!找实习!找实习! 能获得一个好的实习机会,转码基本就成功90%了
Question:为什么要找实习?
Answer:
(1)实习的门槛比校招和社招都要低很多,拿到实习offer更容易。我工作之后陆续面试了10来个同学,如果一个面试者能够AC力扣中等难度的题(对应周赛分1500~1800) ,并且对于我们正在做的方向有一定的了解 ,大概率会给offer,如果还亲自跑过该方向最近两年的开源代码,对代码细节比较熟悉的,肯定会给实习offer。
(2)实习可以让你快速融入程序员的环境之中。转码的一大困难在于,我们身边的大部分人都不是写代码的,遇到问题了,甚至不知道该和谁讨论;但是实习的时候,你身边都是有丰富经验的程序员,遇到不懂的,脸皮厚一点随时问,你的计算机专业能力会突飞猛进的。就好比在国内,从小学开始学英语到大学毕业,好像也就只能拿来应应试;但是丢到英语环境了,不出两个月,至少听和说都可以过关了。
(3)实习可以挣钱。国内给硕士、博士发的工资实在是太低了,这里科普一下,以北航物理博士为例,读博期间的收入由三部分构成:国家每个月发1950(普博发三年,直博发四年,延毕的话这一部分就没有了);课题组津贴(好一点的课题组,每个月发1k,碰到不当人的导师不发也是有可能的);学校的奖学金没什么突出的学术成果就不要想了,一年能拿1万就烧高香。综合下来一个月到手3k~4k,这就是国内最聪明的一茬年轻人,在最年富力强、最有创造力的年纪,在北京拿到的工资!反观去企业实习,一般大厂给博士开的实习工资,(每周五天全勤、各种补贴加在一起)可以达到1w+。这些事情,在我读书的时候都是不知道的,因为被困在自己的信息茧房里了。更离谱的是,你想去外面找实习,导师如果人品差的话,还会千方百计阻挠你,因为在他心中你是属于他的廉价劳动力。去年我带了两个清华的硕士实习生,他们说学校鼓励他们去外面实习,找企业实习是他们的必修课,要算学分的。这一对比起来,无言以对。。
(4)即使是科班选手,在学校里做的项目,跟企业做的项目也可能存在很大差异,前者需要创新性,后者追求能落地。去实习可以更清楚地知道工业界目前在做的是什么,需要什么

————手动分割线————

转码的路线(以深度学习为例):

  1. 学习计算机基础知识
    1.1 掌握1~2门语言,比如python和c++;
    1.2 熟悉数据结构,重点掌握数组、哈希表;
    1.3 熟悉linux的基本操作,比如mkdir, cd, ls, rm, 管道等等
    1.4 熟练掌握用python或者c++读文件/写文件的操作,vim编辑器,pdb调试等等
    1.5 熟悉git的基本操作pull, push, merge, reset, branch等等
    1.6 熟练掌握常用库,比如python的numpy, pandas, matplotlib, json, os.path等等
    1.7 熟练常用算法,比如双指针、二分查找、递归等等(dp刷的最多,工作中用的最少,堪称性价比最低,哈哈)
    1.8 刷力扣,强化数据结构与算法,刷到周赛能上1800分就够了,计算机基础知识告一段落,开始进入第二阶段

  2. 确定细分方向,准备项目
    深度学习是一个大方向,它下面有很多小方向,比如最近比较火的大语言模型、文生图、三维重建、自动驾驶等等,小方向下面还有更多细分方向,比如自动驾驶下面还有目标检测、场景建图、轨迹预测、运动规划等等。
    2.1 通过看arxiv上的综述,或者去bilibili上搜索相关视频,花几天时间调研一下,选一个感兴趣的细分方向,然后开始搜集最近两年,这个细分方向上的代表性工作。看一个工作是否具有代表性的一个简单方法,就是去B站上搜这个工作的讲解视频,如果有的话,就说明是代表性工作
    2.2 细分方向最近两年的代表性工作,可能也就不到十篇,全部下载下来读一遍,然后找一个评测指标最好,或者框架看起来最简单的,去github上把源码拉下来,想办法找显卡把训练/推理流程跑通,逐行打断点过一遍。过完一个repo,还有时间就再拉一个repo,循环

  3. 实习简历海投
    上招聘网站,先找你准备的细分方向的岗位,如果没有的话(一线城市一般都会有。。)找小方向的岗位
    面试没过的原因可能是多方面的:包括但不限于:公司没有招聘指标了,这个方向不做了,你投的太晚了,面试官心情不好,面试官的水平不如你听不懂你在讲什么等等,所以一定要海投,不要在一棵树上吊死

————手动分割线————

Question:转码选手在职场中是否会受到不公平对待
Answer:是也不是
(1)在工资上不会受到不公平对待:你的offer工资不是由你的专业决定的,而是由你的学历和你在面试中的表现决定的(这里只谈论校招)。面试官会根据你的面试表现打分,简单来说就是普通和优秀。面试评分普通的非科班选手,和面试评分普通的科班选手,理论上来说给的工资是一样的。从高到低:优秀博士 > 普通博士 > 优秀硕士 > 普通硕士,与是否转码无关。
(2)在工作内容上会受到不公平对待:虽然在转码阶段,我们已经付出了很多努力,但是不要拿自己的爱好,挑战别人的专业。科班选手的熟练度或者说工作效率通常会比转码选手高很多,所以你刚进公司的时候,会发现你的领导更有可能把核心的工作交给科班选手来完成,交给你的可能更多的是杂活儿,这个时候一定要放平心态,充分发挥咱们转码选手自驱力和主观能动性比较强的优势,稳扎稳打、厚积薄发、卧薪尝胆,度过这一段尴尬期。这也是为什么我在前面聊什么人适合转码的时候提到,需要较强的自驱力和抗压能力。。

————手动分割线————

Question:工作强度如何,是否996
Answer:不同的公司,不同的小组,不同的项目阶段,天差地别,不能一概而论。如果是业务上升期,看到自己做的项目越来越好,年终奖持续超预期,其实996也不会觉得很苦。如果项目看不到希望,领导还往死里压榨996,那赶紧换一家公司吧,机会还是很多的。BTW,很多国内在读博士的工作强度都不止996,只不过在互联网上的声音太小,引不起大家的关注罢了

————手动分割线————

Question:是否有35岁职场危机
Answer:今年30,等我35岁再来更新一下。。

————手动分割线————

先更新到这里,有问题可以评论区再交流。最后祝大家工作、学习、生活、求职,事事顺意~

————以下是原文,写于2022年6月————

简介:

楼主是凝聚态物理博士,2021.3月开始准备转码,2021年底拿到了机器学习(计算机视觉)的offer,目前博士毕业,准备7月赴上海入职。

相信力扣上有不少小伙伴和我一样,是非科班选手,并且希望转码,这里我为大家分享一下我的转码经历,作为参考。

文章主要包括以下几个部分:

  • 我的基本情况,以及转码的动机

  • 我的转码历程

  • 求职经验分享


1. 我的基本情况,以及转码的动机

我12年开始读本科,专业是应用物理。16年本科毕业开始攻读博士学位,专业是凝聚态物理,研究方向偏材料。本科和博士都在北京航空航天大学。

转码之前,我计算机方面的知识相对薄弱。具体来说,大一上过一学期的C语言课程。博二的时候,为了处理数据,自学了一点python。博三的时候,为了开展科研,自学了一点C++,开发了一套几千行的程序。总体来说,除了python和C++的一些基础知识之外,一穷二白,计算机基础四大件也完全没学过。

为什么会萌生转码的念头呢?

(1) 我的科研成果一般。4篇SCI一作虽然毕业绰绰有余,但是想找到一份体面的科研工作(进研究所或者高校),非常困难。
(2) 博士方向的薪资水平一般。
(3) 自己对写代码比较感兴趣。一方面。自己在科研过程中写代码感觉挺开心的;另一方面,实验室里有硕士师弟在刷力扣,自己跟着试了一下,发现也挺有意思。

2. 我的转码历程

总的来说,我的转码历程主要包括以下几个阶段:开转(没有具体目标)-> 后端开发 -> 机器学习 -> 求职 -> 拿到offer之后。

阶段1:起步(2021.3 ~ 2021.4)

我是2021年3月开始转码的,当时还没有明确的目标,不知道到底要从事哪方面的工作,只是单纯的刷刷力扣。

还记当年刚开始刷题,就遇到了新人杀手——三数之和,做了一个上午,历经无数报错和超时,才在下午两点成功通过,中饭都没吃上。那天累计有132次提交,这个数字直到现在都未曾被自己超越…

刷了一个月,差不多有五、六十题吧,对象就开始鼓励我投简历,找实习。

想想当时也真是初生牛犊不怕虎,投了华为。笔试只做出来一道easy题,过了。一面算法题二叉树的最大深度,面试前一天刚好刷过,当时给我激动得够呛,一面顺利通过了。二面算法题需要用到回溯的知识,当时还没学到,没做出来,虽然和面试官相谈甚欢(自我感觉),最后还是没有悬念的挂了。

过了两周,又试着投了腾讯的引力计划(一个面向非科班同学的实习计划),一面就直接凉了。。。

总而言之,作为一个普普通通的转码选手,没有任何奇迹发生,开局直接跪,就是这么真实。。没关系,哪里跌倒哪里爬起来,接着干!

阶段2:确定方向:后端开发(2021.5 ~ 2021.7)

之前我有提到,虽然我想转码,但是没有明确的方向。上次腾讯面试虽然惨败而归,不过面试官问了我很多计算机基础四大件的问题(计网、计组、操作系统),我当时感觉还挺有兴趣(也可能是因为被无情淘汰,有点不服气),所以那次面试间接帮我确定了转码的方向——后端开发。

确定了方向之后,我重新制定了学习计划,一方面,力扣还得接着刷,另一方面,我也开始恶补计算机基础(数据结构、计网、计组、操作系统)。说来也不怕大家笑话,我那段时间一直在B站上看王道考研的视频(这里不是打广告,这个课确实比较适合非科班转码的朋友补基础知识)。实验室里几个玩的比较好的硕士师弟还一老调侃我,说你一个五年级的老博士了,还天天搁这考研。我说老骥伏枥志在千里。

刚开始学四大件,还挺有热情的,但是几周之后,热情就开始慢慢消退了。其一在于,要背的东西实在太多了,缺乏实操的情况下,上周刚学的内容,这周就忘了,非常有挫败感(没错,说的就是你,计网!);其二在于,学习书本知识和我日常的工作状态差异较大,博士以看论文,想创新点,做实验为主,抱着书本狂啃的经历相对而言比较少,所以有点不适应了。

计网、计组、操作系统虽然学***展很慢,但是刷题一直没落下,基础的数据结构(哈希表、二叉树、图等)、和算法(回溯、二分、动态规划等)混了个眼熟,题量也差不多到了200。

2021年5月,抱着试一试的心态,我打了第一次周赛,嗯,光荣的一题选手!定级1507分,我这个就是完完全全的大众水平啊有木有,不像那些天才选手,随便打几场knight了,再打几场guardian了,所以感觉我的经历还是挺有参考价值的哈哈。

阶段3:切换方向:机器学习(2021.8 ~ 2021.9)

之前说到发现自己没有那么喜欢搞后端。8月放暑假在家赋闲,一次偶然的机会,在B站(没错又是B站,B站上的学习资料真的是无穷无尽!)刷到了一些机器学习的应用视频,觉得哇塞好厉害,居然还有这种神仙操作,就开始研究起机器学习了。

最开始,为了图快,刷了几个短系列(几个小时的速成课程),学了又好像没学,感觉没摸着门道。

直到我开始刷吴恩达老师的系列课程(20小时起步的那种),才打开了新世界的大门。吴恩达老师讲的非常清晰,循序渐进,而且浅显易懂,对非科班选手来说很友好。他有一门机器学习和一门深度学习的课(都是免费的!),如果感兴趣的话可以先学前者再学后者。

吴恩达老师的课虽然讲的很精彩,但是偏理论,如果只上他的课,会发现缺乏实践能力,而且课程比较老,16年之后的研究成果就讲的比较少了。后来,我又在B站发现了两个宝藏:李沐老师和李宏毅老师!前者是亚马逊的大佬,后者是台大的老师,李沐老师有一个《动手学深度学习》的系列课程,手把手教你怎么写神经网络;李宏毅老师则讲了很多相对前沿的研究成果,而且同样通俗易懂。

暑假在家的一个月时间里,我就在几个老师的轮番栽培下,快速成长。。

当然刷题也没落下,随着题量的不断积累(差不多400题),我也逐渐从1500分的一题选手,成长为保2争3的1700分选手了✌

阶段4:屡战屡败的求职之路(2021.10 ~ 2021.12)

在醉心机器学习的过程中,我完全将求职的事抛诸脑后,总感觉自己学的还不够,想准备充分一点再投简历,所以完美错过了8月9月的求职旺季(虽然不错过其实拿到offer的机会也不大,哈哈)

后来我对象实在看不下去了,开始每天不厌其烦地催我投简历。。。于是我正式开启了我的求职之路。

现在回想起来,那真是一段压抑的时光。没有深度学习方面的顶会论文,也没有实习经历,靠着985的背书,和几篇物理方向的一作paper,想拿到深度学习的offer简直是难如登天。。。

投了很多企业,一部分简历被拒,偶尔倒在笔试上,大部分时候倒在一面,因为每当面试官问我项目经历时,都乏善可陈,这注定了面试结果的悲剧。

后来我开始思考如何能够改变被动的局面,显然需要针对上述问题下手。

于是我开始尝试着去kaggle上打一些非常简单,对硬件需求不高的小比赛,虽然往往名次一般,但是好歹可以写在简历上了;然后跟着李沐老师写了一个简单的SSD(目标检测网络),并且学习了相关网络(RCNN系列、YOLO系列等)的知识,在面试的时候总算不至于乏善可陈了。除此之外,在之前的一些失败面试中,我发现实际的工程能力也是面试官比较看重的,所以我也学习了一下git的使用,作为锦上添花。

当然,即使做了上面这些,我仍然在不断地经历一次又一次的面试失败。

等到11月底,仍然颗粒无收的我的情绪已经非常沮丧了,一度想要放弃转码,滚回去做博后了,结果11月底突然收到了一家公司的二面通知,在一周之后又收到了三面通知,最后神奇的通过了!就是来的这么突然,让人没有一点点防备。。

后来谈薪环节,hr开出的工资是博后的两倍,我没有任何argue,直接同意,签了三方,结束了我的求职之路。

求职这段时间,为了补项目,刷题就比较少了,周赛也没怎么打,这也导致了一些笔试翻车的情况出现。。。大家不要学我,求职的时候题不能停

阶段5:天梯慢慢爬(2022.1 至今)

拿到offer之后,整个人的状态就轻松多了,再加上毕业季也没有那么忙了,所以刷题也可以继续保持。不知不觉中,题量就慢慢涨到了700,心态放平之后,竞赛分也从1700+涨到了2000+,希望有朝一日能上个guadian吧~

这里分享两个周赛上分的方法:
(1) 你现在周赛多少分,就去刷比你自己高100~200分的题,题目对应的分数可以参考zerotrac的分享,感谢大佬。
https://leetcode.cn/circle/discuss/iKFgik/
(2) 对于想冲击四题的三题选手,可以针对性的练一下第四题,我之前发过一个帖子,统计了最近半年第四题的标签,对于出现频率较高的标签,可以重点关照,搭配方法(1)使用,上分事半功倍
https://leetcode.cn/circle/discuss/ffEMhm/

3. 求职经验分享

经历了多次面试,我也积累了一些经验教训,抛砖引玉,和大家分享一下。

(1) 知己知彼

  • 知己包括两方面,一方面要知道自己喜欢什么(求职意向);一方面要知道自己擅长什么(能力)。

  • 知彼,要换位思考用人单位需要什么。一方面可以从job description上知道岗位的职责,然后把自己的项目经历和技能尽可能地往岗位职责上靠拢;一方面可以多跟面试官或者过来人聊一聊有哪些用人单位比较需要,但是应届毕业生却往往不具备的能力,可以着重强化一下,作为你的闪光点。

就拿我个人来说,虽然我在机器学习方面的项目经验在很多计算机科班同学眼里不值一提,但是我作为物理选手,可能数理基础会相对而言好一点;此外,我作为博士,接受了完整的科研训练,发表了几篇Q1区的paper,虽然不是计算机方向,但至少表明我掌握了科研的泛式;而且,机器学习和代码方面完全是自学的,说明我对这方面比较感兴趣,而且自驱力比较强。以上这些可能是我最终拿到offer的原因(我猜的,也有可能单纯因为公司缺人)

(2) 保持信心,多投简历
很多时候,没有拿到offer,不是因为你不优秀,而是因为你的能力、经验与应聘岗位的匹配度不高,所以不要因为几次的失败就妄自菲薄。多投简历,多尝试,总有机会能撞上一个和你匹配度比较高的岗位!

(3) 保持刷题
除了投过的两家国企不用手撕代码之外,面试的所有其他企业都是要手撕代码的。所以一定要多刷题,保持手感,而且要保证自己的一次性正确率,因为在面试过程中,由于紧张,且没有测试用例,debug会比平常在力扣上刷题的时候难很多,所以这也是为什么很多过来人推荐大家打周赛,因为周赛的紧张氛围和编码环境是和面试比较接近的(相比于平常刷题来说)

(4) 面试过程中和面试官保持沟通
我在面试过程中,有好几次遇到比较困难的题,因为紧张,思维短路,大脑一片空白,不知道大家有没有遇到类似的情况。这时候千万别慌,也不要一直闷头瞎想,在经过一段时间的思考没有头绪之后,果断深吸一口气,开始和面试官沟通,比如“我有点紧张”、“我这题的思路是xxxx,但是xxxx问题没有想清楚”,也就是说要勇敢地、坦诚地表达自己的想法和困难。为什么要这样做呢,你的面试官通常是你未来的同事,或者领导,你在遇到问题的时候,是选择积极地与大家沟通,还是闷不吭声憋在心里,会很大程度上影响团队的工作效率和相处融洽程度。面试不仅仅是考察一个人的知识或者代码能力,也会考察一个人的情商,好不好相处,有时候后者甚至比前者更重要(我猜的)。

结语

以上,希望我的求职经历能给广大的非科班转码选手提供一些经验、鼓励和信心。感谢阅读~

评论 (200)