AI原生软件工程师

一份将AI融入日常工程流程的实战手册

所谓"AI 原生"的软件工程师,是指那些将 AI 深度融入日常工作流程,视其为提升自身能力的合作伙伴的工程师。

这需要一种根本性的思维转变 。AI 原生工程师在面对每一项任务时,不会去想"AI 是否会取代我",而是会问:"AI 能否帮助我更快、更好或以不同方式完成这项工作?"

这种心态是乐观且积极主动的------你将 AI 视为提升生产力和创造力的倍增器,而非威胁。采用正确的方法,AI 可以将你的工程师产出提升 2 倍、5 倍甚至 10 倍 。经验丰富的开发者尤其会发现,他们的专业知识能让他们以更高水平的方式向 AI 提问并获得高质量的回答;一位高级工程师通过以恰当的上下文工程 (context-engineering) 提出正确的问题,可以从 AI 那里获得堪比同行的解答。

成为 AI 原生意味着拥抱持续学习和适应------工程师从一开始就借助基于 AI 的辅助和自动化来构建软件。这种心态带来的是对未来可能性的兴奋,而非恐惧。

诚然,这其中可能存在不确定性和学习曲线------我们许多人都曾经历过兴奋、恐惧、再到重拾兴奋的情感过山车------但最终的目标是拥抱兴奋与机遇。AI 原生工程师将 AI 视为一种工具,用以处理开发中重复或耗时的部分(如编写样板代码、起草文档或生成测试),从而解放自己,专注于更高层次的问题解决和创新。

核心原则------AI 是协作者,而非替代品: AI 原生工程师将 AI 视作一位知识渊博、全天候待命的初级结对程序员。

你仍然是开发过程的主导者,但会不断利用 AI 获取想法、解决方案,甚至是警告。例如,你可以利用 AI 助手构思架构方案,然后结合自身专业知识对这些想法进行完善。这种协作模式可以极大地加快开发速度,同时(在你保持监督的前提下)提升质量。

重要的是,你不能将责任推卸给 AI。把它想象成与一位阅读了所有 StackOverflow 帖子和 API 文档的初级开发者合作:他们拥有海量信息,能快速生成代码,但你需要负责引导他们并验证产出 。这种"信任但核实 (trust, but verify)"的心态至关重要,我们稍后会再次探讨。

坦率地说:AI 生成的"垃圾代码"是真实存在的,它绝不是产出低质量工作的借口。使用这些工具时,一个持续存在的风险是,被轻易采纳的建议、微妙的幻觉和纯粹的懒惰三者结合,其结果远低于专业工程标准。这就是为什么"核实"是这条准则中不可或缺的一环。作为工程师,你不仅是工具的使用者,更是最终的质量保证者。你需要对你提交的每一行代码的质量、可读性、安全性和正确性负全部直接责任。

核心原则------现在,每位工程师都是管理者: 工程师的角色正在发生根本性的变化。借助 AI 智能体,你将负责统筹工作,而非亲自执行所有任务。

你仍然对提交到主干的每一次变更负责,但你的重心更多地转向定义和"分配"工作。在不远的将来,我们或许会越来越认同"现在,每位工程师都是管理者"这一说法。你可以将合规的工作交给像 Jules 或 Codex 这样的后台智能体,或者让 Claude Code、Gemini CLI 或 OpenCode 来处理分析或代码迁移项目。工程师需要有意识地塑造代码库,使其更易于 AI 协作,例如使用规则文件(如 GEMINI.md)、完善的 README 和结构良好的代码。这将工程师置于监督者、导师和验证者的角色。AI 优先的团队规模更小,能完成更多任务,并能压缩软件开发生命周期(SDLC)的步骤,从而以更快的速度交付更高质量的成果。

战略收益: 通过在工作流程中全面拥抱 AI,你可以实现生产力的巨大飞跃,有可能在不牺牲质量的前提下更快地交付更多功能(当然,这其中需要考虑任务复杂性等细微差别)。

日常任务(从格式化代码到编写单元测试)可以在数秒内完成。或许更重要的是,AI 可以增进你的理解:它就像一位随时待命的专家,为你解释代码或在你专业领域之外提出解决方案。最终,AI 原生工程师能够承担更宏大的项目,或用更小的团队处理相同的工作量。本质上,AI 拓展了你的能力边界,让你能在更高的抽象层次上工作。但前提是,你需要掌握有效使用 AI 的技巧------而这正是正确心态与实践的用武之地。

案例------将思维付诸实践: 想象一下,你正在调试一个棘手的问题或评估一个新的技术栈。传统方法可能涉及大量的 Google 搜索或阅读文档。而 AI 原生的方法则是与一个支持搜索增强或深度研究的 AI 助手互动:描述 bug 或询问该技术栈的优劣,让 AI 提供见解,甚至是代码示例。

你仍然负责解读和实施,但 AI 加速了信息收集和方案探索的过程。一旦习惯,这种协作式问题解决方法将成为你的第二天性。养成一个习惯,不断自问:*"AI 在这项任务上能帮上什么忙?"*直到它成为一种条件反射。久而久之,你会培养出一种直觉,知道 AI 擅长什么以及如何有效地向它提问。

总而言之,成为 AI 原生意味着将 AI 内化为你思考问题和构建软件的核心方式。这是一种与机器合作的心态:利用它们的优势(速度、知识、模式识别)来补充你自己的能力(创造力、判断力、情境理解)。奠定了这一基础,我们就可以进入将 AI 融入日常工作的实践步骤。

入门指南------将 AI 融入你的日常工作流

对于新手而言,采纳 AI 原生的工作流似乎令人望而生畏。关键在于从小处着手,逐步建立你对 AI 的熟练度。在本节中,我们将提供具体的指导,助你在日常工程任务中从零开始,高效地运用 AI。

上图是对 AI 在软件生命周期中未来发展的一种推测。我仍然坚信,人(工程师、设计师、产品经理、用户体验专家等)在环路中是必不可少的,以确保质量不受影响。

第一步:首要改变?从 AI 开始。

AI 原生的工作流并非偶尔寻找 AI 能帮忙的任务,而是常常先将任务交给 AI 模型,看它表现如何。一个团队指出

典型的工作流程是先将任务交给一个 AI 模型(通过 Cursor 或一个命令行程序)......同时也明白,很多任务的成功率仍然是时好时坏。

你是在研究一个领域或一个竞争对手吗?不妨从 Gemini Deep Research 开始。你是否发现自己陷入了关于设计某个方面的无休止辩论?当你的团队还在争论时,你本可以利用 AI 构建三个原型来验证这个想法。Google 的员工已经在用它来制作幻灯片、调试生产事故等等

当你听到"但是大语言模型会产生幻觉,聊天机器人给出的答案很糟糕"时,是时候更新你的工具链了。如今,任何严肃地用 AI 编码的人都在使用智能体 (agents)。通过恰当的上下文工程 (context engineering) 和智能体的反馈循环,幻觉可以被显著减轻和管理。这种思维转变是根本性的:我们所有人都应立即采取 AI 优先的策略。

第二步:配置合适的 AI 工具。

为了顺利地集成 AI,你需要在你的环境中至少配置一个编码助手。许多工程师从 VS Code 中的 GitHub Copilot 开始,它具备代码自动补全和代码生成能力。如果你使用像 VS Code 这样的集成开发环境(IDE),可以考虑安装一个 AI 扩展(例如,Cursor 是一个专门为 AI 增强的代码编辑器,而 Cline 是一个用于 AI 智能体的 VS Code 插件------稍后会详细介绍)。这些工具非常适合初学者,因为它们在后台工作,为你正在编辑的任何文件实时建议代码。在编辑器之外,你也可以在单独的窗口中探索 ChatGPT、Gemini 或 Claude,以获得问答式的辅助。从工具入手很重要,因为它降低了使用 AI 的门槛。一旦安装,每当你想到"也许 AI 能帮上忙",AI 就仅在咫尺之遥。

第三步:学习提问基础------具体并提供上下文。

有效地使用 AI 是一项技能,而这项技能的核心是提示工程 (prompt engineering)。新手常犯的一个错误是给 AI 一个过于模糊的指令,然后对结果感到失望。请记住,AI 不会读心术;它只对你给出的提示做出反应。多一点上下文或清晰度会大有帮助。例如,如果你有一段代码,并希望得到解释或为其编写单元测试,不要只说*"为这个写测试"*。相反,在你的提示中描述代码的预期行为和需求。比较一下为 React 登录表单组件编写测试的两个提示:

  • 糟糕的提示:"你能为我的 React 组件写测试吗?"
  • 更好的提示: "我有一个 LoginForm 的 React 组件,包含一个 email 字段、一个 password 字段和一个提交按钮。它通过一个 onSubmit 回调,在成功提交时显示成功消息,在失败时显示错误消息。请编写一个 Jest 测试文件,要求:(1) 渲染表单,(2) 填入有效和无效的输入,(3) 提交表单,(4) 断言 onSubmit 被以正确的数据调用,以及 (5) 检查成功和错误状态是否被恰当渲染。"

第二个提示更长,但它精确地告诉了 AI 我们需要什么。结果将远比第一个提示准确和有用 ,因为 AI 不用去猜测我们的意图------我们已经阐明了。在实践中,多花一分钟澄清你的提示,可以为你节省数小时修复 AI 生成代码的时间。

有效的提示是一项非常重要的技能,以至于 Google 已经发布了完整的指南(可以参考 Google 的提示指南 101 作为一个很好的起点)。通过练习,你会逐渐掌握如何措辞。几个小技巧:明确你想要的格式(例如,"以 JSON 格式返回输出"),将复杂的任务在提示中分解为有序的步骤或要点,并尽可能提供示例。这些技巧有助于 AI 更好地理解你的请求。

第四步:使用 AI 进行代码生成和补全。

在配置好工具并掌握了提问技巧后,开始将 AI 应用于实际的编码任务。一个好的起点是生成样板代码或重复性代码。例如,如果你需要一个函数来解析多种格式的日期字符串,可以请求 AI 起草它。你可以说:"编写一个 Python 函数,它接受一个可能是 X、Y 或 Z 格式的日期字符串,并返回一个 datetime 对象。请包含对无效格式的错误处理。"

AI 将会生成一个初步的实现。不要盲目接受它 ------通读并运行测试。这种亲身实践可以建立你对 AI 可靠性的信任。许多开发者惊喜地发现,AI 在几秒钟内就能生成一个不错的解决方案,他们只需稍作调整。随着时间的推移,你可以转向更重要的代码生成任务,比如搭建整个类或模块的骨架。例如,Cursor 甚至提供了根据描述生成整个文件或重构代码的功能。在早期阶段,多依赖 AI 来生成辅助代码------那些你理解但写起来费时的事情------而不是关键的核心算法逻辑。这样,你可以在低风险的任务上建立对 AI 能力的信心。

第五步:将 AI 融入非编码任务。

