这两天看了 GitHub CEO Thomas Dohmke 的一个专访,他完整介绍了对 AI Coding 从怀疑到震撼再到 Github Copilot 的诞生背后的深度思考。
也聊到了 AI 时代的编程教育,他认为编程不但不会消失,反而会变得越来越重要。
也给出了全栈工程师应该掌握的技能,以及未来的软件架构,VibeCoding 和 Coding Agent 的区别等等。
很值得一看,特别是程序员们。
#01
Github Copilot的诞生与震撼:从怀疑到变革的开端
主持人: Thomas,非常感谢您今天能来到我们的节目。我们知道,GitHub Copilot 在开发者社区引起了巨大的轰动。我想从一个非常个人化的问题开始:您第一次接触到这种由 AI 驱动的代码补全技术时,您的第一反应是什么?是兴奋,是怀疑,还是兼而有之?
Thomas Dohmke: 谢谢 Matthew,很高兴能在这里和大家交流。说实话,我第一次看到这种技术时,内心是充满了惊讶和一丝怀疑的。当时是 2021 年,我们内部正在测试一个早期版本。我记得很清楚,当我看到它能够根据我的注释或部分代码,几乎是瞬间地生成一整段功能完整的代码时,我真的被震撼到了。我的第一反应是:“这怎么可能?这简直是魔法!”
我甚至在想,这会不会只是一个精心设计的演示,而不是真正的产品。但紧接着,作为一名工程师,我也会想:“这真的能行吗?它生成的代码质量如何?会不会引入错误?”
这种从最初的不可置信到理性分析的转变,正是我们团队在开发过程中不断经历的。
主持人: 这种从怀疑到惊叹的转变,听起来非常引人入胜。那么,在 GitHub 内部,当 Copilot 首次向工程师们推出时,他们的反馈是怎样的?有没有一些数据或者故事,能帮助我们理解它在早期阶段所产生的影响?
Thomas Dohmke: 当然。在内部推出后,我们收到了压倒性的积极反馈。工程师们很快就发现,Copilot 不仅仅是一个代码补全工具,它更像是一个智能副驾驶,能够显著提升他们的工作效率。
我们收集了一些关键数据,比如:
- 代码生成比例: 在某些情况下,Copilot 能够生成高达 40% 甚至更多的代码,这意味着开发者可以把更多精力放在解决复杂问题上,而不是重复性的编码工作。
- 用户满意度: 我们的内部调查显示,工程师们对 Copilot 的满意度非常高,他们认为这是一个不可或缺的工具。许多人表示,一旦开始使用 Copilot,就很难想象没有它的时候如何工作。甚至有人开玩笑说,如果让他们禁用 Copilot,他们宁愿选择禁用咖啡!
这些数据和反馈都清楚地表明,Copilot 正在深刻改变软件开发的流程。
它让开发者能够更快地将想法转化为实际的代码,减少了编写样板代码的时间,从而提高了整体的开发效率。
这不仅仅是速度的提升,更是让开发者能够专注于更高层次的思考和创新。
我们看到,它正在让编程变得更加触手可及,甚至对于那些非专业的开发者而言也是如此。
#02:Tab键补全的奥秘:为何选择这种交互方式?
主持人: Thomas,您提到了 Copilot 改变了开发流程,这引出了我的下一个问题。
Copilot 最具标志性的交互方式之一就是它的“Tab 键补全”功能。
为什么 GitHub 会选择这种看似简单,但实则高效的交互模式?它背后有什么设计理念?
Thomas Dohmke: 这是一个非常好的问题,也是我们团队在设计 Copilot 时深思熟虑的一个核心点。
选择“Tab 键补全”作为主要的交互方式,并非偶然,它背后有几个关键的设计理念:
首先,我们希望 Copilot 能够无缝融入开发者现有的工作流。
开发者已经习惯了 IDE(集成开发环境)中的代码自动完成功能,通过按下 Tab 键来接受建议。这种习惯已经根深蒂固。我们不希望引入一个全新的、需要额外学习成本的交互模式。通过沿用 Tab 键,Copilot 能够让开发者感到熟悉和自然,几乎没有学习曲线。
这种“低摩擦”的设计使得它能够立即提升生产力,而不是先增加认知负担。
其次,我们观察到开发者在日常工作中一个非常普遍的行为模式:复制粘贴代码并进行修改。
无论是从 Stack Overflow、其他项目,还是内部的代码库中,开发者经常会找到一段类似的代码,然后将其粘贴到自己的项目中,再根据具体需求进行调整。
Copilot 的 Tab 键补全,实际上就是将这种“复制粘贴并修改”的行为自动化和智能化了。
它不再需要你手动去搜索、复制,而是直接在你的光标位置,根据上下文提供最相关的代码片段。
你只需要按下 Tab 键,就可以接受这个“粘贴”过来的智能建议,然后继续修改。这极大地简化了开发流程。
主持人: 这是一个非常深刻的洞察。所以,它不仅仅是补全,更是在模拟和优化开发者已有的行为模式。
Thomas Dohmke: 没错。我们希望 Copilot 能够成为一个低摩擦的工具。
每次你需要停下来思考如何编写一个循环、一个函数或者一个复杂的正则表达式时,Copilot 都能提供即时帮助。这种即时性,加上 Tab 键的便捷性,使得开发者能够保持“心流”(flow state)。
当你在编程时,最不想看到的就是被打断。
Copilot 通过提供即时、相关的建议,帮助开发者避免了这种打断,让他们能够更长时间地沉浸在创造性的编码过程中。这种不间断的体验对于提高效率和减少疲劳至关重要。
此外,Tab 键补全也体现了我们对“开发者主导”的理念。
Copilot 提供了建议,但最终的决定权始终在开发者手中。你可以选择接受、修改,或者完全忽略它的建议。
这种协作模式,而不是完全的自动化,是我们认为 AI 辅助工具应该扮演的角色。
它是一个强大的助手,但不是替代者。这种设计哲学确保了开发者始终是代码的最终作者和责任人,拥有最终的控制权。
03#:AI时代的编程教育:我们还需要学习编程吗?
主持人: Thomas,您对 Copilot 的设计理念的阐述,让我们对这款工具的理解更深了一层。现在,我想把话题转向一个更宏观的层面:在 AI 如此强大的时代,我们还需要学习编程吗?孩子们还应该学习编程吗?
Thomas Dohmke: 这是一个非常重要的问题,也是我经常被问到的。
我的答案是坚定不移的肯定:孩子们仍然应该学习编程的核心概念。
原因很简单:软件已经渗透到我们生活的方方面面。
无论是你手中的智能手机、你驾驶的汽车、你使用的银行系统,还是你观看的流媒体服务,它们的核心都是软件。理解软件是如何构建的,理解逻辑思维、问题分解和算法设计,这些能力在任何时代都是至关重要的。
AI 可能会改变我们编写代码的方式,但它不会改变我们对逻辑、结构和系统性思考的需求。
我们称之为“计算思维”,这种思维方式是解决复杂问题的基础。
主持人: 也就是说,AI 更多的是一个工具,而不是一个替代品。
Thomas Dohmke: 完全正确。就像计算器并没有让数学教育变得不重要,反而让我们可以专注于更复杂的数学概念一样,AI 也将让编程教育更加注重高阶的思维和解决问题的能力。
孩子们仍然需要学习如何思考问题、如何将其分解成可管理的模块、如何设计解决方案。
这些都是编程的核心,也是 AI 无法替代的。
更重要的是,在 AI 时代,理解 AI 生成代码的重要性变得前所未有的突出。
AI 生成的代码可能非常高效,但它并非完美无缺。开发者需要具备以下能力:
- 安全性: 你需要能够审查 AI 生成的代码,确保它没有安全漏洞,不会引入潜在的风险。AI 可能会从它训练的数据中学习到一些不安全的模式,作为开发者,你需要能够识别并纠正这些问题。这要求我们对代码的深层逻辑有清晰的理解。
- 可靠性: AI 生成的代码是否在所有边缘情况下都能正常工作?它是否符合所有的业务逻辑和需求?开发者需要能够测试、调试并验证这些代码的可靠性。这意味着对测试策略和调试技巧的掌握将更加关键。
- 业务价值: 最关键的是,AI 生成的代码是否真正解决了业务问题,是否符合产品的愿景?开发者需要具备将技术与业务需求结合的能力,确保 AI 的产出真正创造价值。这要求我们不仅仅是“编码员”,更是“问题解决者”。
所以,我认为未来的编程教育会更加强调这些方面:批判性思维、问题解决能力、代码审查、测试以及对业务需求的理解。
AI 将会是我们的强大助手,但我们仍然需要成为这个过程中的“驾驶员”,确保方向正确,并且安全抵达目的地。
这就像你拥有一辆自动驾驶汽车,你仍然需要知道交通规则,并在必要时接管方向盘,确保旅途安全顺畅。
04#:软件开发的演变:模型成为全栈工程师的新技能
主持人: Thomas,您对编程教育未来的展望非常鼓舞人心。
这让我联想到软件开发领域本身在过去几十年里的巨大演变。
您认为 AI 的出现,将如何进一步推动这种演变?
特别是,您提到了“模型正在成为全栈工程师技能的一部分”,这具体意味着什么?
Thomas Dohmke: 确实,软件开发在过去 20 年里经历了翻天覆地的变化。我记得在早期,软件开发更多的是一个封闭的、专业的领域。
但随着时间的推移,我们看到了几个重要的趋势:
- 开源的普及: 开源运动彻底改变了软件的构建和分发方式。它促进了协作,降低了开发门槛,让更多人能够参与到软件的创造中来。这使得知识和工具的共享变得前所未有的便捷。
- 全栈工程师的崛起: 以前,前端、后端、数据库、运维等领域往往是分离的。但现在,我们看到了越来越多能够驾驭整个技术栈的“全栈工程师”。他们不仅精通多种编程语言和框架,还能处理从用户界面到服务器、再到数据库的各种任务。这种多面手的能力极大地提高了开发效率和项目的灵活性。
现在,AI 的出现,正在为“全栈工程师”的定义添加一个新的维度:大模型(AI 模型)使用正在成为全栈工程师技能的一部分。
这不再仅仅是编写代码、配置服务器或者设计数据库那么简单了。
未来的全栈工程师,需要能够:
- 理解和运用 AI 模型: 这意味着他们需要了解不同 AI 模型的能力和局限性,知道何时以及如何将 AI 模型集成到他们的应用程序中。这可能包括调用 API、微调现有模型,甚至训练自己的小型模型。他们需要像理解数据库查询语言一样理解 AI 模型的输入和输出。
- Prompt Engineering(提示工程): 这是与 AI 模型交互的关键技能。全栈工程师需要学会如何清晰、准确地向 AI 模型提问,以获得他们想要的代码、文本或数据。这需要对自然语言处理和 AI 模型的工作原理有一定程度的理解,甚至需要像调试代码一样调试提示。
- AI 驱动的开发流程: 他们需要能够将 AI 工具(如 Copilot)无缝地融入到他们的日常开发流程中,利用 AI 来加速代码生成、测试、调试甚至部署。这包括利用 AI 进行自动化测试用例生成、代码审查建议等。
- 数据管理和伦理: 由于 AI 模型依赖于大量数据,未来的全栈工程师还需要对数据隐私、数据偏见和 AI 伦理有基本的认识,确保他们构建的 AI 驱动的应用程序是公平、负责任的。这不仅仅是技术问题,更是社会责任。
主持人: 听起来,全栈工程师的职责变得更加广泛和复杂了。
Thomas Dohmke: 是的,但同时也是更具创造性和影响力的。
AI 正在把一些重复性的、低层次的编码工作自动化,从而解放了工程师的双手,让他们能够专注于更高层次的架构设计、创新性解决方案和用户体验。
想象一下,一个未来的全栈工程师,他不仅能用传统的编程语言构建应用程序,还能通过自然语言与 AI 模型协作,让 AI 帮助他快速生成原型、探索不同的设计方案,甚至自动化一些复杂的部署任务。
这将极大地提升他们的生产力,并让他们能够构建出以前难以想象的智能应用程序。所以,这不仅仅是技能的增加,更是能力边界的扩展,让他们能够成为真正的“数字建造者”。
5#:GitHub Copilot开源:回馈社区,共创未来
主持人: Thomas,谈到能力扩展,我们不能不提 GitHub Copilot 的一个重大里程碑事件:它在 VS Code 中开源了。这对于开发者社区来说是一个巨大的惊喜。您能详细解释一下,为什么 GitHub 会做出这个决定?这背后的策略和愿景是什么?
Thomas Dohmke: 这是一个非常重要的决定,也是我们对开源社区的坚定承诺的体现。宣布 GitHub Copilot 在 VS Code 中开源,其核心原因在于回馈社区,并鼓励开发者为 Copilot 贡献和创新。
GitHub 的根基就是开源。
我们深知,开源社区的力量在于其协作性、透明性和创新性。当我们将 Copilot 开源时,我们不仅仅是发布了一段代码,我们更是打开了一个共同创造的大门。
我们希望全球的开发者都能参与进来,共同塑造 Copilot 的未来。我们相信,集体的智慧和力量将远超任何一个单一团队。
主持人: 那么,具体来说,GitHub 对外部开发者有什么样的期待?您希望他们能为 Copilot 带来哪些新的功能或改进?
Thomas Dohmke: 我们对外部开发者的期望非常高,并且充满期待。我们相信社区的力量是无穷的,他们会带来我们意想不到的创新。
具体来说,我们希望看到以下几个方面:
- 集成更多模型: 尽管 Copilot 已经非常强大,但不同的 AI 模型在处理特定任务或语言方面可能有其独特优势。我们希望社区能够探索并集成更多不同的 AI 模型,让 Copilot 能够支持更广泛的编程语言、框架和开发场景。例如,如果有人发现某个小众语言的 AI 模型表现出色,他们可以尝试将其集成到 Copilot 中,从而为更多开发者提供便利。
- 扩展 Agent Mode 的应用场景: 我们正在积极探索 Copilot 的“Agent Mode”(代理模式),它不仅仅是代码补全,更能够理解你的意图,并主动执行一系列任务,比如重构代码、查找错误、甚至根据自然语言描述构建一个小型应用。我们希望社区能够帮助我们扩展 Agent Mode 的应用场景,探索它在更复杂、更智能的开发任务中的潜力。比如,一个 Agent 可以帮助你自动化整个测试套件的编写,或者根据产品需求文档自动生成大部分的 API 接口,从而实现更高级别的自动化。
- 改进用户体验(UX): 尽管我们投入了大量精力在用户体验上,但总有改进的空间。我们希望社区能够提供反馈,甚至直接贡献代码来优化 Copilot 的用户界面、交互逻辑和整体使用体验。这可能包括更智能的建议过滤、更直观的配置选项,或者针对特定 IDE 或工作流的优化,让 Copilot 的使用体验更上一层楼。
- 构建插件和扩展: 开源也意味着开发者可以基于 Copilot 的核心功能,构建自己的插件和扩展。这些插件可以针对特定的领域(如数据科学、游戏开发)或特定的工具链(如某个 CI/CD 系统)提供定制化的 AI 辅助功能。这将极大地丰富 Copilot 的生态系统,使其能够适应各种独特的开发需求。
- 教育和最佳实践: 社区也可以在教育和最佳实践方面发挥重要作用。他们可以分享如何更有效地使用 Copilot,如何审查 AI 生成的代码,以及如何将 AI 辅助开发融入到团队的工作流程中。这种知识共享对于新用户的学习和整个社区的成长都至关重要。
主持人: 听起来,这是一个让 Copilot 变得更加强大、更加个性化、更加普惠的宏伟愿景。
Thomas Dohmke: 确实如此。我们相信,通过开源,Copilot 将不再仅仅是 GitHub 的产品,它将成为整个开发者社区共同的资产。
这种开放的协作模式,将加速 AI 辅助开发技术的进步,并最终惠及全球数百万的开发者。
我们期待看到社区能创造出什么,这将是一个激动人心的旅程,一个由社区驱动的创新之旅。
6#:代码的未来:确定性与非确定性的融合
主持人: Thomas,您刚才提到了 AI 模型在扩展 Copilot 功能方面的潜力,
这让我思考一个更深层次的问题:AI 生成的代码本质上是非确定性的,而传统的软件开发则追求确定性。
未来,软件工程师将如何平衡和融合这两种特性?
您所说的“在自然语言和确定性代码之间切换的能力”具体指什么?
Thomas Dohmke: 这是一个非常核心的挑战,也是未来软件开发的一个重要趋势。
你说的很对,传统的软件开发追求的是确定性:给定相同的输入,代码总是产生相同的输出。这是我们构建可靠、可预测系统的重要基础。然而,AI 模型,尤其是大型语言模型(LLMs),其产出本质上是非确定性的。即使是相同的提示,它们也可能生成略有不同的代码或文本。这种固有的随机性是 AI 的一个特点。
这种非确定性带来了新的机遇,但也提出了新的要求。未来的软件工程师,需要具备一种新的能力:在自然语言和确定性代码之间无缝切换。
这具体意味着:
- 1. 用自然语言表达意图: 工程师将越来越多地使用自然语言来描述他们想要实现的功能,而不是直接编写每一行代码。例如,他们可能会说:“创建一个用户注册表单,包含用户名、密码和邮箱字段,并进行基本的输入验证。” AI 工具会根据这个自然语言描述,生成相应的确定性代码。这就像是与一个非常聪明的同事进行高层次的沟通。
- 2. 理解和审查 AI 生成的“非确定性”代码: 当 AI 生成代码时,工程师需要能够理解这些代码的逻辑、潜在的副作用以及它们是否符合预期的行为。由于 AI 的非确定性,生成的代码可能不是你预期的“唯一”解决方案,甚至可能包含细微的错误或不符合最佳实践的地方。因此,代码审查和调试能力
变得更加重要。这要求开发者具备高度的批判性思维和问题解决能力。
- 3. 将非确定性转化为确定性: 工程师的核心任务之一,就是将 AI 生成的、可能带有非确定性的代码片段,整合到他们追求确定性的软件系统中。这可能涉及到:
- 精细化调整: 修改 AI 生成的代码,使其完全符合项目的编码规范和功能要求。这就像是雕刻师在粗胚上进行精修。
- 编写测试: 为 AI 生成的代码编写严密的单元测试和集成测试,确保其在各种条件下都能稳定运行。测试是确保确定性的关键环节。
- 错误处理: 识别和处理 AI 生成代码中可能存在的异常情况和错误。预见并解决潜在问题是专业工程师的职责。
- 性能优化: 确保 AI 生成的代码在性能上达到要求。AI 生成的代码可能不是最优的,需要人工优化。
- 4. 利用 AI 进行探索性编程: 在项目早期或进行原型开发时,工程师可以利用 AI 的非确定性来快速探索不同的实现方案。例如,你可以让 AI 生成几种不同的算法实现,然后从中选择最适合的一种。这是一种“Vibe Coding”(氛围编码)的方式,它更注重快速迭代和创意探索,允许开发者在不确定性中寻找灵感。
- 5. 构建 AI 驱动的确定性系统: 最终目标是构建出既能利用 AI 的强大能力,又能保持高可靠性和可预测性的软件系统。这意味着工程师需要设计出能够有效管理 AI 模型输入和输出的架构,并确保整个系统的行为是可控的。这需要对系统设计和架构有深刻的理解。
主持人: 这听起来像是对工程师提出了更高的要求,但同时也赋予了他们更大的力量。
Thomas Dohmke: 确实如此。这不仅仅是学习一门新的编程语言,更是学习一种新的思维模式。
未来的工程师将成为“AI 协调者”和“AI 审查者”,他们需要掌握与 AI 沟通的艺术,并能够将 AI 的智能产出转化为可靠的软件。
这种能力将是未来软件工程师的核心竞争力之一。
它将使他们能够以更快的速度、更高的效率构建出更复杂的系统,同时仍然保持对代码质量和系统行为的完全控制。
这种融合将是软件开发领域最令人兴奋的变革之一。
7#:未来软件架构的展望:操作系统隐形,智能助手驱动UI
主持人: Thomas,您对确定性与非确定性代码融合的见解非常深刻。这自然引出了我对未来软件架构的疑问。
在 AI 深度融入软件开发的背景下,您认为未来的操作系统会是什么样子?
用户界面又将如何演变?
您提到了“操作系统可能变得更加隐藏”和“用户界面可能更多地由智能助手(Agent)驱动”,这具体意味着什么?
Thomas Dohmke: 这是一个非常宏大且令人兴奋的话题。我认为,随着 AI 的发展,我们正在走向一个“操作系统隐形化”的时代。
目前,我们仍然非常依赖于显式的操作系统界面,比如桌面、文件管理器、应用程序图标等。
但未来,随着智能助手(Agent)变得越来越强大,用户与计算机的交互方式将发生根本性转变。
主持人: 也就是说,我们可能不再需要直接与文件系统或应用程序图标打交道?
Thomas Dohmke: 没错。想象一下,你不再需要打开一个特定的应用程序来完成任务。
你可能会直接通过自然语言与一个智能助手进行交互,告诉它你的需求。
例如,你不是打开“照片编辑软件”来编辑一张照片,而是直接对智能助手说:“把这张照片的背景虚化,然后调整一下色彩,让它看起来更温暖。”
这个智能助手会在后台调用相应的工具和模型来完成任务,而你甚至不需要知道它调用了哪个具体的应用程序。所有的复杂操作都被抽象化了。
这就是我所说的“操作系统可能变得更加隐藏”。
底层的文件管理、进程调度、资源分配等操作系统功能将继续存在,但它们将更多地在后台默默运行,由智能助手进行抽象和管理。用户将不再需要关心这些底层细节,他们只需要关注自己的意图和任务。
这就像你驾驶一辆现代汽车,你不需要了解发动机内部的每一个零件如何工作,只需要告诉它你想去哪里。
其次,关于“用户界面可能更多地由智能助手(Agent)驱动”,这意味着用户与软件的交互将从点击按钮、填写表单,转向更自然的对话和意图表达。
智能助手将成为用户与复杂软件系统之间的桥梁。
这不仅仅是语音助手那么简单,它更像是一个能够理解上下文、预测用户需求、并主动执行任务的智能实体。
例如:
- 按需生成应用程序: 你可能会对智能助手说:“我需要一个简单的应用程序来跟踪我的日常开销。” 智能助手可能会在几秒钟内为你生成一个定制化的、功能齐全的应用程序,而不是让你去应用商店下载一个通用的记账软件。这种“即时应用”的生成将极大地提高效率。
- 个性化和自适应: 智能助手将能够学习你的偏好、习惯和工作流程,从而提供高度个性化的体验。它可能会根据你的日程安排、当前位置或正在进行的任务,主动为你提供相关的信息或建议。它会成为你最了解你的数字伙伴。
- 多模态交互: 用户界面将不仅仅是视觉的,还可能包括语音、手势、甚至情感识别。智能助手将能够以最自然、最有效的方式与用户进行交互。这意味着更直观、更沉浸式的体验。
主持人: 这听起来像是一个科幻电影中的场景,但您认为这在技术上是可行的吗?
Thomas Dohmke: 我认为我们正朝着这个方向快速发展。大型语言模型和多模态 AI 的进步,正在为这种未来奠定基础。当然,这需要解决许多技术挑战,比如如何确保 AI 的可靠性、安全性,以及如何处理复杂的意图理解。
但最终,我相信这将使软件变得更加普惠和易用。
它将降低人们与计算机交互的门槛,让更多非技术背景的人也能轻松地利用软件来解决问题、创造价值。
这不仅仅是效率的提升,更是人机交互范式的根本性转变。
我们将从“使用工具”转向“与智能伙伴协作”,而这个伙伴将以最直观的方式理解我们的需求,并帮助我们实现目标。
8#:Vibe Coding与Coding Agents:两种开发模式的共存
主持人: Thomas,您对未来软件架构的展望令人非常兴奋,它描绘了一个高度智能化的世界。
在这个世界里,您提到了两种不同的 AI 辅助开发模式:“Vibe Coding”和“Coding Agents”。
您能详细解释一下这两种模式的区别,以及它们在软件开发的不同阶段将如何发挥作用吗?
Thomas Dohmke: 这是一个非常关键的区别,因为它反映了 AI 在软件开发中扮演的不同角色。我认为这两种模式将长期共存,并在不同的开发场景中发挥各自的优势。
首先,我们来谈谈Vibe Coding(氛围编码)。
- 特点: Vibe Coding 更注重快速原型开发、创意探索和即时反馈。它通常发生在项目的早期阶段,或者当你需要快速验证一个想法、尝试一个新概念时。在这种模式下,开发者会以一种更自由、更直观的方式与 AI 协作,就像在进行一场“头脑风暴”。它强调的是速度和灵活性,而不是完美。
- AI 的作用: AI 在 Vibe Coding 中扮演的角色是一个灵感生成器和快速实现者。它能够根据开发者模糊的意图,快速生成大量的代码片段、设计草图或功能原型。开发者不需要关心代码的完美性、可维护性或性能优化,他们更关注的是能否快速看到效果,验证想法的可行性。这就像是画家在画布上快速勾勒草图。
- 场景: 想象一下,你正在尝试一个新的算法,或者为一个新的产品功能进行概念验证。你可能会用自然语言向 AI 描述你的想法,然后让 AI 快速生成几段不同的实现代码。你快速迭代,不断调整提示,直到找到一个满意的方向。这种模式下,代码的质量可能不是最高的,但它能让你以极快的速度进行实验和探索。它更像是一种“快速草图”的绘制,帮助你迅速验证概念。
主持人: 听起来 Vibe Coding 更像是一种敏捷开发中的“探索”阶段。
Thomas Dohmke: 完全正确。它强调速度和灵活性,是创新的孵化器。
接下来,我们谈谈Coding Agents(编码代理)。
- 特点: Coding Agents 则更侧重于严肃的、注重质量和流程的 AI 辅助开发。它通常应用于项目的后期阶段,或者当你需要构建一个稳定、可靠、高性能的生产级系统时。在这种模式下,AI 代理不仅仅是生成代码,它们更能够理解复杂的任务,执行一系列步骤,并遵循严格的编码规范和质量标准。它强调的是自动化、精确性和可靠性。
- AI 的作用: AI Agent在这里扮演的角色是一个智能执行者和质量保障者。它不仅仅是生成代码,它还能:
- 理解复杂任务: 比如,你可能会给一个 Coding Agent 一个需求文档,让它负责实现一个完整的模块,包括数据模型、API 接口和单元测试。它能够理解并分解复杂的任务。
- 遵循规范: 代理会严格遵循团队的编码规范、设计模式和安全最佳实践。这确保了代码的一致性和可维护性。
- 自动化流程: 代理可以自动化整个开发流程中的多个步骤,例如代码生成、测试、重构、文档编写,甚至初步的部署。这极大地提高了生产线的效率。
- 自我修正: 更高级的代理甚至可能具备一定的自我修正能力,当它们发现自己生成的代码存在问题时,能够尝试进行修复。这使得它们更加自主和可靠。
- 场景: 想象一下,一个团队正在构建一个大型企业级应用。他们可能会使用 Coding Agents 来自动化一些重复性的后端服务编写、数据库迁移脚本的生成,或者为现有代码库添加新的功能。这些代理会确保生成的代码符合高标准,并且能够无缝集成到现有系统中。它更像是一个“自动化工厂”,确保高质量的产出。
主持人: 所以,Vibe Coding 像是“创意工作室”,而 Coding Agents 则是“生产线”。
Thomas Dohmke: 精辟的比喻!我认为,未来的软件开发团队将同时利用这两种模式。在项目的初期,他们可能会利用 Vibe Coding 来快速探索和验证想法。一旦方向确定,他们就会转向 Coding Agents,利用它们来构建高质量、可维护的生产级代码。
这种协同作用将极大地提升整个软件开发生命周期的效率和质量。
它将让开发者能够更专注于创新和高价值的工作,而将重复性和规范性的任务交给 AI Agent。
这不仅仅是工具的进步,更是开发范式的演进,引领我们走向一个更智能、更高效的开发未来。
9#:AI赋能的未来工作:创造新机遇,而非取代
主持人: Thomas,您对 Vibe Coding 和 Coding Agents 的区分非常清晰,让我们看到了 AI 在不同开发阶段的价值。现在,我想触及一个更广泛、也更敏感的话题:
AI 对未来工作的影响。
许多人担心 AI 会取代知识工作,特别是像软件开发这样的领域。您对此有何看法?
Thomas Dohmke: 这是一个非常普遍的担忧,也是可以理解的。
但我的观点是,AI 不会取代知识工作者,而是会赋能知识工作者,并创造新的工作机会。
历史告诉我们,每一次重大的技术革命,都会带来就业结构的调整,但最终总是会创造出比以往更多、更丰富的工作机会。蒸汽机、电力、计算机、互联网,无一例外。AI 也不例外。它将改变工作的性质,但不会消除对人类劳动力的需求。
主持人: 那么,具体到软件开发领域,您认为 AI 将如何创造新的工作机会?
Thomas Dohmke: 我们可以从几个角度来看:
- 1. 提升现有工作的效率和质量: 对于现有的软件开发者来说,AI 工具(如 Copilot)将极大地提升他们的生产力。他们可以更快地完成任务,从而有更多的时间去学习新技能、解决更复杂的问题、进行创新。这使得他们的工作更具价值,也更令人满意。开发者可以从繁琐的重复劳动中解放出来,专注于更高层次的思考。
- 2. 降低门槛,吸引更多人参与: AI 将使得编程变得更加容易学习和实践。当 AI 能够帮助你完成一些基础的编码任务时,那些非专业的、但有想法的人也能更容易地将他们的想法转化为软件。例如,一个销售人员可能不需要成为一个专业的程序员,也能利用 AI 快速构建一个定制化的客户管理工具。这将极大地扩大软件开发的参与者群体,让更多不同背景的人能够成为“公民开发者”。
- 3. 创造全新的 AI 相关职业: 随着 AI 技术的成熟和应用,将会涌现出大量全新的职业,
例如:
- Prompt Engineer(提示工程师): 专门负责设计和优化与 AI 模型交互的提示语,以获得最佳结果。他们是人与 AI 之间的翻译者。
- AI 系统架构师: 负责设计和构建包含 AI 组件的复杂系统。他们需要理解 AI 的能力并将其融入到整体架构中。
- AI 伦理专家:
确保 AI 系统的公平性、透明性和安全性。这是一个日益重要的领域,关乎 AI 的社会影响。
- AI 训练数据策展人: 负责收集、清洗和标注用于训练 AI 模型的数据。高质量的数据是高质量 AI 的基础。
- AI 部署和运维工程师: 负责将 AI 模型部署到生产环境并进行维护。确保 AI 系统的稳定运行。
- AI 风险分析师: 评估和管理 AI 系统可能带来的风险。识别和缓解潜在的负面影响。
这些都是在 AI 出现之前不存在的职业,它们将需要新的技能和知识。
主持人: 所以,
Thomas Dohmke: 精准的概括。AI 将成为一个强大的放大器,放大人类的创造力、解决问题的能力和生产力。它将把我们从重复性的、低价值的工作中解放出来,让我们能够专注于更高层次的思考和创新。这是一种人与 AI 的“共生关系”。
当然,这需要我们积极适应和学习。
那些能够拥抱 AI、学习如何与 AI 协作的人,将在未来的劳动力市场中更具竞争力。教育体系也需要随之调整,以培养适应 AI 时代所需的新技能。
最终,我相信 AI 将会使更多人能够参与到软件开发中来,让软件的力量惠及更广泛的人群,从而创造一个更加智能、更加高效、也更具创造力的未来。
这是一个充满机遇的时代,而不是一个需要恐惧的时代。
10#:AI辅助编码工具的未来形态:走向Agent生态系统
主持人: Thomas,您对 AI 和未来工作的乐观展望非常鼓舞人心。
现在,让我们回到 AI 辅助编码工具本身。
目前我们看到了多种形式的 AI 辅助工具,比如代码补全(Copilot)、独立的 AI 代理(Agent)、以及各种插件。
您认为这些不同的形式会走向融合吗?
或者它们会各自发展,形成一个多元化的生态系统?您对“Agent 生态系统”的愿景是什么?
Thomas Dohmke: 这是一个非常好的问题,它触及了 AI 辅助开发工具的未来演进方向。
我认为,这些不同的形式最终会走向融合,并形成一个庞大而复杂的“Agent 生态系统”。
目前,我们看到的工具确实多种多样:
- 代码补全工具(如 Copilot): 它们主要在 IDE 中提供即时、上下文感知的代码建议。它们是“副驾驶”,在你的每一步编码过程中提供帮助。
- 独立的 AI Agent: 它们可能是一个独立的应用程序或服务,能够理解更复杂的指令,并执行一系列任务,例如重构整个代码库、生成测试用例、甚至自动化部署流程。
- 各种插件和扩展: 它们可能专注于特定的任务,比如代码质量检查、安全漏洞扫描、或者特定框架的代码生成。
主持人: 那么,您所设想的“Agent 生态系统”具体是怎样的?
Thomas Dohmke: 我认为,未来的发展趋势是,这些独立的工具将不再是孤立的,而是会相互连接和协作。
这个“Agent 生态系统”将具备以下特点:
- 1. 模块化和可插拔性: 不同的 AI 代理将像乐高积木一样,可以根据开发者的需求进行组合和配置。你可以选择不同的代理来处理不同的任务,比如一个代理负责代码生成,另一个负责代码审查,还有一个负责自动化测试。这种灵活性将允许开发者根据项目需求定制他们的 AI 工具链。
- 2. 智能编排: 将会有一个中央的“编排器”或“超级代理”,它能够理解你的高层次意图,然后将任务分解,并分配给最适合的子代理来执行。例如,你可能会对超级代理说:“帮我实现这个用户故事。” 超级代理会调用代码生成代理来编写代码,调用测试代理来编写测试,调用文档代理来生成文档,并确保它们协同工作。这就像一个智能的项目经理,协调所有资源。
- 3. 上下文感知和共享: 不同的代理之间将能够共享上下文信息,例如当前的打开文件、项目结构、代码库的约定等。这将使得它们能够提供更智能、更相关的帮助。这种共享信息的能力是实现无缝协作的关键。
- 4. 开放性和可扩展性: 这个生态系统将是开放的,允许第三方开发者创建和贡献自己的 AI 代理。这将极大地丰富生态系统的功能,并满足不同开发者和团队的特定需求。就像现在的应用商店一样,会有各种各样的 AI 代理可供选择。
- 5. 自然语言作为接口: 自然语言将成为与这个 Agent 生态系统交互的主要接口。开发者将能够通过对话的方式,指挥这些代理完成复杂的开发任务。这将使得编程变得更加直观和易于访问。
主持人: 这听起来像是将整个软件开发过程都智能化了。
Thomas Dohmke: 是的,这正是我们的愿景。想象一下,你不再需要手动执行每一个步骤,而是可以与一个智能的“开发团队”进行对话,这个团队由不同的 AI 代理组成,它们各司其职,高效协作。
例如,你可能正在开发一个新的功能。你可以告诉你的主要开发代理:“请为这个功能编写一个 API 接口,并确保它符合 RESTful 规范。” 这个代理可能会调用一个专门的 API 设计代理来生成接口定义,然后调用一个代码生成代理来编写实现代码,再调用一个测试代理来生成单元测试,最后调用一个安全代理来检查潜在的漏洞。所有这些都可能在后台自动完成,你只需要审查最终的结果。
这种“Agent 生态系统”将使得软件开发变得更加高效、更加自动化、也更加智能。
它将把开发者从繁琐的重复性任务中解放出来,让他们能够将精力集中在创新、架构设计和解决真正的业务问题上。这将是软件开发领域一次激动人心的变革,我们正处于这个变革的开端。
End:AI驱动的软件开发模式
主持人: 总结一下我们今天的讨论,Thomas 描绘了一个由 AI 深度赋能的软件开发新纪元。
这个纪元中:
- AI 不再是简单的工具,而是开发者不可或缺的“副驾驶”和“智能代理”,极大地提升了开发效率和质量。
- 编程教育将更加注重批判性思维、问题解决和对 AI 生成代码的理解与审查。
- 未来的全栈工程师需要掌握与 AI 模型交互、进行提示工程的能力,将模型视为其技能栈的一部分。
- 软件架构将趋向于“操作系统隐形化”,用户界面将更多地由智能助手驱动,实现按需生成和高度个性化的应用体验。
- “Vibe Coding”和“Coding Agents”将协同工作,分别满足快速原型和生产级开发的需要。
- AI 不会取代知识工作,而是创造更多新的职业机会,并降低编程门槛,让更多人参与到软件创造中来。
- 最终,我们将走向一个由相互协作的 AI 代理组成的“Agent 生态系统”,实现软件开发的更高层次自动化和智能化。
这无疑是一个充满挑战,但也充满无限机遇的未来。AI 正在重塑我们构建软件的方式,它将让软件开发变得更加高效、更具创造性、也更具影响力。
视频地址
https://www.youtube.com/watch?v=3WNukz5-Ch0&t=2311s