我的一些成长经历

实习

秋招还在进行中,这次秋招确定的工作也将作为我人生的一个新的阶段了。先说下手上目前已经拿到的offer情况,网易考拉,京东, 网易游戏,携程,银联,vivo, 华为,基本上也就这些了。

我比较想从我的第一次实习开始说起,于我而言,从我找的第一份实习开始到现在,可能会作为一个整体贯穿在我的人生中。

测试

依稀记得是在研一下学期暑假的时候,七月份开始我就决定去找实习了。之所以选择这个时候实习,是因为当时有些紧迫感,想到第二年春天就要开始春招,要是再不实习,怕自己以后就找不到好工作了。刚开始时,啥也不会,python也就是会个基础语法,这样的基础下,我唯一仰仗的也就是简历上的成绩排名。因此很没底,于是一开始我的目标是找测试工程师,这可能是我当时唯一能达标的职位了吧。然而,事件的发展总是让人感受到现实的骨干,我竟发现,我找不到一个测试的工作,一方面,测试工程方面要求的数据库知识我掌握的不太牢靠,另一方面,虽然是实习,但我找的几家公司给测试实习开的工资实在是不能让我满意,在这种情况下,我放弃了做测试的念头,我觉得,测试工程师不适合我。

开发

自然而然的,既然不适合做测试,我就转行去做开发了。于是乎,我从7月中旬开始学习网页开发的相关知识。说实话,自学开发知识真的是一件非常痛苦的事,一个全新的世界展现在你面前,你完全无从下手。可又能怎么办呢,只能硬着头皮啃下去。由于当时语言方面接触更多的是python,因此我也就从python开发着手了。尽管如此,为了找工作需要,Java实现的spring之类的框架我也在不断接触学习,好在研一也没有完全虚度,学了些java基础,让我能够不至于那么痛苦的学习开发框架。于是乎,在自学了一个星期后,我差不多对整个web开发有了大致的了解,于是又踏上了找实习的征程。不过呢,我觉得这次的自学经历可能给我春招找实习带来了极大的帮助,让我不至于在春招自学的时候那么迷茫。

我记得我当时第一家面的公司是扇贝,为啥呢,因为扇贝给的实习工资在南京算比较高的,嗯,我还是比较粗鄙的。然后,我就失败了。准备了一周的时间没有被人认可感觉真是沮丧。原因呢,因为扇贝可能对编程要求比较高,进门面试就是让我当场写两道编程,我当时可是一个头大,压根就没往这个方向准备过,就在那边和面试官磨磨唧唧,耗了一个钟头,结果一道题都没过,面试官就让我回去了。我说,你都不问专业知识就让人走,实在是不讲道理!面试官说,这两道编程是门槛,做不出来就没有面试的机会。我当时挺不服气的,不过现在想想,以现在的经历来看,发现这些数据结构的编程题真的是需要掌握的,当真正找工作的时候,解决这些数据结构编程题的重要性不亚于专业知识

后来回去了我就陷入茫然了,不清楚自己想要干什么。这个时间段,我女朋友拿到了趋势的实习,让我也有了压力。其实当时都开始怀疑会不会是自己能力不行,有一些小小的压抑。不过还好天性开朗,我也不太过于压迫自己,所以,我当时就想着自己搭建一个博客,熟悉下整个网页开发的流程,于是乎,就开始找那些技术博客,利用Django搭建了一个自己的博客,不过这个博客已经废弃了(每个月要花10元的服务器费用,在我支付了两年后,实在支付不起了,于是就转战到现在用github搭建的免费博客了)。

找工作,运气真的很重要!这可能是我觉得在找工作中非常重要的概念了!因为运气的原因,我后来进了思杰实习。之所以说是运气,因为当时面我的两个面试官真的非常nice, 尽管很多地方我都没有答上来,但是他们最终还是乐意引导我,给了我一个机会。于是乎,我的第一次找实习的经历结束了。另外,运气这件事,我觉得有必要强调下,自打春招以来,我更加觉得运气在找工作中重要性的占比!即使你一直找不到工作,真的不要灰心,可能好运还没发生在你身上罢了。要知道,命运是不公的,在找工作这短短的几次面试中想要完全掌握一个人的能力不是充备的,所以,有些时候,能力强的,不一定会比能力弱的找工作轻松。想我当时,一定是把我春招所有的好运都压注在了秋招上了吧。

