新时代的趋势
大约14年以前,Clive Humby数据科学家就提出:“数据是新的石油”。现阶段许多对数据的狂热爱好者和企业对数据的渴望越来越强烈。然而,数据如果不使用起来本身是无价值的,需要数据从业者从数据中挖掘出他的价值。
近些年不管是何种体量的公司对数据的运用都高度重视,现在就连传统企业银行、政府部门都已经开始各处挖数据相关的人才。那为什么大数据能够如此广泛的被使用?笔者认为可从以下几个方面来说明:
- 数据处理工具:现在数据处理的工具越来越成熟,各企业入门使用大数据等相关能力的门槛越来越低。由于云计算的普及,也降低了相关工具的运营费用。
- 算力越来越强大:google cloud在云计算领域提出的3架马车,为离线计算提供了强大的理论支撑,使得现有机器能够并发处理大批量的数据。同时实时计算的逐步普及,也给驱动了更多的公司从实时采集的数据中挖掘价值。
- 算法方面:伴随着深度学习、机器学习等相关算法的理论研究越来越完善,算力的强大也为算法的可实际使用成为可能。近些年各种算法的开源的包越来越多,也降低了大家使用算法的门槛。对于大多数企业来说使用开源的算法包就能够满足常规的挖掘要求,这也促使了数据被广泛使用,也是引起近些年来算法就业岗位火热的原因之一。
在此大背景下面,那作为一名数据的从业者来说,未来的机遇是什么?今后的发展趋势将是什么样的?应该如何选择今后的职业生涯?需要准备什么样的技能才能够适应时代的潮流,不被淘汰?现在主要的趋势有以下两种:
- 伴随着大数据在电商、金融、物流、医疗、文娱等行业的广泛应用,现在各个行业对数据人才的缺口依旧比较大。有许多毕业生加入数据这个行业和其他岗位的从业者转入这个行业。
- 对于刚入行不久的从业者来,进入数据这个世界后,发现每天都是重复性的工作,数据岗也没有想象的那么高大上。就会慢慢转入数据pd、下游的数据分析、算法相关的工作。
引起上面两种截然不同的现象主要还是前文所提的数据链路上相关技术的成熟,入门各行业的门槛相对来说越来越低,这也是导致人才在各个岗位之间相互流动的原因之一。为了能够更好的理解数据相关从业岗位的差异,我们先来说一下一个通用的数据处理流程。
数据岗位
通用的数据处理流程如上图所示,其中主要包含业务系统、数据采集、数据处理、数据应用(数据分析、数据挖掘等)。同时为了支撑这这套流程需要有相关的数据采集、加载、和处理平台,这就需要有大数据平台相关的产品经理、大数据平台的开发,这些工作岗位都需具备数据思维。接下来详细分析各主要岗位的职责:
- 数据架构师(Data architect):是数据工程师、数据科学团队的一部分,主要负责数据架构的设计和搭建,具有丰富的数据处理经验;
- 数据工程师(Data engineer\ETL developer):负责数据接口、数据加工的工程师;
- 数据分析师(Data analyst\Business intelligence):团队中负责设计对应的数据模型,用于分析数据获取商业上的价值;
- 数据库or数据仓库开发工程师(Database/Warehouse developer):主要负责业务系统数据库、数据仓库的设计、性能的优化;
- 数据科学家(Data scientists):采用机器学习、深度学习等算法相关的手段,挖掘数据用隐藏的价值;
必备技能
现在随着相关技术的不断成熟,各岗位之间的差异越来越少,相互之间的工作内容都有渗透。在这个大的环境下,组织或者这个行业对于数据从业人员的要求是什么?为了能够更好的适应未来,最近在不断的思考自己应该从哪些方面提升自己?进过这段时间的思考,我觉得作为一名技术人员应该具备如下三个方面的能力。
第一:对某一块业务非常了解,熟悉相关的行业术语,行业内通用的处理方法。如:金融行业是如何做记账、清算、会计等。深入了解某一块业务,是在一个行业内的立身之本。这对于做数据的同学来说尤其重要,只有对业务非常的了解之后才能够建立更贴近业务的模型,发现数据中蕴藏的价值。
第二:具有良好的项目管理、组织间的协同能力,此部分需要在日常的工作中不断的思考和总结,自己在哪些方面做得不足、哪些方面是做的比较好的地方。如:一个项目在管理的过程中间遇到了项目延期的风险,后期结束的时候就需要深入分析,具体是什么因素引起了该风险,下次需要如何规避,今后是否可以从流程上规避类似问题的发生。
第三:在某一个技术领域进行深耕,同时需要涉猎该领域的周边知识。如做数据挖掘的同学需要对数据处理、数据建模、后端处理有一些了解。这样与上下游就能够的沟通,在某些机会降临的时候能够抓住,机会只会留个有准备的人。
在大数据这个领域,我们需要准备什么样的技术栈?现在在软件开发经常被提到全栈工程师——工程师具备从服务器到用户端全链路的处理能力。今天我们在数据领域也提出一个全栈大数据工程师——数据工程需要具备从数据采集到最终数据展示的全链路处理能力,如:数据开发工程师需要具备数据开发、数据管理、数据分析与挖局、数据可视化展示的能力。在成为一个全栈大数据处理工程师之前,我个人觉得应该在一个方面先深入耕耘,然后在逐步扩展。
全栈数据工程技术栈
那作为一名数据技术人员,我们应该具备哪些方面的技术能力?在此我就根据个人的经验列举出对应的技术栈: