机器学习变得越来越容易,但软件工程照旧很困难
作者头像
  • P2P新闻
  • 2020-06-18 18:17:59 9

在过去的五年里,机器学习变得更为简便,但与此同时,软件工程的复杂性也达到了前所未有的高度。

对于软件工程师来说,这是一个积极的变化。然而,对于机器学习专家而言,这并非全是好消息。

这种变化体现了机器学习正在逐渐融入软件工程,同时也反映了数据科学领域的发展趋势。

机器学习工具正变得越来越易用。例如,谷歌致力于使任何人都能轻松掌握机器学习模型的训练方法,不论其技术背景如何。这与技术民主化的理念相契合。随着机器学习工具的普及,云服务市场随之扩大,但对于算法背后原理的理解却在逐渐减少。

过去,我们需要手动编写算法,现在借助Sklearn这样的工具,同样的算法只需几行代码即可实现。原本复杂的TensorFlow也因Keras而变得更加易于使用。如今,像谷歌、微软和亚马逊这样的科技巨头纷纷推出了各种云服务,涵盖模型的选择、训练和参数调整,用户可以通过简单的API快速部署模型。

尽管如此,要实现人人皆可训练人工智能的目标尚需时日。不过,随着技术复杂性的降低,训练人工智能已经成为了熟练软件工程师知识体系中的一个重要组成部分。

机器学习开发主要集中在少数几种编程语言上。Python是最常用的编程语言之一,但在软件工程领域,各种语言的需求仍然存在。掌握多种编程语言是优秀软件工程师的一项基本技能。

软件开发需要掌握的知识和技能更加全面。软件工程师不仅要精通自己负责的技术领域,还需要对其他相关领域有所了解。比如,后端工程师也需要了解浏览器的工作原理,前端工程师则需要具备数据库知识。这样可以帮助他们避免常见的安全漏洞,如SQL注入。具备全面的技术视野有助于工程师在不同领域间灵活转换,并能够构建出完整的解决方案。因此,软件工程师在面对多样化的工作机会时更具优势。随着市场需求的变化,许多软件工程师转向了数据科学领域,而数据科学家则较少涉足软件开发。

成为一名优秀的全栈工程师需要多年的学习和实践。全栈工程师需要掌握多种互不相关的技术,如数据库优化、API微服务构建和响应式前端设计。虽然全栈算法工程师面临着日益强大的自动机器学习(AutoML)工具的竞争,但软件工程领域的所有技术尚未达到完全自动化的程度。

机器学习的应用确实为产品增添了价值,但多数情况下,它并不是产品的核心。例如,Medium可能利用机器学习来推荐文章,但其核心业务仍然是文章创作和发布平台。大多数公司将机器学习应用于简单且相似的场景,从而催生了面向这些场景的SaaS产品。相比之下,系统基础设施的问题更为复杂且缺乏通用解决方案。因此,像Medium这样的公司很难找到现成的解决方案来解决其基础设施问题。

基础架构的复杂性正在增加。以AWS为例,它已经提供了超过200种不同的云服务。虽然Heroku的产品即服务(PaaS)方案在初期运行应用时较为便捷,但在产品规模扩大后成本会显著上升。因此,我们现在的任务是管理和维护一个新的云技术栈,包括网络、数据库和服务器等。在小型公司中,基础设施工作通常由高级开发者承担。基础架构既是一个复杂的问题,也是一个充满机遇的领域,拥有难以被替代的专业技能。

前端开发领域也在不断进步。前端开发不仅要求工程师跟上技术的发展,还要理解和实现像素级别的精准还原。尽管一些公司试图通过自动化工具简化前端开发,但目前这些工具还未达到生产环境的标准。因此,前端开发的技术要求仍然很高,短期内不太可能被完全替代。

总而言之,软件工程是一项复杂的工作,它涵盖了各种各样的挑战。这种复杂性不仅为软件工程师创造了更多就业机会,还赋予了他们解决真实世界问题的能力。要建立一个能让普通人解决自己领域问题的社会,软件工程是一个很好的起点。机器学习依然有其独特价值,但解决问题比训练模型更为重要。所以,建议大家学习软件工程,动手实践,并解决实际问题。

    本文来源:图灵汇
责任编辑: : P2P新闻
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
软件工程照旧变得困难越来越机器容易学习
    下一篇