算法

说实话,我一开始进思杰是冲着开发去的。结果,那边的经理却对我说,我是被安排过来做机器学习的,做一些试验性的东西。我嘛,反正第一次实习也算是冲着赚外快来着,也就答应了经理的要求。殊不知,就是经理的这次请求,改变了我以后的发展方向。接下来在思杰的6个月实习里,在我mentor的指导下,我一边学着算法的东西,一边学着开发的知识,一个人把我自己实现的算法用开发展现出来,现在想想都好佩服我自己。好在只是个试验性的东西,经理也并没有要求我出什么成果,这也给了我很多自由发展的空间。

我是17年9月份进的思杰,到18年2月才离开。期间差不多5个月的时间,我基本都是在算法开发知识轮流切换中渡过。然后到3月份就开始进行秋招了,可以说,时间点上还是非常连续的。春招刚开始的时候,我其实一直在犹豫,到底应该往哪个方向找工作,是算法还是开发?我其实一开始没有想清楚,这也是导致我在思杰实习的时候,不论是开发,还是算法,都是半吊子水平。说实话,如果我能早点明确方向,我觉得春招就不至于那么困难了。至于真正明确方向的时候,我是在一次和基友聊天的时候,突然问了自己一个问题:如果选择做开发,那么我选择读研的目的是什么?要知道,本科生出来也是可以做开发的,三年内的职位晋升和开发经验,我觉得可能某种意义上比研究生学历更为重要吧。因此,我最终决定了走上算法这条道路。

春招

自从选了算法这条道路,那可真的是一个人摸黑走到底了。师门的上一届师兄都是做的开发,也就是说,一旦有了问题,只能靠自己解决了。好在自学能力还行,从三月份开始我开始进行了(自认为)系统的学习机器学习。学了半个月的时候,面试阿里,一面挂了。学了一个月的时候,面试腾讯,一面挂了。学了一个半月的时候,面试了网易严选,面了三面到了HR,但最终还是挂了。学了两个月的时候,面试了京东,面了三面到了HR面,最终也挂了。讲了这么多失败的经历,其实也就是想告诉大家,算法入门其实没那么难,就是痛苦了些罢了。当然,春招也确实是失败的,因为今年是个算法大年,算法岗给的钱多,大家都蜂拥而至,这是我始料不及的。直到5月份,都没找到像样的实习。

机器学习其实是一个很大的方向,包括了自然语言处理,语音识别,图像处理,推荐搜索等,当我一开始找实习的时候没有明确具体的研究方向,导致了成果惨败。后来,思索再三后,我决定了以后往推荐系统方向发展,开始了对推荐系统的研究。为什么没有选择别的方向,因为我发现别的方向,凡是参与竞争岗位的,手里或多或少有几篇相关的顶会论文,在这种情况下,我显然是竞争不过的。此外,我发现凡是面算法的,多多少少都是会参加比赛的,所以5月初的时候,我花了1周的时间参加了一场比赛,作为简历上的点缀,好在比赛的结果还是可以接受的。这个时候,我觉得自己已经准备好了,有比赛,有方向,可是却发现,春招几乎快结束了。好在,携程在5月份还有最后一次机会,我参加了,并最终拿到了携程的offer。这也就是我春招的经历了吧,投了大大小小三十家公司,最终却只拿到了两个offer,携程的和华为的,这也让我深刻的意识到了自己水平的不足。

春招的惨烈一定程度上给我拉响了警钟,今年算法岗的竞争程度相当激烈,举个例子,春招面试网易的时候,面试算法岗位的人数估计得有开发岗的两倍,但是岗位数却不见得比开发岗多,这也是我提前准备秋招的原因。

秋招

