大数据工程师如何实现技术成长?

2017-10-19阅读 5009
大家好,我是Talkingdata的闫志涛,很高兴能参加100offer举办的知乎Live的分享。

本次 Live 主要包括以下内容

  1. 在 Talking Data 这样的大数据服务公司,大数据工程师在做什么?

  2. 目前所面临的技术挑战及项目实例

3.我们是如何帮助大数据工程师实现技术成长?

  1. 案例:三年时间从 Java 工程师转型成为大数据科学家

  2. 结合自身经验谈谈如何成为优秀的大数据工程师

  3. 我们需要的人才具备何种素质以及如何进行面试?

一、在 Talking Data 这样的大数据服务公司,大数据工程师在做什么?

我们公司的技术团队主要组成来自于两部分,一部分是来自传统的软件公司,如oracle,微软,IBM。另外一部分人骨干力量来自新型的互联网公司,如阿里,腾讯,百度。不像很多新兴的创业公司员工都是来自纯粹的互联网公司。

具体我们每天做的工作包括什么呢?这张图是我们整理出来的一般的互联网的大数据公司进行的大数据相关的工作。

第一阶段,数据的采集包括如何把来自不同源头的数据有效的采集出来。我们数据采集大部分来自于移动终端,也就是智能移动设备。有很多不同的挑战,首先移动设备是非常散碎的,来自不同的机型,不同的厂家,不同的平台。如何有效的在不同的平台,将数据采集过来,而且防止数据采集过程中出现大的电池损耗和其他问题都有很多技术挑战,而我们公司的的SDK的采集数据的工程师一直在跟随着苹果安卓标准的发展,实时的更新技术,将数据稳定高效的采集回来。

第二阶段,再把采集的数据高效的发回到云平台也有很多挑战,对于目前云平台,日活能够覆盖的设备,超过一个亿,接近两个亿。每日采集的数据超过20g,高效的把数据发回来,很多需要压缩,而且需要保证数据质量,如果设备断电,网络不好,都是挑战。应对这些挑战,我们做了很多工作,比如数据采集,我们接受数据并发到SDK,这是是分布式数据采集体系,这种架构首先是在云端,或者比方说IWS其他的云数据采集提供箱部署我们的数据采集节点,进行高效压缩,然后进行合包,利用高效压缩办法,然后再把它通过长链接发送到SDK,它有一份后置的数据收集节点,然后解压缩拆包 ,整个过程,我们作出了很多的努力和改进,预计下半年,年底的时候,开源成一个好的app版本,能够让小数据采集的公司使用到它。

第三阶段,数据收回到公司SDK之后,数据有几个用途,支持数据的业务线,因为公司是提供开发者几条线上业务,包含移动应用分析,移动追踪,品牌广告监测和其他线上业务线,对于不同的业务线,处理的方式也不相同,不同的业务线有不同的业务需求,还有很多需要去应对。

举一个例子,我们广告追踪部门一直半夜加班去应对暑假推广的招生,在年初的时候,每天接受的移动互联网的点击量大概是在一亿多的时候,不到两个亿的水平,当时我们技术团队就商量为下一个上量做准备,我们在当时一亿多的时候遇到了性能的瓶颈,我们当时就决定对于平台架构做一个调整。这里有复杂的实时归因逻辑,首先它是一个线上系统,其次,它是一个实时的业务系统。它在处理年初是一亿多点击,几千万的设备安装激活时,把它完成整个归因逻辑,当时已经是挑战了。因为SDC机器不能够很快的购买上架,当时我们经常会遇到资源的瓶颈,于是我们决定进行架构调整,把部分逻辑移到云上。当时我们按照往常的业务的理解,设计最多到十亿就差不多了,我们的计划是,我们2Q调完,3Q初到时候验证测试,3Q的时候是整个系统的切换,整个归因做一个基于现在的框架的完整的重构。结果是,5月末的时候,点击量直逼十亿,从一亿到十亿是量的增长,如果SDC架构应对的话,还需要很多优化的工作,而新的架构正在开发,还没有完成验证,如何保证在老的架构能够支持量级,才能够让新的量级平滑的支持增量,是一个很大的挑战。于是团队开始加班处理这些事情,出乎意料的是,6月份到了10亿,到昨天为止(8月份),整个系统的点击量直逼20亿,估计今天就能超过20亿,这就相当于在一个月的时间里,我们完成了整个系统从sdc广告归因的引擎切换到云端,整个做了一个重构。在重构过程中,需要在有限的时间内保证付费用户不能出现很严重的问题,虽然出现小的挫折,但是本周初的时候,整个归因切换到了云上,这对于我们来说,新的系统架构弹性扩容很好,对于后边的增量奠定了较好的基础。

