QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

数据科学家与软件工程师能否一人兼顾?

  • 2019-11-05
  • 本文字数:1726 字

    阅读完需:约 6 分钟

数据科学家与软件工程师能否一人兼顾?

在这篇文章中,作者试图说明软件开发人员和数据科学家这两种角色所需要的技能并不像人们所说的那样,它们其实并没有相差得那么远。


因为我有软件开发背景,所以当一些同事说一个人不能同时兼顾数据科学家和软件开发人员这两种角色时,我会感到很惊讶。此外,有很多人说数据科学家所需要的技能与软件开发人员所需要的技能是不一样的。虽然这些说法在某种程度上可能是对的,但在这篇文章中,我将试图说明这两种角色所需要的技能并不像人们所说的差得那么远。它们看起来并不像这样:



而是像这样:



事实上,数据科学也可以从软件开发领域获取经验。在本文中,我将提到一些可能会有用的实践。我的观点是,一名优秀的具备一定机器学习和人工智能知识的软件开发人员可以为企业带来极大的价值。


可能会有人问我为什么要写这篇文章。好吧,我感觉我们的行业里存在一些不好的风气。我从来都不喜欢那些所谓的“精英”人士,我也花了很多时间与那种“高高在上”的态度作斗争。在我的一个有关如何对抗焦虑、小我和过度热衷某些事物的演讲中,我就讲到了这个话题。当然,这只是我的个人观点,是基于我个人经验得出的,如果你有任何不同的想法,请在评论区留言。

简洁的代码


数据科学家都是聪明人,他们的数学能力和从不同角度看待数据的能力令人叹服。但是,有时候阅读和理解数据科学家的代码可能会是巨大的痛苦。在团队中,这可能会是一个大问题。优秀的软件开发人员学会了如何用简洁的代码来表达复杂的思想和概念。但在我看来,数据科学家在这方面还差得比较远。


另一种观点认为,编码只是数据科学家的一个临时工具。在未来,工具将朝着可视化的方向发展。这种说法在某种程度上也是对的。但即使是这样,编码也仍然是数据科学家工具箱中的一个宝贵的工具。软件开发工具也会朝着这个方向发展。例如,现在有各种 CMS 和开箱即用的解决方案可以帮我们快速创建网站。


但我们需要注意的是,这些工具究竟可以帮助我们走多远?另外,请想一想 CMS 开发人员与精通某种 JavaScript 框架的开发人员之间的薪水差异。在我看来,编码技能是必不可少的,至少在很长一段时间内是这样。在编码方面精益求精对于个人和整个团队来说都有巨大的好处。

版本管理和自动化


机器学习模型和神经网络最终会被部署到某种应用中,但有时候它们也需要进行重新训练和维护,其中一些需要额外的人工输入。软件开发人员知道在部署过程中可能会出现哪些风险,他们还知道如何通过(模型的)版本控制来降低这些风险,以及如何对部署和训练进行自动化。

数 学


之前已经说过,数据科学家具有高超的数学能力,这是毫无疑问的。但软件开发人员通常也具有扎实的数学功底,特别是那些拥有计算机科学学位的人。当然,他们很可能会把线性代数和概率论忘掉,但这个问题很容易解决。


最重要的是,优秀的软件开发人员能够快速地吸收知识,并将其应用到不同的技术中。如果一个开发人员具备了数据科学知识,他可以很容易地从 Python 转到 R 语言。

数 据


除了统计学家和数据科学家,还有谁会天天与数据打交道?是的,你们都知道我想要说的是谁。从职业生涯的第一天开始,开发人员就要学习各种存储、读取和显示数据的方法。SQL,一种可能会一直存在下去的语言,还可以转移到其他技术,如 Pandas。


除此之外,懂得如何使用 NoSQL 数据库(如 MongoDB)在近几年来也成了一项必备技能。开发人员也因此具备了大量非结构化数据方面的经验。另外,大多数软件开发人员都知道如何开发 Web 爬虫。

面向客户和演示


数据科学家需要为客户找到最佳的解决方案,并帮助他们改进业务。数据可视化和说明某些业务决策的基本原理是他们工作的组成部分。软件开发人员通常不太熟悉业务流程,但他们能够理解需求,并知道需要做些什么。技术团队负责人和软件架构师通常具备这些技能,所以在与客户的初始研讨会中,他们会显得非常有用。除此之外,如果开发人员经历过敏捷开发,他们可能会习惯于定期向利益相关者展示软件的功能特性。