成为 AI 原生不仅仅是为了更快地编写代码,而是为了改善你工作的方方面面。一个很好的起点是将 AI 用于编码周边的写作或分析任务。例如,在你提交代码更改后,尝试使用 AI 编写提交信息或 Pull Request 描述。你可以粘贴一个 git diff 并提问:"用专业的 PR 描述总结这些更改。"AI 会起草一份内容,你可以再进行完善。

这是临时用户和真正的 AI 原生工程师之间的关键区别。最优秀的工程师一直都明白,他们的主要价值不仅仅在于敲代码,而在于围绕代码的思考、规划、研究和沟通。 将 AI 应用于这些领域------加速研究、澄清文档、或构建项目计划------是一个巨大的生产力倍增器。将 AI 视为整个工程过程的助手,而不仅仅是编码部分,这对于释放其在速度和创新方面的全部潜力至关重要。

沿着这个思路,使用 AI 为代码编写文档 :让它根据你的代码库生成文档字符串(docstrings)甚至整个技术文档章节。另一个想法是使用 AI 进行规划------如果你不确定如何实现一个功能,可以描述需求并请求 AI 勾勒一个可能的方案。这可以为你提供一个可以调整的初始蓝图。别忘了日常沟通:许多工程师使用 AI 起草电子邮件或 Slack 消息,尤其是在沟通复杂想法时。

例如,如果你需要向产品经理解释某个 bug 为何棘手,你可以请求 AI 帮助清晰地阐述解释。这听起来可能微不足道,但它确实能提升生产力,并有助于你进行有效沟通。记住,"并非所有事情都只与代码有关"------AI 也可以在会议、头脑风暴和阐述想法方面提供帮助。AI 原生工程师会充分利用这些机会。

第六步:通过反馈进行迭代和完善。

当你开始在日常工作中使用 AI 时,把它当作一个自我学习的过程。注意 AI 的输出在哪些地方需要修正,并试着推断原因。是提示不完整吗?是 AI 设想了错误的上下文吗?利用这些反馈来构建下一次更好的提示。大多数 AI 编码助手都支持迭代过程:你可以说"哦,那个函数没有正确处理空输入,请修复它",AI 就会完善它的答案。充分利用这种互动性------通过告诉 AI 如何修改来纠正其草稿,通常比从头开始编写更快。

随着时间的推移,你会建立一个行之有效的提示模式库。例如,你可能会发现*"像对新团队成员一样解释 X"*这个提示,对于为文档目的生成代码的高层次解释非常有效。或者,在提示中提供一个简短的输入和输出示例,可以极大地改善 AI 在数据转换任务上的回答。将这些发现融入你的工作流程中。

第七步:始终验证和测试 AI 的输出。

这一点无论怎么强调都不过分:永远不要假设 AI 是 100% 正确的。即使代码能够编译或答案看起来合理,也要尽职尽责。运行代码,编写额外的测试,或对推理进行健全性检查。许多 AI 生成的解决方案在表面上能工作,但在边缘情况下会失败或存在细微的 bug。

你是工程师,AI 是助手。像对待人类编写的代码一样,对 AI 编写的代码也使用所有常规的最佳实践(代码审查、测试、静态分析)。在实践中,这意味着要留出一些时间来检查 AI 的产出。好消息是,阅读和理解代码通常比从头编写要快,所以即使加上验证环节,你在生产力上仍然是领先的。

随着经验的增长,你也会了解到 AI 在哪些任务上较弱 ------例如,许多大语言模型在精确算术或高度领域特定的逻辑上表现不佳------你就会知道要格外仔细地检查这些部分,或者干脆避免在这些方面使用 AI。建立这种直觉可以确保,当你信任一个 AI 生成的更改并准备提交或部署时,你已经将风险降到了最低。一个有用的心智模型是将 AI 视为一个高效但并非万无一失的队友:你珍视它的贡献,但最终的审查总是由你自己完成。

第八步:逐步扩展到更复杂的应用场景。

一旦你习惯于让 AI 处理小任务,就可以探索更高级的集成方式。例如,从被动地使用 AI(想起时才寻求帮助)转变为主动地使用:让 AI 在你编码时进行监控。像 CursorWindsurf 这样的工具可以在代理模式下运行,它们会监视错误或 TODO 注释并自动提出修复建议。或者,你也可以尝试像 Cline 提供的自主智能体模式,AI 可以在你每步批准的情况下,规划出一个多步骤任务(创建文件、编写代码、运行测试等)。

这些高级用法可以释放更大的生产力,但也需要更高的警惕性(想象一下给一个初级开发者更多自主权------你仍然会定期检查)。

一个强大的中间步骤是使用 AI 进行端到端原型开发。例如,在周末挑战自己,主要依靠 AI 辅助来构建一个简单的应用程序:描述你想要的应用,看看像 Replit 的 AI 或 Bolt 这样的工具能带你走多远,然后用你的技能填补空白。这类练习对于理解 AI 当前的局限性以及学习如何更好地指导它非常有帮助。而且这很有趣------当你在几个小时内就拥有一个可能需要数天或数周才能手动编码完成的工作原型时,你会感觉自己拥有了超能力。

通过遵循这些步骤并逐步提升,你将从一个 AI 新手转变为一个能本能地将 AI 融入其开发工作流程的人。下一节将更深入地探讨可用的工具和平台------知道为哪个工作使用哪个工具是高效使用 AI 的重要组成部分。

AI 工具与平台------从原型到生产

这是一个令人兴奋的时代,原因之一就是现在有各种各样由 AI 驱动的工具可供工程师使用。作为一名 AI 原生的软件工程师,你的技能之一就是知道为不同任务利用哪些工具 。在本节中,我们将考察 AI 编码工具和平台的现状,并就如何选择和有效使用它们提供指导。我们将大致把它们分为两类------AI 编码助手 (集成到你的开发环境中,帮助你编写代码)和 AI 驱动的原型工具(可以根据提示生成整个项目框架或应用程序)。两者都很有价值,但服务于不同的需求。

在深入探讨具体工具之前,任何专业人士都必须将"数据隐私防火墙"作为其核心思维模式的一部分。时刻自问:"我是否愿意让这个提示及其上下文被记录在第三方服务器上?"这种自律是负责任地使用这些工具的基础。一位 AI 原生的工程师会学会区分哪些任务适合公共云 AI,哪些任务需要企业级、注重隐私的,甚至是自托管的本地模型。

IDE 中的 AI 编码助手

这些工具就像与你的编辑器或 IDE 集成的"AI 结对程序员"。当你在现有的代码库上工作或以传统方式(逐个文件编写代码)构建项目时,它们非常宝贵。以下是一些著名的例子及其细微差别:

  • GitHub Copilot 已经从一个自动补全工具转变为一个真正的编码智能体:一旦你给它分配一个 issue 或任务,它就能自主分析你的代码库,启动环境(例如通过 GitHub Actions),提出跨文件的编辑建议,运行命令/测试,修复错误,并提交带有其推理日志的草稿拉取请求。它基于最先进的模型构建,支持多模型选择,并利用模型上下文协议(Model Context Protocol, MCP)来集成外部工具和工作区上下文,使其能够驾驭复杂的仓库结构,包括 monorepos、CI 管道、图像资产、API 依赖等。尽管有这些进步,它仍然主要针对中低复杂度的任务进行了优化,并且仍需要人工监督------尤其是在安全性、深层架构和多智能体协调方面。
  • Cursor - AI 原生代码编辑器: Cursor 是一个深度集成了 AI 的修改版 VS Code 编辑器。与作为附加组件的 Copilot 不同,Cursor 从头到尾都是围绕 AI 构建的。它可以做一些事情,比如 AI 感知导航(让它查找函数在哪里被使用等)和智能重构。值得注意的是,Cursor 具有生成测试、解释代码,甚至还有一个"智能体"模式,可以根据命令尝试完成更大的任务。Cursor 的理念是"为开发者赋能",尤其是在大型代码库中。如果你在一个 monorepo 或企业级项目中工作,Cursor 理解项目范围上下文的能力(甚至可以使用类似 .cursorrules 的文件来自定义项目特定规则)可能会改变游戏规则。许多开发者一开始在"询问"模式下使用 Cursor------你提出你的需求,得到确认,然后让它应用更改------这有助于确保它做的是正确的事情。Cursor 的一个权衡是它是一个独立的编辑器(尽管 VS Code 用户会感到熟悉),目前它是一个付费产品。它非常受欢迎,有数百万开发者在使用,包括在企业中,这说明了它的有效性。
  • Windsurf - 适用于大上下文编码的 AI 智能体: Windsurf 是另一个 AI 增强的开发环境。Windsurf 强调企业需求:它具有强大的数据隐私保护(无数据保留,提供自托管选项),甚至拥有 HIPAA 和 FedRAMP 等合规认证,这对于关心代码安全的公司来说很有吸引力。在功能上,Windsurf 可以完成许多相同的辅助任务(代码补全、建议更改等),但据传闻,在需要向 AI 提供整个文件或大量文档的情况下,它尤其有用。如果你正在处理一个有数万行代码的代码库,并且需要 AI 了解其中的大部分内容(例如,跨多个文件进行大规模重构),像 Windsurf 这样的工具值得考虑。
  • Cline - VS Code 的自主 AI 编码智能体: Cline 采取了一种独特的方法,在你的编辑器中充当一个自主智能体 。它是一个开源的 VS Code 扩展,不仅建议代码,还可以在你的许可下创建文件、执行命令和执行多步骤任务。Cline 以双模式运行:计划 (概述它打算做什么)和行动 (在人类监督下执行这些步骤)。其理念是让 AI 处理更复杂的杂务,比如建立一个完整的功能:它可以计划"添加一个新的 API 端点,包括路由、控制器和数据库迁移",然后实现每个部分,并征求确认。这通过给予开发者对每一步的控制和可见性,将 AI 辅助与专业的工程工作流程结合起来。我曾注意到,Cline"不仅仅将 AI 视为代码生成器,而是将其视为系统级的工程工具",这意味着它可以推理项目结构并协调多个连贯的更改。其缺点是:因为它能运行代码或修改许多文件,所以你必须小心并审查其计划。如果你将其连接到强大的模型,也会有成本(一些用户注意到,在非常自主地运行时,它可能会使用大量 tokens,因此花费不菲)。但对于严肃的用途------比如你想快速在你的应用中原型化一个带有测试和文档的新模块------Cline 可以非常强大。这就像有一个热情的初级工程师在每一步都问"我应该继续执行 X 吗?"。许多开发者欣赏这种更具协作性的风格(Cline 的设计初衷就是"提出更多问题"),因为它减少了 AI 偏离轨道的可能性。

当你迭代地构建或维护一个代码库时,请使用AI 编码助手------这些工具自然地融入你的编辑-编译-测试循环。它们非常适合于编写新函数(只需输入一个签名,它们通常会协同完成函数体)、重构("将此函数重构得更具可读性")或理解不熟悉的代码("解释这段代码"------你会得到一个简洁的摘要)。它们的目的不是一次性构建整个应用程序;相反,它们增强了你的日常工作流程。对于经验丰富的工程师来说,调用 AI 助手已成为第二天性------就像一个按需搜索引擎------每天使用数十次以获得快速帮助或见解。