第四阶段,另外的几个线上分析平台,每天应对的是超过1亿设备的各种分析,比如要分析每一款应用的机型、区域的分布等,实际上是一个在大数据上做在线分析,一般的传统在线分析系统是离线延迟,现在是线上业务要求很快出现结果,我们要每天在上亿的数据活跃设备中做线上的实时的多维度的交叉分析。我们做了很多工作,我们是国内最早的使用卫图技术,实现多维交叉,我们将国外开源的大数据引擎进行升级改造,将我们的原子立方体嵌入到里边,做成一个新的实时多维度的大数据平台,对于这些挑战做了很多的创新。另外对于收集到的数据我们还要把它当作数据资产保存起来,在大数据时间,移动互现网的数据能够代表一个人的行为,我们希望通过这些数据更好的分析一个人的行为。那我们要在每天几十个t的增量的数据上,总量在几个p的数据上,能够快速的实现整个设备的数据加工, 比如说打标签,数据提取工作。这些工作驱使我们不得不新的大数据技术去做这些事情,我们是国内最早采用spart技术最早的公司之一,2014年年终在国内开始出现,我们是在2013年就开始采用了,最早在2012年技术刚出来的时候就已经关注这个技术了。

二、目前所面临的技术挑战及项目实例

1.开发语言

提到大数据,我们知道有数据工程师和数据科学家,都必不可少的用到一些开发语言。我们公司第一个最常用的语言就是java,大家常用的语言就来自于java,像我是在传统软件公司工作很多年,那时候软件公司都来源于企业市场,基础就是java,所以公司核心的开发语言就是java。

但是对于大数据处理来讲,因为大家知道Spark,如果在Spark上开发大数据的处理逻辑的话,要实现大数据的相关工程,虽然你可以用java,python,但是真正工程化效果最好的就是scala,作为一种函数编程语言来讲,scala本身的生命里就来源于他对于数据更友好。java语言是面向对象的语言,其实业务逻辑更合适。面向数据的话,scalen本身的特点以及特性都更加适合做大数据的处理,所以scala也是我们公司比较重要的语言。

另外就是objective-c,因为我们要提供到开发者SDK,SDK主要包括两个大的主要平台,包括IOS和安卓,经典的安卓都是用的java开发,除非新的语言像python语言。IOS的开发语言必然要使用到Objective-c,另外,为什么大家会看到c++?其实,大数据刚出来的时候,我们似乎找不到c++的用武之地,因为我们知道的大数据平台貌似都是运行在java虚拟机上的。但是,如果进一步使用大数据技术,就会面临很多的问题。比方说,我们每天处理好的数据,我们希望能够把它变成数据服务的形式提供出去,这就需要一个比较好的数据库去存储。我们传统的数据库,比如说,MySQL,ArangoDB都比较适合链接交易这种场景,但是如果有数十亿条数据,主要是为了提供数据服务,就是说可能有一个键key,要把它对应的value查出来,这时候,传统的数据库在应对这种大规模数据的时候就有很多的短处。实际上,我们就在尝试一些新型的用C++实现的一些数据库,因为对于任何一个互联网公司来讲,大家都是使用开源,首先要驾驭这个开源,我们想要驾驭它,一定要了解这个语言。我们希望遇到问题的时候能够自己解决。

Python 是目前对于数据科学非常火热的一门语言。对于我们数据科学团队来讲,大部分情况是用一些抽出来的数据做模型训练,python因为有许多的算法库,也更容易掌握,这样对于他们来讲,去做一些模型训练就会更快。另外,我们的技术运营团队,他们也会用python 去做一些技术运营的工具。另外一个十分典型的就是JavaScript,因为任何一个公司都要有跟用户交互的能力,比如说前端,JavaScript也就是我们前端团队非常关键的开发语言。

还有像GO和R,我们公司的分布式数据收集是用GO语言来写的,技术运营团队的运营支撑系统也会用GO语言来写。因为GO语言作为新的语言,有许多好的特性去支撑快速的开发,对于我们这些需要较高的吞吐力而业务逻辑能力不是很复杂的场景来讲,GO是一个比较好的语言。R语言是一个数据科学的语言。

2.开源技术

(1)大数据技术

