这里我还是想推荐一下我自己搭建的大数据学习交流QQ裙子:458345782,裙子都是关于大数据开发的。如果你正在学习大数据,小编欢迎你的加入。大家都是软件开发方。我时不时分享一些有用的信息(仅与大数据开发有关),包括我自己整理的2018年最新大数据高级资料和高级开发教程。欢迎进阶或者想深入研究大数据的朋友。
图1. 数据科学家和数据工程师的过于简化的维恩图。杰西·安德森的插图
像图1 这样的维恩图过于简单化了工作的复杂性以及它的不同之处。它使这两个位置看起来可以互换。是的,这两个职位都涉及大数据。然而,每个职位使用大数据的方式完全不同,无论是创造价值还是创建数据管道。这种差异来自于各个岗位的基本功。
什么是数据科学家和数据工程师?
当我与组织合作制定团队结构时,我不会使用维恩图来描述数据工程师和数据科学家之间的关系。我画的图如图2所示。
图2. 该图显示了数据科学家和数据工程师的核心能力及其重叠技能。杰西·安德森和大数据研究所绘制的插图
数据科学家技能
数学和统计学(有时还有物理学)是数据科学家的核心。基于这种数学背景,他们正在创造先进的分析能力。他们将数学应用到极致,创建机器学习模型和人工智能模型。
与软件工程一样,数据科学家也必须与业务方进行沟通。这涉及充分理解该领域以获得洞察力。数据科学家通常负责分析数据以帮助业务,这需要一定程度的商业头脑。最后,他们的结果需要以易于理解的方式提供给业务方。这就要求数据科学家有能力以口头和视觉结果的形式与业务方沟通复杂的结果和观察结果,以便业务方能够理解并据此做出决策。
我对数据科学家的一般定义是:数据科学家是利用编程来强化数学和统计背景能力来分析数据和创建数学模型的人。
数据科学家的一个共同特征是,他们必须选择编程才能实现没有编程就无法完成的事情。当我与数据科学家交谈时,他们总是告诉我的一件事是。为了完成更复杂的分析,或者因为其他无法克服的问题,他们学习了如何编程。他们的编程和系统构建技能达不到您对程序员或数据工程师的期望水平- 他们也不需要达到这样的水平。
数据工程师技能
编程技能是数据工程师的核心。这种背景通常是Java、Scala 或Python 的编程经验。他们的工作重点或者专业能力主要集中在分布式系统和大数据方面。数据工程师拥有先进的编程和系统构建技能。
简而言之,我对数据工程师的定义是:数据工程师是拥有围绕大数据创建软件解决方案的专业知识的人。
利用这些工程技能,他们可以创建数据管道。创建数据管道可能听起来简单或微不足道,但在大数据的规模上,这意味着汇集10-30 种不同的大数据技术。更重要的是,数据工程师是理解并为工作选择正确工具的人。数据工程师对各种技术和框架以及它们如何组合在一起以创建通过数据管道为公司业务流程提供支持的解决方案有着深入的了解。
根据我的经验,数据工程师只很少参与集群的操作(与此处讨论的数据工程师的说法相反)。尽管某些数据科学技术确实需要操作或数据操作职位,但大多数技术不需要。像大多数程序员一样,我不允许他们直接访问生产系统。这主要是系统管理员或者运维人员的工作。
重叠技能
数据科学家和数据工程师的技能之间存在重叠。然而,重叠总是发生在每个人能力的不规则边缘。
例如,这两个职位在“分析”方面有重叠。然而,数据科学家的分析能力将远远超过数据工程师。数据工程师可以执行一些基础到中级的分析,但很难执行数据科学家所做的高级分析。
数据科学家和数据工程师在编程能力上有重叠。然而,数据工程师的编程技能远远超出了数据科学家的编程技能。让数据科学家创建数据管道远远超出了他们的技能范围,但这正是数据工程师擅长的地方。在这种情况下,这两个角色是互补的,数据工程师支持数据科学家的工作。
您会注意到数据科学家和数据工程师之间也存在大量数据重叠。通过更好地了解每个职位所需的技能,您现在可以更好地理解这种技能重叠。数据工程师利用他们的编程和系统构建技能来创建大数据管道。数据科学家利用他们更有限的编程技能来应用他们的高级数学技能,利用现有的数据管道创建高级数据产品。 “创建和使用”之间的这种差异是团队在处理大数据时失败或表现不佳的核心。期望数据科学家创建数据管道的团队最终会非常失望。
当组织出错时
不幸的是,组织误解每个职位的核心技能和工作角色是相当常见的。一些组织认为数据科学家可以创建数据管道。数据科学家可以就地创建数据管道。数据科学家创建数据管道的问题有几个方面。请记住,数据科学家只需要学习编程和大数据。他们是聪明人,最终确实解决了问题,但创建数据管道并不是他们的核心能力。
从管理角度来看,数据科学团队将会遇到麻烦。您将环顾四周或聆听其他团队的意见,并将他们的进度与您自己的进度进行比较。数据科学团队似乎根本没有产出,或者表现不佳。这是基于对数据科学家核心能力的误解的不公平评估。
数据科学家从事数据工程
我见过一些公司要求数据科学家做数据工程师所做的事情。数据科学家的效率为20-30%。数据科学家不知道数据工程师知道什么。创建数据管道并不是一件容易的事——它需要先进的编程技能、对大数据框架的理解和系统创建。这些不是普通数据科学家所具备的技能。数据科学家可以获得这些技能;然而,这段时间的投资回报率(ROI)非常低。不要误会我的意思:数据科学家确实需要编程和大数据技能,但与数据工程师的水平不同。
在数据管道创建中,相对业余的数据科学家也会遇到这样的问题:数据科学家会在工具选择上犯错误,做出错误的选择,但数据工程师不会。数据科学家通常不知道或不了解处理任务所需的适当工具。使用单一工具(通常是错误的工具)来完成所有任务最终会把一切搞砸。现实情况是,为了处理不同的工作,需要许多不同的工具。合格的数据工程师会知道这一点,而数据科学家通常不会。
最近的一个例子是一位数据科学家使用Apache Spark 处理数十GB 的数据集。确实,Spark可以处理这么多数据。然而,小数据程序会更快并且性能更好。他们的Spark任务执行需要10-15分钟,而小数据的关系数据库只需要0.01秒即可完成同样的事情。在这种情况下,数据科学家不能完美地解决问题,但不明白什么是适合这项工作的工具。每天执行16 次这项15 分钟的工作(这是低端数据分析),而您的数据科学家每天要花费四个小时等待,因为他们使用了错误的工具来完成任务。
在另一个组织中,他们的数据科学家没有任何数据工程资源。数据科学家致力于解决这些问题,直到遇到无法解决的数据工程问题并陷入困境。他们向企业报告说他们无法完成任务,然后就停下来,工作只完成了一半。这导致数据科学家浪费时间,据他们估计,仅仅因为他们无法完成工作,就有数百万美元的价值悬而未决。
如果你让数据科学家做数据工程师的工作,一个更令人担忧的迹象是数据科学家会变得沮丧并辞职。我与许多组织中处理数据工程师工作的许多数据科学家进行过交谈。谈话总是一样的:数据科学家抱怨他们来到公司是为了数据科学,而不是数据工程。他们需要做数据工程工作来完成任务,但要求数据科学家做数据工程工作会让他们发疯。他们会退出,你将需要3-6 个月的时间来完成数据工程。我在另一篇文章中详细讨论了这些问题。
数据工程师与数据科学家的比例
确定数据工程师与数据科学家的比例是一个常见问题。确定此比率时需要考虑的常见问题包括数据管道的复杂程度、数据管道的成熟程度以及数据工程团队需要具备多少经验。
数据科学家多于数据工程师通常是一个问题。这通常意味着组织让他们的数据科学家从事数据工程工作。正如我之前所说,这可能会导致各种问题。
通常的配置是每个数据科学家配备2-3 个数据工程师。对于一些具有更复杂数据工程需求的组织,这个数字可能是每个数据科学家对应4-5 个数据工程师。这包括数据工程和数据科学处于不同报告组织结构的组织。您需要更多的数据工程师,因为创建数据管道比创建ML/AI 部分需要更多的时间和精力。
在我的书《数据工程团队》 中,我详细讨论了数据工程和数据科学团队应如何相互交互。
数据工程师从事数据科学研究
一个不太常见的场景是数据工程师开始进行数据科学工作。随着数据工程师开始提高他们的数学和统计技能,这是一个向上的推动力。随着数据科学变得更加标准化,这种向上推动变得更加普遍。它导致了一种全新类型工程师的出现。
机器学习工程师的需求
让我们面对现实吧:数据科学家来自学术背景。他们通常拥有博士学位或硕士学位。问题在于,他们宁愿写一篇关于该问题的论文,也不愿将某些东西投入生产。其他时候,他们的编程能力只能扩展到在R 中创建一些东西。将用R 编写的东西投入生产本身就是一个问题。他们不会像工程师那样考虑如何构建系统。
数据科学家面临的普遍问题是,他们不是将工作投入生产、创建数据管道并公开这些AI/ML 结果的工程师。
为了应对学术思维与“投入生产的需要”之间的差异,我们观察到了一种新型工程师。如今,这位工程师大多出现在美国。他们的头衔是机器学习工程师。
图3.图表显示了机器学习工程师如何与数据科学家和数据工程师匹配。杰西·安德森和大数据研究所绘制的插图
机器学习工程师主要来自数据工程背景。他们经过足够的交叉培训,精通数据工程和数据科学。一种不太常见的途径是数据科学家在数据工程方面进行交叉培训。
我对机器学习工程师的定义简而言之就是:机器学习工程师是处于数据科学和数据工程十字路口并且精通数据工程和数据科学的人。
如图2 所示,您可能想知道数据科学和数据工程之间存在的差距会发生什么。这正是机器学习工程师所处的位置,如图3 所示。它们是数据工程师创建的数据管道与数据科学家创建的数据管道之间的桥梁。机器学习工程师负责获取数据科学家发现或创建的内容,并使其在生产环境中有价值(值得注意的是,数据科学家创建的大部分内容没有生产价值,并且大多是用能够发挥作用的技巧拼凑而成的)。
机器学习工程师的工作主要是创建数据科学管道的最后一步。这可能需要几个部分。它可能会将数据科学家的代码从R/Python 重写为Java/Scala。它可能会从软件工程的角度优化机器学习/人工智能代码,以确保数据科学家编写的代码运行良好(或简单地工作)。机器学习工程师拥有足够的工程背景,以确保在以不遵循良好工程原理而闻名的领域(数据科学)中具备必要的工程学科。
在生产中运行的模型需要常规软件不需要的维护和输入。机器学习模型可能会过时并开始给出不正确或扭曲的结果。这可能是由于数据属性的更改、新数据的添加或恶意攻击造成的。无论原因如何,机器学习工程师都需要始终了解模型中需要修改的部分,这可能会导致模型的重新训练或调整。
机器学习工程师和数据工程师
从数据工程师到机器学习工程师的转变是一个缓慢的过程。坦率地说,我们会看到成为机器学习工程师所需的改变与成为数据科学家所需的改变非常相似。
为了解释我所说的“缓慢变化”的含义,我将分享我所见过的从数据工程师过渡到机器学习工程师的经历。他们花了几年时间作为软件工程师和数据工程师从事开发工作。他们一直对统计或数学感兴趣。其他时候,他们只是厌倦了作为数据工程师所面临的限制。不管怎样,这种转变将需要数年时间。我不认为人们在参加统计学入门课程或机器学习入门课程后立即成为机器学习工程师。
正如我将数据科学家视为学术人员一样,数据工程师并不完全适合成为机器学习工程师。工程师喜欢真实与虚假、黑白、1 与0 的世界。他们不喜欢不确定性。对于机器学习,模型的猜测存在一定程度的不确定性(工程师不喜欢猜测)。与大多数工程师不同,机器学习工程师可以跨越数据工程的确定性和数据科学的不确定性。
机器学习工程师的价值不断增加
进入数据科学的门槛正在逐渐降低。最佳实践正在逐渐充实。最常见的算法成为共识。更好的消息是有人已经编码并优化了这些算法。
这种日益成熟使得数据科学家和机器学习工程师可以更轻松地将算法投入生产而无需编码。我们还看到数据科学变得更加自动化,并且具有更加自我驱动的过程。谷歌的AutoML 代表了这样一种趋势,工具会自动找到最好的算法,让你无需成熟的数据科学家的工作即可获得结果。 DataRobot 是另一种自动化技术,可以为数据找到最佳的数据科学算法。它还将帮助机器学习工程师将算法投入生产。
这些工具不会取代核心数据科学,但它将使数据科学家能够专注于数据科学中更困难的部分。它将帮助机器学习工程师提高工作效率。我们将逐渐看到机器学习工程师的负担减轻,自动化算法增加。
未来我们应该期望机器学习工程师达到什么水平的生产力?我对此很伤心。简而言之,机器学习工程师应该成为Web 开发人员的WordPress 配置员吗?在这种情况下,机器学习工程师可以更有效地处理众所周知的标准用例,而只有数据科学家才能处理真正的定制工作。或者机器学习工程师会再次成为数据库管理员吗?通过深入了解模型的已知信息,他们可以使用已知的千篇一律的方法配置模型,从而在50-80% 的时间内获得正确的结果,这足以满足所有需求。为了获得真正准确的结果,您需要一名数据科学家。
机器学习工程师和数据科学家生产力的关键是他们的工具。目前这些工具还不够成熟,这就是为什么我很好奇它们将来的效率如何。
我希望数据科学的进入门槛继续降低。这将使机器学习工程师能够在不大量增加知识的情况下完成更多的数据科学工作。我希望机器学习工程师的角色在美国和世界各地变得越来越普遍。
该怎么办?
现在您已经了解了数据科学家和数据工程师之间的差异,您需要环顾您的组织并了解需要进行更改的地方。这是我帮助其他机构做出的改变,他们已经看到了巨大的成果。在数据科学团队似乎陷入困境且无法发挥作用的情况下,我们创建了数据工程团队来向数据科学和数据工程团队展示如何合作并制定正确的流程。
这些变化将数据科学团队的生产力从20% 提高到90%。团队可以用相同数量的人做更多的事情。数据科学家更快乐,因为他们不做数据工程。管理层可以根据备受期待的大数据开始提供价值。
你可能还会遇到一个新的职位,机器学习工程师。随着数据科学和数据工程团队的成熟,您需要检查团队之间的差距。您可能需要晋升一名数据工程师并让他一路成为机器学习工程师,或者直接雇用机器学习工程师。
归根结底,大数据的问题大多是人和团队的问题。它们不是技术问题(至少最初不是)。技术经常受到指责,因为指责技术比团队审视自己要容易得多。除非解决了人员问题,否则您将无法解决真正困难的技术问题并创造您期望大数据带来的价值。诚实地审视你的团队和组织,看看哪里需要做出改变。
【揭秘:数据工程师与数据科学家职业对比分析】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章终于来了!一直想知道这两份工作的区别,现在正好可以查阅一下学习。
有9位网友表示赞同!
感觉数据工程师和数据科学家的工作都有自己的酷点,挺有意思。
有16位网友表示赞同!
我是程序员出身想转型数据分析,应该先考虑哪一类的工作比较好?
有9位网友表示赞同!
我现在在做数据统计分析,看来未来可以往深度学习的方向发展啊。
有8位网友表示赞同!
大学的时候选修了一门数据库课程,感觉和数据工程师的工作内容比较相关。
有9位网友表示赞同!
这篇文章能把两者的区别搞清楚吗?我有点蒙了。
有10位网友表示赞同!
看了很多文章都说数据科学家前景好,但我更喜欢研究算法的逻辑感...
有7位网友表示赞同!
现在越来越多人关注大数据了,这两类专业都非常抢手啊!
有10位网友表示赞同!
不知道这篇文章能不能讲到学习路径和就业方向的问题?
有20位网友表示赞同!
最近开始接触机器学习,感觉数据工程师的工作很能锻炼自己
有13位网友表示赞同!
我想试试做数据分析工作,需要哪些技能?
有17位网友表示赞同!
希望这篇文章能详细介绍每个岗位的具体工作内容!
有12位网友表示赞同!
我现在在公司里负责数据处理,感觉还是偏向数据工程师类型吧?
有9位网友表示赞同!
想要成为一名顶尖的数据科学家,得多努力啊!
有11位网友表示赞同!
我比较喜欢思维逻辑型的知识,感觉数据科学家的工作更适合我?
有5位网友表示赞同!
这篇文章有没有推荐一些资料或学习资源?
有16位网友表示赞同!
希望能够读到一些职场经验分享,看看行业发展趋势。
有14位网友表示赞同!
这两类工作哪个薪资待遇更高呢?
有5位网友表示赞同!
以后的社会会更加依赖数据,这两种专业都很有前途!
有20位网友表示赞同!