导读:人工智能虽然可以生成代码,但也会时常犯错误,开发者仍需对代码安全、性能优化和用户体验负总体责任。
当我们读完这句话的时间里,人工智能编码助手已经可以能生成 100 多行工作代码了。
这对人类程序员来说很可怕吗?可以确定的说,一点也不。
正因为生产力飞跃的原因,而让人类工程师变得越来越重要。而人工智能颠覆编码,对开发人员来说正是福音。
软件开发之格局演变
在过去的一年半中,我尝试了结合大型语言模型 (LLM) 的编码工作流程,用于代码生成和基于聊天的助手。
我们目睹的最深刻变化是通过自然语言描述创建代码的效率提高了。
开发人员现在可以向 LLM 描述他们想要的功能,而不用通过输入代码手动实现它。这种转变在将 LLM 集成到开发环境中的工具中尤其明显,这些工具扩展了 VS Code、Jetbrains等IDE,将人类语言做为软件开发过程的主要输入。
比如,GitHub Copilot 是一个扩展助手,可以帮助自动完成你正在编辑的代码并提供基于聊天式的帮助,而从一开始就设计了一类全新的工具,使开发人员能够讨论代码并通过聊天请求编辑和更新。
软件开发的细节正在逐渐淡出人们的视线。开发者不再需要花费数小时仔细研究库文档、费力地使用命令行标志或与 CSS 框架搏斗才能开始工作。
相反,这个过程正在演变为开发人员和 LLM 之间的反复对话。比如:
通过人工智能辅助头脑风暴进行初步架构与功能定义。
快速代码生成和人工审查和反馈周期。
持续引导人工智能与总体愿景和目标保持一致。
在本地和预览环境中定期测试和验证。
这种新的工作流程使经验丰富的开发者能够专注于高级设计和解决问题,同时使用 AI 来处理实施细节。
然而,这并不意味着就不再需要编程技能。
虽然人工智能可以生成代码片段,但也会犯错,开发者仍然要负责一些关键方面,例如确保代码安全、优化性能、验证功能和打造出色的用户体验等“灵魂级”层面。
钢铁侠悖论:人工智能是增强剂,而非替代品
回想《钢铁侠》中贾维斯(J.A.R.V.I.S)和托尼·斯塔克之间的互动。
钢铁侠的人工智能助手贾维斯可以完成斯塔克无法完成的计算。贾维斯可以完美地回忆起最模糊的事实和数据,并能对他的创造者进行编码。他可以在几毫秒内执行复杂的任务,而不会感到恐惧或自我怀疑。
那么,为什么托尼·斯塔克是英雄?
正像 Meta 首席人工智能科学家 Yann LeCun 所指出的,智力和动机是两码事。
我们现在和未来的人工智能系统不会主动追求目标,而需要由真正有目标和欲望的人类来指挥。人工智能没有取代我们的欲望,因为它没有欲望。
斯塔克之所以成为英雄,是因为他的意志力和解决问题的远见推动了整个故事的发展,对于当前一代人工智能工具及其人类操作者来说也是如此。
这个悖论说明了编码如何变化的几个关键点:
知识广博、处理迅速:人工智能的记忆能力和计算能力超越人类。
人类是英雄:尽管人工智能拥有非凡的能力,但人类凭借其雄心、创造力和道德决策仍然是核心驱动力。
人工智能作为延伸:人工智能辅助编码工具扩展了开发人员的能力,使他们能够更高效地工作并应对更复杂的挑战。
目标导向行动:开发人员提供方向和目的,使用 AI 工具实现他们的愿景并完成项目目标。
开发者的福利和持续责任
作为经验丰富的程序员、工程师,我意识到的主要优点之一是,我们对于处理大型或雄心勃勃的项目会更加兴奋。在着手新项目时,我们可以根据需要利用强大的辅助功能,这会让自己感到更加大胆与强大。
将 LLM 集成到我们的工作流程中,这会大大减少了项目初始阶段经常出现的犹豫和拖延。
通过轻松使用 AI,我们可以彻底讨论复杂问题,在开始编码之前就获得清晰的思路。这种准备对话有助于我们识别和避免潜在的陷阱,从而使编码过程更加高效。此外,AI 生成代码的速度让我们有勇气尝试新的设计模式和方法,因为我们知道任何决定都可以返回进行快速修改。
一个引人注目的例子来自我们自己的多模式演示“Shop the Look”,这是一种电商体验,允许用户通过文本、图像甚至视频来购买衣服。
我的同事在多年没有亲自编码之后,在 Anthropic 的 Claude 的帮助下设计并构建了Shop the Look 。同事之所以成功,是因为他们拥有广泛的领域经验,致力于打造出色的用户体验,并决心将项目完成。这个案例说明了 LLM 辅助编码如何能够增强那些基础知识扎实、积极性高的人的能力,即使他们的技术技能生疏也没有关系。
但是,尽管人工智能可以提高生产力,但也带来了新的挑战。
我们观察到,与 LLM 合作进行编程对初级开发人员来说会适得其反,导致他们走上错误的道路。
这强调了批判性思维与验证人工智能生成解决方案能力的重要性。克服这一挑战的关键是拥有足够的经验和知识,以识别即使是先进的模型也表明了过时的方法或弃用的代码。高级开发人员在指导初级开发人员应对这一情况方面至关重要,帮助他们培养有效使用人工智能辅助所需要的洞察力。
人类工程师不能免除工艺上的义务。相反地,在这种级别的帮助随时可用的情况下,工作质量低劣的理由就更少了。就像读者可以通过向 ChatGPT 输入提示来判断内容是否是懒惰生成的一样,您的利益相关者也不会对在第一个极端情况下就崩溃的无功能软件表示同情。
使用 LLM 进行编码可以显著提高您编写可运行应用程序的速度,但我们认为这最终会导致普通开发人员对生产力的期望更高。
重要的是要认识到,无论个人对传统编码方法的依赖程度如何,这个行业都在迅速发展。您的竞争对手正在使用这些人工智能工具来大幅提高他们的生产力和能力。
未来不等人。
未来:开发者是园丁和指挥家
这种简化开发流程的趋势将会加速。
像 Cursor 这样的工具使软件迭代速度比传统 IDE 快得多,从而提高了开发人员的工作效率。我们设想未来开发人员将采用“园艺师”或“指挥家”的心态,通过 AI 增强工具的视角来监督各种代码库。
将 LLM、传统 IDE 工作流、自主代理和模型与扩展上下文窗口相结合,可能会使开发人员能够以前所未有的速度请求、观察和引导变化。
这种转变将使个人开发者能够管理比以往更大、更复杂的项目。我们还预计个人开发者软件公司的数量将会增加,其中一名开发者借助人工智能工具创建了一家盈利且可持续发展的公司,而无需任何其他员工。
这一范式对于编码的未来有几个重要的启示:
增强的能力:有效使用 AI 工具的开发人员可以承担更复杂的项目并比以往更快地解决问题。
技能重点转移:虽然技术技能仍然很重要,但人们将更加重视更高级别的能力,如问题定义、系统架构和创造性解决方案设计。人们的专业知识也将得到更高的重视。
道德考虑:与托尼·斯塔克一样,开发者须仔细考虑强大工具的道德影响。
持续学习:人工智能工具的快速发展意味着开发人员必须培养持续学习和适应的心态。即使在人工智能工具快速普及之前,情况也是如此。
协作智能:编码的未来在于协作智能,其中人类的创造力和人工智能能力协同工作,突破软件开发的可能性界限。