说到开源技术,如果大家想进入到大数据领域,这也可能是大家需要了解和掌握的,我们用到的开源技术有大数据相关的Hadoop,这个我们已经用了超过10年的时间了,基本上现在Hadoop变成了大数据的标配,对于我们公司来讲,我们利用了Hadoop两个核心的能力,一个是分布式的文件系统,另外一个就是资源调动。Spark是我们公司13年就开始尝试,是目前做大数据处理,偏离线处理的核心的架构都是用的Spark。

Druid可能很多同学不知道,但是在国内的工业界,尤其是互联网、大数据圈内非常火热的大数据平台。它是美国的华人主导开发的一个平台,它是解决如何在大数据场景下更好的做多维分析的。我们实际上是把它做了一部分的改造,支撑线上的分析业务。我们的移动分析后的分析引擎都是基于Druid做的。

Flink是一个流式的框架,因为随着大数据的价值被逐渐的证明,大家希望大数据的处理速度能够越来越快,希望能够实时的产生一些大数据的处理结果,甚至做实时的预测,这时候,Hadoop和Spark都有一些短处,比如说,Hadoop完全不支持实时,而Spark在2.0之前,虽然支持实时,但是实时是一个vp的概念,比如,纯粹的流式处理,Spark原来是不支持的,但是2.0之后,开始引入小结构化流式。但是目前来讲,在2.2之后,Spark结构化流式虽然现在比原来要稳定许多,但是还不能成熟的生产。那如何去做比较成熟的流式处理的话,现在我们尝试的是Flink,这是德国的,是一个大学团队出来开发出的项目,目前来讲在实时流式处理上的功能和应用性的话是最好的。

Strom是出来时间比较久的流式框架,它对于某些数据量不是特别大,逻辑性不是很复杂,只做统计性计算还是不错的。

(2)数据可视化

前面提到大数据的一些东西,后面还有数据可视化,因为对于大数据来讲,只对于数据进行加工,不以一定方式展现出来,其实还是存在很多问题的。对于我们公司来讲,最初我们对于数据可视化并不是很重视,随着业务的发展,我们发现数据可视化越来越重要。我们可以看到我们用到的一些技术架构,iview是我们公司自己基于公司需求开发出来的在vue上的一个可见库,node.js我们公司大前端,我们现在前端也在往大前端走,它们在做一些数据集合和逻辑分装的时候,也适用node.js作为中间层。

(3)技术运营

我们技术运营团队也走的比较靠前,我们是在国内很早用Docker来实现容器管理的公司之一。现在大数据平台是我们后面做数据处理基本上是用在Docker上做隔离。

(4)数据存储

任何一个公司做业务,都免不了数据库,MySQL是我们必用的,我们也会用HBase去做一些数据量比较大的服务,现在我们决定用scyllaDB把HBase去掉,主要是HBase一些机器的问题。其他像Redis大家可能都知道,如果做缓存,Redis是一个不二的选择,MongoDB现在我们公司用的越来越少,主要是它有很多的缺陷。但是如果自己想快速担一个项目,就是一个不错选择,他非常灵活,对于应对数据变化上非常好的数据库,但是在一个生产环境里,数据规模比较大的情况下,虽然新的版本越来越好,但是会有很多不稳定的因素。Ceph是一个开源的对象存储,我们也在尝试把这个引入到环节当中。ArangoDB是一个图数据库,基于新的互联网和大数据时代,图关系越来越重要,图数据库也越来越重要了。

3.数据科学

前面是数据工程相关的东西,有数据必然要有数据科学家的介入,我们公司从人员组成上来讲,我们把公司分成了几块,技术上有数据科学家团队和数据工程师团队。我们所有工程师都划为工程师团队,对数据价值进行探索,也是数据科学家的工作。对于我们来讲,有使用一些大规模机器学习的框架,我们也会有自己的大规模机器学习的框架Fregata,我们希望用尽量少的代价在大规模数据上,将模型给训练出来。毕竟对于目前来讲,经常需要面对的是几十亿设备或者几千万维度,对于更好的进行模型的训练是很大的挑战。对于我们来讲,我们会做一些数据开源的技术框架,保证大规模数据能够正常的往下运转。

三、我们是如何帮助大数据工程师实现技术成长?

前面讲了一些公司的技术和技术站,我相信对于大家学习能够有很大的帮助。那下面讲我们面临这些挑战,如何更好的去培养人才呢?

