写点什么

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

  • 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:021560
用户头像
陈思 InfoQ编辑

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

关注

评论

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

跟随杠精的视角一起来了解Redis的主从复制

leonsh

redis redis高可用 redis主从

前端: 如何快速将应用封装成js-sdk?

徐小夕

Java 大前端

精心总结C++智能指针用法详解(完整版)附带视频讲解

ShenDu_Linux

c++ 程序员 指针 智能指针

PGAS模型编程语言

星际行者

盖洛普

成周

甲方日常 60

句子

工作 随笔杂谈 日常

极客大学 - 架构师训练营 第十一周作业

9527

【Linux开发】编写属于你的第一个Linux内核模块

程序员小灰

c++ Linux 后台开发 架构师 服务器开发

这次我让你彻底弄懂 RESTful

yes

RESTful

线程池ForkJoinPool简介

Java老k

Java 线程池 forkjoin

一文带你彻底了解Java异步编程

Java老k

Java 响应式编程 reactor 异步编程

聊聊OpenAPI Specification(OAS)

尤利西斯的微笑

全栈工程师 软件设计 swagger OpenAPI

年轻人不讲武德,竟然重构出这么优雅后台 API 接口

楼下小黑哥

重构 Spring MVC

《机器学习》By:周志华,PDF免费下载

计算机与AI

学习

《华为数据之道》读书笔记:第 9 章 打造“安全合规”的数据可控共享能力

方志

大数据 数据中台 数据安全

架构师 3 期 3 班 -week2- 总结

zbest

总结 week2

想了解表格问答,我们先看看TA的前世

华为云开发者联盟

数据库 规范 表格

每一位程序员都应该保存的计算机网络总结,哪怕你刚进大学

996小迁

Java 架构 面试

架构师训练营W07作业

Geek_f06ede

区块链数字物流应用落地解决方案

t13823115967

区块链落地 区块链+ 数字物流应用落地解决方案

智能视频监控的发展和优势

anyRTC开发者

安全 监控 音视频 WebRTC RTC

美团T8级架构师剖析Spring Boot源码:日志、缓存、消息、Web服务等

Java架构追梦

Java 源码 架构 微服务 springboot

云上看警博会黑科技,得益于华为云打造的“云之盾”

脑极体

学Linux到底学什么?未来职业到底是怎么样的?

Linux服务器开发

Linux 后端 Linux服务器 底层应用开发 web服务器

写了一套优雅接口之后,领导让我给大家讲讲这背后的技术原理

楼下小黑哥

spring 重构

万字长文深度剖析面向对象的javascript

程序那些事

Java nodejs 程序那些事 面向对象js

AWS IoT Greengrass设计解析

soolaugust

边缘计算 工业4.0 工业物联网 iiot

面试官问我:Object o = new Object() 占用了多少个字节?

moon聊技术

JVM Java虚拟机 JVM虚拟机原理

30分钟玩转「正则表达式」

Yano

正则表达式

Spring 源码学习 03:创建 IoC 容器的几种方式

程序员小航

spring 源码 ioc 源码阅读

go-zero 之 rest 实战与原理

万俊峰Kevin

RESTful api 网关 microservice Go 语言

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