在底层,现代异步编码智能体OpenAI CodexGoogle 的 Jules 更进一步。Codex 作为一个自主的云智能体运行------在隔离的沙箱中处理并行任务:编写功能、修复 bug、运行测试、生成完整的 PR------然后呈现日志和差异供审查。

Google 的 Jules,由 Gemini 2.5 Pro 驱动,将异步自主性带入你的 GitHub 工作流程:你分配一个 issue(例如升级 Next.js),它会在一个虚拟机中克隆你的仓库,规划其多文件编辑,执行它们,总结更改(包括音频回顾),并发出一个拉取请求------所有这些都在你继续工作的同时进行。这些智能体不同于行内自动补全:它们是自主的协作者,在后台处理已定义的任务,并返回完成的工作供你审查,让你能专注于更高层次的挑战。

AI 驱动的原型和 MVP 构建器

与 IDE 内的助手不同,一类新工具可以从高层提示中生成整个可工作的应用程序或其重要部分。当你想快速启动一个新项目或功能时,这些工具非常有用------本质上是为了以最少的手动编码从零到第一个版本("v0")。它们通常不会在没有进一步迭代的情况下产生最终的生产质量代码,但它们创造了一个非凡的起点。

  • Bolt (bolt.new) - 单提示全栈应用生成器: Bolt 的构建前提是,你可以输入一个应用程序的自然语言描述,并在几分钟内获得一个可部署的全栈 MVP。例如,你可以说"一个带有用户登录和管理后台的任务看板",Bolt 将生成一个 React 前端(使用 Tailwind CSS 进行样式设计)和一个 Node.js/Prisma 后端,配有数据库,并包含任务和用户的基本模型。在测试中,Bolt 被证明极其快速 ------通常在 15 秒左右就能组装一个项目。输出的代码通常很整洁,并遵循现代实践(React 组件、REST/GraphQL API 等),因此你可以在你的 IDE 中打开它并继续开发。Bolt 擅长快速迭代 :你可以调整你的提示并重新生成,或使用其 UI 来调整它构建的内容。它甚至有一个"导出到 GitHub"的功能以提供便利。这使其成为创始人、黑客松参与者或任何希望简化应用程序初始设置的开发者的理想选择。其权衡在于 Bolt 的创造力受其训练的限制------它可能会默认使用某些样式,并且在没有指导的情况下可能无法处理非常独特的需求。但作为一个起点,它通常令人印象服。在比较中,用户注意到 Bolt 能非常一致地生成漂亮的 UI,并且是快速获得一个能让用户或利益相关者"惊叹"的原型 UI 的首选。
  • v0 (v0.dev by Vercel) - 文本到 Next.js 应用生成器: v0 是 Vercel 的一个工具,同样能生成应用,尤其专注于 Next.js(因为 Vercel 是 Next.js 的幕后推手)。你给它一个你想要的提示,它就会创建一个项目。关于 v0 有一点需要注意:它有独特的设计美学。测试者观察到,v0 倾向于将所有东西都设计成流行的 ShadCN UI 风格 ------基本上是一个时髦的极简主义组件库------无论你是否要求。如果你喜欢这种开箱即用的风格,这可能很好,但这意味着如果你想要一个非常定制化的设计,v0 可能无法精确匹配。在一次比较中,发现 v0 会"重新主题化设计"以趋向其默认外观,而不是忠实地匹配给定的规范。所以,如果你的目标是快速获得一个功能性 原型,并且对外观要求灵活,v0 可能是最佳选择。代码输出通常是 Next.js React 代码,后端由你指定(它可能会设置一个简单的 API 或使用 Vercel 的 Edge Functions 等)。作为 Vercel 生态系统的一部分,它也面向可部署性------理念是你可以拿它给你的东西立即在 Vercel 上部署。如果你是 Next.js 的粉丝,或者正在构建一个计划托管在 Vercel 上的网络产品,v0 是一个自然的选择。只是要记住,如果你有自己的设计,你可能需要做一些重新主题化的工作,因为 v0 对事物应该如何看待有自己的"见解"。
  • Lovable - 提示到 UI 模型(带有一些代码): Lovable 更倾向于初学者或非工程师,他们希望通过更简单的界面构建应用。它允许你描述一个应用,并提供一个可视化编辑器。用户注意到,Lovable 的优势在于易用性------它引导性很强,并且有一个很好的 UI 来组装你的应用------但它的弱点在于,当你需要深入研究代码时,它可能会变得很麻烦。它倾向于隐藏复杂性(如果你想要无代码,这很好),但如果你是一个想调整它所构建内容的工程师,你可能会觉得体验令人沮丧。在输出方面,Lovable 可以创建 UI 和一些逻辑,但可能不如 Bolt 或 v0 那么完整。在一次测试中,有趣的是,Lovable 在模仿截图方面比模仿 Figma 设计做得更好------有点不一致。它的目标是快速原型制作,或许还有用最少的编码构建简单的应用。如果你是一个技术负责人,与一个不会编码的设计师或产品经理合作,Lovable 可能是让他们玩耍以可视化想法的东西,然后你再用代码完善。然而,对于一个经验丰富的工程师来说,Lovable 可能会感觉有点局限。
  • Replit: Replit 的在线 IDE 有一个 AI 模式,你可以输入像"创建一个 2D 塞尔达式游戏"或"构建一个习惯追踪应用"这样的提示,它就会在他们的云环境中生成一个项目。Replit 的优势在于它可以立即运行和托管结果,并且由于所有东西都在一个环境中,它通常能无缝地处理前端和后端。一个突出的例子是:当被要求制作一个简单的游戏时,Replit 的 AI 智能体不仅编写了代码,还运行它并通过截图检查自己的工作来迭代改进它 。在比较中,Replit 有时能产生功能上最完整 的结果(例如,一个有敌人和碰撞的能工作的游戏,而其他工具几乎只产生了一个移动的角色)。然而,这样做可能需要更长的时间和更多的计算资源。如果你想要一个可以立即运行和玩耍的一次性结果,并且不介意代码以后需要重构,Replit 是一个很好的选择。这就像拥有一个不仅能写代码,还能实时测试并修复它的 AI。对于全栈应用,Replit 同样可以连接客户端和服务器,如果被要求,甚至可以设置数据库。输出可能不是每种情况下最干净或最地道的代码,但它通常是一个非常可行的起点。一个考虑因素是:因为 Replit 的智能体在云端运行并能执行代码,对于非常大的应用,你可能会遇到一些限制(如果你提示它做一些可能运行恶意代码的事情,你需要小心------尽管它是沙盒化的)。总的来说,如果你的目标是*"我想要一个可以立即运行和玩耍的应用,而且我不介意代码以后需要重构"*,Replit 是首选。
  • Firebase Studio 是 Google 基于云的、由 Gemini 驱动的智能体 IDE,它让你可以在浏览器中完全快速地原型化和发布全栈、注入了 AI 的应用。你可以导入现有的代码库------或通过自然语言、图像或草图提示,使用应用原型智能体从头开始------生成一个可工作的 Next.js 原型(前端、后端、Firestore、Auth、托管等),并立即实时预览,然后无缝切换到由 Nix 和集成的 Firebase 模拟器支持的 Code-OSS (VS Code) 工作区中的全编码模式。Firebase 中的 Gemini 提供行内代码建议、调试、测试生成、文档、迁移,甚至运行终端命令和解释输出,所以你可以提示"构建一个带上传和认证的照片库应用",看到应用端到端地被启动,调整它,部署到 Hosting 或 Cloud Run,并监控使用情况------所有这些都无需切换工具。

何时使用原型工具: 当你开始一个新项目或功能 并希望消除初始设置的繁重工作时,这些工具会大放异彩。例如,如果你是一个需要快速概念验证以向利益相关者展示的技术负责人,使用 Bolt 或 v0 快速搭建基础然后部署,可以节省数天的工作量。它们对于探索想法也很有用------你可以生成一个应用的多个变体以看到不同的方法。但是,要准备好进行迭代。将这些工具的产出视为初稿

生成后,你可能会将代码导入到你自己的 IDE 中(也许在那里有一个 AI 助手帮助你)并进行完善。在许多情况下,最好的工作流程是混合式 的:用生成工具进行原型设计,然后用 IDE 内的助手进行完善。例如,你可以使用 Bolt 创建一个应用的 MVP,然后在 Cursor 中打开该项目,继续用 AI 结对编程来处理更精细的细节。这些方法根本不相互排斥------它们相辅相成。为每个阶段使用正确的工具:原型工具用于初始脚手架和高层布局,助手用于深度代码工作和集成。

另一个考虑因素是局限性和学习 :通过检查这些原型工具的生成物,你可以学习常见的模式。这几乎就像一次性阅读了十几个框架教程的输出。但也要注意它们 做什么------它们通常不会完成应用的最后 20-30%(比如润色、性能调优、处理边缘业务逻辑),这些将由你来完成。

这类似于在 AI 辅助编码中观察到的"70% 问题":AI 能带你走一大段路,但最后一英里需要人类的洞察力。知道了这一点,你就可以相应地安排时间。好消息是,最初的 70%(启动 UI 组件、设置路由、连接基本的 CRUD)通常是无聊的部分------如果 AI 做了这些,你就可以把精力集中在有趣的部分(自定义逻辑、UX 优化等)。只是不要被一种虚假的安全感所迷惑;始终审查生成的代码是否存在安全问题(例如,它是否硬编码了 API 密钥?)或正确性问题。

工具与用例总结: 重新回顾并简化这些工具的不同之处是很有帮助的。简而言之:当你正在演进或维护一个代码库时,使用 IDE 助手;当你需要快速获得一个新的代码库或模块时,使用生成式原型工具。 如果你已经有一个大项目,像 Cursor 或 Cline 插入到 VS Code 中将是你日常的盟友,帮助你智能地编写和修改代码。

如果你从头开始一个项目,像 Bolt 或 v0 这样的工具可以完成繁重的设置工作,这样你就不用花一天时间配置构建工具或创建样板文件了。如果你的工作两者兼而有之(这很常见:启动新服务和维护旧服务),你很可能会定期使用这两种类型的工具。许多团队报告说组合使用它们取得了成功:例如,生成一个原型来启动开发,然后用 AI 增强的 IDE 来管理和发展该代码。

最后,要注意一些人可能对 AI 生成的代码持有**"非我发明"的偏见**。在团队内部沟通使用这些工具是很重要的。一些传统主义者可能会对自己没有亲手编写的代码持怀疑态度。克服这一点的最好方法是展示其好处(速度,以及经过你的审查后,代码质量可以做得很好),并使 AI 的使用具有协作性。例如,在 PR 描述中分享提示和输出("这个控制器是基于以下描述使用 v0.dev 生成的......")。这揭开了 AI 贡献的神秘面纱,并可以像对待人类生成的代码一样,引出建设性的审查。