下面跟大家讲一讲我们公司在工程师发展的一些尝试,因为对于现在这种企业来讲,都在面临一些挑战,因为传统的一些管理方式和培养方式都未必适合现在的环境,我们公司从去年开始就发现公司的培养方式都需要一些调整,管理层都在考虑如何去做。每一个新员工进来的时候,我也会跟他去聊,看如何在新的环境里边更好的成长。我想跟大家讲一讲,我们公司如何去做的。

1.真实的大数据业务场景-在解决问题中成长

第一个需要知识业务场景,读再多的书,如果不能实际操练,东西都不会变成自己的。对于目前我们公司来讲,工程师最快速的成长,是能够接触真实的大数据业务场景,比如面临大量的数据,解决大量的问题,如果出现延迟的问题,该怎么去解决,这时候很多情况书上没有,需要自己去想,或者自己去翻源代码。我认为真实的业务场景是促进自己成长最真实的东西。

2.开放、平等、分享的企业文化-在工作中相互学习和挑战

公司要创造让开放平等交流的场景,有时候交流讨论是让自己把思路问题理清晰的一个途径,公司经常会有一些员工自己组织的分享,任何一个架构都会有一些架构评审,大家会比较开放的讨论问题,经常会有碰撞。我经常会说不要怕别人挑战你,挑战会肾上腺素分泌,这样大家会更佳聪明,这时候有时候想不到的方案就会想出来。所以我提倡大家技术上相互挑战。不要一个人局限在自己的空间里。

3.员工自己组织的职业委员会

另外公司也会尝试一些新的途径,任何一个公司都会有一些职级体系,我们最初的创业公司没有这些体系,随着后来规模越来越大,一种办法是像一些大公司学习,比如说阿里,腾讯,但是CEO觉得新的时代是一个社群的时代,所以在考虑有没有更好的办法能把这个事情做的更好。我相信用工程师委员会来做这个事情是比较少的,大部分的公司都不是这么做的,

4.新员工导师计划-让新人更容易融入公司

新员工导师计划,任何一个新员工进来都会有一个导师,会引导你如何更好的融入公司。

5.早餐会、午餐会-让沟通更加顺畅

如何更好的沟通。刚开始公司比较小的时候,沟通是比较有效的,但是随着公司规模越来越大,沟通就变成很大的问题,有部门,有级别,想法很难全面了解,现在公司就会组织一些新的形式,比如说早餐会和午餐会。早餐会公司管理层每天要约几个员工进行沟通了解,还有新老员工午餐会,这样能够让整个公司的沟通更佳顺畅。同时,我们也在做老崔直通车,如果不方便面对面沟通的话,就会直接进行线上的交流,可以直接跟工程师发东西,直接反馈处理。

6.请进来、走出去-行业交流开拓眼界

我们对于员工的成长,会进行行业的交流,交流时双向的,我们和清华北大国外的硅谷都有交流,会邀请一些人物来公司进行讲座,也会让员工出去讲,讲自己做了哪些事情,或者办一些沙龙,让大家能有更多的机会去交流,通过行业的交流扩充大家的眼界。

7.黑客送、创新项目-追求极致、锐意创新

当然,像一些黑客松,包括一些创新项目,相信很多公司都会有类似的东西,目的是让员工除了日常的工作,还有机会去碰撞,能把一些想法变成现实,能从事的项目做一些贡献,自己也会有一些兴趣,去提高自己,我们在不断的做尝试。因为从员工处得到的建议往往更有意义也更容易实现,因此,我们在努力听取这些建议,以把这些想法变成现实。

四、案例:三年时间从 Java 工程师转型成为大数据科学家

下面,我跟大家讲一个比较现实的例子。这是一个比较有代表性的一个成长的例子。

