几十年来,软件工程师的工作一直是编写代码。而在人工智能编码时代,这份工作描述还不太清晰。
我甚至不知道软件工程师应该做什么了。我们还要编码吗?我们构建系统吗?人工智能代理改变了一切,我甚至不知道该怎么想。
我不再写很多代码了。在我的日常工作中,我让 Claude 完成大部分的分析、规划和编码。我的副业项目 100% 由 Claude Code 编写,其中有些项目我甚至没有审查过代码——因为我信任 Claude,而且代码会经过其他审查流程。我仍然可以称自己为软件开发人员,但我认为我不能再称自己为程序员了。即便我扮演的是“软件开发人员”的角色,我正在做的事情也已经截然不同。编写代码与引导人工智能编写代码完全不同。当我审查自己写的代码时,与审查代理为我写的代码,体验是不一样的。
让代理编写代码,就像让另一位开发人员为你写代码,然后由你来审查。这是一种完全不同的体验。你不再需要调试拼写错误或语法错误,而是在调试代码的实际功能,然后让代理修复你发现的问题。
收益与损失
你基本上是在另一个开发人员身后看着她的工作——她不介意你微观管理她所做的一切,会毫无怨言地执行你的每一个命令。编码和迭代速度大大加快,但思路不清所带来的成本也会迅速上升。你失去了编码的体验,却换来了生产力的提升——往往是数量级的。
一些开发人员对此感到惋惜。另一些甚至没有意识到自己错过了什么。无论如何,某些东西确实被遗落了。
我正全身心投入人工智能编码,但当一切行云流水、时间仿佛融化时,我会怀念那种心流状态。当我把工作交给代理时,我会失去对代码库的深刻理解——那种理解本来自于逐行敲出每一行代码。最终,我甚至可能会失去这些年来我辛苦积累的编码技能。
没关系,因为我相信我会获得更多。有了人工智能,我一个下午就能搭建出一个可正常运行的网站。我可以构建自己经验不多的东西——我主要是一名前端开发者,现在构建后端变得轻而易举。我甚至可以用自己并不熟悉的语言来编写代码。Claude Code 写出的 SQL 比我好得多。
不断演变的角色
编码中枯燥的部分完全消失了,我可以更专注于自己喜欢的部分。例如,Claude 会按照我的要求编写大量单元测试。它甚至会在我们开始编码之前就写好这些测试,并在我们构建系统时让它们全部通过。(真的有人喜欢写单元测试吗?)
但也有潜在的问题。我很容易不加思考地认可任何符合设计预期的东西。说“这是我想做的”和“以正确的方式做我想做的事”是两码事。当一切在第一次尝试时就成功时,保持专注和警惕变成了一场斗争。
目前还不清楚软件工程师在不久的将来的职位描述会是什么样子。几十年来,这份工作一直是编写代码。但在过去几个月里,这种工作内容已经发生了变化,取而代之的是一种仍在形成中的新形态。
我们依然拥有键盘,但我们用键盘所做的事情已经悄然改变。