这是一篇评论文章。这也是有偏见的。我认为,如果有更多的通才和创造者(而不是专家)构建事物和解决问题,世界将会变得更美好。在过去五年中,机器学习变得更加容易。与此同时,软件工程比以往任何时候都更加复杂。对于软件工程师来说,这是一件了不起的事情。但不适用于机器学习专家。这是ML向软件工程和数据科学向数据分析的演变。机器学习工具变得越来越容易获得随着ML的进步和云服务市场的增长,理解算法的价值在下降。曾几何时,我们手工编写算法。然后Sklearn允许在几行代码中做同样的事情。原始TensorFlow很难使用。Keras让这一切变得简单。谷歌、微软和亚马逊现在都提供在云中选择、训练和调整模型的服务,然后立即在API后面提供模型。任何人都可以训练人工智能,这需要一段时间。但由于复杂性较低,它成为经验丰富的软件工程师的另一种工具。机器学习开发集中在少数几种语言中,语言是护城河。期间你了解COBOL吗?如果是,那么你就有了一份终生工作。世界金融体系依赖于它。没有人再学习COBOL。大多数机器学习都是用Python实现的,而软件开发则跨越多种语言。>https://www.tiobe.com/tiobe-index/如果每个ML工程师都有使用Python的经验,那么您将与每个ML工程师竞争。说到软件,你只能和一些使用相同技术的工程师竞争。我总是很惊讶地看到很多高薪的RubyonRails工作。它在几年前就已经过时了,但许多大公司(Shopify、Instacart、Kickstarter等)出于遗留原因仍然坚持使用它。您绝对可以而且应该学习不止一种语言。成为一名优秀的软件工程师取决于此。软件工程包含范围更广的技能我们希望软件工程师至少对所有事情都有一定的了解。>速写后端工程师仍然知道浏览器是如何工作的。前端工程师有一些数据库概念。两者都可以防止SQL注入等安全漏洞。对软件有透彻的了解,转专业更容易。它还使您能够构建端到端的解决方案。广泛的技能组合使软件工程师更适合模棱两可的环境。随着需求的增长,软件工程师通常会求助于数据科学。相反,数据科学家不太可能开发软件。随着人们开始将其视为硬编码条件逻辑的替代方案,我们将看到更多的软件工程师致力于ML。成为一名称职的全栈开发人员需要很多年,并且需要掌握许多独立的技能。优化数据库、构建API微服务和构建响应式前端几乎没有共同点。它们可以用3种不同的语言实现。在这些领域,我们几乎看不到任何自动化。与之形成鲜明对比的是,全栈ML工程师现在正在完成越来越强大的AutoML,为此我可以编写SOP并将训练分类器委托给实习生。软件工程技能集中的所有组件都将消失还需要一段时间。机器学习不是产品,而是对产品的补充(通常)少数公司将AI作为其核心产品,但大多数公司使用AI来补充现有产品。Medium可以使用机器学习来获得文章推荐,但核心产品是一个写作/发布平台。有趣的是,大多数公司将ML用于简单和相似的用例。这使得单个公司可以轻松地将上述用例作为SaaS产品提供。然后突然之间,初创公司不再需要内部构建。基础设施变得异常复杂AWS已经扩展到200多种不同的云服务。Heroku在云中运行应用程序的PaaS方法非常棒。但是在任何规模上都会变得非常昂贵。所以现在我们有了一个全新的云堆栈来管理(网络、数据库、服务器),少量的钱会打开巨大的安全漏洞。有一个完整的开发子集称为“云工程”,其工作是让软件在AWS、GCP或Azure上运行。在较小的公司中,基础架构通常落入高级开发人员的手中。这是很复杂的事情。但这也意味着工作和难以复制的技能。前端开发是不断发展的单独掌握前端开发是一门技能。当我开始开发时,可以使用jQuery构建响应式前端。然后公司转向Angular或React。Angular成为Angular2(具有重大更改)。React从类转移到功能组件并添加了钩子。上述所有框架/库都以根本不同的方式工作。有几家公司致力于基于模型自动生成前端。但同事们的共识是,他们距离生产质量还有很长的路要走。前端开发的技术实力,加上像素的完美感,瞬间让人惊叹。结论软件开发很复杂,涉及各种各样的问题。这种复杂性有利于就业。但更重要的是,广泛的技能组合增强了端到端的问题解决能力。要建立一个赋予普通人解决自己社区问题的能力的社会,软件工程是一个很好的起点。有机器学习的地方吗?绝对地。但是学习软件工程,解决问题比训练模型更重要。做事。解决这个问题。