这个员工是2014年4月份入职的,他进来的时候,我负责我们平台后台的数据建设,我想把原来的平台转化为spark。我先讲一下他的背景,他是大专毕业的,这个工程师来之前,并不懂spark,他来的时候,我看重了一点,他上一家是一个电商公司,做推荐相关的工作,当时能够把推荐搞得清楚的很少,当时面试的时候,他就把整个做的一套都能搞得比较清晰,他不爱说话,但是讲到技术点都讲的比较透,给他offer的时候,我跟他说你可能需要用spark,你最好在入职前学习一些,入职之后,我就发现,这个人的工作精神和工作态度远远出乎的想象。入职之后,我第一周就问他问他看了没有,他说看了,后来我就让他接手相关的工作,后来他很快的把东西都完成了。他除了做了这些事情之外,还做了另外一些事情,他发现当时的一些东西很不成熟,不好用,这个工程师就自己花时间晚上加班自己写了一个新的调度的引擎,他自己喜欢去钻研,他一步步改造数据平台,去优化,1年的时间,他和另外一个工程师,把支撑公司数据使用的平台就搭建起来了,而且他整个code做的非常规整,产出也很高。16年,公司事情比较多,他一个人承担的几个人的责任,后来他主动跟我交流说,他做大数据比较久了,能不能尝试一下做数据科学家,承担一些算法相关的工作。后来,到16年,他就到数据科学做事情,他看了很多相关的书,并且读了很多的课程,到团队里面,不是科班出身,但是最优秀的员工之一。到今年年初的时候,应该4-5月份找到我说能不能做一些和业务相关的事情,正好我负责公司BO技术团队后来我就让他就参与到BO里边,也是核心成员,我告诉他说,一个好的数据科学家是做不仅仅应该是命题作文,还应该去做非命题作文,先去定义问题,再去解决问题。后来他现在在团队里就负责定义问题。这是在我们公司比较典型的,从一个背景不是特别好的人到现在非常优秀的数据科学家的成长轨迹,最核心的就是做事情的态度,去做去想,在座各位,如果像发展的话,不在于你现在会什么,而在于你想成为什么样的人。

五、结合自身经验谈谈如何成为优秀的大数据工程师

我自己工作了接近20年的时间,下面为讲一讲完工作以来成长的经历,希望对大家有写帮助。因为20年期间,计算机技术发展很快,97年的时候,企业信息化都没有很好的完成,到现在互联网和大数据时代,我自己的成长可能也对大家有一些帮助。

1.兴趣是做好一切事情的原动力

首先,我自己大学不是学计算机的,我大学时北大物理系,我发现自己对物理不感兴趣,一方面,我觉得物理对于我来讲周期太长了,一辈子可能都没有成就,我很难承受一辈子都没有任何成就。另外一方面,物理后面有些挑战。而我自己比较喜欢自己去做创新型的一些事情。我当时的兴趣点一个是生物,另外一个是计算机。而生物跨专业需要学的东西比较多,而计算机的话,大一就有相关的课程,都有相关的基础。后来我就把自己的业余时间都投给了计算机。当时我是我们专业去计算机中心最多的学生。后来大三的时候,在决定要不要读研究生,读什么专业研究生,后来,我就我就决定先考计算机研究生,考完研找计算机相关的工作。

2.从业接近20年

还不错的是,我考上了计算机相关的研究生,我也找到了一个计算机相关的工作,当时思考要读研还是要工作,后来决定还是先读研,因为大学里边时自学的,可能专业的学习下比较好,当时在华北计算技术研究所里读的研究生,可以研究生毕业之后直接留下来,但是我比较喜欢企业,研究生毕业后直接进了方正,在研究所里面的时候一直做C++,到方正的时候就开始接触项目,因为那时候时99年,开始有一些互联网化的项目,开始接触Java。在方正做了一年多。

人一般在27-28岁的时候比较迷茫,这时候一定要定下心来,我觉得我是在第三家公司的时候定下心来的,我当时在做技术售后,公司当时是在全球最领先的中间公司,我当时是看源代码,帮客户解决最困难的问题。当时在那边很长时间,主要是因为帮客户解决问题,比较有成就感。当时我是中国区唯一处于这种角色的人,整个中国区,所有复杂的问题,别人搞不定的事情都会来找我。第一个是比较爽,所有高压类的,别人搞不定的都要自己解决,只要解决了问题,反馈就很好,自己也有成就感。那几年基本上所有的时间都在帮别人解决问题,很好的锻炼了自己解决问题的能力,而且这些问题都不是书本上的,很多都要自己去思考怎么解决,并且要不断的学习新的知识。

因为我在那个公司建立了很好的口碑,大家都认识我,人脉也就建立起来了,现在公司的CEO当时经常会请问我一些问题,虽然我们两个不是一个TEAM,但是都互相信任起来了,后来他创业的时候也就拉我进来了。所以我建议大家要有责任心,要不设任何边界,建立相互信任的关系,很多时候不要想短期回报和长期回报,这是对于新进入职场人的很重要的一点。再有要不断的持续学习,我开始在不断的帮别人解决问题,后来大约10年的时候觉得自己解决问题的能力已经差不多了,我可能重新需要走研发这条路,于是,我就在10年去EBM做一些架构师的美国的项目,当时虽然是角色的转换,但是没有什么挑战,是我重新熟悉研发过程的一个阶段,当时对于我压力不是特别大,当时就在想下一个职业的起点是什么,下一份工作要做什么。

