我上一份工作是数据分析师,现在的工作是数据挖掘工程师,因此我可以以我自己的实际经验来回答这个问题。数据分析师和数据挖掘工程师,同属于数据领域的洞察者,但是两者的工作内容却有着不小的区别。对于一个数据分析师来说,最重要的并不是编程技能,而是逻辑分析能力、业务理解能力、报告展示能力等。
数据分析师:数据分析师使用的主要工具可以是编程,但并非必要;因为现在已经存在大量的强大、易用的数据分析工具,比如Excel、Tableau、SPSS、SAS等,即使你没有编程能力,仍然能胜任绝大多数的数据分析工作;但是相对于数据挖掘工程师,你还额外需要一些能力,比如数据可视化的能力、写数据报告的能力、在领导甚至许多人面前做报告、讲演的能力等;同时,由于现在互联网公司都在讲大数据,数据的存储基本上在各种大数据平台和数据库中,因此你有必要掌握Hive、HDFS、MySQL等的使用,SQL的熟练掌握是不可避免的。
数据分析师一般有两种,一种是面向业务的,主要对各业务线、产品经理、运营、各部门领导的需求提供支持,帮助他们分析业务、了解业务,发掘出业务中的问题并提供解决方案;另一种是偏宏观的分析,一般没有需求方,主要是自发地进行探索,主动找到公司业务中存在的问题,弄清公司发展的趋势,对于公司发展的方向做出指引。
数据挖掘工程师虽然说不会编程也不至于完全无法做数据挖掘工作,但是好的编程技能却会成为你工作中的得力助手;很多时候,数据挖掘工程师会为数据分析师提供一些支持性的工作,比如为他们搭建数据库、清洗数据、建立报表平台等;有些时候数据分析师也会直接向数据挖掘工程师提出需求,有些数据的存储方式、格式超出了数据分析师的技能覆盖范围,这时就需要数据挖掘工程师帮他们做一些前期工作;另外呢,数据挖掘工程师往往还需要做一些机器学习方面的工作,因此就需要对各种机器学习算法的理论及代码实践有足够的认识。
数据挖掘工程师之中,也分很多不同的类型,比如做特征工程的、数据仓库的、数据平台支持的、算法工程师、数据科学家等,他们的工作职责各有不同,职业技能也各有侧重。对于大多数数据挖掘工程师来说,编程技能是必不可少的,但是针对不同挖掘工程师的性质,需要掌握不同的编程技能。
一般来说,Python、Java、Scala是常用的大数据挖掘语言,有一些数据科学家喜欢用R;最常用的大数据平台是Hadoop平台和Spark平台,常用的结构化数据库是MySQL或其他关系型数据库,非结构化数据库中MongoDB较为常用。对于数据挖掘工程师来说,必要的Linux知识也必不可少。
因为数据挖掘工程师绝大多数的工作都是在远程的服务器上完成的,不能流畅地在命令行中操作各种Linux系统(常用的有CentOS、Ubuntu等),工作的效率会大大降低。另外Shell在数据处理上也很强大,sed+awk简直是数据处理的神器。以上并不是非常系统的对比,但是是我在工作中最实际的体验,我并非码农出身,这个转型过程中遇到了很多挑战,但是他们之间并没有天堑一样的区别,很多地方是共通的,如果你编程基础较差,那么可以从数据分析师入手,之后在考虑转型数据挖掘;如果编程基础较好,可以考虑数据挖掘,但是数据挖掘工程师一般情况下不会接触太多的业务。
两者的职业路线非常不同,数据分析师之后可以做业务、可以转产品、可以做管理;而数据挖掘工程师一般会在技术领域垂直、深入地探索,之后可能会做技术管理,也有一辈子做技术的。综上所述,你可以根据自己的实际情况,做出选择了。后悔药是有的,不用过多纠结,他们之间并不是做了A就再也不能做B了。