文章目录
一、引言
当有人问我如何进入数据科学行业时,我的建议是:不要去做数据科学家,改做软件工程师(俗称码农)。
![img](https://tva1.sinaimg.cn/large/007S8ZIlly1gekyz9jdk3j312w0pygr5.jpg)
这是个人观点。我很想在评论区里看到你的见解。
每个人都希望成为一名数据科学家。但是,尽管数据科学可能是21世纪最性感的工作,人们却忽视了另一个回报丰厚的高薪职业——软件工程师。
我经常收到来自刚毕业学生和想转行员工的消息,想让我给些有关数据科学家的建议。我告诉他们转变想法,去做软件工程师。
我在这两个岗位都有经验,下文会说明做软件工程师的9点原因。
二、原因
1.软件工程师的岗位更多
与数据科学家相比,软件工程师的岗位数多了一个数量级。
以下是谷歌搜索“ 数据科学家在招岗位”和“软件工程师在招岗位”的截图。
有7616个数据科学家岗位,同时却有53893个软件工程师岗位。这只是在美国的岗位,而其他国家也有类似的结果。
根据Glasssdoor的说法,数据科学家的收入更高,但我未经检验的假设是,数据科学家的平均实力也更强。
也就是说,如果你收到OpenAI薪水100万美元的offer,我建议你接下这个offer。
2.“数据科学”的概念没有共识
管理层通常对“数据科学”的含义没有共识。 即使给定业务限制,也可能不会严格遵循既定框架。这意味着“数据科学家”的职责因公司而异。
理想状态下软件工程师与数据科学家可能规定了职责范围,但现实中不太会遵循它。对于仍在构建基础架构的初创公司而言,尤其如此。
被聘用的候选人最终致力于解决公司当前亟需解决的问题,而不是解决他们被录用时的“岗位介绍”。
![img](https://tva1.sinaimg.cn/large/007S8ZIlly1gekyyxew4fj312w0px4h3.jpg)
该领域员工的真实工作表明,许多数据科学家发现自己的像软件工程师一样在编写代码。我还认识部分擅长用Excel处理财务问题的“数据科学家”。
这些都与你在Kaggle比赛中磨练时的预期形成鲜明对比。
3.数据科学很孤立
大多数公司不需要像软件工程师一样多的数据科学家。其他公司目前正在雇用他们的第一位数据科学家。
因此,许多数据科学家最终还是独自工作,即使他们和开发人员坐在同一张桌子上。
这会使获得反馈和他人意见变得困难。软件工程师要么不了解预测建模,要么忙于处理完全不同的问题。
相比之下,软件工程团队的好处之一就是可以对同事说:“我认为我们应该以XYZ方式去做ABC。 你怎么看?”。
做好将来只能自言自语的准备,或者和橡皮鸭聊天……
4.数据科学是探索性的
准备好与管理层尴尬的对话,解释为什么你花了2周的成果无法使用。
面对已解决问题还是未解决问题是软件开发与AI之间的根本区别之一。
除了Bug和约束,你在开始任何工作之前就知道大多数软件工程项目是否可行。但做机器学习,你无法说这种话,直到建立好模型后,你才能知道模型是否有效。
5.公司还没有准备好使用AI
即使在每个公司都是AI公司的时代,大多数公司也没有基础架构来支持它,甚至并不需要它。
一家快速扩展的初创公司的数据科学主管最近分享了一些经验。
首先,你要找出问题所在,然后建立基础架构,然后再聘请数据科学家。这不是一个快速的过程。
最近,另一家知名公司的第一数据科学人才向我宣泄。她被迫在笔记本电脑上而不是云上训练AI模型的数据。
如果你入职后公司没有特定问题需要解决,或者公司没有为数据科学做好准备,那么你可能会发现体现自身价值会非常艰难。
6.软件工程教授通用技能
成为初级软件工程师就像获得MBA一样。你会学到所有事物的一小部分基础。
你将学习数据库、云技术、部署、安全性以及编写简洁的代码。
通过观察你的上级领导、高级开发人员或项目经理,你将学会如何架构软件。
你将通过代码审查获得指导。
如果你进入拥有一个卓越软工团队的公司,几乎可以保证你会迅速提高自己的技能并建立通才背景。
7.软件工程更容易转移
通过提供更全面的技术经验,当你确定需要做些转变时,软件工程可以提供更好的退出机会。
DevOps、安全性、前端、后端、分布式系统、商业智能、数据工程、数据科学……
我知道很多从软件开发转向数据科学的员工。如果你浏览了数据科学职位描述,你会立即发现里面充斥着软件开发核心技能。
如果您可以构建端到端项目,则除了为Kaggle构建模型外,你还可以做更多的事情。 您可以工业化部署该模型,设置账号和授权,然后开始向用户收费以进行访问。 这就是你自己的创业公司。
我从不认为数据科学是独门秘籍。根据数据做出决定是一项必杀技,但是随着我们越来越受到数据驱动,这也将成为每项工作的一部分。
8.机器学习将成为软件工程师的工具
随着AI的商品化和易于使用,软件工程师将开始使用AI来解决他们的问题。
我可以在下午教一位开发人员构建Sklearn分类器。这并不意味着他们可以建造下一个AlphaGo,但确实为他们提供了一种替代方法,能基于用户输入的硬编码条件逻辑方法。
数据科学家有专业知识,例如统计学和对模型如何工作的直觉。但是DevOps和安全工程师也有他们自己的专业知识。
我认为这些岗位的同多于异。经验丰富的软件专家可以在不同专业之间进行迁移,其速度比新进入者快一个数量级。
虽然我认为我们不会看到将数据科学完全融合到软件工程中,但能感觉数据科学可能会成为另一个软件工程专业。
9.人工智能不能取代软件工程师
听起来很愚蠢,因为我担心AI造成其他工作过时,所以在2014年我进入软工领域工作。
![img](https://tva1.sinaimg.cn/large/007S8ZIlly1gekyylavymj312w0mfdjj.jpg)
从那以后,AI几乎没有移出特定环境。技术的采用速度慢,而AI的应用范围比媒体想象的要窄。
与其他专业相比,机器学习距离软件工程自动化的范围更远。虽然我们有一些初创公司正在开发利用AI自动编写代码的出色产品,但编写代码并不是真正的工作,真正的工作是使用技术解决问题。在出现新的技术革命之前,这仍然是一项宝贵且高薪的能力。
三、总结
首先,上述观点是一家之言。其次,我意识到我把数据科学家、机器学习工程师和AI研究人员混为一谈。但是我认为这些观点仍然值得考虑,因为这是你的职业生涯选择。
不要太当真。我希望你能进行研究并做出自己的决定。毕竟,这是成为数据科学家的一部分。
归根结底,我们通过解决问题而得到报酬。