关键要点

  • 当与强大的上下文和验证机制结合使用时,人工智能工具可以加速开发过程。当团队提供清晰的结构并通过测试和人眼进行验证时,人工智能工具的效果最佳。
  • 人工智能正在改变开发人员的角色:从代码的编写者转变为系统的协调者。开发人员不再需要逐行编写代码,而是负责管理人工智能生成的输出结果。不过,这也会带来新的挑战,比如“上下文工程”等问题,以确保生成式智能体能够在合理的范围内运行。
  • 虽然人工智能能够加快新员工的入职速度,但仍然存在一些限制。它可以帮助初级开发人员处理不熟悉的代码结构,但信任和长期技能提升仍然依赖于指导、运行时反馈以及良好的文化氛围。
  • 如果没有适当的上下文支持,常见的生产力指标可能会产生误导性的结果。例如,代码行数、提交次数等看似重要的指标在人工智能的帮助下可能会增加,但实际上真正有成效的生产力体现在稳定性、事故率以及代码更新频率上。
  • 文化的变革同样重要,就像技术整合一样。那些成功运用人工智能技术的团队会调整自己的思维方式、期望以及协作方式,让人工智能成为整个开发流程的一部分,而不是孤立的增效手段。

 

引言

从代码生成到自动化文档编制,人工智能已经几乎渗透到软件开发生命周期的每一个阶段。但是,除了这些炒作之外,究竟发生了什么变化呢?我们询问了一些工程师、架构师和技术领导者,关于人工智能辅助工具的出现如何改变了传统的软件开发模式,以及他们在实际应用中获得了哪些经验。

演讲者:

  • Mariia Bulycheva – Intapp公司的高级机器学习工程师
  • Phil Caldeado – Outropy公司的首席执行官
  • Andreas Kollegger – Neo4j公司的资深开发者倡导者
  • May Walter – Hud.io公司的创始人兼首席技术官

InfoQ:在你所在的团队或组织中,人工智能辅助工具的采用对软件开发流程产生了怎样的影响?这种趋势是否改变了人们对软件架构的思考方式?

Mariia Bulycheva:人工智能辅助工具显著加快了原型设计的进程,减少了重复编码任务所需的时间。这使得我们的团队能够更专注于架构决策和设计复杂的在线实验,这对于大规模复杂推荐系统的迭代改进非常重要。此外,由于可以将初步数据分析工作交给人工智能来处理,因此获取初步见解的过程变得更加快速、流畅且一致。

Phil Caldeado:确实如此。我们运营的是一个拥有大量功能的消费者互动平台。例如,最近我们需要改变调度中的时区处理方式。虽然代码修改本身只需要十行代码,但真正的难点在于要梳理数百个与调度相关的因素,了解每个因素的假设条件,然后编写单元测试来确保修改后的行为不会出现问题。原本我们认为这个项目需要六个月的时间来逐步完成,但现在有了人工智能工具后,我们可以在短时间内完成这项工作。

Andreas Kollegger:在我们整个组织里,所有员工都可以使用人工智能辅助工具。对于表面级的界面设计来说,这些工具帮助我们更快地迭代、探索新的想法,并找到新的解决方案,比如“情感编码”,从而专注于更高层次的设计和战略规划。

May Walter:人工智能辅助工具大大缩短了从创意到实际代码之间的时间差。一旦意图明确下来,迭代周期就会大幅缩短。开发人员不再只是单独编写代码,而是更像管理者——指导智能体、验证输出结果,确保需求得到满足。

InfoQ:人工智能的采用对团队的入职流程有什么影响?你所在团队或组织的初级开发人员是否也受到了人工智能在软件开发过程中的影响?

Mariia Bulycheva:人工智能工具可以通过提供即时的代码示例、文档摘要以及测试建议等方式,有效帮助初级开发人员学习。对于那些从事个性化处理和推荐系统等领域的工作来说,这一点尤其有帮助,因为现在初级开发人员可以更快地探索新的代码库,而不必总是依赖经验丰富的工程师的指导。同时,我们会让他们与更有经验的同事一起工作,以确保他们不仅学会基本的建模和系统设计原则,还能掌握一些实用的技巧。

Phil Caldeado:我们刚刚看到,暑期实习生们展示了他们的项目,几乎每个人都认为人工智能是他们的重要帮手。要进入一个有着数千个组件的Rails代码库是非常困难的。但是,如果可以使用Cursor或Claude Code这样的工具,那么就可以在短时间内完成任务,而无需花费数月时间来学习和测试这些知识。

