如何建立数据科学和数据工程团队?

如何建立数据科学和数据工程团队?

时常收到有关数据科学指导方面的问题,在这个数据科学咨询专栏,我将给大家分享一下我的答案。如果你有与数据科学有关的问题,请发邮件至 rachel@fast.ai,为了更加清楚简洁,你的问题也许会被稍作修改。

Q: 我是一家初创公司的工程副总裁,数据和机器学习算法是我们公司核心资产的重要组成部分。在接下来的技术岗位招聘上,我们希望聘用那些能够帮助数据科学团队的工程师。我现在在做一些招聘前的调查,希望可以理解工程团队如何重点支持生产器学习工作流。我想知道:

1、数据科学和数据工程团队该如何建立?比如,是否有与数据科学配对的“数据工程”团队这个概念?还是数据科学家和数据工程师都属于“纵向”产品团队?

2、数据科学与工程团队如何互动?数据科学的工作如何与数据工程协调?

3、数据科学家与工程师之间的责任分工如何?有没有混合角色的概念?

答案如下

这个答案是基于我从事数据科学家岗位,面试数据科学职位,并与一些数据科学家交谈所得的经验总结。我看过雇主们多次重组数据科学团队。

数据科学的团队结构存在一些潜在的缺陷(无论你怎么选择)。我会扩大你的问题,这样可以涵盖数据科学与其他团队之间的关系,当然,这其中也包括数据工程。考虑以下这些情况:

1、数据科学团队面试了一位拥有优秀数学建模和工程技能的应聘者。被聘用后,他被安排到只需要简单业务分析的垂直产品团队中。这会使这位数据科学家感到非常无聊,因为他的技能并没有被好好的利用。

2、数据科学团队是分开独立的(不嵌入其他团队)。 他们创造了非常酷的东西,却从未被使用过。对于他们正在进行的工作,没有其他部门的融入,有些数据科学家对于投入实际生产没有很好的认识和理解。

3、数据科学家生产的模型要比数据工程师实际支持投入生产的数量多,产生工作积压。

4、数据基础工程师与数据科学家分开。工作流没有数据科学家们需要的数据,基础工程师收集的数据没有被充分的使用。

5、公司已经确定了特征/产品X。公司需要数据科学家收集数据来支持他们的决策。数据科学家认为PM忽略了与决策相悖的数据,而PM认为数据科学家忽略了商业逻辑。

意见和建议

如果单独把数据科学家们与其他职位分开,那么使他们与公司其他团队整合几乎是不可能的。让你的数据科学家分布在整个公司,并组建一个数据科学交流的团队。垂直产品团队需要知道如何能最好的利用数据科学。只让一个数据科学家在团队中去提倡数据驱动的决定是非常困难的。

数据科学家应该向数据科学经理以及团队内的产品经理提供报告。你需要很多沟通:来确保团队实现数据科学家在工作中的最大价值。一个很有用的方法是,一半(甚至更多)的数据科学家每隔半年就换到不同的团队。

把机器学习,工程,以及数据/工作流/基础工程分开到不同职位是很常见的,这应该是尽量避免的。这会导致很多重复或多余工作, 尤其是当这些职位在不同团队的时候。你需要的是拥有这些技能的员工:他可以给需要的数据构建工作流,创建该数据相应的模型,并且把模型投入生产。你难以雇佣很多可以完成所有以上工作的人,所以你需要培训你的员工。通常来说,很多公司都没有充分利用好自己的员工,这点在数据科学上更是如此(因为数据科学包涵的技能范围更广)。科技公司因为没有提供给员工在职学习,培训和指导的机会而浪费了员工们的潜力。你的员工是聪明并且渴望学习更多的。提供培训,配对编程,或者研讨会帮助你的数据科学家弥补技能上的缺陷。我会告诉那些对数据科学和工程感兴趣的学生,你对软件开发的了解越多,那么将来你就会成为一个更好的数据科学家。

即使你有同时具备数据科学和工程技能的员工(这里指,他们既可以创建机器学习模型,也可以把模型投入生产),你依然需要把他们嵌入到其他团队中。否则,其他团队会无法理解他们在做什么,他们的工作也难以整合其他相关系统中去。

数据科学家这一词至少代表了5个不同的职位,因此沟通和清晰就显得尤为重要。公司应该清楚的指导他们需要什么,雇佣什么样的员工。从我自己的求职经历讲,很多公司都在招聘数据科学家,但是公司并不清楚为什么,或者他们怎样使用数据科学。公司应该雇佣那些队工作岗位感兴趣的员工。你也许很难找到一个既对用C语言编写机器学习,又对广泛使用Google Analytics分析感兴趣的人,尽管这是我曾经看过的一个工作描述。注意,这里我说的“感兴趣”并不是只“已经具备该技能”。假设工作申请者会在工作中学习很多新技能(如果不是,他们很快就会感到无聊的)。