作为一名开发人员如何让我成为一名更好的数据科学家

作为一名开发人员如何让我成为一名更好的数据科学家

原文:https://medium.com/hackernoon/how-being-a-developer-made-me-a-better-data-scientist-6d762fc35d19

当我开始作为一名算法开发人员工作时,我知道我的职业生涯正在发生巨大的变化,但没有意识到有多大——从数据分析师到业务分析师,然后是数据科学家。然而,我从来没有想过我最终会写 C#代码。尽管这并不容易(现在仍然不容易),但这种改变“解放了我的思想”,让我看到了研究实验室之外的真实世界。

“Welcome to the real world”

所以现在我正努力开发最好的可行的特性/算法/工具,同时意识到现实世界的限制,比如性能、资源、规模和真实活跃用户。

从数据科学家到算法开发者

作为一名数据科学家,我专注于提出正确的问题(我希望如此)并找到最佳答案/解决方案,而没有深入思考现实世界的实施。使用版本控制工具似乎是多余的,而为算法编写单元测试很奇怪,感觉像是浪费时间,因为我相信我的逻辑/代码可以处理任何数据输入。

但我错了。我没有考虑开发时间、与应用程序/环境的集成、资源、性能等。

我的第一个特点是一个端到端的任务,需要使用 Scala、R、SQL、C#、HTML 和 JavaScript,并且是公司持续集成框架的一部分。我必须学习新的语言、框架、工具和公司方法论,比如设计评审和自动测试。当它被部署到生产中时,我感到非常自豪。然而,后来我意识到我的解决方案并没有我想象的那么好。

我没有最好的设计,坚实的原则不是我熟悉的东西,我的代码也不够清晰。我的设计很难随着时间的推移开发功能,在生产中保持弹性,并应用其他工程方面。

I’m not developing in my little lab any more

我的旅程才刚刚开始,我已经面临了一些有趣的挑战,我想和大家分享一下。

大三五年经验

我已经走出了我的舒适区。感动了很多——从零开始学习新的方法论、概念和语言,把以前的知识放在一边一段时间。这不仅仅是学习新的东西,也是思维方式的一个巨大转变,像工程师而不是研究员一样思考。这是速度和深入研究之间的权衡,就像生活中的大多数事情一样,真相介于两者之间。

开始数据革命

我的公司使用并理解数据。我们跟踪目标和 KPI,报告分析和指标,进行 A/B 测试,并使用自制的推荐系统和算法。

作为一名数据科学家,我学到了数据的意义远不止于此。A/B 测试不仅仅是分割测试;统计在决策中具有关键作用;深入和积极的数据分析可以推动创意和功能。这还没有谈到数据挖掘和机器学习方法。

作为一名数据科学家,挑战之一是指导 R&D 和产品团队了解数据的演变以及我们作为一家公司如何从中受益,以便打造我们的用户真正喜欢和需要的产品。例如,为什么在编写一行代码之前,最好先理解度量标准、目标以及如何度量它们(使之成为每个设计的一个组成部分)。解释数据分析和投资回报率的重要性之前和之后写一个功能,虽然它需要更多的时间。A/B 测试——为什么以及如何正确地进行测试,为什么它如此重要,以至于我们需要在它上面投入时间,而不是开发另一个特性。

ETA、可预测性和时间上限任务

可预测性对我来说总是很难,尤其是在研究方面。除了永远不符合我计划的数据探索部分:),我总是想把我的特性/模型/工具再改进一点。对于数据科学家来说,这有时是可以接受,但对于算法开发人员/工程师来说,这是不可接受的。

作为一名工程师,我需要能够与层一起工作,从 MVP/lean 特性开始,然后添加更多的层并改进它。这很难,尤其是模型/算法。百万美元的问题是什么时候停止,什么时候够了,我需要发展这块肌肉。

我的关注点在哪里?

我喜欢去学新东西,我不能坐视不管。但是一天只有 24 小时。相对于我最近获得的新的开发人员技能,我应该在数据/模型/算法/统计/业务(我的核心技能)上付出多少努力?这个问题的答案在我脑子里一直在变。

最后的话

虽然我的脑海中一直在思考我长大后想做什么,或者我应该在开发人员和研究人员之间选择什么样的组合,但我知道这两方面都让我成为了一名更全面的工程师——一种“全栈数据科学家”。

从开发人员的角度来看,我知道我需要考虑可行的解决方案、约束、现实和预计时间。从数据科学家的角度来看,首先要问,为什么?我们将从中获得什么?我们将如何衡量它的成功——只有到那时,我们才能决定是否要开始工作。

于是旅程继续。虽然我不确定我已经有了正确的答案,但我知道我一直在学习,并且对大局有了更多的理解——所以现在对我来说已经足够了。


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除