"完了,AI 要取代程序员了!"
我的朋友圈里经常会分享一些 AI、AI 编程的东西,最近收到不少人的私信:
"要不要转行啊?"
"现在学编程还有意义吗?"
"听说隔壁公司已经用 AI 取代了 3 个程序员..."
坦白说,我理解这样的焦虑。
就在上周,我认识的一个不懂编程的产品小姐姐,用 Cursor 愣是搞定了一个自动处理数据的小程序,替代了原来技术人员 3 天才能完成的工作。
这事在公司传开后,隔壁开发组的同事都坐不住了:"完了完了,连产品经理都要来抢饭碗了..."
但是,真相真的如此悲观吗?
作为一个亲身经历了从 ChatGPT 横空出世,到目前各类 AI 编程工具井喷式爆发的亲历者,今天我想和大家聊聊第一手的观察:
AI 编程的确来势汹汹,但与其谈"替代",不如聊聊它给我们带来的新机遇。
看完文章,你将了解到:
什么是 AI 编程?
常规软件开发流程的介绍
AI 编程在开发流程中存在的优势和缺陷
AI 编程未来的机会在哪?
普通人如何上手 AI 编程。
一、什么是 AI 编程?
说到 AI 编程,咱们得先聊聊 AI 和编程这两个词汇。
它们有什么共同点呢?
其实都是用来解决问题的工具。
不同的是,“编程”需要经历需求分析和功能设计,最终是利用 Python、Java 这些编程语言跟机器交互来完成工作。
而 AI 呢,就是用自然语言和跟机器聊天,只要把问题说清楚,描述好背景,就能解决一些问题。
比起学一门编程语言,学习跟 AI 聊天看起来简单多了。
那 AI 编程到底是什么呢?
简单来说,就是利用 AI 来辅助我们更高效地使用编程语言完成开发工作。
和传统的编程相比,核心依然是编程语言,但现在的开发方式变得更简单了,门槛也随之降低。
为什么这么说呢?
以前,即使是简单的代码,程序员都得亲自动手从头写起。
而现在有了 AI 编程,程序员只需要专注于那些复杂的代码和核心业务逻辑,其他琐碎的工作交给 AI 处理,压力瞬间减轻不少。
更厉害的是,以前写代码可是程序员的专属技能,但如今,普通人通过与 AI 聊天,也能开发出一些实用的小工具。
有人可能会问:那我们到底该不该学 AI 编程呢?这个领域是否值得深入去研究呢?
其实,这个问题很好回答。你只要看看现在 AI 编程工具在市场上的火爆程度,就能一目了然。
Cursor ,大家应该比较熟悉了,最近比较火。
8 月 9 号,cursor 背后的公司 Anysphere 宣布获得 6000 万美元的 A 轮融资,而这家公司刚刚成立两年,到现在也才 10 几个人。
Github Copilot ,2022 年发布的一款 AI 编程工具,目前拥有近 200 万付费用户。
截至今年 4 月,GitHub 的收入同比增长了 45%,而这个增长的范围内,Copilot 这个工具就占了 40%。
这是国外的情况,再回到国内。
阿里的通义灵码,在 IDE 插件下载量已经超过了 500 万,在 中华财险、哈啰集团、长安汽车 等等大型公司都在使用,累计生成代码超 10 亿行。
这些种种迹象表明,AI 编程未来的趋势很可观。
二、软件开发常规流程
在说 AI 编程存在的优势和问题之前,我们先来看看最常见的软件开发流程的三个阶段:
阶段一:需求分析
不论是开发新功能、优化已有功能,还是修复 Bug,首先要做的就是「需求分析」。
这一阶段的核心是搞清楚我们的目标是什么,任务完成后要达到什么效果:
这个功能要解决什么问题?
用户使用这个功能时的体验如何?
功能和用户怎么交互,界面设计是什么样的?
对性能有怎样的要求?
最终整理整理成一份「需求文档」,作为需求分析阶段的交付成果。
阶段二:功能设计
当需求明确后,接下来就是「功能设计」阶段,这个阶段的任务是决定技术实现方案:
需要哪些技术、算法,使用什么模型?
界面应该如何模块化?
数据如何存储?
整个开发计划要分几步进行?
所有这些问题都要通过文字记录下来,写进「开发设计文档」,以指导开发人员后续的实现步骤。
阶段三:软件开发和测试
前两个阶段是方向和策略的规划,到了这一阶段,开发人员就要开始真正动手写代码了。
无论是功能代码、单元测试代码,还是测试人员编写的测试用例,甚至自动化测试脚本的搭建,都是这个阶段的主要任务。
这个阶段通常耗时最长,因为在实际开发过程中,最容易遇到各种各样的问题,可能是实现上的困难,也可能是前期需求不清晰或技术选型错误等遗留问题。
三、AI 编程存在的优势和缺陷
AI 编程的确有很多优势,但我们不能盲目神话它。
只有清楚了解它的现状,认清优势和局限,才能更好地利用 AI 编程为我们服务。
一)需求分析阶段
在需求分析阶段,涉及到大量的人际沟通工作,比如需求收集和市场调研,而利用 AI 来优化的空间相对较小。
这是因为需求的复杂性和不确定性使得 AI 难以在这一阶段发挥主导作用。
为什么这么说呢?
一般的需求可以简单分成两种,全新需求、增量需求。
全新需求通常在最初阶段并不明确,很多细节和方向性都处于探索阶段,充满不确定性,难以细化。
而增量需求则是基于现有的产品功能来扩展,未来的功能可能会比原有功能更复杂。因此,这类需求依赖于大量历史功能的积累。
目前,大部分公司还没有训练出能够充分融入产品背景和特定业务术语的小模型,这使得在短时间内收集与增量需求相关的所有背景信息变得十分困难。
所以,无论是全新需求还是增量需求,在现阶段都无法让 AI 完全自动生成能够直接指导架构师或高级工程师设计功能。
所以这个阶段大部分工作靠人来做反而是最有效率的。
但是有一点是可以做到:让 AI 扮演需求分析师来提问,帮助为我们开脑洞,分析需求可能存在的问题,或者帮助我们发掘出更加核心的需求。
当然,这种方式严格来说不算 AI 编程,但是在软件的开发周期中起到了不小的作用。
二)功能设计阶段
对于一些相对简单的任务,我们可以不用经过复杂的设计流程,直接利用像 Cursor、ChatGPT 这样的工具来快速生成代码,效果也是立竿见影的。
之前我也写过文章,证明了这些工具在从 0 到 1 编写代码时,生成的质量还不错。
但是在实际的软件开发中,完全从 0 开始的情况其实相对较少。
我们面临的往往是增量需求,在一个庞大的产品体系里增加一个模块,优化一个功能。
这种情况下,产品的业务模块往往有着错综复杂的关联性。
要让 AI 全面理解每一个模块的业务逻辑,并根据增量需求做出准确的调整,说实话,难度还是非常大的。
不让 AI 去理解的话,写出来的东西,基本上也用不了。
所以核心问题还是:如何让 AI 理解现有的产品架构、并在此基础上进行功能迭代。
这个问题其实在需求设计、功能设计,甚至编码过程中都很常见。
有解法吗?
从理论上来说,的确有解法,但在实际应用中,成功案例还比较少见。
一种方法是将产品需求、功能设计和代码层面的知识,作为数据来源,训练一个符合企业内部产品背景的小模型。
或者可以结合外部知识库,利用 RAG 技术(检索增强生成)来获取与此次增量需求相关的内容。
不过,我个人的实践经验不够多,或者说周围确实也没听到很多成功案例。
只能说:理论上是可行的。
三)软件开发和测试阶段
在 Coding 的过程中,AI 编程工具确实能做很多事情,比如代码补全、生成通用代码,甚至帮忙修改一些非业务性质的常见 bug。
它们的确为我们按时下班带来了更多可能。
但根据我的实验、身边朋友和同事的反馈,实际情况是这些工具能帮我们节省的时间大概只有 20%~ 30%。
让人很费解的是,那些说能提升 80%,甚至夸张到可以直接替代程序员的说法从何而来。
此外,我认为这个阶段,AI 对我们最大的贡献在于单元测试的生成。
我们自己内部也是这样,特别是老代码的重构,如果没有单元测试,简直举步维艰。
宁愿它慢慢变成一堆“屎山”,也不想重构成一个“定时炸弹”。
在咱们的企业内部,无论是否采用领域驱动设计(DDD)来推行测试驱动开发(TDD)。
只要通过清晰的需求描述和明确的范围,我们都可以先写单元测试,再根据测试完善或者重构代码。
这样的流程能更好的保证代码质量,不管最后是人工写的还是 AI 生成的代码。
在测试阶段,我也尝试过让 AI 基于网页代码生成自动化测试脚本。简单场景还行,一遇到复杂业务场景,基本上就凉了。
四、 AI 编程未来的机会
对于 AI 编程工具的创业者来说:
关键在于能否让工具理解更完整、更长的代码集,让开发者面对增量需求时,也能够生成有价值的、可复用的代码。我相信很多人一定会为之付费。
对于企业来说:
他们需要的不仅是 AI 编程,而是一套涵盖软件开发全生命周期的 Code Agent。
从需求分析、软件功能设计,到编码和测试,这个系统都应该能够基于企业的知识库提供相关联的信息,从而为我们提供更有价值的的文档和代码。
然而,这样的 Code Agent 需要建立在企业内部规范的开发流程和完善的知识沉淀体系之上。
对于未来,这将是企业能否跑在最前面的机会。对于现在,这更像是一种要求。
对于程序员来说:
随着企业引入 Code Agent,即使是那些只有一点点忧患意识的程序员,也会随着企业的变革而前进。
他们将不再仅仅从事简单、易于实现的编码工作,而是专注于那些 AI 难以处理的高级任务,或者作为 AI 工具的组织者,让这些工具为自己服务。
所以 AI 完全替代程序员这个说法,目前还很难。
对我们普通人来说,AI 编程带来了巨大的普惠性。
现在,许多不懂编程的人已经通过 帮人定制智能体、构建付费网站、代码代写 等等方式获得了正向反馈,实现了变现。
未来,随着信息化的加速,智能设备和软件将会无处不在,我们的创意和想法将不再因为编程的门槛被扼杀在萌芽里。
随着模型底层能力的提升,开发一套软件、做一个对于他人或者自己有价值的软件工具,将会变得容易很多。
如果普通人能够利用 AI 编程来优化身边的手机设备、智能家居,加入各种定制化功能,那将是多么美妙的事情。
五、普通人如何上手 AI 编程
0 基础适合吗?
首先要做一波人员劝退,0 基础可以,但是得对做小产品、小工具感兴趣,而且要有耐心。
因为在编程过程中肯定会遇到各种问题,得能沉得住气。
接下来,我们得找到一个需求,解决一个问题,用问题来驱动学习。
最开始的时候不要想要开发一个完整的系统。
前几天直播的时候,我听到最多就是想要开发一个什么什么系统,不是不行,只是难度太大。
想好和用户的交互方式什么?
是利用网页、浏览器插件、智能体,还是说是一个电脑本地打开就能用的工具。
最后就是找工具了,无论是利用 Cursor,还是 GitHub Coplit,又或者是国内的编程工具。
之前写过一篇 Cursor 教程。
国内编程工具,除了阿里的通义灵码之外,字节的豆包 MarsCode 也值得一试。
使用 MarsCode,甚至不需要安装软件和复杂的编译环境,网页上可以直接开发项目。
此外,豆包 MarsCode 还提供了免费的公益课程,教你怎么快速上手,做出自己的爆款小工具。
免费报名地址:https://zjsms.com/iBEeu9Q6/
六、总结
回到开头那个让程序员们焦虑的问题:AI 真的会取代我们吗?
答案已经很明显了。
就像当年电子表格没有取代会计,而是让更多人学会了财务管理;
word 没有取代作家,而是让更多人能够写作;
同样,短时间内,AI 编程将不会取代大多数程序员,而是会让编程这项能力走进千家万户。
想想看:
家里的智能设备,以后可能只需要动动嘴就能编程定制
办公室的重复工作,可能只需要简单描述就能自动化
你脑子里天马行空的想法,也许很快就能通过 AI 变成现实
这不正是我们一直期待的未来吗?
程序员的未来不是被取代,而是化身为 AI 编程的"导演",让创意和技术碰撞出更美的火花。
对于普通人来说,这或许是最好的时代 —— 不用再为"不懂编程"而困扰,AI 正在悄悄为你打开一扇通向技术世界的大门。
无论你是程序员,还是对编程充满好奇的普通人,不妨从今天开始,带着一个问题,试着用 AI 实现一个小小的想法。
也许你会发现,真正的红利,就在你伸手可及的地方。
我是 🐼 熊猫 Jay,分享一些我的低维认知,希望有所帮助。
一个小福利,我准备了一份 Python 超详细的学习资料,评论区回复“python”领取。
如果觉得不错,随手点个赞、收藏、转发三连吧。
如果想第一时间收到推送,也可以给我个关注 ⭐
谢谢你看我的文章 ~