社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

VibeCoding和CodingAgent,AI与软件开发的未来: GitHub CEO Thomas Dohmke专访

GevinView • 3 天前 • 21 次点击  


这两天看了 GitHub CEO Thomas Dohmke 的一个专访,他完整介绍了对 AI Coding 从怀疑到震撼再到 Github Copilot 的诞生背后的深度思考。

也聊到了 AI 时代的编程教育,他认为编程不但不会消失,反而会变得越来越重要。

也给出了全栈工程师应该掌握的技能,以及未来的软件架构,VibeCoding 和 Coding Agent 的区别等等。


很值得一看,特别是程序员们。



Image

#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. 1. 用自然语言表达意图: 工程师将越来越多地使用自然语言来描述他们想要实现的功能,而不是直接编写每一行代码。例如,他们可能会说:“创建一个用户注册表单,包含用户名、密码和邮箱字段,并进行基本的输入验证。” AI 工具会根据这个自然语言描述,生成相应的确定性代码。这就像是与一个非常聪明的同事进行高层次的沟通。

  2. 2. 理解和审查 AI 生成的“非确定性”代码: 当 AI 生成代码时,工程师需要能够理解这些代码的逻辑、潜在的副作用以及它们是否符合预期的行为。由于 AI 的非确定性,生成的代码可能不是你预期的“唯一”解决方案,甚至可能包含细微的错误或不符合最佳实践的地方。因此,代码审查和调试能力 变得更加重要。这要求开发者具备高度的批判性思维和问题解决能力。

  3. 3. 将非确定性转化为确定性: 工程师的核心任务之一,就是将 AI 生成的、可能带有非确定性的代码片段,整合到他们追求确定性的软件系统中。这可能涉及到:
  • 精细化调整: 修改 AI 生成的代码,使其完全符合项目的编码规范和功能要求。这就像是雕刻师在粗胚上进行精修。
  • 编写测试: 为 AI 生成的代码编写严密的单元测试和集成测试,确保其在各种条件下都能稳定运行。测试是确保确定性的关键环节。
  • 错误处理: 识别和处理 AI 生成代码中可能存在的异常情况和错误。预见并解决潜在问题是专业工程师的职责。
  • 性能优化: 确保 AI 生成的代码在性能上达到要求。AI 生成的代码可能不是最优的,需要人工优化。

  1. 4. 利用 AI 进行探索性编程: 在项目早期或进行原型开发时,工程师可以利用 AI 的非确定性来快速探索不同的实现方案。例如,你可以让 AI 生成几种不同的算法实现,然后从中选择最适合的一种。这是一种“Vibe Coding”(氛围编码)的方式,它更注重快速迭代和创意探索,允许开发者在不确定性中寻找灵感。
  2. 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. 1. 提升现有工作的效率和质量: 对于现有的软件开发者来说,AI 工具(如 Copilot)将极大地提升他们的生产力。他们可以更快地完成任务,从而有更多的时间去学习新技能、解决更复杂的问题、进行创新。这使得他们的工作更具价值,也更令人满意。开发者可以从繁琐的重复劳动中解放出来,专注于更高层次的思考。


  1. 2. 降低门槛,吸引更多人参与: AI 将使得编程变得更加容易学习和实践。当 AI 能够帮助你完成一些基础的编码任务时,那些非专业的、但有想法的人也能更容易地将他们的想法转化为软件。例如,一个销售人员可能不需要成为一个专业的程序员,也能利用 AI 快速构建一个定制化的客户管理工具。这将极大地扩大软件开发的参与者群体,让更多不同背景的人能够成为“公民开发者”。
  2. 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. 1. 模块化和可插拔性: 不同的 AI 代理将像乐高积木一样,可以根据开发者的需求进行组合和配置。你可以选择不同的代理来处理不同的任务,比如一个代理负责代码生成,另一个负责代码审查,还有一个负责自动化测试。这种灵活性将允许开发者根据项目需求定制他们的 AI 工具链。
  2. 2. 智能编排: 将会有一个中央的“编排器”或“超级代理”,它能够理解你的高层次意图,然后将任务分解,并分配给最适合的子代理来执行。例如,你可能会对超级代理说:“帮我实现这个用户故事。” 超级代理会调用代码生成代理来编写代码,调用测试代理来编写测试,调用文档代理来生成文档,并确保它们协同工作。这就像一个智能的项目经理,协调所有资源。
  3. 3. 上下文感知和共享: 不同的代理之间将能够共享上下文信息,例如当前的打开文件、项目结构、代码库的约定等。这将使得它们能够提供更智能、更相关的帮助。这种共享信息的能力是实现无缝协作的关键。
  4. 4. 开放性和可扩展性: 这个生态系统将是开放的,允许第三方开发者创建和贡献自己的 AI 代理。这将极大地丰富生态系统的功能,并满足不同开发者和团队的特定需求。就像现在的应用商店一样,会有各种各样的 AI 代理可供选择。
  5. 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

Image

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183533
 
21 次点击