现在我们已经看过了工具,下一节我们将放大视野,探讨如何在整个软件开发生命周期中应用 AI,从设计到部署。AI 的作用不仅限于编码;它可以在需求、测试等方面提供帮助。

AI 贯穿软件开发生命周期

一位 AI 原生的软件工程师不仅在编写代码时使用 AI------他们在**软件开发生命周期(SDLC)的每个阶段**都利用它。本节探讨了如何在工程工作的每个阶段务实地应用 AI,从而使整个过程更高效、更具创新性。我们将保持领域无关性,为了举例方便,会略微偏向于常见的 Web 开发场景,但这些思想适用于许多软件领域(从云服务到移动应用)。

1. 需求与构思

任何项目的第一步都是明确要构建什么。AI 可以扮演头脑风暴的伙伴和需求分析师的角色。

例如,如果你有一个高层次的产品想法("我们需要一个用于 X 的应用"),你可以请 AI 帮助构思功能或用户故事。一个类似这样的提示:*"我需要设计一个个人理财追踪的移动应用。为了获得出色的用户体验,它应该具备哪些功能?"*可能会产生一系列你最初可能没有考虑到的功能(例如,预算、支出分类、图表、提醒)。

AI 可以聚合它所吸收的无数应用和文章中的想法。同样,你可以让 AI 负责编写初步的用户故事或用例"为一个共享乘车服务的 MVP 列出五个用户故事。" 这可以用结构良好的故事来启动你的规划,你可以再进行完善。AI 也可以帮助澄清需求:如果一个需求很模糊,你可以问*"关于这个需求,我应该问什么问题来澄清它?"*------AI 会提出需要定义的关键点(例如,对于"为登录添加安全性",AI 可能会建议询问关于双因素认证、密码复杂度等问题)。这能确保你不会在早期忽略某些事情。

另一个构思用途:竞争性分析 。你可以提示:"任务管理 Web 应用的常见功能和陷阱是什么?请提供一个摘要。" AI 会列出这类应用通常做什么以及常见的抱怨或挑战(例如,数据同步、离线支持)。这些信息可以塑造你的需求,以便包含一流的功能或避免已知问题。本质上,AI 可以作为研究助理,扫描集体知识库,这样你就不用手动阅读 10 篇博客文章了。

当然,所有 AI 的输出都需要批判性评估------用你的判断力来筛选哪些建议在上下文中是有意义的。但在早期阶段,想法的数量可能比质量更有用,因为它为你提供了与团队或利益相关者讨论的选项。具有 AI 原生心态的工程师通常会带着一份 AI 生成的想法清单参加规划会议,然后用自己的见解来补充。这加速了讨论并显示了主动性。

AI 在这个阶段也可以帮助非技术利益相关者 。如果你是一个与业务分析师合作的技术负责人,你可以在 AI 的帮助下生成一份产品需求文档(PRD)草稿,然后分享出去供审查。编辑草稿比从头开始写要快。Google 的提示指南甚至建议为这种情况使用特定角色的提示------例如,"扮演一名业务分析师,概述一个薪资系统升级的需求"。结果给了每个人一些可以回应的具体东西。总之,在需求和构思阶段,AI 的作用是撒下一张广泛的可能性之网并组织思想,这提供了一个坚实的起点。

2. 系统设计与架构

一旦需求到位,下一步就是设计系统。在这里,AI 可以作为架构的"共鸣板" 。例如,你可以描述你正在考虑的高层架构------"我们计划为用户服务使用一个微服务,一个 API 网关,以及一个 React 前端"------然后询问 AI 的意见:"这种方法的优缺点是什么?有任何潜在的可扩展性问题吗?" 一个精通技术的 AI 会列举出可能与经验丰富的同事所说相似的观点(例如,微服务允许独立部署,但增加了开发运维的复杂性等)。这对于验证你的想法或发现你遗漏的角度很有用。

AI 也可以帮助解决具体的设计问题:"我们应该为这个功能存储选择 SQL 还是 NoSQL?"或"在一个聊天应用中,实时通知的健壮架构是什么?"它会为不同的选择提供理由。虽然你不应该把它的答案奉为圭臬,但它可以引出一些考虑因素(延迟、一致性、成本),指导你的决策。有时候,听到理由被清晰地阐述出来,可以帮助你向他人陈述理由或巩固你自己的理解。把它想象成向一个 AI 进行你的架构"橡皮鸭调试"------只不过这只鸭子会用相当合理的观点回应你!

另一个用途是通过文本生成图表或映射 。有些工具,如果你描述一个架构,AI 可以输出一个伪图表(例如,用 Mermaid markdown 格式),你可以将其可视化。例如:"画一个组件图:客户端 -> 负载均衡器 -> 3个后端服务 -> 数据库。" AI 可能会生成一个可以渲染成图表的 Mermaid 代码块。这是从概念到文档的快捷方式。或者你可以要求API 设计建议"为一个图书馆系统设计一个 REST API,包含书籍、作者和借阅的端点。" AI 可能会列出端点(GET /books, POST /loans 等)以及示例负载,这可以作为一个有用的起点,你再进行调整。

在这个阶段,一个特别强大的 AI 用途是通过让它设想失败案例来验证假设 。例如:"我们计划在一个数据中心为会话数据使用内存缓存。可能会出什么问题?" AI 可能会提醒你一些场景,比如缓存崩溃、数据中心中断或扩展问题。这有点像一个风险清单生成器。这并不能取代进行适当的设计审查,但它是一个很好的补充,可以在早期捕捉到明显的陷阱。

另一方面,如果你的设计遇到阻力,需要阐明你的理由,AI 可以帮助你清晰地组织论点。你可以将上下文提供给 AI,让它帮助阐明关切并探索替代方案。AI 会列举问题,你可以用这些来形成一个尊重、结构良好的回应。本质上,AI 可以在设计沟通方面支持你,这在团队环境中与设计本身同样重要。

一个更深刻的转变是,我们正在向规范驱动的开发迈进 。重点不再是代码优先;事实上,我们几乎是在隐藏代码!现代软件工程师正在创建(或请求 AI 创建)实现计划在先。一些人通过让工具创建一个技术设计(保存到 markdown 文件)和一个实现计划(同样保存在本地,稍后输入)来启动项目。

一些人注意到,他们发现自己"思考的越来越不是写代码,而是写规范------将我头脑中的想法转化为清晰、可重复的 AI 指令。"这些设计规范具有巨大的后续价值;它们可以用来生成 PRD、第一轮产品文档、部署清单、营销信息,甚至是销售团队的培训材料。当今最优秀的工程师擅长记录意图,而这些意图反过来又催生了技术解决方案。

这种对 AI 的战略性应用,对今天高级工程师的定义产生了深远的影响。它标志着从一个卓越的问题解决者到一个具有前瞻性的解决方案塑造者的转变。一位高级 AI 原生工程师不仅仅用 AI 来更快地写代码;他们用它来预见未来------模拟未来状态、分析行业趋势,并塑造能够预见下一波创新的技术路线图。利用 AI 进行这种架构性远见,已不再仅仅是一个"锦上添花"的能力;它正迅速成为技术领导力的核心竞争力。

3. 实现(编码)

这是大多数人立刻会想到的 AI 辅助阶段,确实,它也是最具变革性的阶段之一。我们在前面的章节中已经介绍了如何在你的 IDE 中使用编码助手,所以这里我们围绕典型的编码子任务来组织:

  • 脚手架和设置: 设置新模块、库或配置文件可能很乏味。AI 可以根据描述生成样板配置(Dockerfile、CI 管道、ESLint 配置等)。例如,"为 React 应用提供一个最小化的 Vite 和 TypeScript 配置" 可能会产生不错的配置文件,你可能只需要稍作调整。同样,如果你需要使用一个新的库(比如认证或日志),你可以问 AI,"展示一个将库 X 集成到 Express.js 服务器的例子。" 它通常能生成一个最小可工作的例子,让你免于为了基础知识而翻阅文档。
  • 功能实现: 在编写功能时,将 AI 作为伙伴。你可能会开始写一个函数,然后感到不确定------你可以简单地问,"实现 X 的最佳方式是什么?" 也许你需要解析一个复杂的数据格式------AI 甚至可能记得你需要使用的特定 API。这就像有人为你总结了 Stack Overflow 的帖子。许多 AI 原生开发者实际上采用一种节奏:他们在注释中概述一个函数(它应该采取的步骤),然后提示 AI 用代码填充。这通常会产生一个几乎完整的函数,你再进行调整。这是一种不同的编码方式:你专注于逻辑和意图,AI 则填充语法和重复部分。
  • 代码重用和参考: 另一个日常场景------你模糊地记得以前写过类似的代码,或者知道有某种算法可以解决这个问题。你可以描述它并询问 AI。例如,"我需要从一个 Python 对象列表中移除重复项,将 id 相同的对象视为重复。如何高效地做到这一点?" 如果第一个答案不是你想要的,你可以完善它,或者直接说"那不太对,我需要考虑 X",它会再试一次。这种用于编码的交互式问答是生活质量的一大提升。
  • 保持一致性和模式: 在一个大项目中,你通常会遵循一些模式(比如某种处理错误或日志的方式)。如果你提供上下文,AI 可以被教导这些模式(一些工具允许你添加一个风格指南或让它阅读你仓库的部分内容)。即使没有明确的训练,如果你将一个现有文件作为例子指向 AI,你可以提示*"创建一个与此类似的新模块,但用于 [某个新实体]"*。它会模仿风格和结构,这意味着新代码能自然地融入。这就像有一个助手,他阅读了你整个代码库和文档,并且总是按照这些惯例编写代码(有一天,AI 可能会通过像模型上下文协议这样的功能无缝地做到这一点,以插入到不同的环境中)。
  • 与代码一起生成测试: 一个非常有效的习惯是在编写完一段代码后立即让 AI 生成单元测试。许多工具(Cursor、Copilot 等)可以按需甚至自动建议测试。例如,在写完一个函数后,你可以提示:"为上面的函数生成一个单元测试,覆盖边缘情况。" AI 会创建一个测试方法或测试用例代码。这有两个目的:它为你提供了快速的测试,同时它也作为对你代码的准审查(如果 AI 在测试中的预期行为与你的代码不同,也许你的代码有问题,或者需求被误解了)。这就像进行测试驱动开发(TDD),其中 AI 编写测试,你验证它是否符合意图。即使你更喜欢自己写测试,AI 也可以建议你可能会遗漏的其他情况(比如大输入、奇怪的字符等),起到安全网的作用。
  • 调试辅助: 当你遇到一个 bug 或错误信息时,AI 可以帮助诊断。例如,你可以复制一个错误堆栈跟踪或异常,然后问,"可能是什么原因导致了这个错误?" 通常,它会用通俗的语言解释错误意味着什么以及常见原因。如果是一个没有明显错误的运行时 bug,你可以描述行为:"我的函数在输入 X 时返回了 null,而它不应该这样。这是代码片段......有什么想法吗?" AI 可能会发现一个逻辑缺陷。这并不能保证,但有时仅仅是向 AI 书面解释你的代码,解决方案就对你显而易见了------而 AI 的建议可以证实这一点。一些集成到运行时的 AI 工具(比如 Replit 中的工具)甚至可以执行代码并检查中间值,就像一个交互式调试器。你可以说,"用 X 输入运行上面的代码,并告诉我每一步的变量 Y",它会模拟这个过程。这仍然处于早期阶段,但这是调试的另一个维度,将会不断发展。
  • 性能调优与重构: 如果你怀疑一段代码很慢或者可以更整洁,你可以请 AI 为其进行性能或可读性重构。例如:"重构此函数以降低其时间复杂度""这段代码有三重嵌套循环,你能让它更高效吗?" AI 可能会识别出使用字典查找或更好算法的机会(例如,从 O(n^2) 到 O(n log n))。或者为了可读性:"将这个 50 行的函数重构为更小的函数并添加注释。" 它会尝试这样做。务必仔细检查更改(尤其是细微的 bug),但这是快速看到替代实现的好方法。这就像有第二双眼睛,它不会累,并且可以在几秒钟内重写代码进行比较。

