需要作为数据科学家成功的软技能
可以提升数据科学家职业生涯的前五种软技能
你的旅程概述
- 介绍
- 技能1——沟通
- 技能2——协作
- 技能3——好奇心
- 技能4——项目管理
- 技能5——指导
- 总结
介绍
当您在努力成为一名数据科学家时,很容易将注意力集中在硬技能上。您可能想学习一个新的机器学习算法,例如带有非线性内核的支持向量机(SVM),一个新的软件技术,例如MLflow,或者一个新的人工智能趋势,例如ChatGPT。
这些技能很容易学习,因为可以很容易地衡量成功。以MLflow为例。您可能首先开始了解MLflow可以为您的机器学习生命周期提供什么。您了解模型工件,机器学习项目结构和模型注册。您完成了课程,花了几个小时阅读用户指南,甚至在实际项目中实现了它。很好!在这之后,您可以自信地说您掌握了一些MLflow,并将其添加为您的CV技能。
那么像时间管理这样的软技能呢?您会如何完成相同的过程?真正停下来思考一下。当然有关时间管理的书籍可以阅读,但它不像阅读MLflow文档那么具体。您可以将时间管理应用于日常生活,但它不像在机器学习项目中实施Mlflow那样具有可示性。您可以在您的CV中列出时间管理,但这又代表什么?😧
这是生活的一个事实,由于它们不太具体,软技能更难以衡量。许多人得出结论,软技能不如硬技能有价值。但这是一个重大错误!仅仅因为某些东西难以衡量,并不意味着不值得努力!
我相信我们都遇到过一个同事,他的时间管理掌握得如此之好,以至于他的产出几乎是其他人的两倍。这几乎是不可能通过硬技能获得的提升。我从来没有见过有人学习了MLflow,然后产出比其他数据科学家多两倍的成果。因此,即使软技能难以衡量,它们可以提供远远超越许多通常的硬技能的价值🔥
这在数据科学特别适用。数据科学家的正面刻板印象是拥有出色的问题解决能力。负面的刻板印象是他或她在商业环境中缺乏必要的软技能。通过花费一些时间学习软技能,您可以获得巨大的优势,并利用这一点铸造自己的职业道路。
在本博客文章中,您将了解数据科学家成功所需的前五种软技能。当然,这仅基于我的个人观点。但是,这个观点是通过观察许多其他数据科学家并看到一些人如何脱颖而出来形成的。
技能1——沟通
第一个技能是标准的技能。您应该学会如何进行良好的沟通。这包括许多方面:
- 您应该能够清楚地传达探索性数据分析(EDA)阶段的发现结果。请为受众量身定制。CEO不想听您选择适合数据的分布或使用哪个Docker镜像来运行实验的选择。CEO可能对数据科学感到热情,但他或她还有数百件其他事情要考虑。提供EDA的高级概述,并专注于CEO的业务成果。
- 在演讲时,请确保说出对听众有价值的内容。这听起来很明显,但显然并非如此。不要为了让自己听起来聪明而滔滔不绝地谈论复杂的架构或复杂的超参数调整。这只是一种防御机制。相反,确保您所说的内容为听众留下有价值的东西。通过这样做,您将突然有人过来想要讨论您谈论的内容。
- 在与他人交谈时,请确保听取他们所说的话。这不同于点头等待轮到您发言。实际上听取意味着将自己置于演讲者的角度,并仔细尝试理解他们的观点。例如,产品负责人向您解释他们希望更快的速度和更少的探索。与其等待解释为什么他们是错的,不如花一分钟真正倾听。产品负责人可能是根据进度进行评估,并且可能不理解探索性分析的优势。如果您诚实的话,探索性分析可能已经进行了一段时间。尝试倾听,然后与产品负责人合作找到双方都满意的好方案。
此外,你应该努力提高写作水平。真的。它不糟糕,但可以更简洁。你有写复杂句子、做不必要的解释和纠缠于不重要的细节的倾向,而这些细节并不像你想象的那么重要。别担心,我也有这个问题 😳
简洁可以传递信心。比较以下两个关于下周五功能请求的电子邮件回复:
- 我认为下周五能够实现。我会从问题入手,了解解决方案空间,然后迭代地处理。如果需要,我会寻求建议,否则我会朝着完成你要求的功能的目标前进。我相信一切都会顺利进行,并且我会在下周五交付令人满意的结果。
- 我将努力在下周五之前实现。如果出现任何阻碍,我会寻求建议。
第一种陈述中几乎没有更多信息,除了关于你的工作迭代和令人满意的结果的模糊讨论。想象一下作为项目经理或技术主管每天不得不阅读这样的东西。杜绝这种情况!以专业的方式表达你想要说的话,然后继续解决手头的问题。
技能二——协作
很少有单个数据科学家能够完成有影响力的数据科学工作。当然,也有一些例外。但是,大多数有影响力的数据科学是由一组数据专业人员与其他职业的支持,比如前端/后端开发人员、平台工程师、测试人员、领域专家、项目经理等共同完成的。
这意味着协作不仅有用,而且对于成功的数据科学来说是非常必要的。以下是您可以提高协作技能的几种方式:
- 在依赖其他角色时,了解您的工作和他们的界面。假设您正在与在Databricks或Synapse Analytics中编写Spark的数据工程师合作。他们工作的输出是为数据科学清理并采用正确格式的表。但是什么是正确的格式?这完全取决于您要使用哪些功能以及要使用哪些算法。您不希望陷入这样的情况,即数据工程师精心清理了一个表中的一列,而您立即将其删除,因为您不打算使用它。这是糟糕协作的症状。
- 当其他角色依赖于您时,请提前计划如何确保良好的协作。假设您计划开发一个ML模型,该模型摄取实时数据并预测价值。然后,预测将发送到前端应用程序中的用户和用于内部跟踪的Power BI仪表板。然后,前端开发人员和数据分析师应该了解数据的未来格式。您甚至可以为数据的确切结构提供模拟数据。通过这种方式,您确保依赖于您的人不必等待您完成工作才能进行其工作。当人们合作良好时,就像并行处理一样。当他们不合作时,它变成了单线程,一切都变慢了。
- 在与其他数据科学家合作时,明确委托所有权。由于数据科学家来自各种背景,他们的技能集非常不同。您可能有一个数据科学家非常擅长为模型获取额外的准确度百分比。另一个数据科学家可能非常擅长在生产中设置模型并监视数据漂移。不同的人可以根据他们的经验负责不同的方面。每个数据科学家仍然可以为每个方面做出贡献。
最后,还有与数据科学无关的更通用的东西。在同一团队中工作的每个人都应该受到尊重。这与他们的技术背景、技能水平、性别或任何其他与常识无关的因素无关。
人们有时会犯错误。重要的是要承认错误,同时确保错误是学习的自然组成部分。您应该通过优化来创建一个团队文化,使得可以承认错误而不必担心报复或嘲笑。如果您未能创建这样的文化,那么错误将不会停止发生。它们只会在幕后发生,并在修复它们变得更加困难时重新出现。
技能三——好奇心
我一直认为数据科学家天生就好奇心旺盛。他们喜欢学习新的机器学习算法或跟踪领域内的新发展。但是,这种好奇心是否延伸到附近学科的技术、方法和方法则千差万别。
有些数据科学家很兴奋地学习更多关于软件开发、设计原则、项目管理、数据分析、数据工程、业务影响等等。而其他人则只想专注于自己的领域,只做数据科学方面的工作。虽然这样也可以,但是如果您与那些有好奇心去探索附近领域的同事相比,您的评价可能会更低,这并不奇怪。
这不公平吗?并不完全公平🤷
了解软件开发的数据科学家比不了解软件开发的数据科学家更有用。软件开发技能确保数据科学家可以参与更多可能的项目。与前端/后端开发人员和数据工程师的接口也变得更容易管理。
其他人只会通过自己的视角来看待您的产出。假设一个测试人员负责运行您编写的多个组件的集成测试。如果您的组件有良好的文档、模块化组成、使用良好的编码标准和单元测试,那么测试人员的工作就会变得更容易。另一方面,如果您只是在一个大型R脚本中拥有大量自由流动的代码,那么对于测试人员来说,追踪错误就变得很困难。自然地,测试人员会认为那些在软件方面付出努力的人更有技能。这与脚本中的ML模型无关。
业务影响是另一个经典问题。数据科学家最常见的负面反馈之一就是他们与业务目标相距太远。了解业务并提出产生ROI的数据科学用例的数据科学家自然对业务更有价值。
那么如何培养这种广泛的好奇心呢?要花在其他学科上的时间有限,但我有两个一般性建议:
- 花些时间与他们交流时了解其他角色正在做什么。与业务分析师交谈时了解KPI和OKR的知识很快就可以掌握,但这些知识非常有价值。就我个人而言,由于没有信息学背景,我对计算机网络知之甚少。但是我确实知道为什么会使用私有网络,大致了解如何设置,以及在什么时候适合投资。我主要是从与网络工程师交谈中获得了这些知识。这种知识虽然表面上看似乎很浅显,但对于知道何时联系网络工程师是有价值的。
- 在项目中工作时,抓住机会做一些超出您舒适区的事情。有人需要在持续集成管道中实现自动代码检查吗?我会尝试一下!即使您对CI/CD或YAML文件并不了解,您也可能会弄明白。如果不行,您总可以寻求帮助。通过抓住学习新东西的机会,您将会学到新东西。我知道,这很深刻😉
技能4-项目管理
回想一下之前涉及团队合作的项目。想想那些未能满足期限或超出预算的项目。共同点是什么?是超参数调整不足?模型工件日志太差?
可能不是这样,对吧?项目失败最常见的原因之一是糟糕的项目管理。项目管理的责任是将项目分解成可管理的阶段。然后每个阶段都应该不断估计剩余工作量。
决定性项目经理的职责远不止于此,涵盖了从冲刺执行到回顾。但我不想把项目管理作为一种角色来关注。我希望关注项目管理作为一种技能。就像任何团队中的人都可以展示领导力一样,任何团队中的人也都可以展示项目管理作为一种技能。对于数据科学家来说,这是一种非常有用的技能。
让我们具体地关注估计单个阶段。事实是,许多数据科学工作很难估算:
- 数据清理阶段需要多长时间?完全取决于您要处理的数据。
- 探索性数据分析阶段需要多长时间?完全取决于您在途中发现了什么。
你明白我的意思了。这导致许多人认为在数据科学项目中估计阶段的持续时间是没有意义的。
我认为这是错误的结论。更准确的是,在开始阶段之前准确地估计数据科学阶段的持续时间是困难的。但是,项目管理正在进行持续估计。或者,至少,这就是良好的项目管理应该做的😁
想象一下,不是事先估计数据清理工作,而是你已经进行了一周的数据清理任务。你现在知道有三个存储在不同数据库中的数据源。其中两个数据库缺乏适当的文档,而最后一个缺乏数据模型,但文档编制得相当完善。所有三个数据源中的一些数据都缺失,但不像你担心的那么多。你能说什么?
当然,你没有零信息。你知道你明天不会完成数据清理工作。另一方面,你非常确定三个月对于这项工作来说太长了。因此,你有一种分布,给出了阶段完成的概率。这个分布有一个“平均值”(阶段持续时间的猜测)和一个“标准差”(猜测的不确定性程度)。
重要的是,这个概念性分布每天都在变化。你会得到越来越多关于需要完成的工作的信息。当然,随着你对阶段何时结束变得越来越确定,标准差会随着时间的推移而缩小。你的工作是将这些信息量化给利益相关者。不要在向利益相关者解释时使用我所使用的分布语言,这可以留给我们之间。
有一个数据科学家能够说出这样的话是非常有价值的:
“我认为这个阶段需要3到6周的时间。我可以在一周内给您更新的更准确的估计。
技能五——指导
指导初级数据科学家通常被视为必要的恶。这当然是诚实的工作,但并没有受到太多强调。如果初级数据科学家能够神奇地自己学习这些概念,那就更好了,对吗?
正如你们可能已经注意到的,我不同意这种看法。指导初级数据科学家对你和他们都非常有帮助。以下是三个原因:
- 解释概念时你会学到很多:这很容易理解。通过向初级数据科学家解释概念和思想,你自己更好地理解这些概念。我经常发现,向初级数据科学家解释某些事情帮助我更清晰地表达某些东西。只有当有人问你的时候,你才会意识到你可能没有像你想象的那样好地理解某些东西。这是一个学习这个主题的好机会。此外,你可以向初级数据科学家强调,不知道所有东西是可以的。事实上,这是不可避免的。
- 你获得了一些管理经验:很快,你可能会进入更高级的职位,比如首席数据科学家。这些职位通常没有其他员工的正式管理职责。然而,人们期望你能够领导和影响他人。像任何其他技能一样,这需要实践。在日常数据清理和模型调整中,你很少有机会进行这样的练习。因此,如果你从来没有指导过任何人,那么如果你发现自己很难领导和影响他人,也就不足为奇了。如果你正在考虑进入管理轨道,那么过去没有指导职责可能是一个红旗。为什么你从来没有指导过任何人?是因为你不想做,还是因为其他人不希望你这样做?这些可能性都不是很好。
- 你可以与初级数据科学家建立联系:当然,导师和初级数据科学家之间存在自然的权力失衡。然而,如果导师做得好,通常是导师与初级数据科学家建立联系最紧密的人。通过承担责任并指导初级数据科学家,你很快会发现自己被你指导过的人所包围。这些人常常仰慕你并重视你的建议。这并不是一种不好的处境。
我的建议是在你的职业生涯中尽快成为一个导师。以上三个优点仅在你认真对待导师工作时有效。如果你做得不好,你将很少获得这些好处,甚至可能会因为成为一个不好的导师而声名狼藉 😬。
某些公司对于指导的期望非常低。你可能会被要求每个月与初级数据科学家喝咖啡。我建议超越职责范围。向初级数据科学家提供他们可以向你提出问题和疑问的机会。这样为初级数据科学家提供帮助表明你可以在没有明确要求的情况下承担责任。
总结
在本博客文章中,我们看到了软技能对于数据科学家发展职业非常有价值。当面试数据科学的高级候选人时,我会重视他们所积累的软技能和硬技能。如果你认为其他软技能对于数据科学家至关重要,请在评论里告诉我。
如果你对数据科学、编程或其他任何事情感兴趣,欢迎在 LinkedIn 上关注我并打招呼✋
喜欢我的文章吗?请查看我其他的一些文章,了解更多关于 Python 内容的内容:
- 使用漂亮的类型提示使你的 Python 代码更加现代化
- 在 Python 中可视化缺失值非常容易
- 使用 PyOD 引入 Python 中的异常/离群值检测 🔥
- 5 个绝妙的 NumPy 函数可以在紧急情况下挽救你
- 5 个专家技巧,让你的 Python 字典技能飞跃 🚀