软件开发人员正在使用人工智能来帮助编写和审查代码、检测错误、测试软件和优化开发项目。这种帮助正在帮助公司更有效地部署新软件,并使新一代开发人员能够更轻松地学习编码。
这些是德勤最近发布的软件开发中人工智能报告的结论,并在福布斯最近的一篇文章中进行了总结。作者DavidSchatsky和SourabhBumb描述了一系列公司如何在过去18个月中推出了数十种人工智能驱动的软件开发工具。在截至2019年9月的一年中,初创公司筹集了7.04亿美元,市场正在增长。
新工具可用于帮助减少击键次数,在编写软件时检测错误,并自动执行确认软件质量所需的许多测试。这在越来越依赖开源代码的时代很重要,开源代码可能会带来错误。
虽然有些人担心自动化可能会夺走程序员的工作,但德勤的作者认为这不太可能。
“在大多数情况下,这些人工智能工具正在帮助和增强人类,而不是取代他们,”沙茨基说。“这些工具正在帮助实现编码和软件开发的民主化,允许没有经过编码培训的个人填补人才缺口并学习新技能。还有人工智能驱动的代码审查,在您运行代码之前提供质量保证。”
Forrester在2018年的一项研究发现,37%的软件开发公司正在使用由人工智能驱动的编码工具。现在这个百分比可能会更高,因为Tara、DeepCode、Kite、Functionize和DeepTabNine等公司以及许多其他公司都提供自动化编码服务。
成功似乎正在加速这一趋势。Schatsky表示:“除了降低成本和时间之外,许多实施这些人工智能工具的公司还看到了最终产品质量的提高。”
德勤的研究表明,人工智能可以帮助缓解有才华的开发人员长期短缺的问题。去年,糟糕的软件质量使美国组织损失了大约3190亿美元。人工智能的应用有可能缓解这些挑战。
德勤认为人工智能在软件开发的许多阶段都有帮助,包括:项目需求、编码审查、错误检测和解决,更多的是通过测试、部署和项目管理。
IBM工程师从Watson项目中学习人工智能开发课程
位于北卡罗来纳州罗利市的IBM杰出工程师BillHiggins在该公司从事软件开发工作20年,最近在Medium发表了一篇关于人工智能对软件开发影响的报告。
组织需要“忘记”他们过去如何开发软件的模式。“如果一个人很难适应,那么公司要适应就难上百万倍,”作者说。
Higgins是IBM在Watson小组内的人工智能forDevelopers任务的负责人。“事实证明,我对人工智能缺乏个人经验是一种资产,”他说。他必须经历自己的学习之旅,从而对需要适应的开发人员获得更深入的理解和同情。
为了了解软件开发中的人工智能,希金斯说他研究了其他人如何应用它(问题空间)以及使用人工智能优于替代方案的案例(解决方案空间)。这对于理解什么是可能的和避免“神奇的思维”很重要。
作者说他的旅程是他在宾夕法尼亚州立大学获得计算机科学学位后所做的最紧张和最困难的学习。“我很难重新思考从经验中改进的软件系统,而不是只做你告诉他们做的事情的软件系统,”他说。
IBM开发了一个概念模型来帮助企业思考基于人工智能的转型,称为人工智能阶梯。梯子有四个梯级:收集、组织、分析和注入。大多数企业拥有大量数据,通常在孤立的IT工作或收购中进行组织。一个给定的企业可能有20个数据库和三个数据仓库,其中包含有关客户的冗余和不一致的信息。订单、员工和产品信息等其他数据类型也是如此。“IBM推动人工智能阶梯从概念上爬出这个泥潭,”希金斯说。
在注入阶段,该公司致力于将经过训练的机器学习模型集成到生产系统中,并设计反馈循环,以便模型可以继续从经验中改进。注入人工智能的一个例子是Netflix推荐系统,它由复杂的机器学习模型提供支持。
IBM已确定将API、预构建的机器学习模型和可选工具组合起来,以封装、收集、组织和分析常见机器学习领域的人工智能阶梯梯级,例如自然语言理解、与虚拟代理的对话、视觉识别、语音和企业搜索。
例如,沃森的自然语言理解变得丰富而复杂。机器学习现在擅长理解语言的许多方面,包括概念、概念之间的关系和情感内容。现在,NLU服务和基于机器学习的自然语言处理的研发可以通过优雅的API和支持的SDK提供给开发人员。
“因此,开发人员今天可以开始在他们的应用程序中利用某些类型的人工智能,即使他们缺乏数据科学或机器学习方面的任何正式培训,”希金斯说。