AI编程助手:它们如何改变我作为软件工程师的工作流程
自从ChatGPT发布以来,我与家人、朋友和同事的谈话中,人工智能的话题一直很普遍。大多数人承认,虽然这项技术具有革命性,但并没有显著影响到他们的日常生活或职业生涯。然而,我的经历完全相反。在多次解释人工智能助理如何极大地改变了我作为软件工程师的工作流程之后,我决定将它写下来供其他人阅读。为了帮助你们理解,让我简要介绍一下我过去几年的生活,以更好地理解我的工作和工作流程。
在我大学的最后一年,我和两个同伴一起开了一家软件开发公司。我们的目标是创建美丽且高度功能性的软件。在过去的两年半里,我们与五个不同的客户合作,并构建了两个全栈的内部项目。每个项目都有不同的技术框架和一组技术要求,这意味着我们经常需要快速掌握新的语言或框架来完成任务。正如任何开发者所知道的那样,这需要花费大量的时间观看YouTube教程和阅读文件。然后,许多让人沮丧的调试小时直到你开始掌握它。虽然听起来很乏味,但这种不断学习的状态实际上是我工作中最喜欢的方面之一。现在,有了这个场景,让我们深入了解AI是如何开始慢慢地但迅速地改变我的职业和日常工作流程的。
AI助手:一种需要使用的工具
在深入探讨我所使用的产品及其如何改变我的工作流程之前,我想分享一下我对于AI的看法,并讨论我如何看待这些工具的使用。我认为这些AI工具只是工具,就像其他工具一样。在各种社交媒体平台上,有很多关于ChatGPT和AI产品革命化生活或让你开始赚取数千元 passively 的炒作,但在我看来,这些都是当今"AI博主"们 两年前推崇NFT和Web-3一样,我们可以看到这些技术现在的状况。在我们目前的阶段,这些AI工具确实能够极大地简化工作流程,但归根结底,它们只是工具。它们对你的生活产生的影响将直接与你在利用它们方面所付出的努力成正比。
GitHub Copilot: 第一步
现在让我们再次深入了解我如何运用这些工具。一年前,我正在阅读每日编程新闻时,看到Github发布了一款名为Github Copilot的人工智能工具。它承诺了程序员一个超级加强的编程体验,我喜欢称其为类固醇文本预测。他们声称他们的工具将是写样板代码的终结,这令我非常感兴趣。对于那些不熟悉该术语的人来说,"样板代码"是指许多编程语言和框架所要求程序员编写的几行代码,而无论特定的用例如何。尽管这个过程只是稍微有点乏味,但是由于几乎每种新的语言或框架都有独特的样板代码,每次开发者都要么记住它,要么搜索它,这开始累积。
当然我立即注册了免费试用并将其安装到我的首选 IDE —— VSCode 上。正如广告所述,在我开始编码时,它立即开始建议相关的代码片段。我只需按下 “tab” 键,它们就会被插入。我对此印象深刻,立即去找同事们告诉他们他们必须安装它。一年后,我实在想象不出没有它时的编程生活。有无数次我开始编写我认为是独特或非微不足道的东西,只有 Copilot 在我还没有完成解释我的意图的注释之前就提出建议了。其中一个亮点是,当学习新的语言/技术时,Copilot 防止了许多以前必须要进行的简单的语法查找。尽管 Copilot 没有彻底改变我的工作流程,但它肯定实现了 GitHub 的承诺,我对提高我的编程效率感到非常满意。然而,去年11月的 ChatGPT 的推出将事情提升到了一个全新的水平。
ChatGPT和GPT-4:一个强大的调试伙伴
ChatGPT于2022年11月发布,从第一天开始,我就知道它将是一款改变游戏规则的软件。尽管我目前没有在人工智能领域积极工作,但我在大学里学习了一些人工智能课程,并且一直关注最新的消息。尽管如此,我认为我们仍需要2到3年的时间才能达到这个水平的人工智能技术。最初,和大多数人一样,我通过提出假设性问题来试玩它,并让它写一些电子邮件。
然而,直到我开始使用它来调试代码,我的工作流程才真正开始转变。 对于那些不熟悉编程的人,工作流程的分解通常是约15%的规划,35%的编程和50%的调试。 尽管这可能看起来有些夸张,但我鼓励您询问其他程序员,他们很可能会给您类似的数据。 典型的调试过程如下:
- 请重新检查代码逻辑,确保没有任何错误(这占已解决问题的约60%)。
- 如果你找不到任何明显的问题,第一个可行的步骤是谷歌这个问题并希望能找到一个相关的 StackOverflow 或 Github 页面,里面有一个解决方案,你可以应用它(这有20-30%的成功率)。
- 如果谷歌搜索没有提供解决方案,事情开始变得令人沮丧。你可能会重读文档,希望能够获得一点提示问题的信息。当这不起作用时,你只能采用经典的玩具鸭子法。
总的来说,这个过程可能会非常乏味,令人沮丧,最重要的是,耗时很长。
“橡皮鸭子法”是指向静态物体或其他人深度解释代码的行为,希望通过解释代码应该执行的操作来激发思路,从而引入解决方案(这种方法的成功率会让你感到惊讶)。
这就是ChatGPT的闪光点,尤其是在GPT-4发布后。现在,当我完成第一步,或遇到我不熟悉的错误信息时,我可以把我代码的一部分输入到ChatGPT中,解释我的意图,并问问题出在哪里。它可以说是编程历史上最强大的橡皮鸭。尽管它远非完美,经常会出现幻觉并提供明显错误的代码或信息,但它提供的是一个非评判性的编程伙伴,会与您持续合作直到问题解决。大多数情况下,是我想出了解决方案,但GPT-4提供了不断涌现的新思路,往往能使我朝着解决方案的正确方向前进。以前需要一整天时间解决的难点,现在不到一个小时就能解决。它几乎完全消除了编程中最痛苦的一个方面,那就是调试。在设计新系统时,它也非常适合询问系统架构问题,提供清晰的解释以帮助从一个JS框架转换到另一个框架等等。它让程序员可以更多地做自己喜欢的事情:编程和构建。
副驾驶X和Cody:下一代人工智能助手
虽然 ChatGPT 和 GPT-4 是令人印象深刻的技术,但它们缺少一个关键要素:上下文。大型语言模型(LLM)的质量和准确性直接与其可用于回答问题的内容数量相关。这就是为什么 GPT-4 是如此重要的一步跃进;它允许用户输入更多的文本。例如,我提出的大多数编程问题都包括代码的目标、我的工作空间中的代码片段以及我在网上找到的任何其他相关信息。这使得 GPT 能够最准确地回答我的问题。
这就引出了我认为是下一代AI编程助手的内容,我将其归为“上下文感知模型”。这些模型的主要例子是最近宣布的GitHub Copilot X和来自Sourcegraph的Cody。这些都是基于聊天的语言模型,直接内置于IDE中,消除了我离开工作区并将代码复制粘贴到网站中的需要。我只需突出显示我想要提出问题的代码,甚至可以让它们分析整个文件。Cody甚至能够索引我的整个代码库,在编码和文档样式方面提供出色的上下文。 Cody和Copilot X都可以为代码提供详细或高层次的解释,使用户能够快速且没有困惑地了解开放源代码项目或其他团队成员的贡献。
这些助手的设计目的只是为了优化程序员的工作流程并消除乏味的方面:完整的人工智能配对程序员。即使在其测试版状态下,潜力也是显然的。我相信采用它们的工程师会在几天内注意到他们的工作流程的改进。
我认为这项技术的即期未来在于AI助手的定制化应用。ChatGPT 给我们展示了一个训练用于极其广泛范围任务的模型的样本。然而,我相信真正的工作流变革将来自于针对具体目的进行训练的模型,例如编程、法律和医学。
一个基本的方面使我们成为人类的是能够构思一个不存在的想法并努力将其变为现实。我相信每个人都有他们想要向世界展示的想法。编程是几乎任何有计算机接入的人都可以开始构建的领域之一;这也是为数不多的拥有此机会的职业之一。进入门槛一直是开始所需的广泛知识,通常是通过学校获得,也可以通过在线资源进行自学。像ChatGPT、Github Copilot和Cody这样的技术正在降低入门门槛,并将允许全球各地产业增长的繁荣。我个人很兴奋地看到在未来几年中,这些技术所推动而诞生的新想法。
如果您对此产品的分解情况感兴趣,请在评论中让我知道,我会整理一份给您!