为什么更快的人工智能编码意味着更难的工程
公司应该谨慎制定预算,好像人工智能已经给了他们更大的路线图,也给了他们更少的工程专业知识需求。

来源:MagicMore / Shutterstock
我们一直在问人工智能是否可以提高开发人员的生产力,但这是错误的问题。相反,我们应该问当它发生时会发生什么。当然,所有这些生产力的提高都是好事,但也可能是坏的。
Simon Willison在最近的一篇文章中明确了这一点。“我花在编码代理上的时间越多,我就越相信他们让软件工程变得更加困难。”等等,什么?他为什么这么说?因为从他们身上获得最大的需要“非凡的纪律和知识”。
这不是对人工智能编码的谴责。如果你读过Willison超过一毫秒,你就知道他是粉丝。事实上,在他的帖子中,他明确地颂扬了工具使之成为可能。然而,一位受访者显然忽略了这一点,他警告说,如果没有深厚的专业知识,就很难区分正确的输出和合理的废话。Willison的回应?“你的观点和我完全一样。”
这不仅仅是重新定义熟悉的领域(人工智能仍然需要经验丰富的工程师来强加这一纪律)。这是不一样的。毕竟,更快的实施并不会自动创造额外的人力。是的,它可以改变人们尝试的工作,他们必须做出的决定,以及对工作的期望。但一个团队可以交付更多,但仍然发现工作要求更高。两者都可能是真的。
公司应该谨慎制定预算,好像人工智能已经给了他们更大的路线图,也给了他们更少的工程专业知识需求。更快的编码是一种无合金的商品,这一点还不清楚。
更快和更容易是不一样的
在回复中,一位读者Hillel说得很整齐:“它不会变得更容易,你只是变得更快。”杰弗里·亨特利(Geoffrey Huntley)表示同意,他形容这项工作即使对有经验的操作员来说也“非常累”。他报告说,在过去的12天里,每天大约16小时,并明确指出这是他的选择,而不是工作上的要求。资格很重要,因为这些评论不是对开发人员生产力的代表性衡量,也不是代理不可避免地耗尽每个人的证据。它们只是人们热情地使用工具的观察。热情是故事的一部分。随着更多成为可能,人们会尝试更多。
我之前争辩过,人工智能编码代理需要优秀的软件工程师。人工智能并没有消除对工程学科的需求。它提高了没有它的代价。但拥有专业知识和有足够的能力来应用它是不同的。
考虑一个团队使用更快的实施来承担推迟的迁移。这是对人工智能的完全合理的使用。有了人工智能,团队可以尝试一些有价值的东西,但这并不能改变这样一个事实,即迁移仍然引入了有关兼容性、客户中断以及哪些旧行为必须生存的决定。工程师现在可能会花更多时间解决这些问题,即使他们花更少的时间编写更改。
换句话说,收益是真实的,但额外的责任也是真实的。将新的、更雄心勃勃的工作量与旧的工作量进行比较,并得出结论,工程已经变得很容易错过团队用节省的时间实际购买的东西。这也不完全取决于模型的错误。更好的代理可以减少更正和验证工作。他们还可以使以前不切实际的项目成为可能。由此产生的容量有多少成为喘息空间,有多少成为另一个承诺,是组织必须做出的选择。
额外的工作变成了工作
这种担忧背后有一些研究,尽管它可能不像表面上那样无可争议。加州大学伯克利分校的研究人员Aruna Ranganathan和Xingqi Maggie Ye在一家200人的技术公司研究了人工智能的使用,为期八个月。他们的工作包括观察和跨职能部门的40多次采访。
他们看到员工扩大了他们的职责,适应了之前的暂停,并同时保持了更多工作。其中大部分是自愿的,因为人们对他们能取得的成就感到兴奋。问题是这种兴奋如何重新设定期望。正如Ye所解释的那样,“曾经的额外努力变成了标准表现。”
这是一家公司正在进行的定性研究,并不能证明人工智能让每个工作场所都更加疲惫。但它确定了生产力提升难以维持的合理方式:实验的爆发成为衡量每个人的普通工作量。
管理问题是什么算作成功。如果目标是更雄心勃勃的工作,承认团队正在将其收益花在雄心勃勃上。如果目标是降低成本,在假设节省之前,先测量完成和维护工作的全部成本。如果人们为了达到新目标而工作更长时间,一些明显的改善可能来自额外的劳动力。
我最近写了关于开发人员正在构建的用于管理编码代理的工具的文章。更好的工具可以帮助人们恢复上下文并完成工作。他们无法决定管理工作应该期待多少。一个组织良好的队列仍然可能包含不合理的工作量。
有意识地花费收益
Willison自己的工作提供了一个有用的例子,说明了富有成效的人工智能使用可以是什么样子。9月,他描述了使用几个编码代理对Datasette进行的安全审计。外部漏洞报告促使了审计,连续几轮都发现了更多问题。然后,Willison和Alex Garcia分担了工作。对于大多数问题,一个编写了测试来证明问题,而另一个则实施了修复。两个人使用不同的模型与代理人一起检查了每个问题。修复进入了主开发分支,选定的更改也应用于稳定版本。
人工智能帮助他们发现有用的工作,他们提供了一个明确的完成过程。额外的调查结果很有价值,正是因为维护者对它们采取了行动。这个帐户没有告诉我们人工智能节省了多少小时,但它确实说明了为什么仅计算发现会错过大部分成就。更长的要修复的漏洞列表可以作为更好的审计的证据,因此称其为失败是荒谬的,因为它创造了工作。假设修复它们的人突然变得不那么必要了,这同样是荒谬的。
对于工程领导者来说,这比要求人工智能编写的代码百分比再次增加,这更有助于进行对话。询问团队时间到哪里去了。客户会更早地进行更改吗?节省的实施时间是否为更深入的审计付出了代价?复习是否蔓延到晚上?这些结果截然不同,即使编码代理在这三者中看起来同样令人印象深刻。
然后允许工程师将部分收益用于降低下一个任务的要求。可靠地发现重复出现的故障、创建更清晰的界面或删除不必要的依赖关系的测试可以减少某人必须重新考虑的决定。这项工作在计划中需要空间。否则,实施速度的每一次改进都有可能被新功能消耗,而了解系统的成本不断累积。
热情的实验也不应该自动成为下个季度的人员配置假设。在将产出转化为长期承诺之前,请了解团队是否在正常工作日内(包括审查和维护)内保持了产出。人们可以选择投身于一个有趣的项目,但这并不能确定他们能经常吸收多少工作,这不应该成为没有自愿参加实验的同事的义务。
Willison正在描述值得做的苛刻工作。对于人工智能来说,这是一个比承诺软件工程将变得毫不费力更可信的案例。企业应该追求额外的能力,然后诚实地为使用它所需的人员和时间制定预算。生产力的提高属于计划一次。如果更大的路线图之所以有效,是因为工程师延长了他们的工作日,那么其中一些收益来自工程师的更多工作,人工智能只是充当任务主管。
来源:https://www.infoworld.com/article/4227238/why-faster-ai-coding-can-mean-harder-engineering.html