我是5月底进的携程开始实习,7月初的时候就开始准备秋招了。7月中旬的时候开始疯狂投递提前批的简历。我秋招的过程非常简单,由于准备的早,再加上实习经历和投递岗位比较匹配(都是做推荐算法),基本上每投一家公司,后面基本都会收到录用意向(除了阿里),于是乎,当我从8月初开始正式进入面试阶段以后,我到了8月底就已经结束了秋招。然后大大小小的offer也收了不少,这使我产生了懒惰的心态,也就没有继续参与9月份开始的秋招了。

给师弟师妹们的一些建议

所谓师兄师弟,无非就是早走了一两年路,多经历了一两年的事,现在,我想把下面一些话给以后的师弟师妹说一下,算是我个人的一些小的经验吧。

明确第一次实习的方向

举个例子,如果以后想做个开发工程师,那么第一份实习最好不要找测试工程师的实习。第一次实习的时候,我当时只是抱着赚些外快的想法的。因为我是研一暑假的时候找的,总觉得离以后找工作还比较远。好在自己也算是有点觉悟,找实习的时候从测试变成了开发。也好在当时实习时经理的需求,让我又从开发转成了算法。说实话,也不能完全说是这份实习帮助了我找到了春招的工作,但至少帮助是不少的。为什么我希望大家第一份实习就要找相关的呢,因为我有些同学在找了第一份实习是测试的岗位以后,等到春招找开发工作的时候却发现这份实习经历没有带来任何帮助!既然如此,我觉得与其去做一个与自己以后发展方向不相关的实习,还不如利用这段时间好好提升自己。所以,也希望师弟师妹们能够早点明确自己以后的工作方向(工作方向和研究方向不是一个概念,但是会存在技术的交叉点,所以不要弄混淆了),不要像我直到春招开始才开始明确自己的方向,然后弄得自己手忙脚乱的。

金八银九

在细说这个概念之前,我觉得有必要说下一些关键的时间点:

研二上学期

9月-新年:可选实习期 (日常实习阶段,根据个人情况决定是否实习)

研二 下学期

3月初:春招开始,投递简历

3月中旬-4月:春招提前批面试(提前批一般不需要笔试),春招正式批笔试

4月-5月中旬:春招正式批面试阶段

5月中旬-6月:春招基本结束

研二 暑假

6月-8月: 春招暑期实习

7月初:秋招开始

7月初-7月中旬:秋招提前批投递简历,提前批开始面试

7月中旬-8月底:提前批面试,正式批开始投递简历

研三 上学期

9月-10月:秋招正式批笔试,正式批面试

现在有了大致的时间线概念,我就说下金八银九的概念。之前刷牛客网,碰到了金九银十的概念,意思就是找工作的最佳时间段是9月,次佳时间段是10月。但是吧,就我的亲身经验来说,我觉得完全可以把时间点往移前一个月,也就是我认为的金八银九。如上面时间点而言,八月份主要就是秋招提前批的主要时间段,我觉得这个时间段可能是非常重要的时间段,提前批发的offer通常都会是special offer, 并且通常提前批并不会影响正式秋招,也就意味着多一次机会。我秋招的时候就是从7月份开始准备,尽管这个时候还是在实习,然后奋斗了整个8月份,然后在8月底结束了秋招。当然,也会有不少人从9月份才开始准备找工作,但这个时候拿到sp offer的概率就会相对小一些。

培养编程思维

以我的面试经历来看,漂亮的项目经历和扎实的专业知识是拿到offer的敲门砖,而想要拿到sp offer,那就要加强自己的编程思维。通常而言,编程题的过与不过,可能会对面试的评价产生极大的影响。这里的编程,通常是给你一个很短的题目,让你用十多行的代码去解决。和实际中的编程是不同的。在实际项目中,我们的首要目标不是优化代码,而是尽快实现。而这里所谓的编程思维(动态规划,贪心,字符串,数组,链表,二叉树等)则是去学习使用最优的方式实现一段代码。如何培养?非常简单,在我看来,就是要不断刷题,刷题,这是件枯燥无聊的事情,但你必须坚持下去。我的建议是,把剑指offer这本书的每一个例子(60个左右)完完整整的用自己的语言去实现,能够做到只要说出题目,就能够写出代码的程度;其次,左大神的程序员代码面试指南,我也希望能够熟读,这里差不多200多题,如果能够对80%以上的题目知根知底,那么秋招中代码面试这块基本是没有问题了。

