AI对开发过程的替代性

在过去一年投入人工智能辅助开发之后,虽然大家说使用了人工智能之后工作效率显着提高,但我们日常使用的实际软件似乎并没有明显改善。所以问题出现在哪里?

使用场景

目前团队AI使用主要在以下方面:

  • 代码补全和建议
  • 执行复杂的重构任务
  • 生成测试和文档
  • 作为“结对程序员”来解决问题
  • 从设计或粗略概念开始
  • 使用AI生成完整的初始代码库
  • 只需数小时或数天而不是数周即可获得工作原型
  • 专注于快速验证和迭代

但我们发现AI大概只能解决80%的编码,最后 20%——使软件可用于生产、可维护且健壮的部分仍然需要真正的工程知识。
随着工具的改进,这种差距可能会缩小。但就目前而言,最务实的做法是利用人工智能来加速学习,而不是完全取代它。
总结下来主要用途是

  • 为经验丰富的开发人员提供原型加速器
  • 为那些致力于理解发展的人提供的学习辅助工具
  • 用于快速验证想法的 MVP 生成器

现有缺陷

大语言模型很容易轻信,它会照单全收你告诉它的一切。这就暴露出一个关键问题:如果一个决策辅助系统连真假都分不清,它还能发挥多大作用?无论是旅行顾问、生活助手,还是研究工具,都会因为这个缺陷而大打折扣。最近就有一个现成的例子:谷歌搜索闹了个大乌龙,它把粉丝创作网站上一个虚构的《魔法满屋 2》剧情,当成了真实电影来介绍。

使用 Cursor 或 Copilot 等人工智能工具工作时,可以在几分钟内构建整个功能,并完成测试和文档。但我们需要不断地添加处理 AI 遗漏的边缘情况、 质疑架构决策、添加全面的错误处理。换句话说,我们需要运用多年来之不易的工程智慧来塑造和限制人工智能的输出。人工智能正在加速其实施,但我们的专业知识使代码保持可维护性。初级工程师经常会错过这些关键步骤。他们更容易接受人工智能的输出,从而产生了“纸牌屋代码”——它看起来很完整,但在现实世界的压力下崩溃了。

所以出现了一个知识悖论,人工智能工具比初学者更能帮助经验丰富的开发人员。人工智能就像你的团队中有一个非常热心的初级开发人员。他们可以快速编写代码,但需要不断的监督和纠正。你知道的越多,就越能指导他们。
这就产生了我所说的“知识悖论”:

  • 有经验的人使用AI来加速他们已经知道如何做的事情
  • 初学者尝试使用AI来学习该做什么,但初学者并不知道AI提供内容的正确性,如果出现问题也是依赖AI解决,陷入了依赖循环

所以现阶段我们应该通过以下方式去使用AI辅助编程

  • 使用 AI 进行快速原型设计
  • 花时间了解生成的代码是如何工作的
  • 学习基本的编程概念以及人工智能的使用
  • 逐步打好知识基础
  • 使用人工智能作为学习工具,而不仅仅是代码生成器

总结

我从使用这些工具中获得的关键是,未来并不是人工智能取代开发人员,而是人工智能成为能力越来越强的合作者,可以采取主动,同时仍然尊重人类的指导和专业知识。人工智能并没有让我们的软件显着变得更好,因为软件质量也许从来都不是主要受到编码速度的限制。软件开发的困难部分——理解需求、设计可维护的系统、处理边缘情况、确保安全性和性能仍然需要人类的判断。
人工智能所做的就是让我们更快地进行迭代和实验,从而有可能通过更快速的探索找到更好的解决方案。但前提是我们保持我们的工程质量并使用人工智能作为工具,而不是良好软件实践的替代品。请记住:目标不是更快地编写更多代码。这是为了构建更好的软件。如果使用得当,人工智能可以帮助我们做到这一点。但我们仍然需要了解“更好”的含义以及如何实现它。

尽管面临这些挑战,我对人工智能在软件开发中的作用持乐观态度。关键是要了解它的真正用途:

  • 加速已知,人工智能擅长帮助我们实现我们已经理解的模式。这就像有一个无限耐心、打字速度非常快的结对程序员。
  • 探索可能性,人工智能非常适合快速构建想法原型并探索不同的方法。这就像有一个沙箱,我们可以在其中快速测试概念。
  • 自动化例程,人工智能极大地减少了花在样板文件和日常编码任务上的时间,让我们能够专注于有趣的问题。
发表评论

相关文章