我们不再解决问题了
Source: Dev.to
请提供您希望翻译的正文内容,我将为您翻译成简体中文。
我的开发者之旅
我已经开发了二十年:网页相关、应用程序、游戏、脚本、插件……只要我的好奇心指引,我就会去做。一直驱动我的始终是创造——把“无”变成我可以使用的东西。
我也喜欢谜题(大概和大多数开发者一样)。如何构建代码架构?如何把各部分组合在一起?当Y发生时,如何实现X?这些是我们(过去?)每天都在做的事。
这正是我喜欢开发的原因:弄清楚事物的运作方式。最近,我感觉这部分正在消失。
我的工作方式
我倾向于在写任何代码之前先思考如何让事物协同工作。早期的职业生涯中,规划常常让我在笔记本的页面和画得不太好的 UML 图中迷失。
这种思维方式也促使我不断学习:新技能、新语言,保持对最新动态的了解。
- 需要在两个应用之间发送消息?去看看某个随机大佬做的 RabbitMQ 克隆版——非常棒。
- 需要计算复杂的坐标距离?这里有一个 NPM 包,我保证它还没有被黑客入侵……目前是这样。
- 需要一个单页网站?使用 Rust:你不会出现内存泄漏。
我在开玩笑,但学习和保持与时俱进是这份工作的重要部分。
良好的环境
我很幸运能在一家在实现功能之前鼓励编写技术规格、在动手写代码前进行验证的公司工作。
这让我有了空间去:
- 深入思考。
- 与同事讨论设计。
- 共同改进项目。
它也教会我不要做得过头:客户有预算,且在某个时点,必须交付。
如今,快速迭代已成常态。但过去并非如此。
我的当前角色
随着我的资历提升,我花了很多时间进行代码审查。甚至在几个月前,这占据了我 三分之一的工作量。我也被安排时间保持最新,并通过内部通讯分享我的学习成果(供他人欣赏,或用于垃圾邮件)。
AI:工具,而非替代品
我直接说吧:我并不反对 AI。
AI 是一个很棒的工具,即使 加密联盟转变为 AI 兄弟游说团 正在试图把它塑造成别的东西。
- 和其他人一样,我会向 ChatGPT 询问我懒得去 Google 的问题。
- 我甚至让它在朋友和家人的照片上加上卡通眼睛(Google 也能做到,这是一种错失的机会),同时对其环境成本感到有点愧疚。
作为一个喜欢构建系统的人,AI 在编写我已经解决过数十次的代码时非常有用。我不在乎 CRUD、日期处理或电子邮件验证。甚至,我都不想打开 Swagger 文件去找一个 API 路由。AI 能做到这些。
我在乎的是各个部分如何组合在一起。
有一段时间,我把 AI 当作橡皮鸭使用:我会迭代想法,清晰地看到系统结构,然后使用代理一步步生成代码。在这种设置下,AI 是工具。我仍然是使用它的人。
新的“Agentic AI”工作流
最近,我的公司采用了 全代理 AI 工作流。从业务分析到代码审查,所有环节都通过内部工具完成:AI 代理、技能、指令等。
目标
- 接收客户需求并拆分为详细的使用案例。
- 将使用案例转化为技术规格说明。
- 将规格说明转化为实现步骤。
- 执行这些步骤。
- 审核生成的代码。
开发者的预期职责
| 角色 | 预期任务 |
|---|---|
| 首席开发 | • 阅读 300 行的使用案例 Markdown 文件。 • 重新提示并离开键盘去喝咖啡,直到验证完成。 |
| 首席开发 | • 阅读 500 行的规格说明。 • 重新提示并再次离开键盘,直到验证完成。 |
| 开发者 | • 让 AI 将规格拆分为任务。离开键盘。 • 让 AI 为每个任务编写代码。输入 “next” 直至完成。离开键盘。 • 让 AI 进行审查、修复并提交。离开键盘。 |
妻子: “你今天做了什么?”
我: “我整天在和一个通过图灵测试的 LLM 对话,只在说 ‘next’。”
缺少了什么?
没有弄清楚的过程。没有解谜。甚至可以说几乎不需要思考——只是在照看 AI。
当然,如果出现异常,你可能会介入。在仅使用此工作流的最初几周,你会纠正方向(调整提示,修正输出)。但你不再真正参与问题本身。
后果
- 你会对代码失去了解。
- 你的大脑变得懒惰;你会忽视问题(例如,客户随意挑选的颜色被忘记)。
- 更快交付且少动代码意味着整个团队在不了解系统的情况下添加代码。
- 当你加入一个从未参与的项目时,你会阅读规格说明,但并不知道系统的全局行为。
- 随着时间推移,你会过度信任 AI 的话。
即使你拥有出色的提示技巧,也无法把所有信息塞进一个提示或上下文窗口。客户在会议上随口提到的、将在 v2 中出现的功能?AI 并不在场。是你在场。 只有你能塑造系统,使得未来的更改不会把一切弄崩——至少,你过去是这么做的。
棺材上的最后一根钉子
两条来自我的团队负责人和 universally‑beloved‑scrum‑… 的评论完美地概括了问题。
“我们不再解决问题;我们只是在验证输出。”
“如果我们继续这样下去,我们将失去对自己代码进行批判性思考的能力。”
结束语
AI 是一个 令人难以置信的助手,但它不应取代让我们爱上开发的核心活动:弄清楚事物的乐趣。
我们需要取得平衡——使用 AI 来 增强 我们的工作,而不是 抹去 那些让我们保持敏锐的难题。
摘要
您的经理最近的言论让您感到沮丧:
- “你不需要学习前端框架;AI 会为你写代码。”
- “人工代码审查已经过时;AI 可以自动合并。”
这两个说法从根本上是错误的,但他们所倡导的更广泛工作流并非全无价值。
为什么学习仍然重要
- 技能提升: 学习能提升你的问题解决能力。
- 质量控制: 理解代码可以让你发现 AI 生成输出中的问题。
- 通过审查学习: 代码审查是提升技能的最佳途径之一。
商业视角
公司的首要目标是收入。即使会引入 bug,只要能更快交付的工具仍具吸引力,只要修复这些 bug 的速度比手动完成所有工作更快。这就是为什么从商业角度看,您的经理的立场是有道理的。
对未来的疑问
- 我们还会阅读自己交付的代码吗?
- 大规模 AI 生成的代码库是否可维护?
- 添加新功能是顺畅还是持续的斗争?
- 我应该继续学习吗?是的。
- 我仍然有价值吗?
个人反思
- 精力提升: 有了新工作流,您有更多精力投入个人项目,因为不必整天思考代码。
- 不确定性: 您不确定这最终是否有益。
要点
- 保持学习。 它仍然对于发现 AI 错误和个人成长至关重要。
- 在效率与质量之间取得平衡。 更快的交付很有价值,但可维护性和持续学习同样重要。