面试找工作的时候,通常会有电话面试和现场面试,这两种面试其实都有可能考编程能力。电话面试通常会给你一个链接,然后让你直接远程编写代码。现场面试,就是直接给你题目,让你在纸上把编程题写出来,如果给的题目比较难,通常只要给出一个思路就行。

科研

说说我的科研经历吧。

我是大三下保研后就一直跟着老师了。因此我的科研经历应该要从大三的暑假开始,相比大家来说,我的科研经历应该算是比较久了。

我的第一篇论文对我而言是一种极大的成就感,当时花了两个多月的时间,完成了从完全没写过论文,到论文发表的转变,即使是我现在都觉得有些不可思议。为什么这么顺利?可能是这些原因:我这篇论文实际上是基于以前师姐一篇论文的扩展,关于众包激励机制的研究,这也就是我的研究方向。一开始导师丢给我几篇论文,让我自己找研究方向,我就好好看了下,然后把自己的一些想法邮件给了导师(现在想想,当时的这些想法真的是低稚),然后导师给我选明了这个方向。所以,只要有想法,就可以和导师好好聊聊,毕竟大家的想法一开始都不会多么成熟,我猜导师也是习惯了,哈哈。选定了方向后,接下来的日子,极度无聊,那就是整日看论文写论文,这点其实没啥好说的,做论文,一定要耐得住寂寞!遇到不会的,就去问导师呗。由于师门的要求,论文只能发表英文期刊,因此,为了提升下自己的英语写作能力(虽然写了这么多篇论文以来,我的英语写作水平未曾有半点提高),我当时都重新拾起了英语语法书。所以,发表一篇论文不难,我的意见是,遇到问题后及时和导师沟通,可能是最有效的解决手段。

接下来两年,直到研一结束,我基本上都是在写论文。关于科研这方面,我觉得主要还是要耐得住寂寞吧!说实话,写论文这东西,其实也没啥捷径,就是靠不断看论文,做实验,看论文的循环过程。

有些时候,我觉得发表论文和找工作一样,论文不是想发就能发的。我第一篇论文运气好,直接就接受了,后面的几篇论文,退回来给大修的意见都算是万幸了,更多的就是直接拒掉。所以,论文一定要尽早写完,因为没有谁的论文一开始就是完美无缺的,通常都会被退回来修改,而这个过程可能都是几个月几个月的时间,很漫长。所以,如果平时比较空,还是好好准备下论文,不然,等哪次论文修改的时间和期末考试或者找工作的时间段重合,那可就分身乏术了。好在我觉得导师在科研资源上很丰富,很多情况下导师让我们投递的期刊或者会议都会有些导师认识的同事和好友,这算是对我们比较有利的地方了。但是,还是用导师那句话来说吧,要考虑自己的reputation,论文质量还是过关点好。

一些科研上的建议

说完找工作的一些事,我觉得有必要把科研的事也说下。当初保研读了研究生,我最初的目的,就是为了逃避现实,不想那么早就进入社会工作,所以选择了读个研究生加强下自己的素养。

研究生,那么首要工作还是应该做点研究。我们导师是非常和善的老师,所以,如果没有明确自己的研究方向,一定要尽可能的多找老师沟通,不要自己一个人在那里瞎鼓捣。再次强调,尽早明确研究方向,真的非常重要。

其次,论文能尽早完成就尽早完成。有两点原因,从毕业角度来考虑,早点写完论文可以早点发表,这样毕业就不用过多担忧,要知道,一篇论文写完后,运气不好的话,一年时间都不见得能被录用!从工作角度来考虑,虽然导师是放羊式管理,某些角度上不会限制我们在外实习,但是,如果你真的论文和专利什么都没有的话,我觉得还是先好好准备下论文和专利吧,等论文或专利大致完成了,出去实习的时候就比较轻松了。以我的经验来看,要想一边实习,一边准备论文,那日子是很煎熬的。

写在最后的话

一晃过去我就成了研三的人了,我的经历也不过是个普通人的经历,接下来的日子我也会继续好好成长,心之所向,无惧无悔!