大约在11年的时候,我看到智能手机开始发微博,还能带位置,当时对于我有很大的触动,因为我本身是一个科幻主义,我本身认为世界就应该按照科幻片一样往前发展,往前走,而通过发微博显示位置,让我觉得移动互联网在未来能够发挥很大的变化,它的数据和个人十分相关,下面我想做的事情和这个有关系,这样对于个人和社会都更有意义,所以这是我当时想去做的事情。

11年创业公司来找我,我就决定去了,当时我压根不懂大数据,当时我在EBM做的东西虽然和数据有一定关系,但是都是小数据,虽然我有些东西不懂,但是我觉得不懂永远不是问题,因为这么多年的积累,我有了学习的方法,到了新的环境去学就是了,所以去了之后才是真正接触大数据,其实不是国内最早开始接触大数据的,但是因为有积累,所以知道怎么去掌握一个东西。去了之后,其实挑战不在于新的技术,而是新的工作方式,在原来公司,工作讲究流程,而在新的小公司,工作讲究快速高效,当时我的思路还没有完全转换。有个有意思的事情,当时我们决定做一个广告追踪的产品,CEO问我多长时间能够做出来,然后我刚去的第一周,CEO和产品的人问我做广告追踪的产品最多能用多久,我说2个月吧,CEO说最多3周,后来我就决定3周,2个人加班加点,用了3周的时间,把系统搭建出来,是产品最初的原型,所以人的潜力是无限的,这是外企进入新型的创业公司的转变。

从外企到创业公司,对于我来讲,最大的挑战是角色和节奏的转换。技术学习不是特别大的问题,只要积累了足够多,技术迁移能力就会逐渐具备了。新的技术都是新瓶装旧酒,只要基础掌握的比较劳,看到新的技术理解它的原理就行了,如果有兴趣的东西,可以把他的文档看一遍,了解一下,有时候我还会写一下自己的微信公众号,写的过程也是梳理清楚的过程,如果我们团队要引用这个技术,我也比较有信心,因为我知道它的体系是怎样的,只要做一些深入的调研就可以了。

3.成长经验

前面讲了一些自己的成长经验,总的来说就是,要有担当和责任心,有良好的工作习惯,做事情的态度要不设边界,不要想着自己吃不吃亏,做得多提高的是自己的能力,同时如果得到别人的认可,路就会越走越宽,同时做技术要深挖,年轻的时候不要老想着贪多,因为很多技术基本原理是一样的,把一个技术吃透,做技术迁移能力就会很容易,就像挖井一样,井挖的深浅是不一样的。

六、我们需要的人才具备何种素质以及如何进行面试?

1.优秀的专业素质

对于需要的人才,每个公司都差不多,有优秀的专业能力,也就是说编码、工程、架构、业务理解能力。对于我们公司来讲还有一个数据思维,因为我们是数据公司,数据思维是说在任何情况下需要考虑是不是需要数据去支撑他,需要收集哪些数据等。如果没有数据思维的话,仅仅靠逻辑不行的。

2.沟通表达能力

另外一个就是沟通表达能力,这对于任何职位来讲,沟通表达能力都是有要求的,同样,作为工程师来讲,文档撰写也是很重要的。

3.责任心和担当

另外就是要有责任心和担当

4.创新思维

最后就是要有创新。任何公司都需要创新,现在公司竞争不是价格战的时代,而是有什么创新的东西能满足客户的需求,能够让客户用我的东西,能够给客户带来价值,这是十分核心的业务能力。

5.面试流程

基本上我们的面试流程和大多数公司差不多,先是筛选简历,HR和你约下电话面试,如果电话面试不合适就不用现场面试了,如果电话面试合适,就会有3轮的专业考核,3个人包括有招聘的leader,资深工程师和跨团队的工程师,不同的方向去考核。3个人给出不同的评价之后,在决定要不要通过下一次的面试,也就是我去面试候选人,如果能通过的话就和HR去沟通,看看给不给offer。相信大部分公司面试的流程都差不多。

今天分享的内容差不多就是这些,下面是问答环节。

Q&A

Q1.想问一个问题。对于bat这种量级的公司,数据量很大,大数据技术很需要。但是,bat这种量级的公司只是少数,大数据对于普通公司有什么用处?