在所有这些编码场景中,主题是AI 加速了编码的机械部分并提供即时知识 ,而你仍然是决策者和质量控制者。重要的是要插入一个关于版本控制和代码审查的说明:像对待初级开发者的拉取请求一样对待 AI 的贡献。勤奋地使用 git,对比 AI 所做的更改,在重大编辑后运行你的测试套件,并进行代码审查(即使你审查的是 AI 为你编写的代码!)。这确保了你实现阶段的健壮性。

4. 测试与质量保证

测试是 AI 可以通过减少辛劳而大放异彩的领域。我们已经谈到了单元测试生成,但让我们更深入地探讨:

  • 单元测试生成: 你可以系统地使用 AI 为现有代码生成单元测试。一种方法是:为你模块中的每个公共函数或类,用简短的描述提示 AI 它应该做什么(如果没有清晰的文档,你可能需要推断或写一个单行规范),然后请求测试。例如,"函数 normalizeName(name) 应该修剪空白并大写首字母。为它写几个 PyTest 案例。" AI 将输出测试,包括典型和边缘情况,如空字符串、全大写输入等。这对于缺少测试的遗留代码非常有帮助------就像 AI 驱动的测试改造。请记住,AI 除了你描述的内容外,并不了解你确切的业务逻辑,所以要验证断言的期望是否与预期行为相符。但即使不符,也很有启发性:AI 可能对函数做出错误的假设,这突显了函数目的不明确或可能被误用。然后你改进代码或澄清测试。
  • 基于属性的测试和模糊测试: 你可以使用 AI 为基于属性的测试建议属性。例如,"一个排序函数应该保持哪些属性为真?" 可能会产生答案,如"输出列表是排序的,与输入具有相同的元素,如果运行两次则幂等"等。你可以用像 Hypothesis 或 fast-check 这样的框架将这些转化为属性测试。AI 甚至可以帮助编写属性测试代码。同样,对于模糊测试或生成大量输入组合,你可以请 AI 以某种格式生成各种输入。"给我 10 个代表边缘情况用户配置文件的 JSON 对象(一些缺少字段,一些有额外字段等)"------用这些作为测试夹具,看你的解析器是否会崩溃。
  • 集成和端到端测试: 对于更复杂的测试,如 API 端点或 UI 流程,AI 可以通过概述测试场景来提供帮助。"为一个电子商务结账流程列出一些端到端测试场景。" 它可能会列举出场景:正常购买、无效支付、商品缺货等。然后你可以编写这些脚本。如果你正在使用像 Cypress 这样的 Web UI 测试框架,你可以请 AI 根据场景描述编写一个测试脚本。它可能会生成一个伪代码,你再将其调整为真实代码(Cypress 或 Selenium 命令)。这再次节省了样板代码的时间,并确保你考虑了各种路径。
  • 测试数据生成: 创建逼真的测试数据(比如一个复杂对象的有效 JSON)是单调乏味的。AI 可以生成看起来真实的假数据。例如,"为一个包含系、教授和学生的大学生成一个示例 JSON。" 它会编造名字和数组等。这些数据然后可以在测试中使用,或用于手动试用 API。这就像拥有无限供应的逼真虚拟数据,而无需自己编写。只是要注意任何隐私问题------如果你用真实数据提示,请确保先将其匿名化。
  • 通过智能体进行探索性测试: 一个前沿领域:使用 AI 智能体模拟用户或对抗性输入。有一些实验性工具,AI 可以像用户一样爬取你的 Web 应用,测试不同的输入,看是否能破坏某些东西。Anthropic 的 Claude Code 最佳实践谈到了多轮调试,其中 AI 迭代地发现并修复问题。你或许可以说,"这是我的函数,尝试不同的输入让它失败",AI 会在脑海中进行一次小型的模糊测试。这并非万无一失,但作为一个概念,它指向了 AI 在 QA 中超越静态测试用例的帮助------通过像 QA 工程师一样主动尝试寻找 bug。
  • 审查测试覆盖率: 如果你有测试并想确保它们覆盖了逻辑,你可以请 AI 分析是否缺少某些场景。例如,提供一个函数或功能描述以及当前的测试,然后问*"这里有没有未覆盖的重要测试用例?"* AI 可能会注意到,例如,"测试没有覆盖输入为 null 或空的情况"或"没有针对负数的测试"等。这就像对你的测试套件的第二意见。它不会知道某些东西是否真的缺失,除非很明显,但它可以发现一些差距。

最终目标是以更少的人力获得更高的质量。测试通常是工程师知道他们应该多做的事情,但时间压力往往限制了它。AI 通过自动化测试的创建或至少是其脚手架的搭建,帮助消除了一些障碍。这使得你更有可能拥有一个更健壮的测试套件,从而减少回归和简化维护。

5. 调试与维护

Bug 和维护任务消耗了工程师大部分的时间。AI 也可以减轻这方面的负担:

  • 解释遗留代码: 当你继承一个遗留代码库或重温很久以前写的代码时,理解它是第一步。你可以使用 AI 总结或记录 缺乏清晰度的代码。例如,复制一个 100 行的函数并问,"用简单的语言逐步解释这个函数是做什么的。" AI 将会生成一段代码逻辑的叙述。这通常会加速你的理解,特别是如果代码密集或注释不佳。它也可能识别出代码应该做什么与它实际做什么之间的差异(捕捉到细微的 bug)。一些工具集成了这个功能------你可以点击一个函数,得到一个 AI 生成的文档字符串或摘要。这在维护文档稀缺的系统时非常宝贵。
  • 识别根本原因: 当面对一个 bug 报告,如"功能 X 在条件 Y 下崩溃"时,你可以将 AI 作为橡皮鸭来推理可能的原因。描述情况和你所知的代码路径,然后请求理论:"根据这个代码片段和观察到的错误,可能是什么导致了空指针异常?" AI 可能会指出,"如果数据可能为 null,那么 data.length 会抛出该异常,检查在条件 Y 下是否会发生这种情况。"这类似于与一位知识渊博的同事交流想法,即使他们看不到你的整个系统,他们也常常能从已知模式中进行概括。这可以节省你在调试中走错路的时间。
  • 用 AI 建议修复代码: 如果你在一处代码中定位了一个 bug,你可以简单地告诉 AI 修复它。"修复这个函数在空输入时失败的 bug。" AI 将提供一个补丁(比如添加一个空输入检查)。你仍然必须确保这是正确的修复,并且不会破坏其他东西,但它比自己写要快,特别是对于微不足道的修复。一些 IDE 会自动执行此操作:例如,如果一个测试失败,AI 可能会建议一个代码更改以使测试通过。这里必须小心------在接受此类更改后,务必运行测试以确保没有副作用。但对于像升级库版本和修复已弃用调用这样的维护任务,AI 可以提供巨大帮助(例如,"我们升级到了 React Router v7,将这个 v6 的代码更新为 v7 的语法"------它会使用新的 API 重写代码,节省大量时间)。
  • 重构和改进旧代码: 维护通常涉及为清晰度或性能进行重构。你可以利用 AI 半自动地进行大规模重构。例如,"我们的代码使用了大量基于回调的异步操作。将这些示例转换为 async/await 语法。" 它可以向你展示如何更新一个代表性的片段,然后你可以将其应用于整个代码库(也许通过搜索/替换或在 AI 的帮助下逐个文件进行)。或者在更小的规模上,"将这个类重构为使用依赖注入,而不是硬编码数据库连接。" AI 将概述甚至实现一个更清晰的模式。这就是 AI 如何帮助你保持代码库的现代化和整洁,而无需在死记硬背的转换上花费过多时间。
  • 文档和知识管理: 维护软件也意味着保持文档的最新状态。AI 可以使记录更改变得更容易。在实现一个功能或修复后,你可以请 AI 起草一个简短的摘要或更新文档。例如,"生成一个变更日志条目:修复了支付模块以处理过期的信用卡,通过添加重试机制。" 它会生成一个措辞优美的条目。如果你需要更新一个 API 文档,你可以给它新的函数签名并请求描述。AI 可能不知道你整个系统的上下文,但它可以创建一份不错的文档初稿,你再进行调整使其完全准确。这降低了编写文档的启动门槛。
  • 与团队/用户的沟通: 维护涉及沟通------向他人解释改变了什么,影响是什么等。AI 可以帮助编写发布说明迁移指南 。例如,"为从我们服务的 API v1 迁移到 v2 的开发者编写一个简短指南,突出显示已更改的端点。" 如果你给它一个更改列表,它可以将其格式化为一个连贯的指南。对于面向用户的说明,"用非技术性术语为我们的月度更新总结这些 bug 修复。" 同样,你会对它进行完善,但繁重的文字工作已经由 AI 处理。这确保了重要信息真正得到传达(因为在工程师忙碌时,写这些东西常常被搁置)。

本质上,AI 可以被认为是整个维护过程中的一个常驻助手。它可以比你更快地搜索代码(如果集成的话),回忆某件事应该如何工作,甚至留意潜在问题。例如,如果你让一个 AI 智能体扫描你的仓库,它可能会标记出可疑的模式(比如在许多地方进行了没有错误处理的 API 调用)。

Anthropic 的方法是使用一个 CLAUDE.md 文件来给 AI 提供关于你仓库的上下文,这是一种实现更多此类功能的技术。随着时间的推移,我们可能会看到 AI 工具主动为某些类别的问题(安全或风格问题)创建工单或 PR。作为一名 AI 原生的工程师,你会欢迎这些辅助------它们处理繁重的工作,你处理最终的判断和创造性的问题解决。

6. 部署与运维

