机器学习变得越来越容易,但软件工程仍然很困难

简介: 在过年的五年中,机器学习变得更容易了。与此同时,软件工程比以往任何时候都要复杂。对于软件工程师而言,这是一件好事。但对于机器学习专家而言,这并不是好事。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

作者声明:本文是一篇评论文章,仅代表本人观点。我认为当世界上有更多的通才和实干者(不只是专家)来构建事物和解决问题时,这个世界会变得更好。

在过年的五年中,机器学习变得更容易了。与此同时,软件工程比以往任何时候都要复杂。
对于软件工程师而言,这是一件好事。但对于机器学习专家而言,这并不是好事。
这是机器学习向软件工程靠拢的进程,也是数据科学向数据分析靠拢的进程。
本文由 Chris 发表在 medium.com,经原作者授权由 InfoQ 中文站翻译并分享

机器学习工具正变得越来越易用

谷歌希望让所有人,无论技术背景如何,都能很容易掌握机器学习模型的训练方法。(参见:技术民主化)
随着机器学习变得越来越容易使用,云服务的市场也在增长,而理解算法的意义也在下降。

曾经,我们需要人工实现算法。现在 Sklearn 使得同样的算法只需几行代码就能实现。

原本的 TensorFlow 很难使用,Keras 让它变得简单多了。

现在,谷歌、微软和亚马逊都提供选择模型、训练模型和调参的云服务,然后通过一个 API 就能立刻部署一个模型。
我们离人人皆可训练人工智能的时代还有一定的距离。但随着复杂性的降低,训练人工智能变成了熟练软件工程师知识体系中的一个新工具而已。

机器学习开发仅局限于几种语言

语言即是护城河。就这么简单。
你了解 COBOL 吗?如果你熟悉这个语言,你这辈子都不愁没有工作了。这个世界的金融体系都建立在这个语言之上。但现在已经不再有人学习 COBOL 了。

大部分的机器学习算法都是通过 Python 来实现的,而软件工程开发需要各式各样的语言。

5ee9bfe91facb

如果每个算法工程师都有 Python 的开发经验,那你就需要与所有算法工程师竞争。而在软件开发方面,你只需要与一部分使用同样技术栈的工程师竞争即可。

我常常会惊讶地看到很多高薪的 Ruby on Rails 开发的职位在招人。它在几年之前就已经过时了,但很多大公司(Shoptify、Instacart、Kickstarter 等等)由于历史原因还在使用它。

你肯定可以同时也必须学习多种语言,这是一名优秀的软件工程师的必备素质。

软件开发囊括更多的知识技能

我们期待软件工程师对所有领域都至少有一点了解。

5ee9bfe8b2a5c

一位后端工程师也知道浏览器如何运作,一位前端工程师对数据库也有一定的了解。他们都能避开类似 SQL 注入的安全漏洞。
如果你拥有对于软件工程的整体理解,就更容易切换所专注的领域。这同时也让你具备构建端到端解决方案的能力。
广泛的知识技能体系使得软件工程师更适用于多样的可能性。随着市场需求的增长,经常有软件工程师转到数据科学领域。与之相反的是,数据科学家通常不会开发软件。
随着人们开始认为机器学习是硬编码的条件逻辑的替代方案,我们在将来会看到越来越多的软件工程师从事机器学习工作。

成为一名优秀的全栈工程师需要好几年

并且,成为一名优秀的全栈工程师需要掌握很多互不相干的技术。
优化数据库、构建 API 微服务以及建造一个响应式的前端,三者之间几乎没有共同之处。它们可能需要通过三种不同的语言来实现。
在这些领域,我们目前几乎没有看见任何自动化方案。

相比之下,全栈算法工程师正在和越来越强大的自动机器学习(AutoML)竞争。使用 AutoML 的情况下,我甚至可以写一个标准作业流程(SoP),然后把训练分类器的工作分配给实习生。
而软件工程中所有技术都被自动化,不再需要人力参与的那一天还远未到来。

机器学习为产品添砖加瓦,但机器学习本身大多不是产品

很少有公司把人工智能作为它们的核心产品,而是使用人工智能让现有产品更加完善。
Medium 也许使用机器学习来推荐文章,但是它的核心产品是文章写作与发布的平台。
有趣的是,大多数公司将机器学习应用在简单且相似的场景。这样一来就更容易出现为这种场景提供软件即服务(SaaS)产品的企业。然后突然之间,初创企业发现自己不用再费力开发自己的方案了。
相比之下,系统基础架构的问题是极度复杂而不通用的。AWS 上在不远的将来也不会有现成的解决方案可以处理 Medium 的基础架构。

基础架构正在变得异常复杂

AWS 已经膨胀到拥有超过 200 个不同的云服务了。
使用 Heroku 的产品即服务(PaaS)方案来运行应用是一个不错的方案,但它在产品规模扩大后就变得非常昂贵。
因此,我们现在需要管理一个全新的云技术栈(网络、数据库、服务器),其中一个小失误就能导致巨大的安全漏洞。
开发工作中的一部分是云技术开发。其工作是使得软件能在 AWS、GCP 或者 Azure 上运行。
在小型公司里,基础架构的工作往往由高级开发者来负责。
基础架构是一个复杂的东西,但它同时也意味着工作机会和难以被取代的技能。