Andreas Kollegger:在我们整个组织里,所有员工都可以使用人工智能辅助工具。对于表面级的界面设计来说,这些工具帮助我们更快地迭代、探索新的想法,并找到新的解决方案,从而让人工智能辅助工具成为我们构建复杂环境时不可或缺的一部分。

May Walter:人工智能降低了参与的门槛。现在,新的开发人员甚至可以在第一天就写出可用的代码——这与过去早期工作仅限于编写样板代码或修复错误的情况相比,是一个巨大的进步。但真正的机会并不在于速度,而在于深度和能力的范围。

InfoQ:你们有没有测量过人工智能辅助开发对团队或组织的生产力或质量的影响?你们学到了什么?

Mariia Bulycheva:我们在模板代码和单元测试的生成方面看到了明显的工作效率提升,甚至在为推荐系统设置模拟实验方面也是如此。然而,在处理涉及客户体验的关键系统时,只有当人工智能辅助与深入的工程师参与相结合时,才能真正发挥其作用。我们了解到,虽然人工智能提高了生产力,但质量仍然取决于严格的验证过程,包括明确的指标和测试。

Phil Caldeado:目前还没有正式的测量数据。说实话,我不太相信那些所谓的“生产力”数字。在软件领域,人们可以随意调整指标,而人工智能的炒作则使得这种情况更加严重。人们为了筹集资金或提高股价而认真计算代码行数,真是令人尴尬。

Andreas Kollegger:在人工智能的早期阶段,我们成立了人工智能伦理委员会,由来自各个部门的代表组成,以便更好地理解和引导人工智能对我们业务的影响。所有的技术都可能是有益的,但它也需要有意识的思考、行动和指导。

May Walter:最大的变化并不是技术上的,而是文化上的。开发人员通常会独立地使用工具,但如果把人工智能当作一种个人化的生产力工具的话,那它就无法发挥出应有的效果。只有当人工智能成为共同工作流程的一部分时,它才能发挥作用。此外,即使没有上下文的情况下,人工智能工具也不会失败,但它们可能会产生不准确的结果,这会损害用户的信任感,增加工作的难度。

InfoQ:为了让人工智能工具得到有效利用,你的团队或组织不得不做出哪些非技术方面的改变?

Mariia Bulycheva:最大的改变是思维方式的转变。团队必须不再期望人工智能的建议都是“正确的”,而是将其视为需要仔细验证的起点。这种文化上的转变鼓励了实验性和跨学科的合作,取代了那种对确定性的依赖,转而追求探索性。在大规模的个性化工作中,我们还需要与产品和法律团队合作,确保数据的使用和可复制性符合规定。这些协议为工程师提供了安全的空间,让他们可以安全地尝试和使用人工智能辅助的解决方案。

Phil Caldeado:目前还处于初期阶段,所以我们一直在尝试不同的保障措施和工具。在安全性和合规性方面,我们从一开始就非常明确:作为一家为世界顶级品牌提供服务的公司,我们必须像对待其他任何技术一样,对人工智能编码工具进行严格的管理。几年前,这可能意味着落后一步,但如今大多数供应商都有成熟的企业级解决方案,所以我们可以放心地使用最先进的人工智能模型,而不会影响到安全性或审计性。

Andreas Kollegger:大型企业软件可以提供防止人工智能生成错误的保护措施,但是更高的准确性、上下文和可追溯性才是使人工智能的输出结果可以被解释和验证的关键因素。这就是为什么我们采用了广泛的测试方案,从单个单元测试到全面的生产级验证。

May Walter:人们对人工智能输出的信任是需要建立的,而唯一的方法就是提供上下文。所有由人工智能生成的变化都必须经过与人类编写的代码相同的标准——审查、测试、验证。只不过,还有一点额外的要求:它必须在运行时证明自己是正确的。

InfoQ:你认为软件开发团队在人工智能编码工具方面存在哪些低估之处?目前有哪些被过度夸大的人工智能辅助开发流程或模型,而哪些则没有得到充分利用?

Mariia Bulycheva:许多团队低估了上下文管理的重要性,因为人工智能的有效性取决于所提供的上下文(代码库、文档、架构、在线测试的试验设置)。在大型系统中,这意味着不仅要收集代码片段,还要收集模型性能数据、日志和实验历史记录,以有效地指导人工智能工具的使用。被过度夸大的做法包括“一键式开发”,即认为人工智能可以替代工程判断。而那些没有得到充分利用的做法则是,人工智能辅助的调试、实验设置和复杂机器学习工作流程的文档化,这些都可以大大降低长期的维护成本。