即使代码编写和测试完成,部署和运维软件也是生命周期中的重要部分。AI 在这里也能提供帮助:

  • **基础设施即代码:**像 Terraform 或 Kubernetes manifests 这样的工具本质上是代码------AI 可以生成它们。如果你需要一个用于 AWS EC2 的快速 Terraform 脚本,并有某些设置,你可以提示,"编写一个用于 AWS EC2 实例的 Terraform 配置,使用 Ubuntu、t2.micro,在 us-west-2。" 它会给出一个合理的配置,你再进行调整。同样,"为一个名为 myapp 的 Node.js 应用创建一个 Kubernetes Deployment 和 Service,镜像来自 ECR,3 个副本。" 它生成的 YAML 将是一个很好的起点。这节省了大量查阅文档以了解语法的时间。一个警告:验证所有凭据和安全组等,但结构会是完整的。
  • CI/CD 管道: 如果你正在设置一个持续集成(CI)工作流(如 GitHub Actions YAML 或 Jenkins 管道),请 AI 起草它。例如:"编写一个 GitHub Actions 工作流 YAML,用于在推送到 main 分支时,对一个 Python Flask 应用进行 lint、测试和部署到 Heroku。" AI 会很好地概述作业和步骤。它可能无法完全正确地获得每个密钥(因为这些语法会更新),但纠正一个小的密钥名称远比自己写整个文件要容易。由于 CI 管道可能很棘手,让 AI 处理样板文件,你只需修复小错误,这是一个巨大的时间节省。
  • 监控和警报查询: 如果你使用监控工具(比如写一个 Datadog 查询或一个 Grafana 警报规则),你可以描述你想要什么,然后让 AI 提出配置。例如,"在 PromQL 中,我如何为一个服务 X 的 error_rate 在 5 分钟内 > 5% 编写一个警报?" 它会构建一个你可以直接使用的查询。这特别方便,因为这些领域特定语言(如 PromQL、Splunk 查询语言等)可能很晦涩------AI 很可能见过例子,并能为你调整它们。
  • 事故分析: 当生产中出现问题时,你通常需要查看日志、指标、追踪。AI 可以帮助分析这些。例如,粘贴故障时间段周围的一段日志,然后问*"这些日志中有什么突出的可能问题?"* 它可能会在噪音中精确定位到一个异常堆栈跟踪或一个可疑的延迟。或者描述症状并问*"数据库在午夜时分 CPU 使用率高的可能根本原因是什么?"* 它可能会列出一些场景(备份正在运行、批处理作业等),帮助你进行调查。OpenAI 的企业指南强调使用 AI 从数据和日志中提取见解------这正在成为一个新兴的用例:AI 运维或 AIOps。
  • ChatOps 和自动化: 一些团队将 AI 集成到他们的运维聊天中。例如,一个由 LLM 支持的 Slack 机器人,你可以问它,"嘿,最新部署的状态如何?有什么错误吗?",它就可以获取数据并进行总结。虽然这需要一些设置(将你的 CI 或监控连接到一个 AI 友好的格式),但这是一个有趣的方向。即使没有这个,你也可以手动操作:复制一些输出(比如测试结果或部署日志),然后让 AI 总结或高亮失败。这有点像一个个人助理,他为你阅读长长的文本滚动条,然后说"要点是:2 个测试失败,看起来是数据库连接问题。"然后你就知道该关注哪里了。
  • 扩展和容量规划: 如果你需要对扩展进行推理(例如,"如果每个用户执行 X 个请求,我们有 Y 个用户,我们需要多少个实例?"),AI 可以帮助进行计算,甚至考虑你提到的因素。这不是魔法------只是计算和估算,但向 AI 提问有时可以得到一个格式化的计划或表格,为你节省一些脑力。此外,AI 可能会回忆起已知的基准(比如"通常一个 t2.micro 对于一个简单的应用可以处理约 100 req/s"),这可以帮助进行粗略的容量规划。务必从官方来源验证这些数字,但它是一个快速的初步估计。
  • 文档与运行手册: 最后,运维团队依赖于运行手册------概述在某些情况下该做什么的文档。AI 可以通过从事故后分析或指令中起草这些来提供帮助。如果你解决了一个生产问题,你可以将步骤提供给 AI,并请求一个结构良好的程序撰写。它会用 markdown 格式给出一个整洁的步骤序列,你可以将其放入你的运行手册仓库。这降低了记录运维知识的门槛,这对于团队来说通常是一个巨大的胜利(部落知识以可访问的形式被记录下来)。Anthropic 的企业信任指南强调流程和人员------拥有清晰的 AI 辅助文档是负责任地传播知识的一种方式。

通过在部署和运维中集成 AI,你基本上不仅在编码中,而且在 DevOps 中都有一个副驾驶。它减少了查找时间(我们多久会去 google 一个特定的 YAML 片段或 AWS CLI 命令?),直接提供可用的答案。但是,务必仔细检查 AI 提出的任何关于基础设施的建议------一个 Terraform 脚本中的小错误可能会代价高昂。尽可能在安全的环境中进行验证。随着时间的推移,当你微调提示或使用某些经过验证的 AI"配方"时,你会对哪些建议是可靠的建立信心。


正如我们所见,从概念到维护的整个生命周期中,都有机会注入 AI 辅助。

模式是:AI 承担繁重的工作并提供知识,而你提供方向、监督和最终判断。

这提升了你的角色------你花更多的时间在创造性设计、批判性思维和决策上,而在样板代码和信息搜寻上花的时间更少。结果通常是更快的开发周期,并且如果管理得当,质量和开发者幸福感都会得到提升。在下一节中,我们将讨论一些最佳实践,以确保你有效和负责任地使用 AI,以及如何持续改进你的 AI 增强工作流程。

有效和负责任的 AI 增强工程的最佳实践

在软件开发中使用 AI 可以带来变革,但要真正 获得丰厚的回报,必须遵循最佳实践并避免常见陷阱。在本节中,我们提炼了在你的工程工作流程中高效使用 AI 的关键原则和指南。这些实践确保 AI 仍然是一个强大的盟友,而不是错误或虚假信心的来源。

1. 制作清晰、有上下文的提示

我们已经多次说过:有效的提示至关重要 。把写提示想象成你工具箱里的一项新核心技能------就像写好代码或好提交信息一样。一个精心制作的提示,可能意味着 AI 的回答是恰到好处的,还是无用甚至误导的。作为最佳实践,始终为 AI 提供足够的上下文。如果你在问关于代码的问题,请包含相关的代码片段或函数目的的描述。不要说:"我该如何优化这个?"而要说:"鉴于这段代码 [包含片段],我该如何优化它的速度,特别是排序部分?"这有助于 AI 专注于你关心的问题。

也要具体说明期望的输出格式。如果你想要一个 JSON,就说出来;如果你期望一个分步解释,就提一下。例如,"一步步解释为什么这个测试会失败""以包含 X、Y 键的 JSON 对象返回结果" 。这样的指令会产生更可预测、更有用的结果。提示工程中一个很棒的技巧是将任务分解为步骤或提供一个例子 。你可以提示:"首先,分析输入。然后,提出一个解决方案。最后,给出解决方案的代码。"这种结构可以引导 AI 完成复杂的任务。Google 的高级提示工程指南涵盖了像思维链提示和提供例子以减少猜测的方法。如果你得到的回答完全离谱,不要只是叹气------完善提示再试一次。有时迭代提示("实际上忽略之前关于 X 的指令,只关注 Y......")会纠正方向。

维护一个成功提示库 也很有价值。如果你找到一种提问方式总能得到好结果(比如,写测试用例或解释代码的某种格式),就保存下来。随着时间的推移,你会建立一个个人手册。一些工程师甚至有专门用于提示的文本片段管理器。鉴于像 Google 这样的公司已经发布了详尽的提示指南,你可以看到这项技能变得多么受重视。简而言之:投入学习如何有效地与 AI '对话',因为它会在输出质量上带来回报。

2. 始终审查和验证 AI 的输出

无论 AI 的回答多么令人印象深刻,永远不要盲目相信它。这个口头禅怎么强调都不过分。像对待人类初级开发者的工作一样对待 AI 的输出:可能有用,但需要审查和测试。有无数关于因为有人接受了不理解的 AI 代码而导致 bug 溜进来的轶事。养成检查 AI 建议的更改的习惯。如果它写了一段代码,用心智或调试器过一遍。添加测试来验证它(AI 也可以帮助写,如我们所讨论的)。如果它给了你一个解释或分析,核对关键点。例如,如果 AI 说"这个 API 是 O(N^2) 的,这导致了速度变慢",去官方文档或自己推理来验证这个复杂性。

尤其要警惕看起来精确的事实性陈述。AI 有产生幻觉细节的倾向------比如看起来合理但实际上不存在的函数名或语法。如果一个 AI 的回答引用了一个 API 或一个配置键,请在官方文档中确认。在企业环境中,永远不要相信 AI 提供的公司特定事实(比如"根据我们的内部政策......"),除非你喂给它这些信息,它只是在转述。

对于代码,一个好的做法是运行你手头的所有快速检查:linters、类型检查器、测试套件。AI 代码可能不符合你的风格指南或可能使用了已弃用的方法。运行 linter/formatter 不仅可以修复风格,还可以捕捉到某些错误(例如,未使用的变量等)。一些 AI 工具集成了这个功能------例如,一个 AI 可能会在沙箱中运行代码,如果看到异常就进行调整,但这并非万无一失。所以你作为工程师必须是安全网。

在安全敏感或关键系统中,要格外小心。不要使用 AI 生成秘密或凭据。如果 AI 提供了一个处理身份验证或加密的代码片段,请对照已知的安全实践仔细检查。曾有案例表明 AI 因为优化了通过测试而非实际安全性,而想出了不安全的算法。责任在于你,确保所有输出都是安全和正确的。

一个有用的提示:用 AI 来验证 AI。例如,从 AI 那里得到一段代码后,你可以问同一个(或另一个)AI,"这段代码有什么 bug 或安全问题吗?"它可能会指出你遗漏的东西(比如,"这里没有对输入进行净化处理"或"如果 X 发生,这可能会溢出")。虽然 AI 的第二意见也不能保证,但它是一个快速的健全性检查。OpenAI 和 Anthropic 的编码指南甚至建议这种迭代提示和审查的方法------本质上是在 AI 的帮助下进行调试。

最后,保持健康的怀疑态度。如果输出中的某些东西让你觉得奇怪或好得不像真的,就进一步调查。AI 很擅长听起来自信。成为 AI 原生的一部分,就是学习 AI 在哪里强,在哪里容易出错。随着时间的推移,你会获得一种直觉(例如,"我知道 LLM 倾向于弄错日期数学,我会仔细检查那部分")。这种直觉,加上彻底的审查,让你始终处于主导地位。

3. 管理范围:用 AI 来放大,而不是让整个项目自动驾驶

虽然点击一个按钮就让 AI 构建一个整个系统的想法很诱人,但在实践中,这很少是那么简单或可取的。一个最佳实践是用 AI 来放大你的生产力,而不是完全自动化你无法监督的事情 。换句话说,对于任何非微不足道的产出,都要保持人在环路中。如果你使用一个自主智能体来生成一个应用(如我们用原型工具看到的那样),将输出视为原型或草稿,而不是成品。计划自己或与你的团队迭代它。