A1.这里其实又一个误区,就是现在这个时代不一定是BAT才有大量的数据,原来的时代都是业务量决定数据量,现在互联网时代,很多时候都是数据驱动,不一定普通的公司就没有多少的数据。现在很多普通公司也在搜集更多的数据,因为业务产生的数据不足以做更多的事情。比如说银行之前都是业务数据做分析,现在也在搜集大量移动端的数据,银行也是大数据公司,不是BAT,也有很多数据,所以现在不一定BAT才有大量的数据。

Q2.请问你们的团队中,数据工程师和数据科学家的比例是多少吗?

A2.其实这两个职位都不是特别好招聘,目前来讲,我们数据相关的都归到数据工程师里边了,对于我们讲数据工程师的数量就比较多了,数据工程师和数据科学家大概是6:1左右了。人才招聘和培养的话,一方面,我们自己夏令营在培养,我们自己也在招聘,另外就是有些数据工程师也会转变为数据科学家。

Q3.您好,我目前是一名爬虫工程师,职业规划是向大数据工程师过渡,有没有什么不错的建议,谢谢啦!

A3.爬虫工程师不代表不是大数据工程师,其实已经属于数据工程师的范畴了,大数据工程师是一个比较广的概念。只不过你想去更宽的发展大数据工程师的技能。数据爬取是一个过程,对于很多数据科学家和工程师来讲,爬取数据是第一步,这是积累数据的过程,有了数据之后就可以开始取处理一些数据,这就需要看你需要做什么事情了,爬取数据之后可以去做一些技术的统计,这是数据工程师的范畴,比如可以根据大众点评的数据往大数据工程师甚至数据科学家方向去转,比如可以根据大众点评做不同类型的餐饮的分布,这是典型数据工程师也做的事情,也可以根据大众点评评分做一些预测,这是数据科学家要做的事情。

Q4.自学大数据有什么书籍可以推荐呢?

A4.我觉得自学不局限于书籍,我一般是看官网,看一些技术等网站,如果要学一些课程的话,可以看一些公开课,国内网易公开课,国外的学校的公开课等,这些都是有人去讲,更有效率,另外还有一些作业可以巩固锻炼,这些大部分都是免费的课程,可以有一些提高。

Q5.大数据工程师和大数据科学家在思考层面上有什么区别?面向人类的发展,当前哪种角色的意义更大?

A5.我自己也经常思考这个问题,大数据工程师是面临确定性的逻辑问题,一般情况下是问题已经有了,就通过逻辑编码解决问题,逻辑不错,结果永远是确定性的,大数据也一样,比如说要去做统计,只要逻辑不变,每次出来的结果是一样的 ,这是数据工程师的做的事情。对于数据科学家来讲,是数据里面找规律,是面临一个问题,在数据中找到问题的答案,基本上答案是偏向于预测性质的,怎么去做验证呢,可能拿历史上的数据做验证,形成模型,未来做结果验证,如果验证不好的话,再做迭代。所以数据科学家偏向于一种科学的思维,是求知迭代,使结果变的更好的过程。

Q6.请问阎老师,像Talkingdata这样的大数据服务公司需要的数据工程师,有什么特殊的要求?和一般的互联网公司数据部门区别在哪里?谢谢!

A6.实际上我个人觉得没有什么特别的要求,一般情况下,你列在简历里边的东西,你要吃的比较透。我们公司面试官有一个特点就是,他会抓着一点问你细节,只要你的细节吃透,你具体掌握的技能和我们现在技能是不是特别的匹配不是特别关键。还有一点是你的好奇心,你是不是对事情有好奇心,想把东西搞透,这样的话,一般发展都不会特别差,我们一般招人都喜欢是高潜力专家,新人潜力越高也好,或者是之前公司已经证明过自己的专家。

Q7.对系统工程师而言数学很重要吗?好的、无互联网公司经验的自学的系统工程师应聘者应该是什么样的?

A7.我一直觉得在计算机领域里边,数学很重要。大学数学学习的过程中没有觉得那么重要,但是后来工作中发现数学越来越重要。数据统计相关的东西和统计、概率论、线性代数有关系,现在我工作20年,在做事情的时候也会翻书本,所以说,学东西的时候,当时觉得没有用也要把他学好,以后可能用得着。

Q8.外行如何能成功转行到大数据工程师这个行业?

