如何转码农/数据行业?

shansquare 2018-09-04 03:52:29

一直有同学私信问我写一写转行实际经验,做了什么,学了什么,面试之类的。这里做个分享,感兴趣的同学做个借鉴好了。没有看过我之前日志的小伙伴,再贴我和家属的转行故事和一些心得分享。

转行还来得及吗?

转行后明白的那些事

极简帮我决心转行

最初我也刷了很多题,但后来申请到Insight Data ,最后选择当了数据工程师,如果不是Insight可能还是会选择专门写Code。现在的数据同行很多本来就学计算机的,也有从数据工程师转到程序员的,两者我看来有很多相通之处,再结合我家属转程序员的经历,一并写了。

刷题

数据工程师可能需要刷的题目少一些,但也是必须要准备的。软件工程师更不用说了,大公司基本只考题目,有公司面试过程中自我介或者culture fit之类都可以一提而过,直接做题。

用到的资源如下:

Leetcode,相信每个转码的朋友都对LC不陌生。我当年知道它的时候才100多题,等我刷了300多题的时候她已经增加到600题,现在好像快900题了!所以要趁早。但并不是说刷的越多越好,方法策略要比题海战术更有效。因为题目的套路也就那么些。

Cracking the Coding Interview这本书,出到第六版了,很厚,大家不要被吓到,其实讲解基础和理论部分只有一点点,题目也并没有很多,答案很长。

再次很多人推荐的一本书,Introduction to Algorithms ,中文是算法导论。很厚,我就找了Youtube教学视频看的,是MIT的,Coursera上也有,网易上应该有翻译好的,讲的是比较理论的也比较系统的,可能并不是特别实用,但是适合非CS出身的同学打打基础。

还有一亩三分地论坛,很多面经,主要是涉及每个公司都有各自的题库,和近期常考的题目。

一些培训班,我和家属花钱上了九章算法。虽然他的题目Leetcode都有,但是有人帮你把主要知识点系统化梳理讲解一下,还是满有帮助的。另外针对完全没有基础的,九章还有入门班,我没有上过,不做评论。至于别的培训班,后来才听说一个,叫 来Offer。当时六千美金,现在不知道涨价没,据说还有更高级班两万美金,可以一直教到你找到工作为止。我有朋友上了这个班,据他评价相比之下九章的课在他看来垃圾(原话引用,我自己觉得九章还行),我不知道是因为真的九章差差还是因为来Offer太贵了不忍心说他不好,好比你开了一瓶82年拉菲那么管它是不是氧化变味你肯定还是会说好酒。但是后来人家去了Google,也可能真的是you get what you pay for。后来也听说别的例子,参加来Offer培训纯刷题进的Google。所以不差钱的同学来Offer了解一下。

刷题有什么技巧吗? 当然。 没有基础的同学从简单的高频题目开始刷,没有思路不要使劲花时间冥思苦想。正确做法是没有思路及时看答案,Leetcode里面找投票最高的答案看,甚至把答案抄一遍,尽快理解,再试着自己写一遍程序就会好很多。这样做的目的有两个,一节约时间,二实际面试你也根本不会有很多时间去冥思苦想,如果卡住了,面试官可能会给你一些提示,或者你自己主动去要一些提示,这时候你要具备的一项能力是根据提示马上整理出正确思路写出程序。

Leetcode上,好些得票很高答案是写得非常奇特巧妙的,或者很酷炫的one liner就一行code,建议大家,切-勿-模-仿。因为面试要面你基本功和解题思路的,那种脑筋急转弯的解法一不会培养你的基本功,二不是面试官所期待的,反而会让人怀疑你是不是之前见到过这道题。你就老老实实看正常思路的解法就好了。

我自己体会是,非科班出身的代码实现能力是很需要加强的。我跟计算机专业出身的同学一起刷题时,发现我的思路并不比他们慢,但是让我写,我就非常吃力,写出来也是要么啰嗦,要么别扭。但是我把思路讲给CS的同学听,他们就能很快拿简洁漂亮的程序把我的想法表达出来。这是基本功,,有时候是需要多看别人的程序才自己下手多写才能知道。还有还会分类归纳总结,每个类型的题都都很多,每一类里面选择最高频的题目从简单往难做一遍,总结出套路,要比单纯的题海战做更有效。

系统设计

做码农或者做Data Engineer都或多或少要涉及一些系统设计。我乍一开始也是挺懵的,因为系统设计是很基于经验的东西,我必然是零基础。

但是,系统设计基本都是有一个固定套路的,从你开始要设计的系统场景和需求开始,规划具体的功能模块,用户端一直到后段,最后是要考虑优化和平台的升级扩容,完。