将大任务分解为更小的 AI 辅助块。例如,不要说"给我建一个完整的电子商务网站",你可以把它分解:先用 AI 生成前端页面(你审查它们),然后用 AI 创建一个基本的后端(审查它),然后集成和完善。这种模块化的方法确保你保持理解和控制。它还利用了 AI 在专注任务上的优势,而不是期望它处理非常复杂的相互依赖的任务(这往往是它可能遗漏重要东西的地方)。记住,AI 并不真正"理解"你项目的更高层目标;那是你作为工程师或技术负责人的工作。你决定架构和约束,然后用 AI 作为强大的助手来实现该愿景的部分内容。

抵制过度依赖的诱惑。 即使是你知道的事情,出于方便,也可能很容易就去问 AI。虽然用它来处理死记硬背的任务是可以的,但要确保你仍然在学习和理解。一个 AI 原生的工程师不会关闭他的大脑------恰恰相反,他们用 AI 来解放他们的大脑,用于更重要的思考。例如,如果 AI 为你写了一个复杂的算法,在部署之前花时间去理解那个算法(或至少验证其正确性)。否则,你可能会积累"AI 技术债"------能工作但没人真正理解的代码,这以后可能会给你带来麻烦。

管理范围的一种方法是为 AI 智能体设定明确的边界。如果你使用像 Cline 或 Devin(自主编码智能体)这样的东西,用你的规则来配置它们(例如,未经询问不得安装新依赖项,不得进行网络调用等)。并使用像试运行或计划模式这样的功能。例如,让智能体向你展示它的计划(像 Cline 那样)并逐步批准。这确保了 AI 不会偏离主题或采取你不会采取的行动。本质上,你扮演着 AI 工人的项目经理角色------你不会让一个初级开发者未经代码审查就直接提交到主干;同样,也不要让 AI 这样做。

通过将 AI 的角色限定在可监督的范围内,你可以避免事情在不被注意的情况下失控。你还保持了自己对项目的参与度,这对于质量和你自己的成长至关重要。反之亦然:确实要为所有那些耗时但不需要创造性重体力劳动的小事使用 AI。让它写第十个 CRUD 端点的变体或样板表单验证代码,而你专注于需要人类洞察力的棘手集成逻辑或性能调优。这种分工------AI 负责繁重工作,人类负责监督和创造性问题解决------是当前 AI 集成的最佳点。

4. 持续学习并保持更新

AI 领域和可用的工具正在以惊人的速度发展。今天的"AI 原生"与一年后将会有所不同。所以一个关键原则是:永不停止学习。关注新工具、新模型能力和新最佳实践。订阅新闻通讯或社区(有专门针对 AI 编码工具的开发者新闻通讯)。与同行分享经验:什么提示策略对他们有效,他们尝试了什么新的智能体框架等。社区正在共同探索这一切,保持参与将让你保持领先。

学习的一种实用方法是将 AI 集成到副项目或黑客松中。风险较低,你可以自由探索其能力。尝试用纯 AI 辅助构建一些东西作为实验------你会发现它的超能力和痛点,然后你可以小心地将其应用回你的日常工作。也许在这样做的时候,你会想出一个巧妙的工作流程(比如将 GPT 的提示链式传递给编辑器中的 Copilot),你可以教给你的团队。事实上,指导你团队中的其他人使用 AI 也会巩固你自己的知识。举办一个关于提示工程的午餐会,或分享一个 AI 如何帮助解决棘手问题的成功故事。这不仅能帮助同事,他们也常常会分享自己的技巧,让每个人都得到提升。

最后,也要投资于你的基础技能。AI 可以自动化很多东西,但你在计算机科学、系统设计和问题解决方面的基础越好,你向 AI 提出的问题就越好,你评估其答案的能力也就越强。人类的创造力和对系统的深刻理解并没有被取代------事实上,它们更重要了,因为现在你在指导一个强大的工具。正如我的一篇文章所建议的,专注于最大化"人类的 30%" - 那部分人类洞察力不可替代的工作。这包括定义问题、做出判断和关键调试。通过持续学习来加强这些肌肉,让 AI 处理那 70% 的死记硬背的工作。

5. 协作并建立团队实践

如果你在团队环境中工作(我们大多数人都是),就 AI 使用实践进行协作是很重要的。与队友分享你学到的东西,并倾听他们的经验。也许你发现使用某个 AI 工具提高了你的提交速度;向团队提议,看是否每个人都想采用。反之,也要对指导方针持开放态度------例如,一些团队决定"我们不会在没有至少一次人类审查和测试的情况下提交 AI 生成的代码"(一个明智的规则)。一致性有助于;如果每个人都遵循类似的方法,代码库会保持连贯,人们也会信任彼此的 AI 增强贡献。

你甚至可以将其正式化为团队惯例。例如,如果使用 AI 进行代码生成,一些团队会在 PR 或代码注释中注解,如 // Generated with Gemini, needs review。这种透明度有助于代码审查者集中注意力。这类似于我们对待自动化工具生成的代码的方式(比如"这个文件是由 Rails 生成器搭建的")。知道某些东西是 AI 生成的,可能会改变你的审查方式------也许在某些方面更彻底。

鼓励与 AI 结对编程。一个巧妙的做法是AI 驱动的代码审查:当有人打开一个拉取请求时,他们可能会对 diff 运行一个 AI,得到一个初步的审查评论列表,然后在人类看到之前用它来完善 PR。作为一个团队,你可以采纳这一步骤(但要注意 AI 可能无法捕捉到所有问题,也无法理解业务背景)。另一个协作角度是文档:也许可以维护一个内部的"我如何请 AI 为我们的代码库做 X?"的常见问题解答------例如,如何用你的特定技术栈向它提问。这可以成为新团队成员入职时了解 AI 在你们项目中用法的一部分。

另一方面,尊重那些对 AI 持谨慎或怀疑态度的人。不是每个人都能立即感到舒适或被说服。以一种不具威胁性的方式展示结果,比抽象地宣传更有效。展示它是如何捕捉到一个 bug 或通过起草测试节省了一天的工作。也要诚实地对待失败(例如,"我们尝试用 AI 生成那个模块,但它引入了一个我们后来发现的细微 bug。这是我们学到的教训。")。这建立了集体智慧。一个共同学习的团队会比个人各自为战更有效地集成 AI。

从领导的角度(对于技术负责人和经理),思考如何集成 AI 培训和指导方针。可能留出时间让团队成员实验和分享发现(黑客日或关于 AI 工具的闪电演讲)。另外,作为一个团队决定如何处理 AI 生成代码的许可或知识产权问题------例如,代码生成工具有不同的许可或使用条款。确保遵守这些以及任何公司政策(一些公司限制对专有代码使用公共 AI 服务------在这种情况下,也许你们投资于一个内部 AI 解决方案或使用可以本地运行的开源模型以避免数据泄露)。

简而言之,将 AI 采纳视为一项团队运动。每个人都应该朝着同一个方向努力,使用大致兼容的工具和方法,这样代码库才能保持可维护性,并且效益能在整个团队中倍增。一个组织层面的 AI 原生能力可以成为一个强大的竞争优势,但这需要一致和集体学习。

6. 负责任和道德地使用 AI

最后但同样重要的是,始终要负责任地使用 AI。这包括几个方面:

  • 隐私和安全: 注意你向 AI 服务提供什么数据。如果你正在使用像 OpenAI 的 API 或 IDE 插件这样的托管服务,你发送的代码或文本可能会在某些条件下被提供商存储或看到。对于敏感代码(与安全相关、专有算法、用户数据等),考虑使用自托管模型或至少在提问前剥离敏感部分。许多 AI 工具现在都有企业版或本地部署选项来缓解这个问题。检查你公司的政策:例如,一家银行可能会禁止对代码使用任何外部 AI。Anthropic 的企业指南建议采用包括流程和技术在内的三管齐下的方法来安全部署 AI。遵守这些指南是你的责任。另外,要警惕网络钓鱼或恶意代码------讽刺的是,如果 AI 在恶意示例上训练,它可能会潜在地插入一些东西。所以对安全问题的代码审查仍然很重要。
  • 偏见和公平: 如果 AI 帮助生成面向用户的内容或决策,要注意偏见。例如,如果你正在使用 AI 生成面试问题或分析简历(只是假设),请记住模型可能带有训练数据中的偏见。在软件环境中,这可能不那么直接,但想象一下 AI 生成的代码注释或文档无意中使用了非包容性语言。你仍然应该让这些输出通过你常规的 DEI(多元、公平、包容)标准流程。OpenAI 的企业 AI 指南讨论了确保公平性和检查模型输出是否存在偏见假设。作为一名工程师,如果你看到 AI 产生了有问题的东西(即使是在一个笑话或例子中),不要传播它。我们必须成为道德过滤器。
  • AI 使用的透明度: 如果你的产品部分使用了 AI(比如,一个 AI 写的回复或一个由 AI 建议构建的功能),考虑在适当的地方对用户保持透明。这更多是关于产品决策,但用户越来越期望知道他们何时在阅读由 AI 编写的内容或与机器人互动。从工程角度看,这可能意味着通过工具记录来指示 AI 的参与或标记输出。这也可能意味着设置护栏:例如,如果一个 AI 可能会在你的应用中自由回答用户查询,就要对该输出进行检查或审核。
  • 知识产权(IP)问题: 法律上的理解仍在发展中,但在对受许可材料使用 AI 时要谨慎。如果你请 AI 生成"像库 X 一样的代码",确保你没有无意中复制受许可的代码(模型有时会复述训练数据)。同样,要注意署名------如果 AI 产生的结果受到特定来源的影响,除非被提示,否则它不会引用。目前,将 AI 的输出视为你自己的作品(在许可方面)是审慎的------这意味着你像自己写的一样承担责任。一些公司甚至因为生成代码的知识产权不确定性而限制使用 Copilot。关注这方面的更新,如有疑问,请咨询法律或坚持使用众所周知的算法。
  • 管理期望和人类监督: 从道德上讲,工程师应防止在错误可能造成伤害的关键领域过度依赖 AI(例如,医疗软件或自动驾驶中的 AI)。即使你个人在一个简单的 Web 应用上工作,原则依然存在:确保重要决策有人类备用方案。例如,如果 AI 总结了客户的需求,请让人类与客户确认该摘要。不要让 AI 在重要的地方成为真理的唯一仲裁者。这种负责任的立场保护了你、你的用户和你的组织。

总之,成为一名 AI 原生的工程师也意味着成为一名负责任的工程师 。我们构建可靠、安全和尊重用户的系统的核心职责没有改变;我们只是现在有了更强大的工具。以一种你会为之自豪的方式使用它们(因为实际上,你对其负责)。许多公司和团体(OpenAI、Google、Anthropic)已经发布了关于负责任使用 AI 的指南和手册------这些可以作为加深你对这方面理解的绝佳延伸阅读(见延伸阅读部分)。

7. 对于领导者和管理者:培养 AI 优先的工程文化