A8.因为我自己都是转型过来的,很多大数据工程师都是转型过来的,因为之前都没有这个行业,所以我觉得不在乎你之前学的是什么,你把你之前的技术吃的透,了解到扎实,你转型就越容易,不在于你的知识,你的技术,而在于你的掌握知识的方法体系,知其然知其所以然,转大数据都没有什么太大的问题。

Q9.那位典型例子的同学,吃透spark之后,除了转方向,还有哪些路径可以走?

A9.很多了,因为你是说从技术专家领域,spark仅仅是一个技术,掌握它是一门工具,做大数据相关的事情,如果要做大数据平台,spark不能完全解决的时候,还要有其他的更合适的技术,这就回到了大数据架构师的做法了,掌握一门技术仅仅是会用,掌握理念是解决问题做架构,大家说架构师很高大上,是因为架构师是把复杂问题解构成不同技术站能够完成的一个组合过程。如果不想转数据科学家,可以往架构师转,没有任何问题。

Q10.采集数据的时候,数据质量怎么保证?在各个场景变化的时候,比如应该传一个a值,传的一个b值或空。这种数据直接舍弃掉吗?怎么做数据治理?

A10.这个问题就比较专业了,我们公司经常会有数据质量的争论,一个是数据本身就有问题,这是质量问题,怎么容错,对于我们来讲,比方说某个字段是乱的,这时候只能抛弃掉。虽然大数据有个清洗掉过程,这是一个东西。另外一个就是数据场景问题,用错场景不能达到结果,如果用错场景,这未必就是数据质量问题。

你说的是典型的数据质量问题,第一个首先要发现质量问题,后续处理过程中,看看怎么清洗掉,反馈到前边,看在数据搜集过程中,能不能在搜集过程中就避免这些问题,形成一个闭环,数据质量如果不能形成环的话可能就不能做质量改进的,目前来讲,遇到这些问题,首先确认这些数据是错误的,对字段进行清洗,同时,反馈数据质量的提高过程,发现为什么数据收集过程中这些数据是错误的,收集的时候进行补错。

Q11.请问下 ScyllaDB 在talking data的应用场景是怎么样的,和其他大数生态系统如何结合的,遇到坑怎么办

A11.首先,它主要是解决在几十亿设备的情况下,查询它的标签属性,原来是用Hbase去做的,但是,它在数据量比较大的时候经常会出现问题,ScyllaDB 存储格式是C++写的,我们希望让它解决前者的问题,这样的话,如果稳定性不是大问题的话,我们会逐渐把它变成高性能数据服务的核心数据库。

Q12.我是一名准大学生,专业是数据科学与大数据技术。请问阁下,有什么入门书籍推荐,或者说说培养体系。

A12.大数据技术和数据科学,数据技术我都是看的网站,其他都不记得书的名字了,有一本书是周志明的机器学习的书籍。

Q13.老师,介绍一本spark源码的书吧

A13.我还是建议大家看spark源代码,国内我觉得没有写的特别好的书,我建议大家自己直接去看。

Q14.怎么才能做到数据变现?数据来驱动业务?

A14.这个问题很大,首先,要能够解决问题这是最核心的,我们公司也在不断尝试,几个领域有营销,大数据驱动营销,大数据能为营销提供一些价值已经被证明了,还有金融风控、人脸识别这些领域。我们线上产品也有包括用户的流失、付费预测,这些可以对客户产生价值,无论对数据变现还是驱动业务都能产生价值。

Q15.工业大数据是什么?现在有哪些公司在做这个

A15.这个很简单,在工业制造领域里每个环节都会产生数据,只不过原来不需要数据驱动,他们没有想到用数据驱动,现在有智能制造,现在工业领域里,大家期望达到升级,用数据驱动,达到制造环节和流程的优化,或者预测什么时候可能有问题,所以工业领域里就有很多传感器去收集这些数据,其实数据量也是很大的。由于我不是特别关注,所以很难说有哪些具体公司,但是我相信这是一个很大的领域。

Q16.可以给在校生选课一些建议吗?是应该学系统课还是学一些ML的课~

A16.我现在不是特别了解大学里边有哪些课程,因为我毕业已经20年了,但是我相信对于大学和研究生来讲,基础课程是最关键的,因为基础课是所有时候都能用得着的。技能型的课程,哪些课程让你动手,你就选择哪些课程,因为不动手很多技能型的课程看了就忘了,没多大意义,倒不如实习的时候看相关的课程,都来得及。边动手边看书,一方面锻炼了自己的自学能力,另外一方面,形成反馈,可能更佳有效。所以建议大家选让自己实践的一些技能课。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值