当然中间涉及到很多细节知识需要你去学习,我当时主要还是上的九章算法的系统设计班,每一节课都是一个具体的实战例子,把上面提到的套路走一遍,其间包含了很多面试设计的具体Tips我有同学说她觉得拿到九章算法的PPT自己看就可以了,我段位没有那么高,还是老老实实上了课,也建议跟我一样新手的同学这么做。

别的资源也是有的。但是我用到的不多,反正大家网上搜一搜能出来很多资源。争取找机会做一些模拟面试练习。

简历

简历是拿到面试机会的敲门砖。但转行之前做的不相关怎么办?

比如我之前在做地震声波成像,拿现成的软件,完全不用任何编程的,把文件丢进去调调参数run一下,看看图像就好了,但是我就尽量把关键词往数据方向靠拢。虽然内行人一眼看出来说你这个数据跟我们这个数据完全不相关啊,经验没有任何可以值得借鉴的。但是你不要管他,你只需要关键词匹配上了,能过HR筛选那关,拿到面试就好了。

当然有同学觉得,自己工作方向就是跟IT差了十万八千里啊,要怎么靠拢和匹配,这个时候要尽量充实简历。coursera,网易等等资源太多了,编程语言/工具/技能只要你学会了,都可以写在简历最前面,这是HR首先会看的。

除外还可以找一些项目来做,我当时上的九章算法的大数据课,主要讲Map Reduce和一些具体应用,其中项目是一个电影推荐系统。基本是他们带着学员讲一遍原理过一遍具体操作,拿Netflix公开数据在docker上面跑出来用和电影的匹配度。你要学到什么程度? 把code理解了,自己学会实际操作,面试中就讲清楚就OK了。

具体写简历时要注意的小Tips: 关键词突出,重点突出,简历不要超过一页,一页,一页,重要的事情说三遍,一页的篇幅足够coverIT公司所需要的技能点了,再长,没人会感兴趣的,只有让HR对你失去耐心。

怎么拿面试,那是一定要找人内推的。硅谷这些大公司,自己海投简历基本都是然后就么有然后了。但是内推的话几率会大大增加。而且一般公司都对成功推荐的人有奖励,所以有钱拿大家还是很乐意内推的。有很多时候,刚好赶上扩招的时候,只要有推荐你基本就有面试机会(这个要看运气了),接下来你就看你自己了。

面试的小tips

你需要投资一块白板/黑板挂家里,适当做一些模拟面试。IT公司面试都是在墙上写code,跟你在电脑前写,感觉是完全不一样的。我第一次往前一站,整个人感觉是呆掉。明明很简单的题也不知道怎么下手了,所以建议做法是买一块小黑板or白板挂墙上练习,直到你在白板上coding跟你在电脑上coding一样的熟练程度,不然特别吃亏。

其次要会讲题,很多时候你觉得一道题你会做了,但让你讲给另一个人,你会发现讲不清楚。而面试就是需要你把思路清晰表达出来的,不然就挂掉了。所以平时多多尝试把一道题的思路讲出来,不仅可以检验你是否真正理解了这道题或者这类题,更是增强你面试能力的一种几有效手段。

面试前要密集去一亩三分地看面经,根据我的经验,一般公司都会在某段时间内有高频题,面经里都会提到,你要是不看,你不是自找亏吃嘛。系统设计也会有的。

再次,如果面试卡住了或者对自己的思路不确定,要主动向面试官要提示或者问一下am i on the right track? 面试很大程度是对你工作方式的检验,懂得适当寻求帮助也是工作能力重要的一方面,而且卡住了但是又不求助是交流能力的一个非常负面的信号。还有不要抓住题就做,限制条件和问题描述要问清楚了,也是考察的一个方面。通常对方都会很乐意回答你的问题,给你一些提示,关键是你要能抓住提示,迅速找到解题思路把程序写出来,这就是一个很好的表现。

题外话

不讨论应该不应该转行,只给想转行的人分享一点经验。上面提到的培训班跟我没有任何利益关系,纯属个人经验分享,外加身边朋友的一些评价,反正好的不好的都有,自行斟酌。现在可能也有别的培训班,但是我后来没有专注了,大家自行去了解就好。

之前写的几篇文章里,评论里大多是好的。还有有很多说是国内国外不一样,我之前写得文章不具备广泛意义上的参考性,国内外不一样这个我是承认的,但是评论里也有很多突破这种局限的国内的小伙伴, 先给你们点赞。这个问题我是这样想的,在遇到局限和困难的时候,有些人就会觉得这不可行啊,有些人可能就会试试,有没有人突破过,如果没有我能不能成为第一个突破的人。人和人的距离,往往就是在这些心态之间拉开的。

还有什么问题欢迎留言!

shansquare
作者shansquare
9日记 10相册

全部回应 12 条

查看更多回应(12) 添加回应

shansquare的热门日记

豆瓣
免费下载 iOS / Android 版客户端