小白转行大数据的思考

背景

通过大数据面试经验总结这篇文章遇到很多朋友都开始考虑大数据这一行,可各有不同的困惑,例如:

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

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

  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%,潜能大随着时间增长对技能提升幅度会更大。

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

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

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

(完)

关注公众号我们可以更方便沟通交流:水木之椿

你可能感兴趣的:(杂记,转行,大数据,入门,新手)