前端开发正在不断发展

能跟上前端发展的步伐本身就是一个技能。
我刚开始从事开发时,使用 jQuery 来构建响应式的前端还不算太难。随后,大量公司开始使用 Angular 或者 React。Angular 推出了 Angular 2(伴随着巨大的改变)。React 从类转移到函数组件,并添加了 hooks 函数。
以上所有的框架或者库都以完全不同的方式运作。
也有一些公司正在构建基于原型(mockup)的自动化前端。但是我的同事们一致认为,它离达到生产环境的要求还很远。
前端开发方面的技术能力需求,加上对 " 什么是像素级还原 " 的理解要求,都令人感到前端开发一时之间仍不可替代。

结 语

软件工程是复杂的,并且包含了各种各样的问题。这种复杂性有利于软件工程师的就业。
但更重要的是,这种完备的技术体系代表了能解决真实的、端到端的问题的能力。
要建立一个让普通人能解决自己所在领域问题的社会,软件工程就是一个不错的开端。
机器学习还有自己的一席之地吗?当然有。但是解决问题远比训练模型更重要。
去学习软件工程,做点东西,并且解决问题吧。

原文链接:
https://towardsdatascience.com/machine-learning-is-getting-easier-software-engineering-is-still-hard-d4e8320bc046

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-18
本文作者:Chris
本文来自:“InfoQ ”,了解相关信息可以关注“InfoQ

相关文章
|
6月前
|
机器学习/深度学习 算法 测试技术
使用机器学习优化软件开发流程
在软件开发领域,提高开发效率和质量一直是开发者们追求的目标。随着人工智能和机器学习的快速发展,我们可以利用这些技术来优化软件开发过程,进一步改善开发体验和结果。
57 1
|
11月前
|
机器学习/深度学习 人工智能 监控
如何成为机器学习工程师
机器学习工程师是一个综合要求很高的交叉学科岗位,要求从业者学习很多必要技能和工具,以应对实际项目中遇到的各种挑战。 本文能为励志成为机器学习工程师的人提供一个清晰的成长路线图。
247 1
如何成为机器学习工程师
|
11月前
|
机器学习/深度学习
「机器学习」机器学习工程师的2020 路线图
「机器学习」机器学习工程师的2020 路线图
|
11月前
|
机器学习/深度学习 算法 数据可视化
如何入门机器学习?需要学习哪些方面的知识
如何入门机器学习?需要学习哪些方面的知识
|
11月前
|
机器学习/深度学习 数据库
机器学习指导催化剂设计,提高反应的产率
机器学习指导催化剂设计,提高反应的产率
150 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习都能做些什么呢
回归问题通常用来预测一个值,其标签的值是连续的。例如,预测房价、未来的天气等任何连续性的走势、数值。比较常见的回归算法是线性回归(linear regression)算法以及深度学习中的神经网络等。 分类问题是将事物标记一个类别标签,结果为离散值,也就是类别中的一个选项,例如,判断一幅图片上的动物是一只猫还是一只狗。分类有二元分类和多元分类,每类的最终正确结果只有一个。分类是机器学习的经典应用领域,很多种机器学习算法都可以用于分类,包括最基础的逻辑回归算法、经典的决策树算法,以及深度学习中的神经网络等。还有从多元分类上衍生出来的多标签分类问题,典型应用如社交网站中上传照片时的自动标注人名功能,
103 0
|
12月前
|
机器学习/深度学习 SQL 自然语言处理
自学机器学习、数据挖掘的几点建议
自学机器学习、数据挖掘的几点建议
104 0
|
机器学习/深度学习 数据采集 人工智能
自学成才的机器学习工程师十诫
自律和自学这两个词不能掉以轻心。一个人必须对自己的教育和启蒙负责。如果你忽略它,别人就会为你做选择。
110 0
|
机器学习/深度学习 人工智能 算法
Interview:机器学习算法工程师求职九大必备技能之【数学基础、工程能力、特征工程、模型评估、优化算法、机器学习基本概念、经典机器学习模型、深度学习模型、业务与应用】(建议收藏,持续更新)
Interview:机器学习算法工程师求职九大必备技能之【数学基础、工程能力、特征工程、模型评估、优化算法、机器学习基本概念、经典机器学习模型、深度学习模型、业务与应用】(建议收藏,持续更新)
Interview:机器学习算法工程师求职九大必备技能之【数学基础、工程能力、特征工程、模型评估、优化算法、机器学习基本概念、经典机器学习模型、深度学习模型、业务与应用】(建议收藏,持续更新)
|
机器学习/深度学习 人工智能 自然语言处理
五个给机器学习和数据科学入门者的学习建议
我从没写过代码。 当人们发现我的作品,他们通常会私信并提问。我不一定知道所有的答案,但我会尽量回复。人们最常问的问题是:「该从哪开始?」,其次是:「我需要多少数学基础?」
98 0