过去一年,我的日常工作发生了一种我仍在试图理解的变化。我依然是一名工程师,依然设计系统、阅读代码、排查故障、审查实现,有时也亲手构建一些东西。但我写的代码比过去少了很多,这让我感到有些别扭。

在职业生涯的大部分时间里,产出软件就是我完成工作的可见证据。你遇到一个问题,设计一个解决方案,写出代码,然后一个早上还不存在的东西,到了晚上就存在了。努力和产出之间有着非常直接的关系。如今,这种关系正在消失。

打开网易新闻 查看精彩图片

实现不再是难题

我周围很大一部分实现工作,现在可以由AI生成。不是完美地、不是自主地、也不是无人监督地,但成本低到让“第一版实现”越来越不再是困难的部分。如果我需要一个API端点、一次数据迁移、一个数据转换、一套测试、一个集成,或者一些内部工具,我可以描述问题、提供足够的上下文,然后很快得到一个看起来合理的实现。

昂贵的部分从之后才开始:它真的能工作吗?

不是简单地问“代码能跑吗”或“测试能过吗”。真正的问题是,这个功能在我们真正关心的各种情况下,行为是否正确。这个问题已经慢慢成为我工作中大得多的一部分,也改变了我对自己价值的思考方式。

从“如何实现”到“如何失败”

一年前,我花更多时间思考如何实现某件事。现在我花更多时间思考它可能如何失败。当模型收到我们未预料到的输入时会发生什么?当两个组件意见不一致时?当一个看似好的答案包含了错误的证据时?当评估器本身有偏见时?当模型在95%的情况下成功,但剩下的5%恰好包含了业务真正关心的失败时?当回退机制悄悄改变了供应商、区域、延迟、成本或行为时?当一切返回HTTP 200但系统仍然是错的时?

实现往往不再是困难的智力问题。故障检测才是。故障预防才是。定义“好到可以发布”到底意味着什么才是。

这造成了一种奇怪的倒置。几十年来,软件工程把测试和验证视为实现的下游环节。先构建东西,然后有人检查它是否工作。在AI系统中,我越来越感觉到相反的情况。生成实现正在变得更便宜,而知道你是否应该信任它正在变得更昂贵。

“检查别人工作”的错觉

这周,在我休完假之后,团队让我为一个功能做一个新的评估器。乍一看,这听起来几乎像是QA工作,我承认我内心有一部分对这个想法有抵触。我花了多年学习如何构建软件。我是不是正在慢慢变成那个检查别人工作的人?

但我认为这种解读错过了重点。