出品 | 技术栈(微信号:blog51cto)
自从生成式AI大火,AI好像“杠上了”程序员这个角色。
几乎每隔一段时间,关于AI编程工具是否能取代程序员的话题就会被再次讨论。
AI编程所激起的热议,令人感到困惑:这是否会掀起一场编程领域的生产力革命?还是,这又是一场过度炒作的噱头?
大厂们是探索这个答案的先行者。因为AI编程,百度实现了10%的人效提升,今天工程师提交的新增代码中有27%由AI生成。
然而, 作为百度Comate架构师,也是这款产品的首个用户,徐晓强非常反对“开发者将被编程工具替代”的这个说法。 在研发和架构方面的工作经验,让他坚信人类的决策力和创新力有着无可取代的价值。
“工具是帮助人类去做到更好,工具本身不是用来替代人类的。”他在采访中多次表达了自己的这个观点,“人类的决策和创新能力,永远优于模型。”
不过,他也敏锐地注意到,随着AI的介入,软件工程领域确实正在经历一些根本性的变化。研发流程中的角色边界正在模糊,开发者与AI协同工作的新范式时代将要来临。
作为Comate的深度使用者,徐晓强在直播中分享了许多自己使用编程工具的方法和心得,他建议用户应该尽可能多的练习这项工具,达到“熟能生巧”。
徐晓强设想中的AI编程终局,是遥远而伟大的。 在编程工具迎来质变的飞跃之后,他期待人们能以更平等、更加对话的方式与AI协同开发, 甚至超越语言直接在意识层面进行交互,以抵达“人人都是程序员”的终极蓝图。
1.AI完成了百度27%的新增代码, 编程工具解决“真需求”需要用户多摸索
现在有一种论调,说AI编程可能会极大程度的颠覆与编程有关的职位,这个观点也引起了一些恐慌。但另一方面,很多人会发现用AI进行编程的效率远远没有我们想象中那么高。
AI编程的巨大热度究竟是因为需求所在,还是有噱头的成分在里面?
我们先抛开这些观点,去看看现在的事实情况。
首先,尽管AI编程工具的普及和接受需要时间,但AI编程的市场热度有目共睹,并且会出现越来越多的落地案例和商业价值。
其次,AI编程产品会继续进化,以回应更多的“真需求”。拿我们自己的产品Comate 2.0来说,我们正在不断地努力从纵向和横向维度上提升产品能力。
横向上,我们希望AI编程能够覆盖更广泛的研发场景。比如利用RAG技术深入理解项目及代码,从而在多种场景下提升研发效率。在纵向上,希望AI能够在某一个行业或者某一个场景下打深打透。
最后,AI编程工具的提效效果可能因个人和组织而异,用户需要培养使用习惯、找到与工具的契合点。为了更好地与AI工具合作,用户应该清晰地描述需求,将AI视为一个有问必答的私人助手,不断探索和交互。
除此之外,还有很多开发者可以利用AI编程作为学习工具,了解不熟悉的语言、框架和代码实现思路,甚至可以深入追问实现细节。
可以说,在编程领域AI提效并非噱头。自大模型技术兴起以来,百度实现了10%的人效提升,工程师提交的代码中有27%是由AI生成的,用户的采纳率达到了46%。现在,百度有80%的工程师使用AI工具辅助开发。
更进一步说,工程师们感受到了新一代工具所带来的变化,这不仅是工作效率的提升,也增加了工作的幸福感。
在采用AI编程的时候,有没有什么方式可以更好地发挥工具的潜力?
我觉得还是要多去尝试。渐渐地你能找到感觉:什么场景下,AI做得比人要快。通过这样一个个场景的积累,工具会逐步达到你所预期的效果。
刚才您也提到了百度每天新增的代码中,有27%由Comate生成。那么会有人担心,当自己公司的研发团队更多地使用AI编程工具后,是不是会导致裁员?
最开始的时候,我们也困惑和担心会出现这种情况。但随着对AI编程有了更深入的使用和理解,我意识到提升效率不是让工具取代人类,而是让工具与人更好地协作,从而增强人的能力。
目前AI还没有发展到能让编程、让开发者这个职业消失的阶段。不过,就像汽车的诞生之于马车夫一样——即使有一天达到这个阶段,也无需过度担心。
2.人类的决策和创新价值永存,程序员不必担心被取代
我们可以在多大程度上寄希望于AI编程工具,工具会不会有能力的极限?
要聊AI编程的能力边界,我觉得先要看工具的核心优势在什么地方。 我认为主要在具有这三个特点的任务中:高度重复性、简单、琐碎。
相应的,在要求创造性、决策性以及复杂的场景中,AI的能力达不到优秀的标准。我觉得它的能力主要受限于以下几个方面。
第一,模型本身对于信息的理解还不够深入。尽管我们有了更大规模的模型,但对代码的理解仍然不够好。我认为,代码属于信息密度较低的载体,它的诞生并不是为模型、机器服务的,而是在人和机器的语言之间寻找到一个平衡。所以,AI凭借代码无法掌握全局,这就会极大的削弱决策的准确性。
第二,人类信息的存储和传输方式多样,而AI对多模态信息如流程图、类图的理解能力有限。这也是当下一个非常热门的研究方向。
第三,从模型的原理出发,AI作为概率模型,其输出受限于已有知识,缺乏创造力。普通用户难以自行调整AI的提示(prompt),需要prompt工程师这样的专业角色介入。
最后,AI对专业领域的知识理解尚浅,无论是私域知识还是专业领域知识,都需要进一步加强。
基于上述因素,AI在某些场景下的表现是有边界的。需要人类作为桥梁,根据具体问题进行分析,去决定哪些任务交给AI去完成,哪些由自己完成会更好。这是人类将永远优于模型的领域。
假设有个不具备编程能力的人,他如果借助足够强大的辅助编程工具,是否可以实现一些程序员正在做的工作呢?
我觉得目前已经一定程度上达到了这种效果。
但真正具有创造性和挑战性的代码工作,还是需要程序员来完成?
从这个角度来说,程序员们是不是就不需要担心自己将被替代的事情。
对。我觉得可以完全不用担心这些。
3.向软件工程3.0时代迈进,AI协同工作将重塑研发流程
现在,很多人会提到一个词“软件工程新范式”。在AI的冲击之下,软件工程会有哪些变化?从业者应该怎么看待和应对这些转变?
是的。最近软件工程3.0的概念变得比较火,虽然我认为现在也仅是达到3.0时代的起点。
回顾软件工程范式的演变,1.0时代的软件工程真正规范化了软件开发和团队协作流程。但这种方法在实际开发中显得不够敏捷,交付过程也不够流畅。进入2.0时代,开发变得敏捷、基础设施不断完善,以云计算和SaaS为代表,在思维方式和产品形态上与1.0时代相比发生了重大变化。
至于到3.0时代,我并不认为我们进入了一个由工具驱动变革的阶段。大模型(LLM)在各方面展现出的潜力使它扮演了催化剂的角色,而非主导变革。以前,为每个开发者提供一个与自己协同工作的角色是不现实的,但在今天,我们正处于与AI协同工作的新范式时代。
AI协同工作方式能在以下几方面给我们带来工作上的提升:首先,AI能简略实际工作中的操作步骤。
其次,AI减少了我切换任务的成本,使我能在一个界面内依赖它完成提问、熟悉项目、理解和查找信息等工作,它就像我的左膀右臂。目前,我们与AI的协作还处于指令模式,但未来AI可能会做到更多,例如简单的决策任务等,这样我们才能达到真正的人机协同新模式。
随着AI的介入,软件工程领域确实正在经历一些根本性的变化。研发流程将被重构,需求工程变成了交付的起点和终点,当前版本的功能上限可能就是新需求的起点,不断推动产品迭代。
同时,AI的出现也使得角色划分变得模糊。现在,产品经理可能利用大模型快速生成原型,而承担了部分开发的工作,类似的动态能力有助于团队更直观地理解和评估产品概念。
我认为,人机协同的方式和交付模式的变革,以及整个链条式的变化,将共同推动软件工程的演进。
刚才说到3.0时代还没有正式开始,在这个过渡的阶段中,会不会产生一些新的关键角色?
对,我们已经注意到出现了一些新的变化。例如,最近有个比较火的新职位——提示词工程师(prompt engineer)。这个职位以前并不存在,它其实是从研发或产品角色演变而来的。这表明,随着AI的融入,对原有职位的要求正在更新,同时也在形成更加专业化的细分领域,让拥有这些技能的人可以发挥更大的价值。
新的角色会以什么方式加入企业呢?是在企业内部产生,还是说需要通过招聘来实现?
我认为,对于在AI原生应用的开发来说,提示词工程师(prompt engineer)是一个不可或缺的角色。不过从目前看,这个角色实在太新了,市场上难以找到经验丰富的人选。因此,我们通常会通过内部转岗,比如从研发或产品经理转型,来填补这一角色。转型过程中,我们会参考其他优秀实践,将成功的实践沉淀下来。
另外,我们也会在工具层面做支撑。在百度内部,为了支持整个链路的运作,我们开发了一系列工具,比如Comate stack、Playground等。
刚才您说AI创造了新的岗位让人眼前一亮,但话锋一转说,其实我们有很多的产品功能可以填补这些岗位的需要……(是不是相当于没有新的岗位被创造出来?)
那倒不是,我觉得工具是帮助人类去做到更好,工具本身不是用来替代人类的。
4.隐私与版权问题的解决,需要技术与法律的双管齐下
去年GitHub推出的AI编程工具遇到了一个诉讼,AI写了一段代码,但这个代码被证明并不是原创,诉讼围绕着侵权问题展开。我们在使用编程工具的时候,应该怎么样去规避这样的问题?
这是一个很新的问题,无论是立法还是从判例来看,都缺乏足够的参考。我觉得这其实是两个层面的问题。第一层问题是技术问题,第二层是法律问题。
在技术层面,有很多的技术解法,更多地是去做防御。我们致力于确保技术的可靠性和合规性,比如在模型训练时,识别并避免分发具有版权保护的代码片段。从产品层面,要保证数据的合规传输,确保用户交互过程的数据和隐私安全。
从法律层面上来看,需要立法来解决相关问题,保护大多数人的利益。实际上民间已经有一些行动,今年我们作为生成式大模型智能开发标准的核心参编单位,去编写大模型原则、数据安全相关的保障条例。所以有理由去相信,在不久的将来,整个法律层面会更完善更有依据,为行业的发展提供支撑。
徐老师说的这点很有启发,刚才我们讨论的问题,也并不是大模型时代独有的。因为大模型受到了很多关注,而且一部分的人对AI编程技术还存在着怀疑,那么出现的个案(的负面影响)可能就会被放大。
5.AI编码的终局需要质变,将迎来更平等、更自然地交互方式
随着AI编程工具的不断发展和演进,最终会迭代调优到什么样子?我们好奇所谓的AI编码的终极形态。
长期来看,我觉得终局会与现在的产品有非常大的质变。
首先是人机交互方式上的变化。目前,我们的交互主要是通过键盘输入,我主动提供信息给机器,让机器分析和理解我的意图。未来,我们能否以更平等、更加对话的方式,甚至超越语言直接在意识层面进行交互,这将是一个全新的体验。
第二点,我刚才也有提到过一些想法,就是信息载体在未来的变化,可能使得不再需要代码这个概念。我相信,未来将会出现模型及其周边应用的新形态,这些应用将运行在模型之上,用户与AI的交互不再依赖于代码或数据的传输。从而向最终“人人都是程序员”的终极目标迈进。
设想一个场景,加入我需要生成一个邀请朋友们参加派对的应用程序时,我只需要用一句话简单表达我的需求,AI就能为我创建并发送这个应用,让朋友们能直接回复是否参加,以及他们的想法和礼物选择。
回到现实,这种理想状态还相对遥远。
这款产品接下来有哪些计划?
徐晓强: 在Comate的发展上,我有两个主要的期望。首先,我们希望能够扩展它,以覆盖更多的研发场景,甚至于应用到非研发场景中,从而帮助各种不同的角色在开发和软件工程协同工作中提升效率。
其次,我也希望Comate能在垂直在开发领域中,为开发中的需求分析提供更深入的支持。帮助大家在使用过程中能够更容易上手,快速地达到熟练水平,获得更好的成果。
想了解更多AIGC的内容,请访问:
AI.x社区