Phil Caldeado:目前人工智能领域有很多空洞的炒作,很难挑出哪一个是问题所在。但大多数团队都低估了一个事实:人工智能编码工具不是一次性就能解决问题的工具。你不能仅仅通过提示来期望得到一致且正确的结果。

Andreas Kollegger:许多软件开发团队低估了人工智能编码工具在简化开发人员最不喜欢的任务方面的能力,比如编写测试和文档。虽然人工智能编码演示听起来很简单,但实际上它们并不能真正解决复杂的问题。同样,也有专门的编码工具用于项目的初始化和代码生成。

May Walter:大多数人低估了一个事实,那就是模型本身已经足够好了,而且还在不断改善中。缺失的是组织层面的上下文。等待更好的模型是一种干扰。真正的挑战在于设计出能够提供所需上下文的系统,从而生成高质量的代码。如果没有这个上下文,即使是最好的模型和工程师也无法取得好的成绩。

InfoQ:你认为软件开发团队在人工智能编码工具方面存在哪些低估之处?目前有哪些被过度夸大的人工智能辅助开发流程或模型,而哪些则没有得到充分利用?

Mariia Bulycheva:许多团队低估了上下文管理的重要性,因为人工智能的有效性取决于所提供的上下文(代码库、文档、架构、在线测试的试验设置)。在大型系统中,这意味着不仅要收集代码片段,还要收集模型性能数据、日志和实验历史记录,以有效地指导人工智能工具的使用。被过度夸大的做法包括“一键式开发”,即认为人工智能可以替代工程判断。而那些没有得到充分利用的做法则是,人工智能辅助的调试、实验设置和复杂机器学习工作流程的文档化,这些都可以大大降低长期的维护成本。

Phil Caldeado:目前人工智能领域有很多空洞的炒作,很难挑出哪一个是问题所在。但大多数团队都低估了一个事实:人工智能编码工具不是一次性就能解决问题的工具。你不能仅仅通过提示来期望得到一致且正确的结果。

Andreas Kollegger:许多软件开发团队低估了人工智能编码工具在简化开发人员最不喜欢的任务方面的能力,比如编写测试和文档。虽然人工智能编码演示看起来很简单,但实际上它们并不能真正解决问题。同样,也有专门的编码工具用于项目的初始化和代码生成。

May Walter:大多数人低估了一个事实,那就是模型本身已经足够好了,而且还在不断改善中。缺失的是组织层面的上下文。等待更好的模型是一种干扰。真正的挑战在于设计出能够提供所需上下文的系统,从而生成高质量的代码。如果没有这个上下文,即使是最好的模型和工程师也无法取得好的成绩。

InfoQ:你认为软件开发团队在人工智能编码工具方面存在哪些低估之处?目前有哪些被过度夸大的人工智能辅助开发流程或模型,而哪些则没有得到充分利用?

Mariia Bulycheva:许多团队低估了上下文管理的重要性,因为人工智能的有效性取决于所提供的上下文(代码库、文档、架构、在线测试的试验设置)。在大型系统中,这意味着不仅要收集代码片段,还要收集模型性能数据、日志和实验历史记录,以有效地指导人工智能工具的使用。被过度夸大的做法包括“一键式开发”,即认为人工智能可以替代工程判断。而那些没有得到充分利用的做法则是,人工智能辅助的调试、实验设置和复杂机器学习工作流程的文档化,这些都可以大大降低长期的维护成本。

Phil Caldeado:目前人工智能领域有很多空洞的炒作,很难挑出哪一个是问题所在。但大多数团队都低估了一个事实:人工智能编码工具不是一次性就能解决问题的工具。你不能仅仅通过提示来期望得到一致且正确的结果。

Andreas Kollegger:许多软件开发团队低估了人工智能编码工具在简化开发人员最不喜欢的任务方面的能力,比如编写测试和文档。虽然人工智能编码演示看起来很简单,但实际上它们并不能真正解决问题。同样,也有专门的编码工具用于项目的初始化和代码生成。

May Walter:大多数人低估了一个事实,那就是模型本身已经足够好了,而且还在不断改善中。缺失的是组织层面的上下文。等待更好的模型是一种干扰。真正的挑战在于设计出能够提供所需上下文的系统,从而生成高质量的代码。如果没有这个上下文,即使是最好的模型和工程师也无法取得好的成绩。

Comments are closed.