
行业巨变与角色升级——职业程序员如何面对AI编程的浪潮
AI 浪潮袭来,带来的变化影响着每个行业。作为一名程序员,如何在浪潮中乘势前行,不断进步?我们特别邀请到来自七牛云的资深技术人笪小强,为大家带来题为『行业巨变与角色升级——职业程序员如何面对AI编程的浪潮』的分享。无论你是否了解 AI,是否拥有 AI 编程经验,只要你对 「AI 编程」话题感兴趣、拥抱未来的无限可能性、想要入门并探索AI 编程,都欢迎了解本次分享内容、开展交流探讨。
以下内容整理自笪小强内部分享:
自去年 8 月份 Copilot 和 ChatGPT 3.5 发布以来,AI 编程出现了翻天覆地的变化。过去我可能需要花一天时间解决的问题,现在可能压缩到半个小时或一个小时就能解决。基本上,生产力得到了将近十倍以上的提升。它不仅仅是速度快,在一些知识盲区,比如某些编程语言我不太熟悉的情况下,AI 可以弥补很多认知上的不足。以前不太敢碰的东西,现在基本上可以畅通无阻地去做了。很多项目现在都可以轻松应对,基本上所有人都会变成一个全栈开发者。可能以后就不会再分什么前端、后端这种角色了。
所以,我对这个行业的变革感到特别大的触动。我过去 20 年的编程经验,可能已经没有用了,或者说它的价值已经不像以前那么大了。因此,我特别希望能跟大家分享一下:你们现在正处于一个历史的关头。在这个时候,你们的学习方式需要发生非常大的变化。不要再依赖我们过去那些方法,比如什么一万小时定律、刻意练习、积累十万行代码之类的,我觉得这些都不需要,现在的要求可能完全不同了。那么,我们下面正式开始分享。
我们简单回顾一下 AI 编程的发展史。这段历史并不长,一切都始于 2017 年 Transformer 那篇论文的发布。在此之前,虽然也有一些 AI 自动化编程的尝试,主要是 IDE 的一些更新,但与现在的大模型结合起来后,我觉得之前的那些变革都属于"史前时代",不需要太深入研究。
从 Transformer 模型出现后,我们第一次对通用人工智能的认知得到了前所未有的升级。这种认知积累到 2020 年 GPT-3 发布时达到了一个爆发点。在 GPT-3 之前,只有专门研究 NLP 的人才知道 Transformer 的厉害,但 GPT-3 让更多人了解到了这一点,虽然主要还是在 IT 圈子里。
我第一次接触到这个领域大概是在 2021 年 GitHub Copilot 发布的时候。当时了解到他们做出了一个可以自动化编程的工具,主要是自动完成代码的功能,使用后感到非常惊叹。到了 2022 年 11 月,ChatGPT 的发布彻底破圈了,不再只是科技圈的大事,所有行业的人都在讨论这个话题。随后发布的 GPT-4 虽然在 3.5 的基础上有所升级,提示和自动完成功能变得更智能,但还没有质的飞跃。
2024 年 Claude 3 的发布带来了新的突破。它首次实现了"所见即所得"的功能。以前我们用 ChatGPT 生成代码后,需要复制粘贴到环境中运行,而 Claude 3 把这个过程整合了起来,代码生成后会自动运行。这让我感到特别惊艳,可以快速生成一些小游戏、脚本,甚至思维导图也能立即呈现。
然而,我们发现了一个很大的问题:每次对脚本或应用做任何小的改动,都需要全部重新生成,这会导致很多错误。经过几轮对话后,就会出现上下文不足的情况,限制了它只能用于小脚本开发,无法处理大型应用。
后来出现了所谓的 AI 程序员 Devin,这个想法很好但过于超前。它试图实现 L5 级别的自动驾驶,希望通过一个应用直接托管整个开发生命周期。虽然它证明了这条路目前不可行,但也许再过两年,随着模型能力的提升,这种设想可能会实现。
相比之下,Copilot 和 GPT-3.5 的组合最适合当前阶段,相当于自动驾驶的 L2 时代。它们在现有模型能力的基础上,结合人力介入,实现了软件开发流程的自动化。大约 5%的部分需要人工介入,这种通过 IDE 的方式让人更好地参与其中。
我认为今年肯定会进入 L3 时代,因为模型能力正在显著提升。最近马斯克发布的 Grok-3 在一般模型能力上已经超越了之前的模型,虽然我还没测试过它的编程水平。我非常乐观地认为,未来每年都会有重大迭代,直到实现自我进化。
AI 编程的一个重要意义在于它是 AI 的工具。为了实现更多功能,AI 不能依赖人类的升级,而需要像 AlphaGo 那样自我进化。AlphaGo 在下围棋时发现人类数据不够用,于是自己生成数据进行强化学习,最终远远超越了人类。我认为 AI 编程也是一样,人类的代码已经学得差不多了,未来 AI 需要通过自我生成代码和数据来强化学习,提升自己的能力。
AI 编程是大模型领域第一个成功的 AI 应用,其他行业还没有能与之匹敌的。法律、金融等领域正在努力,但只有 AI 编程真正做到了突破。因此,我经常建议各行各业的人学习 AI 编程领域的经验,了解大模型如何切入业务流程,如何调和人与 AI 的关系,什么时候该用人,什么时候该自动化。AI 编程为很多行业指明了方向。
我们来介绍一下 AI 编程相关的一些工具。当然,第一个要介绍的就是 Copilot,它是第一个实现 AI 编程的工具,主要功能是自动完成代码。对于有经验的开发者来说,这个功能非常实用。我经常在写代码时,刚写下 if,它就能预测出我后面要写的内容,我只需要按 Tab 键确认即可。另外,当我需要写一段代码时,我通常会先写一行注释,它就能自动生成对应的代码。这种体验让我感到非常惊艳。
后来,Copilot 还加入了一个侧边栏功能,可以让我们进行与当前程序无关的对话。这个功能完全替代了谷歌的作用。实际上,程序员花在编码上的时间并不多,可能只有 10%的时间用于编码,其他时间主要用于学习。以前,我们主要通过谷歌来学习。我曾经要求我的团队成员每天使用谷歌的次数不能低于 50 次,如果低于这个次数,说明当天的学习不够充分。
但从 Copilot 开始,我们发现学习变得简单多了。很多知识可以直接通过侧边栏提问,它会告诉我们下一步该怎么做,再也不用去技术平台查找资料。这个问题我后面会详细跟大家讲解,尤其是关于如何与 AI 进行有效沟通的部分,到时候我们再深入探讨。
接下来介绍的是 Bolt.new,这是去年新出的一个工具。它是一个完全无代码的开发平台,特别适合运营、市场等非技术背景的小伙伴使用。即使你没有任何编程基础,也可以轻松上手。你只需要写一个需求,它就能帮你生成一个网页。
我平时会用 Bolt.new 来做一些落地页、demo,甚至是原型图。虽然生成的页面可能比较粗糙,但比起抽象的原型图,它已经是一个可用的产品了。最关键的是,它实现了“所见即所得”——你写完需求后,马上就能看到结果,并且可以立即分享给别人。
这里我有一个重要的经验分享:比如我之前需要将一个 JSON 文件修改后重新折叠为一行,试了好几款 JSON 工具都不支持这个功能。如果我自己写这个功能,可能要花一两个小时。但用 Bolt.new,我只需要告诉它:“把我输入的 JSON 内容折叠为一行”,它就能自动生成一个网页工具,完美解决了我的需求。
现在我有很多小工具需求,比如文件改名、字符串处理等,都可以通过 Bolt.new 快速实现。以前我可能需要去谷歌上找现成的工具,但往往找不到或者找到的工具不符合我的需求。现在,我可以让 Bolt.new 为每个小需求专门写一个工具,完全贴合我的使用场景。而且,它还会生成一个托管地址(URL),我可以保存下来,甚至分享给其他人使用。
最棒的是,Bolt.new 是免费的!每天提供的免费 token 足够你完成一个小工具的开发。如果你需要做第二个工具,可能需要付费,费用大概在 20 美金左右。这个工具非常适合快速实现一些小而实用的功能,极大地提高了工作效率。
Reddy.ai 是我最近一个礼拜才发现的,它和 Bolt.new 非常像,都是在完全不需要懂代码的情况下可以做出应用来。但它和 Bolt.new 的区别在于,它的审美非常在线。比如,我只说了一句话:“帮我做一个音频播放器”,其实只有前面第一句话是我写的,后面的“首页”、“控制播放器”等功能都是它自动帮我完成的。它还会细化我的需求,问我是否同意,我点了同意后,马上就生成了一个颜值非常高的播放器界面。它还提供了两个界面让我选择,我觉得完成度非常高。只要再进行两三轮对话,这个播放器就可以直接使用了,效果比我之前做的要好很多。
因此,我也很推荐这个工具。比如做运营的同学,如果需要做一个落地页或用户手册,以后就不用求着开发了。你们可以直接用这些工具,它也是免费的,可以马上生成一个图文并茂的内容,而且你也不用操心设计问题。对于设计的同学,以前可能需要先画原型图,然后前端再去实现,整个过程可能要花一两周时间。但现在,它连设计带输出、带制作,整个流程在几分钟内就能完成。这真的是一种颠覆三观的形式。
另外,刚才提到的 Bolt.new 最近还支持 APP 开发了。以前它只支持网页,现在你可以用它生成 iOS 和安卓的 APP,而且生成的不是套壳的 APP,而是用框架直接生成的、可以真正上架的应用。当然,如果它的审美再提高,像 Reddy AI 这样的工具,我觉得未来也会支持 APP 和小程序的开发。
对于前端的同学,我觉得你们的工作一定要转型,不能再依赖手写前端代码了。你们可能需要升级为 UI 交互设计师这样的职位。如果你还在拼前端代码的话,我觉得 AI 真的会完全替代这部分工作。后端的同学可能稍微晚一点,但这一天迟早也会到来。所以,在 AI 工具的辅助下,每个人都应该向全栈方向发展。这个方向我们后面也会详细提到。
最后要重点介绍的是 Cursor,它不仅仅是一个用于前端界面或 APP 开发的工具,也不仅仅局限于一些小工具的开发。它真正强大之处在于能够处理大型项目。它既可以帮助你从零开始创建一个项目,也可以接手已有的项目。无论你使用什么编程语言——iOS、安卓、JavaScript,甚至是C++等,它都能通吃。
最关键的是,Cursor 解决了局部修改代码的问题,这在我看来是一个革命性的改进。以前我们使用 Claude 的 Artifact 时,每次做一个小改动,它都会重新生成整个代码,既费时又费力,上下文信息也会被重复输出。而 Cursor 则不同,它可以在一次修改中同时处理多个位置的代码。比如,如果我们修改了十个地方,它可以同时修改这十个位置的代码,然后询问你是否接受。你只需要点击接受,它就会自动完成所有修改。我甚至不需要知道它具体改了哪些地方,整个开发过程就像是在和一个特别厉害的编程高手合作,而这个高手被“封”在了一个盒子里,只能通过聊天与我交流。
这个“高手”看不见屏幕,也不知道外面的世界,但他会通过聊天的方式与我沟通。我告诉他我需要做什么,他会不断输出各种建议和代码,而我则负责测试和反馈。有时候,他甚至会建议我生成一些日志,运行后再把日志发给他,以便进一步调试。这种体验让我觉得非常智能,仿佛与一个隐藏在盒子里的编程专家合作,配合越来越默契。
随着时间的推移,Cursor 的能力也在不断提升。比如,9 月份时,它在输出中文时经常会出现乱码,但到了 10 月、11 月,这个问题就被改进了。以前,一个问题可能需要问三四遍才能得到答案,甚至有时候根本得不到答案。但自从 GPT-3.5 发布后,我明显感觉到它的代码能力有了很大提升。因此,我特别期待 GPT-4 正式版的发布。如果 Cursor 能够用上 GPT-4 的满血版,可能会有更大的提升。以前可能需要七八次对话才能完成的功能,未来可能只需要一次对话就能搞定,体验会进一步提升。
目前,Cursor 的收费是每月 20 美金,我觉得非常划算。作为一个生产力工具,它能让你的工作效率大幅提升,这笔钱是我最近几年花得最值的一笔。
Cursor 的团队其实非常小,只有十个人左右。2023 年他们的营收大约是 100 万美金,但从去年 8 月与 GPT-3.5 结合后,仅用了四个月就实现了 1 亿美金的订阅收入。我估计今年他们的收入至少能突破 5 亿美金。对于一个十人团队来说,这是一个非常了不起的成就。
最近,市场上也出现了很多与 Cursor 对标的产品,比如 Wonderful 和字节跳动的 Trae。这些产品都在追赶 Cursor 的步伐,但我觉得 Cursor 目前仍然处于最前沿的位置。对于开发者来说,使用 Cursor 仍然是最好的选择,因为它能节省大量时间,而其他工具可能还达不到 Cursor 的水平。因此,我推荐大家直接使用 Cursor 。
在使用 Cursor 的这几个月里,我们积累了一些宝贵的经验,今天想和大家分享一下。
首先,我经常听到一些人抱怨 AI 编程还不够好用,错误很多。经过深入了解,我发现他们大多还在使用聊天机器人(如 GPT-4)的形式进行 AI 编程。这种方式显然不够高效。如果你使用 IDE(集成开发环境)结合 AI 工具,AI 不仅能生成代码,还能自动修复问题,尤其是局部修改代码的功能,甚至不需要我们手动检查代码。很多时候,我甚至不需要看代码,只有当问题出现时,我才会让 AI 定位到具体代码位置,再详细查看。
当然,目前的模型还在发展中,出错是难免的。我们也有一些“血的教训”。比如,有时候我让 AI 修改一个功能,结果它不仅没改好,还把其他功能搞坏了。因此,我现在每完成一个大功能后,都会立即存档并提交到 GitHub。有些人甚至每一步都会提交,而 Cursor 自带了这个功能,包括其他类似工具也都支持每次交互时创建一个检查点(checkpoint),你可以随时回退到之前的任何状态。这样我们就不用担心 AI 改坏代码,因为随时可以回退。
我的经验是,最多不要超过三步。你让 AI 修改一个功能,如果第一次没达到预期,可以反馈错误让它再改一次,如果还是不行,最多再试一次。如果三次都没改好,就说明提示词有问题,或者 AI 的能力暂时无法解决这个问题。这时,你应该通过检查点回退到三步之前的状态,调整提示词或沟通方式,重新开始。如果再继续尝试,可能会导致整个工程损坏。当然,随着模型的升级,未来这种情况可能会改善,但目前这是保证软件工程质量的有效方法。
另外,我们经常会遇到一些未知错误,比如“创建动画失败”这样的提示。这种情况下,AI 的提示信息较少,修复起来也比较困难。我的建议是,不要依赖 AI 的提示,而是主动告诉 AI:“给我每一步的详细日志,特别是错误日志。”当错误发生时,把整个日志贴给 AI,让它根据日志修复问题。这种方式沟通效率非常高。
对于一些过于复杂的逻辑,无法用自然语言与 AI 沟通时,我会手动修改代码。但即使手动修改,我也会使用 Ctrl+K 的方式,让 AI 在局部生成代码。这种方式非常高效,原本需要十分钟手写的代码,可能一分钟就能完成。因为我知道自己想要什么代码,所以一眼就能看出 AI 生成的是否符合预期。
最后,我建议大家使用 GPT-3.5 或更高版本的模型,它们比现有其他模型表现更好。通过这些经验,我深刻感受到技术正在发生巨大变化。我们不再需要深入研究代码细节,也不需要像以前那样进行大量的代码练习。那么,未来的职业程序员和普通人有什么区别?哪些技能是我们需要重点培养的?这些问题我们后续会详细探讨。
在使用 AI 工具(如 Cursor)的过程中,我发现与 AI 的沟通能力至关重要,而这种能力恰恰是我们学校教育中很少涉及的。我们不仅在与 AI 沟通时存在问题,甚至在与人沟通时也常常逻辑混乱。比如,我以前和团队沟通时,常常先说一大堆背景信息,最后才抛出结论,导致对方理解起来非常困难。
这一点在技术文档或博客中也很常见。比如,CSDN 上的一些文章,作者喜欢“卖关子”,开头写了一大堆问题,最后才告诉你这个问题没有解决。这种沟通方式让人非常抓狂。如果一开始就告诉我问题没有解决,我可能就不会浪费时间阅读了。
在麦肯锡,有一种被称为金字塔原则的沟通方法(由巴巴拉·明托提出),强调结论先行。也就是说,在沟通时,先说出结论,再提供论据。这种方式让对方更容易理解你的意图。举个例子,在我们实习生训练营的开营筹备中,运营同学和老许的一次沟通就非常经典。运营同学需要老许决定开营时间是 1 月初还是 1 月中旬。她直接告诉老许:“我们需要您决定开营时间是 1 月初还是 1 月中旬。选择 1 月初的原因是,很多同学即将参加期末考试,而且临近过年,如果放到 1 月中旬可能会影响参与度。”老许只需要在 A 和 B 之间做出选择即可。
如果反过来,运营同学先说:“很多同学要期末考试了,过年也快到了,时间很紧张……”最后才问:“开营时间能不能定在1月初?”作为决策者,老许可能会一头雾水,需要回想前面的信息才能做出判断。这种沟通方式效率很低。
与 AI 沟通也是同样的逻辑。每次让 AI 解决问题时,我会先告诉它:“我需要你帮我解决这个问题。”然后再提供方法、数据和例子。如果顺序颠倒,虽然 AI 也能完成任务,但出错的概率会大大增加。因此,练习清晰、简洁的沟通能力是非常重要的。
其次,一次只解决一个问题。我们常常习惯一次性提出多个问题,比如看到一个产品有三五个问题,希望 AI 一次性解决。但实际上,AI 可能会忽略其中一些问题。与其这样,不如每次只解决一个问题。虽然这会消耗更多的 token(可能增加一些成本),但从整体效率来看,这是非常值得的。
第三,使用行业术语。AI 对术语的理解更准确。比如,如果你需要调整前端页面的一个表格(table),直接告诉 AI“调整 table 的大小”会比用一大堆描述词更高效。如果你不知道某个组件的术语,AI 可能会误解你的意图,同时也会消耗更多的 token。因此,学习更多的行业术语是提升与 AI 协作能力的重要途径。就像学英语要背单词一样,掌握术语能让沟通更高效。
最后,开阔眼界也很重要。看到一个复杂的东西,如果能用一个术语描述清楚,就不要用一大段话。每个行业都有其特定的术语,在 AI 编程领域,我们需要学习开发过程中的术语。即使平时用不上,提前了解也能为未来的沟通打下基础。我们不再需要花一万小时练习编程,而是可以把时间花在开阔眼界、学习优秀提示词、提升沟通能力上。
总结一下,与 AI 高效沟通的关键在于:
结论先行,清晰表达需求;
一次只解决一个问题,避免混乱;
使用行业术语,提升沟通效率;
开阔眼界,学习更多优秀案例和提示词。
这些能力不仅适用于与 AI 的协作,也能提升我们日常沟通的效率和质量。
最后,我想和大家讨论一个核心问题:AI 编程会不会取代程序员? 我的观点是,AI 编程更像是一种工具升级,就像从“刀耕火种”到“开挖掘机”的转变。以前,从事编程行业可能需要一定的天赋,比如对问题的洞察力和逻辑思维能力。但现在,有了 AI 工具,编程的门槛大大降低了。即使你没有特别强的编程天赋,只要你有兴趣、认真,也可以通过 AI 的帮助进入这个行业。
我过去十多年面试过很多人,通常会通过一些问题来判断候选人是否上过培训班。因为我认为,如果一个程序员需要依赖培训班入门,可能说明他的自学能力不强,而这在编程领域是一个重要的能力。但现在,我的观念发生了变化。即使一个人自学能力不强,只要他真心热爱编程,并且善于利用 AI 工具,他也可以在这个领域做得很好。AI 降低了编程的门槛,让更多人有机会参与进来。
未来的团队分工可能会发生巨大变化。前端、后端的界限会逐渐模糊,每个人都有可能成为全栈开发者。无论你是开发网站、APP,还是大型系统,甚至是单片机编程,AI 都可以成为你的强大助手。AI 的弱点是它没有主动性,它不知道下一步该做什么。因此,程序员的核心角色将转变为“教练”,我们需要告诉 AI 需求是什么,如何完成工作,并对结果进行验收。这种能力是 AI 无法替代的,除非真正的通用人工智能(AGI)出现。
因此,未来的程序员需要提升审美能力、开阔眼界、培养管理能力。以前,程序员可能只需要埋头写代码,但现在,你可能需要带领一群 AI 开发者。如何安排 AI 的工作、如何验收 AI 的成果,这些管理能力将变得比写代码本身更重要。
虽然 AI 降低了编程的难度和工作强度,但程序员的工作并不会减少,反而会变得更多。就像第一次工业革命后,机器代替了人力,但失业率并没有上升,因为人们发现了更多可以做的事情。同样,AI 编程将推动软件开发的普及,许多以前无法触及的细分行业和岗位都将被软件赋能。编程将成为社会的底层逻辑,了解编程意味着理解社会如何运转。
AI 不会取代程序员,但会用 AI 的程序员将取代不会用 AI 的程序员。 这是一个变化的时代,我们必须跟上技术的浪潮。如果你在 AI 编程的浪潮中犹豫不决,可能会被时代抛在后面。没有任何 AI 可以打败一个人,但 AI 加人可以打败另一个人。 如果你不学会使用 AI 工具,你的生产力可能会落后于那些用 AI 武装起来的人。
因此,我强烈建议大家尽快拥抱 AI 编程工具,深入研究它们的使用方法。即使现在 AI 编程还存在一些问题,我们也需要耐着性子去适应和优化。只有这样,我们才能在这场技术变革中立于不败之地。
今天的分享就到这里,如果大家有任何问题,欢迎提出来,我们可以一起讨论!