管理AI生成的代码:保持工程完整性的策略

从实现到监督的转变

AI在软件开发中的快速采用从根本上改变了工程师的角色,使许多人从直接实现转向类似于工程经理或产品负责人的角色。当AI生成代码的速度超过人类审查的速度时,传统上理解每一行代码的期望就变成了瓶颈。工程师们现在发现,他们的价值在于定义架构、设定需求和建立保障措施,而不是编写语法。

保持代码质量的策略

为了降低交付“黑盒”代码的风险,经验丰富的工程师正在采用几种经过验证的工作流程:

  • 设计优先开发: 工程师不是让AI生成整个系统,而是自己创建抽象和参与者的层次结构。通过在高层次上定义架构,AI被限制为填充已知结构内的实现细节。
  • 对抗性测试: 由于代码审查对于大量AI生成的输出变得越来越无效,工程师们将重点转向自动化测试、模糊测试和变异测试。许多人建议让AI编写测试,然后由人类验证,或者使用对抗性AI来审计代码中的漏洞。
  • 可观测性和回滚: 在代码复杂或生成速度快的环境中,工程师们优先考虑运行时可观测性。通过实施强大的监控、警报和回滚到稳定状态的能力,团队可以管理交付他们不完全理解的代码的风险。
  • 迭代细化: 工程师们不把AI输出视为最终结果,而是将其作为起点。通过在生成代码之前迭代功能设计文档和实施计划,他们确保AI与业务目标和架构标准保持一致。

隐性知识的作用

批评“氛围编码”方法的人认为,失去阅读和调试代码的能力是工程技能的严重退化。许多讨论参与者强调,编码所花费的5-10%的时间是让工程师扎根于系统现实的关键。没有这种隐性理解,工程师可能在生产中断期间难以调试关键问题。

“我原本会花在输入代码上的时间,现在用来测试代码。我非常喜欢探究事物,确保我的理解和现实相符。用你最喜欢的编码助手来迭代设计是很容易的,而这是你变得极度挑剔并确保得到你想要的东西的机会。” — jrockway

将AI作为团队管理

许多工程师现在将AI代理视为需要监督的初级开发人员。这种转变反映了首席工程师的职业道路,他们通常监督由他人设计和构建的系统。成功应对这一转变的人的共识是,责任仍然在于人类设定标准、批准架构并确保最终产品满足安全和质量要求。正如一位评论者所指出的,目标不是停止使用AI,而是通过建立确保AI生成的代码符合既定标准的系统来“帮助塑造未来”。

Sources

相关