今天的开发者进入门槛比以往任何时候都高。重复性任务占用了大部分软件开发时间,并且容易出错。市场上软件开发人才短缺,团队超负荷工作。许多公司既不能完全掌握现有的日益复杂的代码,也不能跟上新程序开发日新月异的步伐。对于AI爱好者来说,推测AI如何改进软件开发是令人兴奋的。人工智能能否在几天而不是几个月或几年内创建原型框架?它会教人类开发人员如何更好地编码吗?人工智能的研究范围广阔,计算机编程的灵活性基本上是无国界的,所以很难想象当智能程序可以帮助人类与代码交互时,软件开发会是什么样子。但许多开发人员和技术经理没有意识到的是,人工智能对开发团队的重要性在过去几年发生了质的飞跃。事实上,我们已经到了人工智能辅助软件开发的初级阶段。AI在自动化领域不可或缺所有软件开发组织都在追求高效、敏捷的开发,自动化技术已经能够实现规模化的敏捷开发。在过去的十年中,在进行自动化测试时,一旦代码发生变化,开发人员可以立即反馈并做出相应的调整,因此软件的质量得到了很大的提高。自动化软件管道利用机器人助手生成拉取请求以确保持续交付更新。但许多采用该技术的公司发现仅靠自动化是不够的。自动化过程中仍然存在瓶颈,大部分问题出现在新代码的创建中。例如,自动化可以快速完成数百或数千个单元测试,如果开发团队自己编写,这些单元测试可能需要数小时甚至数周才能完成。但是如果这些提交没有经过测试验证,那么自动化管道将产生垃圾。虽然它打破了原本自动化的过程,但在添加新代码(和新测试)时仍然需要人工干预。人工智能编码技术的好消息是,现有的人工智能编码技术已经可以通过自动编写测试代码来验证自动化管道的其余部分,从而同时解决这两个问题。过去,此类任务会占用开发人员的大量时间,使他们无法完成更有价值的工作,例如创建新功能。在单元测试中使用人工智能使自动化更加完善,尽管这个过程并不容易。正如人们曾经预料的那样,人工智能创建的测试与人类编写的测试之间存在差异。但是这些测试可以在很短的时间内生成,并且该功能被认为是通过的。如果它不能比人类编写的代码更好,请确保代码在出现问题时可以轻松修复。正如MartinFowler在他2006年的文章《论持续集成》中总结的那样:“经常运行的不完美测试远比根本没有编写的完美测试要好得多。”使用人工智能帮助开发人员编写代码,让开发人员和IT经理不再为时间、成本和工作质量之间的无关紧要的权衡所困扰。很多开发者在刚开始开发软件的时候很有创意,但是大量的重复性工作扼杀了他们最初的创意。人工智能辅助开发不仅可以让开发人员在不牺牲质量的情况下更快、更经济地创造新产品,还可以帮助他们快速完成重复性更高的工作。着陆是关键。金融业等非常重视代码质量的行业也开始使用人工智能来辅助软件开发。例如,高盛最近开始使用人工智能来编写代码,以提高软件开发的效率。他们利用AI工具为遗留应用程序编写了3,000多个单元测试和15,000多行代码,在几个小时内创建了完整的测试套件。人工智能工具编写测试的速度比人工编写的测试快180倍以上,后者平均每次需要30分钟。总体而言,该银行通过该技术节省了一年多的开发时间。微软还开源了Sketch2Code,它使用人工智能辅助技术帮助设计师和工程师将手绘的用户界面草图转换为可用的HTML代码。设计师和工程师对设计达成共识后,会对草图进行拍照,然后人工将草图翻译成HTML代码。这个翻译过程既费时又费力,而且会拖慢整个设计过程。于是,开发者想象如果这些手绘在白纸上的设计草图立刻反映在浏览器中会怎样?其结果是设计师在头脑风暴后可以立即拥有一个现成的原型,并得到设计师、开发人员甚至客户的验证,这可以为网站和应用程序开发节省大量时间,因此就有了Sketch2Code的诞生。Facebook在这方面也不甘落后。早在去年,该公司就开发了一款名为Getafix的工具,可以自动查找bug修复并提供给工程师审批,大大提高了工程师的工作效率和整体代码。优质的Getafix不仅可以为工程师提供直观的修复方案,还可以使用更强大的聚类算法分析问题代码的上下文,找到更合适的修复方案。这款AI辅助修复bug的软件Getafix已经部署在Facebook拥有数十亿用户的生产环境中,大大提高了应用的稳定性。人工智能辅助开发的未来值得一提。目前,人工智能辅助开发还处于非常早期的阶段。只能辅助开发者进行编码和自动化测试,无法实现大规模工业应用,编程复杂难度大。还依赖于人类开发者。但我们仍然需要这样的AI辅助技术,帮助开发者抵制那些基础的“粗活”,让他们有更多的时间和精力去完成更复杂的开发。随着人工智能技术的不断进步及其在更多案例中的成功应用,未来各行业将加大人工智能在软件开发方面的投入。全球科技巨头纷纷开源各种人工智能辅助开发工具。可见,他们想要在这一技术领域分一杯羹的野心是显而易见的。为了在竞争和规模上保持领先地位,市场参与者还需要将新的效率提升工具整合到他们的开发过程中。与此同时,人工智能辅助软件开发技术正在完成第一次迭代,让我们一窥编码技术的未来将如何演变。
