00:00
然后下面的话就是来自我的分享。随着AI编码工具的普及,我们都在思考AI到底在多大程度上能够改变开发方式?它真的能用于生产项目交付嘛?作为开发者,我们该如何适应这个趋势并用好它?接下来呢,我就给大家聊一聊,呃,作为全站开发的一个呃,真实经验,Web coding落地项目交付认知是提效最好的催化剂。为什么我们在这里提到认知两个字呢?因为我们写代码其实是一种,呃,也算是一种功夫,那么功夫的话,它的内核其实是一套心法,就是当你对这个业务有一定认识的时候,那么你才能把代码去表达出这个业务。那么我们AI coding, 呃这个过程的话,其实就是颠覆了我们原有编码的一个认知,就彻底突破了我们传统开发的一个呃思维的一个范式,所以说在AI时代,我们第一件事就是要把之前的这种思维范式去打破,然后就形成一套新的开发理念。
01:04
呃,我先做一下自我介绍,我是腾讯云架构师同盟的成员,然后也是腾讯云开发者社区的创作之星,呃,同时呢,是2024年度的影响力作者,我自己呢,现在也是在一家咨询公司,然后担任全站工程师的角色。呃,我们将从四个维度去,呃,介绍这个AI体效这一块,首先第1块的话是我们AI编码对传统开发的一个冲击,AI编码的蔓延速度啊,现在是越来越快了,Web coding啊,分云编程这个词也已经家喻户晓。那么很多人对AI coding这个事情其实是产生了质疑,有人认为他是歪门邪道,那么AI coding他究竟是歪门邪道还是大势所趋呢?这个我们会在后面的话题中进行分享。AI编码对传统的开发冲击到底有多大?我们到底应该如何去审视代码开发这件事情?
02:03
首先我们来看我们现在的软件开发范式,其实已经经历了三次变革,第一次的话,我们是从呃1980年到2000年的时间,我们当时的开发还是以结构化的模型为主,然后交付也主要是以呃破布模型进行交付,那么在20200时代,也就是2000年之后,我们逐渐形成了敏捷开发的模式,这个时候呢,我们不需要等到第一个需求完全的开发完毕上线之后再开启另一个需求,而采用敏捷开发能够快速的进行需求的迭代。而我们最近几年,从2020年开始,AI的一个井喷式增长,我们其实是迎来了一个人机共生AI增强开发的一个时代,那么在这个时代呢,AI已经从一个辅助的工具,逐渐的成为了一个开发流程当中的一个核心者。正如微软的CEO所言,我们将从AI去配合程序员,变成AI去对等程序。
03:02
AI编码对传统编码的冲击有多大?呃,这边的话我也是,呃,给了一些数据,首先我们先讲讲什么叫web coding webing其实是呃,这两个月非常火的一个词,氛围编程,那么氛围编程是什么意思呢?就是说我们传统的开发肯定是我们先拿到需求之后,我们去编写代码,然后通过代码进行运行,看看和我们的需求是否一致,那这样的一个流程的话,它其实是需要很多人参与的,包括也对我们的代码的专业能力要求也非常强。那么Web coding就是我们并不追求我们代码怎么写,我们只需要告诉AI我们的需求,然后AI让我们所见及所得,我们只需要看到AI编译后的程序并行起来之后,和我们的业务方向是一致的,那么我们就认为这个开发已经成功交付了。听起来其实还是有一些这种呃科幻场景的,但是web coding确实已经逐渐走向了我们的这样的一个呃开发者的一个生态里,那么下面的话有四个层面,第一个是产品设计层面,产品设计层面的话,我们是从两个维度讲,一个我们说是从文档,就是我们经常会呃遇到一些文档缺失的问题,就是可能一些项目是很老的,但是它缺少一些历史性的代码,那么AI他的一个阅读代码能力非常强,它可以帮助我们把老的项目去反向去生成文档。第二个是我们新需求的一个设计,呃,新需求呢?呃,在之前的一个传统开发中,我们往往是需要先去开需求评审,然后再拉着业务再去核对,这样反反复复的话,其实这个流程要1~2周的时间,非常的冗长,那么现在有了AI之后,我们其实可以通过一些呃,比如说像腾讯会议这样可以直接去捕捉我们呃,投屏画面,还有演讲声音的这样的一个APP,然后通过他们内置的一个AI分析。
04:47
也来直接帮我们总结我们的会议纪要,同时呢,呃,像腾讯会议的话,他也会给我们提供一个类似于智能体验的功能,我们可以直接把我们的这个呃,比如说需求文档PD的模板去发给腾讯会议的智能体,然后他会帮助我们把同我们本次会议的一个内容去按照我们这个PRD的文档去进行填充,这其实是极大的缩短了我们这个需求评审的一个时间。那除此之外呢,比如说像一些原型图的设计,呃刚刚几位老师也讲到了,就是说呃可以结合飞格玛迅速的出图,同时呢,我们也可以呃抛弃原有的UI设计理念,我们可以去直接让AI去生成静态的一个页面,让业务和AI不断的交互,然后等他最终把自己的需求彻底明确出了,把他的业务页面已经彻底定下来了,然后再委托我们的BA,或者是委托我们的开发人员来进行最后的实施,这是第一个层面,第二个层面是软件开发层面,软件开发层面其实这里50%的话,我写的还是有点保守的,因为我自己的话就是深受其义。
05:47
我现在的话,每天的工作基本上大量的时间都是在处理一些呃生产上的问题,或者说呃一些新需求的一些梳理,那么留给我自己真正去落地的时间其实不多的,那么我怎么样才能一个人去完成这么多的工作呢?其实我就是通过呃这种AI在后台去帮我写,我在前台做着一些可能需要我本人亲自做的工作,然AI在后台就帮我写完了,像我们新推出的COC类,他的工作就非常强大,然后我有一些需求的话,我们会直接让呃告诉他,然后他他在后台帮我写完,然后帮我测完。
06:20
呃,如果说我身上有4~5的需求的话,我只需要去多开4~5个code的C类的窗口,然后他就可以帮我进行同步完成,所以这个提效的比例其实是不固定的,按照道理讲,就是你有多少需求,他就能帮你提升多少倍。因为他是可以做到一个完全的并行。第三个层面呢,就是呃,软件的一个测试层面,刚刚唐军老师也讲,可以结合这个呃,Playwright这样的MCP啊,去做这个浏览器的自动化测试,那么同时呢,它也可以帮助我们去写自动化的测试用例啊,可以去帮我们做每次开发之后做一些回归啊,像以前非常需要非常多的人力,非常多的时间的一些测试工作,我们都可以交给AI来进行解决。
07:00
那么最后一个层面呢,就是系统运维的层面,这个其实我也想分两块来讲,就是一方面呢,我们说是代码运维,就是我们生产上出现一些小问题,那么随着我们其实现在经济不是特别好嘛,然后呃,有些企业的话,其实人留下的开发人也不多了,然后很多这种生产上的bug其实一直排不到这个开发人员的工作单里面,那这种情况下的话,就导致这个bug可能在界面上会挂半年,甚至挂一年,是其实对用户的体验是非常非常不好的,那么我们这个AI起效之后的话,我们可以去用AI来定位这个问题,我们开发人员只能对他改造的这个代码进行一个review,然后以及一个现象级的一个呃,一个评审就可以去推到上线了,呃,除此之外呢,就是说我们,呃,系统部署的层面,以前我们说运维工程师是一个越老越吃香的职业。那么现在来看的话,其实这个规矩要打破了,因为原有的这种必源的运维知识已经被AI所知晓,那么我们利用AI的话,不仅可以直接获得知识,甚至我们通过一些比较强大的一些呃,IBA软件,比如说像cloud body, 它可以和cloud base进行呃,通过MCP进行集成嘛,可以先推上去,那么其他的很多AID,它也可以提供这样的功能。
08:10
啊,其实就是解决了我们自动化部署的一个问题,然后我们运维人员的这个成本,呃也减少也减少了,而且呃很不用担心,就是说这个运维走了之后,我们这个项目就出问题了,行了。然后AI编码是歪门邪道还是大势所趋呢?首先AI编码它肯定是一个大势所趋的事情,为什么呢?首先我们要弄清楚一个事情,就是代码他究竟是为谁而存在的?代码是为开发者而存在的吗?是为了炫技吗?其实不是的,他最终还是为了业务去服务的,做所谓皮之不存,毛将验货。所以说我们手敲代码或者AI写代码都有着共同的目的,就是把这个业务实现出来,所以说基于我们现在呃,AI的一个这个超强的能力啊,我感觉未来会有更多的开发工作由AI来承担,那么我们未来的团队的话,可能就会发生一个呃,一个质变,那么到时候可能就是以系统架构师加业务分析师两人团队这样为主的一个阵营。
09:16
那么对于程序员来说,我们的工作慢慢的被AI所替代了,那么我们要做一些什么呢?其实我们是要做的自我突破,就是不要做被代码束缚的。彭于己,像我的话,我是从呃17年的时候开始写代码的,那个时候我感觉自己很厉害,因为我会六七种语言,当时其实那种知识还不是很开放,很多那种培训资料的话,可能大家要通过一些内部的渠道进行分享。那那个时候呃,想多会一门语言的话,其实找工作是非常吃香的,但是现在来看的话,这种优越感其实已经被AI践踏的荡然无存了,因为AI他自己本身就是一个多语言的专家,他可能在某一个的深度不及行业里面最头部的人,但他肯定是能吊打这个行业里面90%的人。所以说,呃,我觉得自己的当年就有点像孔乙己一样,就一个字能用6种写法,之前一个代码也是能有这种写法,那现在来看的话,我可能会更关注一些这种从如何写代码到为何写代码的一些转变,我可能会更关注一些业务啊,包括我可能会慢慢的往这个架构师去转型,去掌握一些架构设计的能力,业务建模能力,还有跨团队协作的一些能力,其实我从现在的开发模式,我感觉到其实开发人员的工作慢慢的就从代码中处理出来,可能沟通的工作会更多的一点。
10:30
当有些需求,只要你真的理解了,真的知道你要做什么了,那其实写代码这个事情是非踌快的。所以,我们要站在更高的维度来审视软件开发。那么第二块的话,我就会给大家展示一些我们AI起效的一些最佳实践。这其实是我们开发者已经意识到了AI编码在里面有一些帮助的,但是其实还是有很多开发者他们还是使用AI辅助,没有完全的使用那种自动化的C类去开发,他们有一些担忧,然后他们也认为AI开发有些瓶颈,当然这个瓶颈的来源可能是源于他们之前使用的一些模型是说特别的优质,然后上下文可能有点短,就导致他们认为AI写代码这个事情可能是有点过于吹嘘的,但但我可以很负责任的讲就是,呃,尤其是这两个月,自从腾讯的这个产品出来之后的话,我感觉。
11:21
已经达到一个非常领先的水平,我们去写一些项目的话,可以完全交给AI。那么AI起效的话,还有哪些可以复制的最佳实践呢?呃,这些都是我从日常的开发工作中进行总结的,首先呢,就是我刚刚说到的,干嘛反推围档,就是很多时候啊,因为我们人手可能不够啊,或者说开发那个业务人员可能说有,呃节奏排的不好,那他可能文档没有写全,或者说写的很简单,然后就开始做技术开发了,那么这个情况的话,其实是给我们后面的开发工作埋了一个大雷,所以说我们用了AI之后的话,其实能解决这个问题,就是通过代码去反推文档。第二块的话,就是AI本身的几个功能,就是去帮我们编写业务逻辑,我们只需要告诉AI自然语言,它能自动的帮我们去梳理逻辑,像我现在写一个需求的话,我大概也就是5~10分钟的时间,虽然这个公司给我排的话,可能会给我排到两到三天的这个开发周期。
12:15
我就是去告诉他我要在哪个从哪个页面进行入手,然后我大概后台的话需要大概怎么写,简单的描述一下两三句话,当然这些东西我呃比较大量的东西,我已经全部写在了工程化的文档里面,就像Co body, 它是一个Co body点马克down的一个文档,这是工程化文档,我会把这个程序呃写的规范,然后如何进行测试,如何进行编译运行这些命令都写在里面,我只要让他告诉他需求,他能从前端写到后端,然后再通过MCP再去搂到我的这个开发的数据库,然后最终形成形成一个全链路流程,他还会自己去在本地生成一些点TS1的一些呃执行脚本,直接执行脚本,呃作用就是说去使用一些Mo数据去帮我做接口测试,然后他最终编译完之后,没有报错了,他才会告诉说,这个任务我已经完成了。
13:04
下面呢就是说我们编写测试用例,呃这个也刚刚讲到了,接着呢是通过MCP进行自动化测试,其实现有的MCP还是呃不是很多的,但是也有几个比较经典,相信未来这个MCP应该是百花齐放,然后MCP的这个开发的工程师的话,未来也会成为一个呃行业比较比较相当范围,然后接着就是MCP操作数据库,呃,我们传统开发的话,可能因为数据隔离的问题,我们从生产上漏数据其实是非常困难的,呃,那么如果有些公司他的信息安全能够做到一些呃加密性的东西的话,它是可以通过MCP去做一开一个指数权限给生产库的,然后就算开不了生产库的话,我们通过本地呃,也是可以极大的加速我们这个开发的一个运行,呃,开发这个进度的一个进行。然后下面的话就是说代码平时安全漏洞,这个我觉得是AI起效最关键的地方,就是不知道大家开发的时候,公司里会不会经常三天两头的下一些这种文档,就是网前安扫出来,你们代码有什么漏洞,垂直越权啊,呃,比如说这这边写的不规范啊,那边没加密啊,那这种时候你要开发人员改的话,其实要改很多很多的,你既然有这个问题,那肯定不是说一出两处,你整个项目可能都没有做这方面的安全考虑,尤其是这些老项目,那这个AI的话,他就能去帮你去解决这样的问题,对不,AI是不怕累的,他而且他的这个大脑的容量也是非常大,他能帮你一点一点去梳理,一点一点帮你改。最后一个呢,就是多语言的一个知识迁移,像我的话,现在其实还是一个多语言的工程师,平时的工作的主流语言的话就是4~5种,然后基本上和我对接的人都是用Java来写,然后每次给我的接口文档都是Java,虽然我我写的项目基本上Java都很少,所以说这种多语言的转化我就交给AIAI他最后会帮我写一个一模一样的接口,然后去帮我摸布数据,最后输出这样的结果,尤其是在一些处理一些加密的事情上,他非常有效。然后下面的话就是。
14:47
知识库的学习传递,AI学到的东西,它是可以通过知识库进行分享,他不会被B源,不会因为我们自己不去整理它,而成为我们自己的一个信息壁垒。下面的话我就讲AI能否呃进行一个生产项目的交付,这也是很多开发者停留在传统开发的一个阶段,因为他们还不是很信任AI,他们不相信AI能帮他们交付产品,那么这些开发者的认知是否正确呢?
15:15
下面的话是呃是我做的一个案例,就是说我们是呃以一个中后台项目为基础,然后我在这左边的话,呃输入了一个提示词,当然这个提示词还是比较早期的,大概是我3月份的时候一个例子,现在的AI的话,可能不需要我说的那么详细了,然后他就帮我把我PRD上面想要做的东西,一个列表,列表页面,然后列表页面的话,点击很多东西,呃就是会有很多按键嘛,每个按键会对应不同窗口,甚至像这个窗口的话,它还有一些合并单元格的现象,如果说让我们传统的开发,其实如果你找不到这个组件,你还要自己封个组件,其实也是蛮画实验的,至少得搞个一两天,对吧,那我通过AI的话就成过了10分钟,那么这个过程的话,我是找AI录了三遍,第一轮的话,其实是呃,编译没有成功嘛,编译报错了,然后我让AI自己去检查一下问题,第二轮编译成功了,但第二轮编译成功之后没有数据嘛,因为我只是开发了一个前端页面,那么我想要一些默布数据来证明我这个东西是成功的,所以说我要第三轮,我说加一些默布数据,然后就变成了现在这个样子。
16:12
基本上就是和PD上做的一模一样,甚至我感觉我们同事自己去做都不一定能做的标准。那么下面的话是呃结合飞格玛的MCP实现1:1的高保真还原,呃F格玛的这块的话是我们需要下载飞格玛客户端,然后去开启飞格玛的MCP的服务器,然后我们通过ah h去呃连接飞格玛的一个这样的一个呃MCP服务,呃M格玛MCP服务其实是给我们提供了几个比较简单的接口,就是说它能帮助我们获取我们选定元素的一个呃s sass一个样式文件,还可以获得SVG这样的一个图片的一个文件,然后我们通过AI的话,就可以相当于从最外层一圈一层一层往里面去便利,然后最后就是说能帮它生成一模一样的这样的一个呃前端界面,像左边的话,呃就是一个这个这格玛的流行图,右边是我们做出来的一个实际的效果。
17:04
这个其实例子比较简单的,因为公司里其实我我做了很多就是比较精致的案例,但是这个呃,隐私问题呢,这个暂时没不说。然后下面的话就是我刚才讲到的跨语言复刻代码逻辑的案例,那个这边我说一下我们做这件事做了什么,就我本的目标啊,是为了制作一个和Python语言健全签名生成算法一样的一个。呃,Java的一个算法啊,我是根据Java的界面前面的算法去生成一个Python界面的算法,那么给我的接口文档也是Java的,那么code body的话,它现入先是告诉了他我这个接口文档的路径,然后他就会自动去帮我搜索这个PDF,它自己内置的是一些内置的一些OCMC,我把PDF告诉他之后,他会从第一行扫到最后一行,比我们平是就是甚至用一些付费的这种M,呃,这种osr其实还更好用,然后他获得了之后,他第二件事就是会把Java的代码去编译到一个Java项目里面,来证明这个给出的接口文档是可运行的,因为其实我们日常调的过程中经常会发现中我们文档可能有一些问题的,所以对于我自己来说,我也会习惯性的去。
18:10
验证一下,然后第三步的话就是说接呃,接口代码已经写成了,那么库包类的话,他会帮我们去编写测试工具的代码,他要保证Java的加密和Python的加密是完全一致的,最后呢,他会去分析两边是否一致,如果不一致到底是什么原因,那么这个时候,呃,它进行多轮的分析之后,最终呢是能实现与Java输出完全一致的开代码。呃,再往下面的话,其实也是一个加密的问题,这是我最近其实工作上碰到一个问题,呃,我和另一家大客户呢,我们去做了一个加密模式,对接另一个客户,他涉及到的信息安全,呃非常的严谨,然后他们用的是AST cm的一个家用模式,那这种模式的话,我们的系统比较老,我们的这种系统的话,呃,它支持不到这个版本,但是在这在这之前我是没有评估到这一项技术的一个问题,技术风险,这个是cloud body帮我去分享出来的。
19:01
然后它最后的话,它呃识别到我们这个是因为版本的问题,所以说加密结果老不一致,所以说他提议我换成AESCPC,这样对于我们对接客户的那边改动也最小,所以最后的话也是促成了我们这样的一个接口对接客户,最后也就是改的基符串,把那个GCM模式改成的模式,减少了我们大量的一个来来回回的沟通时间,同时也让我们这样的一个技术风险化解于无形。在下面的话是我进行一个生产环境的一个内存泄露问题的定位与修复,这边的话我就介绍一下,从右边就是我们的po body的功能化的文档,然后左边的话是我在,呃,我要去解决一个问题的时候,我要告诉Co body哪些信息,我要告诉他项目的联系,比如说我告诉他哪些项目是前端的,哪些项目是后端的,然后他们之间的匹配关系是什么,我要告诉他页面路径和问题参数,告诉他们我们数据库的实体,最好是能给他配上MCP和配成话也没有关系,因为现在基本上都是OIM的一个映射框架,呃,AI的话,它是可以通过这种映射框架去反推到数据库,所以他其实只看后端代码,他大概是知道数据库是什么样子。
20:04
最后呢,就是说像我们老项目可能AI一时间反映不出来,我们告诉我们项目的一个启动方法,最后是告诉他我们的一个呃诉求,那么我们做一个未来的展望,就是说我们其实现在理论上AI已经能够实现,就是全自动的流水线化交付了,从AI产品的设计,我们可以用AI来全自动进行到AI技术实施,也可以通过AI来进行编码,到AI的运维和迭代,他可以自己去收集到比如说客户提的工单中的bug,然后自己去分析,自己去修复,自己去上线,然后自己再重新测评,这样的过程在现在其实理论上已经达到可能,然后后来的话,在后面我觉得他会在应用上也会逐渐可能。终极的目标呢?是从人机协作变成AI主导人类监督的模式进行演进。那么最后的话,就是AI浪潮下,我们应该如何顺势而为,首先呢,我这里强调一下,就是我们AI起效和裁员它是两件事情,他是不挂钩的,这也是很多很程序员他抵制这个it提效的原因,他觉得AI干了自己的活,自己要被裁了,其实并不是这个逻辑,就是说AI提效它是一个提效不降本的事情,企业裁员的根本目的还是因为现在大环境不好,利润下滑,所以说企业裁员的话,他其实活还是掉在掉在地上。
21:19
呃,但是但也没有办法,这样就导致这个恶性循环,所以我们怎么样拖出这个恶性循环了,其实就是要求我们每一位工程师用AI去提效自己,让我们一个人或者三五个人承担起原来10个人20个人的活,这样我们可以完成自己,呃,公司内刚需工作的同时呢,我们可以去开展一些新的业务线,让公司就是说出入更大的活力,从而提前走出这样的一个恶性循环。然后AI是否会导致程序员岗位的减少呢?呃,这个我觉得并不会,就是说程序员他可能说单纯的编码岗位可能会减少,但是业务分析师的岗位肯定是更多的,系统架构师的岗位会更多的,然后因为AI的开发的这个成本越来越低了,所以说市场上会有越来越多的软件公司,会有越来越多的应用,那么人民生活中各种还让人感到头疼的一些问题,可能未来都会有各种这种APP来进行解决,因为开发成本低了嘛,所以大家不用花很多钱,我只需要有个好的idea,我样做出实践。
22:13
那么应用迭代也会越来越快,甚至我们以后所见即所得,当天提的需求当天就可以上线,所以程序员并不是被优化,而是要迎来自己身份的升级。那么软件开发企业的话也是说,呃,也有一些这种转型的一些需要,比如说现在很多企业的话,他是打着高科技的帽子,做的是卖人头的勾当,是吧,摒弃这种软件开发式劳动密集型的产业的理念,那这种理念在AI时代其实是不大能玩得通了,然后对于一些呃关键性的领域的话,我们可以打造自己的一个自有的小模型,针对垂直性领域形成我们企业的一个优势,呃,然后在人才升级上,我们可以做一个AI加的技术资源,然后仅仅是原来的技术实施,那么我们最终的目标呢,是将人类的造型式变成AI的经验包,那么最后呢,是送给大家呃三句话,第一个就是AI时代我们一定要提升自己的认知,不能提升,提升在原来的一些这种思维壁垒上面。
23:08
第二个是AI时代,我们要全力跑起来,因为这个时代的节奏比前面的互联网时代节奏还要快,AI大家也看到了,这种新的产品、新的技术日新月异,所以我们其实是要和时间进行赛跑。那么最后呢,就是说我们这一次真的很难得,因为这一次通过一些新媒体的一些这种宣传能力嘛,我们其实得知信息比10年20年要快的多,那么我们这一次真的是,呃,走到了AI这个蓬勃发展的一个浪潮中,我们现在是站在时代的最前沿的,那么这个时候大家都在同一起跑线上,谁能去在这个时代中成为弄出儿,谁能让AI为自己赋能,其实就看大家对这个事情认知,以及自己的一个行动。以上就是我对这个am的分享,谢谢大家。
我来说两句