如果你领导一个工程团队,你的角色不仅仅是允许使用 AI,而是要战略性地倡导它。这意味着从被动接受转向通过关注几个关键领域来积极培养:

  • 以身作则: 展示 AI 如何用于战略性任务,如规划或起草提案,并阐明一个清晰的愿景,说明它将如何使团队及其产品变得更好。通过公开分享你使用 AI 的成功和失败来示范学习过程。AI 原生文化始于高层,并通过真实性而非仅仅是命令来培养。
  • 投资于技能: 超越仅仅许可,积极提供学习资源。赞助高级工具许可证,正式批准实验时间(如黑客日或探索性冲刺),并创建论坛(演示、共享维基)让团队建立一个集体最佳实践和有效提示库。这表明技能发展是一个真正的优先事项。
  • 培养心理安全感: 创造一个让工程师感到安全的环境,可以实验、分享失败,并毫无顾虑地提出基础性问题。通过将 AI 采纳定位为一个集体旅程来明确解决对无能的恐惧,并通过强调 AI 如何增强而非自动化定义高级工程的关键思维和判断来对抗对被取代的恐惧。
  • 重新审视路线图和流程: 主动识别你的产品或开发周期的哪些部分适合 AI 驱动的加速。准备好调整时间表、估算和团队工作流程,以反映工程工作的性质正在从编写样板代码转向规范、验证和集成。发展你的代码审查流程,以更加重视对 AI 生成输出的关键人类验证。

遵循这些最佳实践将有助于确保你将 AI 集成到工程中能产生积极的结果------更高的生产力、更好的代码、更快的学习------而没有草率使用的缺点。这是关于将 AI 能做的最好的事情与作为一个熟练的人类能做的最好的事情结合起来。下一节也是最后一节,将结束我们的讨论,反思成为 AI 原生的旅程和前方的道路,以及继续你探索的额外资源。

结论:拥抱未来

我们探讨了成为一名 AI 原生软件工程师意味着什么------从心态、到实践工作流、到工具景观、到生命周期集成和最佳实践。很明显,软件工程师的角色正随着 AI 能力的增长而演变。AI 并没有让工程师过时,反而证明了它是对人类技能的强大增强。通过拥抱 AI 原生的方法,你将使自己能够更快地构建、学到更多,并应对前所未有的更大挑战

总结几个关键要点:成为 AI 原生始于将 AI 视为你技能的倍增器,而不是一个神奇的黑匣子或一个威胁。这是关于不断地问,"AI 在这方面能帮我什么?",然后明智地用它来加速常规任务,探索创造性解决方案,甚至捕捉错误。它涉及像提示工程和智能体编排这样的新技能,但也提升了永恒技能的重要性------架构设计、批判性思维和道德判断------因为这些指导着 AI 的应用。AI 原生的工程师总是在学习:学习如何更好地使用 AI,并利用 AI 更快地学习其他领域(一个良性循环!)。

实际上,我们看到有一个丰富的工具生态系统。没有一个万能的 AI 工具------你可能会组装一个个人工具包(IDE 助手、原型生成器等),根据你的工作进行定制。最好的工程师会知道何时该用哪个工具,就像一个拥有储备充足工具箱的工匠。而且他们会随着新工具的出现而更新那个工具箱。重要的是,AI 成为所有工作阶段的合作伙伴------不仅是编码,还包括写测试、调试、生成文档,甚至在设计阶段进行头脑风暴。你越多地让 AI 参与,你就越能将你独特的人类才能集中在最重要的地方。

我们还强调了谨慎和责任。对 AI 能力的兴奋应该与健康的怀疑和严格的验证相平衡。通过遵循最佳实践------清晰的提示、代码审查、小步迭代、意识到局限性------你可以避免陷阱并建立使用 AI 的信任。作为一个经验丰富的专业人士(特别是如果你是一个 IC 或技术负责人,像你们中的许多人一样),你有背景来有效地指导 AI 并减轻其错误。在某种意义上,你的经验比以往任何时候都更有价值:初级工程师可以从 AI 那里得到提升来产出中级水平的代码,但需要高级的心态来提示 AI 以健壮的方式解决复杂问题,并将其优雅地集成到一个更大的系统中。

展望未来,我们只能预期 AI 会变得更强大,更深入地集成到我们使用的工具中。未来的 IDE 可能会让 AI 持续运行,检查我们的工作,甚至在后台优化代码。我们可能会看到针对不同领域的专门 AI(一个擅长前端 UX 的 AI vs 一个用于数据库调优的 AI)。成为 AI 原生意味着你会顺利地适应这些进步------你会把它当作你工作流程的自然演变。也许最终"AI 原生"会简单地变成*"软件工程师"*,因为使用 AI 会像今天使用 Stack Overflow 或 Google 一样普遍。在此之前,那些开创这种方法的人(比如你,阅读并应用这些概念的人)将会拥有优势。

还有一个更广泛的影响:通过加速开发,AI 可以让我们专注于更宏大的项目和工程中更具创造性的方面。它可能会迎来一个快速原型和实验的时代。正如我在我的一篇文章中所思考的,我们甚至可能会看到来构建软件的转变------随着 AI 降低门槛,更多的人(甚至是传统意义上的非编码者)可以将想法变为现实。作为一名 AI 原生的工程师,你可能会在实现这一点方面发挥作用,通过构建工具或指导他人使用它们。这是一个令人兴奋的前景:工程变得更多地关乎想象和设计,而重复的辛劳则由我们的 AI 助手处理。

最后,在你的日常工程实践中采用 AI 不仅是一次性的转变,而是一个旅程。从你所在的地方开始:尝试一个新工具或将 AI 应用到你下一个任务的一部分。逐渐扩大那个舒适区。庆祝胜利(比如第一次 AI 生成的测试捕捉到你遗漏的 bug),并从挫折中学习(也许是 AI 重构破坏了某些东西的时候------这是一个改进提示的教训)。

鼓励你的团队也这样做,建立一个 AI 友好的工程文化。通过务实的使用和持续的学习,你会发现 AI 不仅能提升你的生产力,还能重新点燃开发的乐趣------让你专注于创造性的问题解决,并更快地看到从想法到现实的结果。

AI 辅助开发的时代已经到来,那些巧妙驾驭这股浪潮的人将定义软件工程的下一章。通过阅读这篇文章并在你自己的实践中进行实验,你已经走在了那条路上。继续前行,保持好奇,继续编码------与你的新 AI 伙伴并肩作战。

延伸阅读

为了加深你的理解并持续改进你的 AI 辅助工作流程,这里有一些来自领先组织的优秀免费指南和资源。它们涵盖了从提示工程到构建智能体和负责任地部署 AI 的所有内容:

  • Google - 提示指南 101(第二版) - 一本用于编写有效提示的快速入门手册,包含了针对 Google Gemini 模型的技巧和示例。非常适合学习提示基础知识和如何措辞以获得最佳结果。
  • Google - "更多信号,更少猜测"提示工程白皮书 - 一份 68 页的 Google 白皮书,深入探讨了高级提示技术(用于 API 使用、思维链提示、使用 temperature/top-p 设置等)。非常适合希望在基础之上完善提示工程的工程师。
  • OpenAI - 构建智能体的实用指南 - OpenAI 的综合指南(约 34 页),关于设计和实现在真实场景中工作的 AI 智能体。它涵盖了智能体架构(单智能体 vs 多智能体)、工具集成、迭代循环以及部署自主智能体时的重要安全考虑。
  • Anthropic - Claude Code:智能体编码的最佳实践 - Anthropic 工程师关于在编码场景中充分利用 Claude(他们的 AI)的指南。它包括了像用 CLAUDE.md 结构化你的仓库以提供上下文、用于调试和功能构建的提示格式,以及如何与 AI 编码智能体迭代工作的技巧。对于任何在 IDE 中使用 AI 或计划将 AI 智能体与他们的代码库集成的人都很有用。
  • OpenAI - 识别和扩展 AI 用例 - 本指南帮助组织(和团队)找到 AI 的高杠杆机会并有效扩展。它介绍了一种方法论,以识别 AI 可以在何处增加价值,如何快速原型化,以及如何在企业中可持续地推广 AI 解决方案。非常适合制定 AI 采纳策略的技术负责人和管理者。
  • Anthropic - 在企业中构建可信赖的 AI - 一本专注于企业负责任部署 AI 的电子书。它概述了一个三维方法(人员、流程、技术),以确保 AI 系统可靠、安全,并与组织价值观保持一致。它还专门章节讨论了 AI 安全和治理最佳实践------是理解 AI 项目风险管理的必读之物。
  • OpenAI - 企业中的 AI - OpenAI 的 24 页报告,关于顶尖公司如何使用 AI 以及从这些合作中学到的教训。它提供了战略见解和案例研究,包括将 AI 集成到产品和运营中的实际步骤。有助于看到 AI 商业影响的更大图景,并为高层次的 AI 集成获取灵感。
  • Google - 智能体伴侣 白皮书 - Google 的高级"102 级"技术伴侣,专注于 AI 智能体。本指南探讨了复杂的主题,如智能体评估、工具使用和编排多个智能体。对于希望在智能体开发和部署方面挑战极限的开发者来说,这是一个深入的探讨------本质上是高级 AI 构建者的工具包。

这些资源中的每一个都可以帮助你进一步发展你的 AI 原生工程技能,提供理论框架和实践技术。它们都是免费提供的(没有付费墙),阅读它们将巩固本节中讨论的许多概念,同时引入行业专家的​​新见解。

学习愉快,构建愉快!

我很高兴地宣布,我正在与 O'Reilly 合作撰写一本新的 AI 辅助工程书籍。如果你喜欢我在这里的写作,你可能会有兴趣看看它。

原文:addyo.substack.com/p/the-ai-na...

相关推荐
开开心心_Every8 分钟前
全能视频处理工具介绍说明
开发语言·人工智能·django·pdf·flask·c#·音视频
吏部侍郎10 分钟前
当产品经理开始AI编程(二):从一次失败的重构中领悟的AI协作之道
ai编程·trae
xunberg13 分钟前
AI Agent 实战:将 Node-RED 创建的 MCP 设备服务接入 Dify
人工智能·mcp
江瀚视野14 分钟前
美团即时零售日订单突破1.2亿,即时零售生态已成了?
大数据·人工智能·零售
葡萄城技术团队28 分钟前
Cursor——Tab 标签:智能代码补全的终极工具
cursor
KaneLogger1 小时前
AI模型与产品推荐清单20250709版
人工智能·程序员·开源
中电金信1 小时前
中电金信 :十问高质量数据集:金融大模型价值重塑有“据”可循
人工智能·金融
吕永强1 小时前
算法化资本——智能投顾技术重构金融生态的深度解析
人工智能·科普
新智元1 小时前
奥特曼:再也不和小扎说话!OpenAI 偷袭小扎马斯克,反手挖 4 核心员工
人工智能·openai
新智元1 小时前
CS 专业爆冷,失业率达艺术史 2 倍!年入千万只需 5 年,大学却在禁 Cursor
人工智能·openai