结 论

在这篇文章中,我试图说明为什么软件开发和数据科学所需要的技能其实并没有相差得那么远。从软件开发到数据科学,对于优秀的软件开发人员来说应该不是什么大问题。


英文原文:


[https://rubikscode.net/2019/10/07/can-you-be-data-scientist-and-software-developer-at-the-same-time/


2019-11-05 11:021482
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 281.6 次阅读, 收获喜欢 1302 次。

关注

评论

发布
暂无评论
发现更多内容

后端开发【一大波干货知识】tcp/ip定时器与滑动窗口详解

Linux服务器开发

网络协议 TCP/IP 后端开发 Linux服务器开发 C++后台开发

实例解析网络编程中的另类内存泄漏

华为云开发者联盟

TCP 网络编程 网络 压力测试 内存泄漏

恒源云(Gpushare)_啥,还不知道咋关机?技巧大放送6!

恒源云

人工智能 GPU服务器

如何为网站建立一个FAQ页面?

小炮

FAQ

活动预告 | 对话ACE:Oracle停服俄罗斯,国产数据库未来发展

OceanBase 数据库

oceanbase

王者荣耀商城异地多活架构设计

阿卷

架构实战营

基于 KubeVela 的机器学习实践

阿里巴巴云原生

fastposter v2.7.0 发布 电商海报编辑器

物有本末

海报 fastposter 海报生成器 海报编辑器 主图编辑器

眼见为实,看看MySQL中的隐藏列!

码农参上

MVCC MySQL 数据库 4月月更

2022年IAA行业品类发展洞察系列报告:内容向APP及休闲游戏的突围

易观分析

IAA 休闲游戏

为什么要做网站SEO优化?

源字节1号

SEO优化

CentOS8安装erlang 和 RabbitMQ

阿Q说代码

4月月更 RabbitMQ安装 erlang安装

日志中台不重不丢实现浅谈

百度Geek说

后端

测试人员最佳测试管理工具

阿里云云效

阿里云 云原生 开发 测试管理 测试管理工具

如何满足一个前端对 Mock 的全部幻想

Liam

前端 Jmeter Postman Mock

银行推进人工智能技术应用时需同步考量可信AI的评估与验证

易观分析

人工智能 AI

"三高"Mysql - Mysql备份概览

懒时小窝

MySQL 高可用 MySQL 数据库

硅谷区块链公司Espresso Systems因涉嫌知识产权盗窃被起诉

西柚子

图文并茂|彻底搞懂零拷贝(Zero-Copy)技术

简说Linux内核

内存管理 Linux内核 进程管理 嵌入式开发 设备驱动

百度程序员开发避坑指南(前端篇)

百度Geek说

前端

恒源云(Gpushare)_如何获取实例SSH端口号?技巧大放送7!

恒源云

服务器 终端登录

TASKCTL-调度监控常见问题

敏捷调度TASKCTL

kettle 分布式任务调度 ETL任务 ETL系统

pip:带你认识一个 Python 开发工作流程中的重要工具

华为云开发者联盟

Python 项目管理 pip 依赖关系 包管理器

多场景实现供应链可视化,小家电产业出海焕发新活力

数商云

产业数字化 供应链 供应链系统

netty系列之:netty中的核心编码器bytes数组

程序那些事

Java Netty 程序那些事 4月月更

资产设备信息管理系统的功能

低代码小观

资产管理 CRM 企业管理系统 CRM系统 企业设备管理

一场由TiCDC异常引发的GC不干活导致的Tikv硬盘使用问题

TiDB 社区干货传送门

实践GoF的设计模式:单例模式

华为云开发者联盟

程序设计 设计模式 单例模式 GoF 共享实例

厉害!我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证!

沉默王二

Java

日志中台不重不丢实现浅谈

百度开发者中心

局部变量是线程安全的,原因是什么?

华为云开发者联盟

线程 高并发 变量 线程安全 局部变量

数据科学家与软件工程师能否一人兼顾?_AI&大模型_Rubikscode_InfoQ精选文章