小白转行大数据的思考

背景

通过大数据面试经验总结这篇文章遇到很多朋友,大多都在做一件事,开始学大数据了。大家各有不同的困惑,例如:

  • 过去专业跟计算机不沾边,觉得现有行业待遇太一般,希望换个前景好的行业,但转行挑战太大,担心不能实现。
  • 过去是计算机专业,不满意之前工作,想转大数据方向,不知道怎么着手。
  • 本来就是大数据方向,但觉得当前公司发展潜力不足,对发展比较迷茫,希望跳槽换家公司,但担心能力不足。

下文将就这两个问题从个人经历出发聊聊自己的理解,希望能对大家有所启发。:

  1. 如何入行?
  2. 入行后该从哪些方向提升?

如何入门

因为自己就是半路出家,就经历入门的历程。从光信息专业转到计算机,这之中就经历过怀疑、没信心、求职受挫到最后踏入大数据领域工作至今。

很多人看到这里应该可以释怀了吧,并不只有屏幕对面你会有这种感觉,很多人面对这样处境都不会好受,正所谓人在最难受的时候就是个人成长最大的时候,什么时候不难受,就说明跨过去了。

因为一些原因,硕士专业转到软件工程,当初自己是很抗拒的,但总要生活,跨专业还不好好学肯定没戏。那个时候还没入学就报了计算机培训班学了2个月,完成从0到1的过度,记得印象最深刻的就是安装java的JDK,自己跟着教程怎么都弄不好,然后找指导老师就顺利解决,这个过程大大提升初入这一行的入门效率。

学完两月就回学校本科答辩了,因为跟导师有个约定,毕业的暑假在家里自学大数据基础课程,那时候看的董西城的《某某技术内幕》系列书和《hadoop实战》,结合这几本书和网上的教程,给自己的大数据打下基础。

然后就开学了,其实在学校读书,虽然是软件专业,但更多是靠自学,优势是面对不懂的可以找同学问。课下我找计算机本科的教材,了解到核心课程包括《数据结构与算法》《数据库理论》《计算机网络》《计算机组成原理》等,然后用课余时间把这些课程全部学完,不懂的结合网上的课程同步学习,不同的视角能加深对一件事的理解。

这之间参与实验室和中兴的合作实习,参与了统一SQL(类似联邦查询)的项目,在这过程自学Antlr4来写SQL解析器,当时资料非常少,就在网上找英文资料自己摸索,刚开始总以为很难,后来发现它也并没有那么难,最难的是自己内心对未知的障碍。

很快一年过去,到了秋招,为打基础又学了《java虚拟机》、《TCP/IP详解》和《操作系统》理论等内容,其实这里面很多初看会比较晦涩难理解,但多了解一些能对计算机有更深认识。因为一些原因,复习准备的时间实在有限,只能硬头皮去参加一个个校招。

可校招并没有想象那么顺利,经历过一个又一个笔试后都没通过,算下来差不多得20多场,记得有一家公司共参过三次宣讲会(同一公司会在不同学校宣讲)都被刷掉,也曾面临怀疑自己的时候。

每次虽然被挂掉,但事后开始总结不足,到秋招11月份才拿到第一个offer。

总结这段经历其实很想跟转行同学聊几句:

1)相信自己。不论是何种背景,只要是正常人,都可以入IT这行,不同的是入门需要付出的代价多少、时间多少的区别。

曾经在培训班学习遇到一个同学,读到小学就辍学去打工,干过工地、厨师等工作,在26岁决定转计算机,几乎没有英语背景,硬是突破出来,找到一份IT工作。咱们很多人拥有高中、专科、本科甚至硕士背景,跨专业跨行又真的会难倒自己么,不会的。

2)找有效的途径。入行最开始没人指导会很困难,尤其计算机属于偏实操,入门的知识,知道与不知道之间只是一层纸,并不难,但需要摸索找到途径。所以入门开始找视频、朋友或培训班等途径能提升这一效率,并给自己信心。

3)重视基础。很多同学通过培训班入门,培训班重视实操技能不错,但是因为课程时间很紧并没有足够精力投入到计算机基础培养,而这些基础课程可以提升计算机水平天花板,对于面试也是很重要考察潜力的方向,所以建议多花时间。(上文提到的核心计算机课程可以参考)

如何进一步提升?

这个问题应该也是有计算机基础和经历的人会面对的,其实这个问题很广泛,仁者见仁,本人仅从工作几年的角度看提升这个问题。

1)如何定义能力?
很多人都会有体会,好像什么都想学一点,想试试怎么用,但大多也就停留在使用。

作为软件工程师(尤其大数据领域),能力大体分三层:

  • 第一,要会用。通过阅读API文档能达到应用系统的能力。
  • 第二,要能改。能阅读并对优秀框架有二次开发能力,例如大数据领域的Hadoop、Spark、Flink、Hbase和Hive,机器学习领域的tensoflow等,很多公司使用大数据框架不是简单的安装部署,还要结合公司内部场景进行定制化改造及优化。
  • 第三,要能造。更高水平就是软件设计,可以理解为造轮子。造轮子不是闭门造车,是经历过大量软件系统,阅读过大量文献基础之上,结合新技术、新思想和当前场景情况下的创造。这方面工作在大公司比较多,能有更多机会参与造轮子,比较牛的个人也可以独自创造。

当然以上更多是技术能力,其实这里没提到的其他能力也很重要,如团队沟通能力、组织能力和判断能力等。

2)如何提升?
这里涉及知识深度和广度。建议不要面面俱到什么都会一点,这样没有太大竞争力(或不可替代性),因为什么都会一点只能解决很浅层问题,面临稍微复杂场景就无计可施了,而且这也不能体现个人研究能力。

所以建议选择一个方向深入学习,其他方向可以有选择性的学习了解。事实上如果能对一个方向深入理解,其他方向自然而然就会了,计算机的本质都是相通的。例如学习Spark,当对SQL模块、内存管理、通信、调度能有深入研究,就会发现其他分布式系统都很类似,甚至用的底层技术都一样。个人曾在面试中跟知乎的总监面试官聊发展,那位面试官结合自己经历聊到,当对一个领域足够深入,再去看其他领域就没那么难,因为技术本质都是共通的。

至于具体提升方法,每个人路径不同,这里并没有固定提升能力解法。多学习、多尝试和多总结应该对大多数人有效。

最后聊聊面试考察什么?

面试其实非常广泛,不同公司,不同团队,不同面试官面试风格和题目都不同,很多人直接问我面试题,这其实太取巧,往往对面试没效果。

招聘,主要看三方面,技能、潜能和人品。

  • 技能
    技能看是否匹配,如果经验和这个工作要求匹配是最好的,如果不匹配,那也没关系,有相关技能也可以,如果连相关技能都没有就一定不考虑了吗,不一定,看潜力。
  • 潜能
    个人能力如果算100分,对大多数个体,技能占比30%,潜能占70%,潜能大随着时间增长对技能提升幅度会更大。

若候选人技能不匹配,如果学习能力、基础、愿意钻研,长期看技能会更大,这也是为什么仍成为最终选择的理由,这是为长期买单,即便短期产出不高,但长期能给团队带来更大贡献。

  • 人品
    这是原则,一般不会作为招聘候选人的理由,但却很可能成为拒绝的底线,所以建议面试本着真诚的原则,简历上如实展示个人能力。

以上,希望对看到此文的朋友能有帮助,本人也在从菜鸟奔向老鸟的路上,一起勉励!

你可能感兴趣的:(小白转行大数据的思考)