【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

生成式 AI 带给软件开发的三个幻觉:速度快、质量高、人更少

  • 2023-12-19
    北京
  • 本文字数:2925 字

    阅读完需:约 10 分钟

大小:1.42M时长:08:16
生成式 AI 带给软件开发的三个幻觉:速度快、质量高、人更少

软件行业苦降本增效久已。蔓延开去的开发周期,遥遥无望的上线时间,以及不断冒起的缺陷,怎么看都配不上这支精兵强将的队伍。生成式 AI 似乎带来了曙光,它的表现让人耳目一新,不少人会这么想:生成式 AI 能自动生成代码,成本低,可重复,即抛的能力像云上的资源,这段代码不合适的话扔掉好了,重新生成一段。这是不是意味着,不需要这么多精兵强将了?

 

生成式 AI 在回答我们的问题时,偶尔会抛出个煞有介事的答案,但如果你稍作检索,就会发现这个答案徒有其表:不是查无此言,就是一派胡言,这与人工智能的威名不符。这即所谓生成式 AI 的幻觉,hallucination——因为没有真实可靠的语料,它自作主张拼凑了一个假的回答。

 

大模型技术仍然在不断更新,能让人感知到幻觉程度也在逐渐降低。但在它被投入到具体的领域和使用场景时,幻觉效应仍在发生。在这篇文章里,我会分享下生成式 AI 在软件开发领域的应用,以及其带来的三个幻觉。

幻觉一:更快的速度

 

不同的软件工具厂商都在迭代更新自己的代码助手产品,最著名的是 GitHub 的 Copilot,他们宣称,可以加快程序员完成任务的速度达 55%以上,那些清丽迅捷的演示视频看起来也如飞一般。


(图片来源:https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/)

 

但这是否意味着软件的交付进度可以加快 50%?

 

那些作为演示的代码是可疑的,更多程序员在自己的项目中采用 Copilot 的反馈似乎也表明,提速基本只会出现在一些常用的功能实现上。比如数组的排序,数据结构的初始化,或者是一些再简单不过的模板代码。

 

可重复的工具代码交由 AI 也就罢了。但对于一个开发中的软件而言,有多少类似的代码需要重复开发呢?这恐怕值得讨论。遑论多数时候,它们只需要一次成型,封装待用。还有数量相当可观的业务代码,程序员会以怎样的速度来进行?你可以把足够数量的业务代码交由 AI 来生成,但是否安全恐怕是一个更大的问题。

 

这里还有两个问题值得关注。

 

一是程序员对 AI 提供代码的选择。AI 如此容易提供多套方法的实现,程序员难免要尝试从中找出最优的选项。

 

这个好?还是那个好?咦,竟然有五种不同的实现。需要先读懂每一种代码的实现,再切换到下一种。这个实现的方法很优雅,但可惜单元测试失败了。换下一个。

 

程序员的好奇心被代码助手充分搅动。心猿意马,线性的思维习惯碎落一地。程序员遗忘的不只是开发纪律,还有时间。

 

二是软件自有生命周期

 

很显然,轮到程序员开始编写代码,很多事情已经发生,而更多的事情还会继续发生,直到系统上线。这些事情包括但不限于:收集需求,理解需求(从需求说明到用户故事),测试,维护基础设施,以及那些层出不穷的修复工作。

 

我的意思是说,即便 AI 帮助程序员写得再快,这个阶段也只是软件生命周期中的一部分而已。早有相关的数据统计,程序员日常的工作,只有 30%的时间是在编写代码,而更多的时间是在尝试理解他们要实现什么功能,以及设计和学习新技能上。


(图片来源:https://github.blog/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience/)

幻觉二:更少的 Bug

 

人编写的代码难免存在缺陷,这是软件质量的基本共识。而且似乎越有经验的程序员,越容易生产出隐晦的问题,要过了很久才会被发觉。线上问题更让人提心吊胆,但这样的担心很难避免。

AI 生成的代码,听起来也很高级,是不是会带来足够完美的结果?很可惜,答案可能会让人失望。

 

生成式 AI 背后的大模型,以互联网上大量的语料作为数据来源,尽管大模型技术一直在改善,但网络上已经现实存在的带有偏见的数据量十分可观。这也包括大量饱含缺陷的代码。这意味着程序员在代码助手中精挑细选的代码,也可能存有缺陷。因为这段有缺陷的代码,可能来自地球另一端的某个人,只是恰巧成为了地球这一端的选择。

 

要命的是,生成式 AI 有放大器(amplify)的功效。简单来说,就是如果程序员采用了存有缺陷的生成代码,Copilot 会记录这样的行为,在接下来类似的场景,会继续建议有缺陷或差不多的代码。AI 并不能读懂这样的代码,它只是被鼓励继续提供。我们可以预想最后的结果。


(prompt:A programmer is sitting at a computer desk, looking confused and frustrated. The computer screen shows a code editor with a pop-up window of GitHub Copilot suggesting incorrect code, symbolized by red error indicators and crossed-out lines in the code. The programmer is scratching their head, surrounded by crumpled paper, indicating multiple failed attempts. The scene conveys a sense of challenge and confusion due to the reliance on incorrect AI-generated code suggestions, leading to quality issues in software development. The room is cluttered, reflecting the chaotic situation. )


程序员要严守团队的开发纪律,保持统一的代码规范,因为这样别人才能读懂,更容易发现潜在问题并修复它。但代码助手提供的不同样貌的代码,似乎也提供了更多的混乱。

 

代码有缺陷,只是软件最后会爆出难以挽回的问题来源之一,甚至是很少的一部分。构建软件的过程,其实是知识生产和创造的过程。在软件生命周期不同阶段加入进来的各角色,共同理解和分析软件的需求,然后转换其为代码,也在团队和人员更替的过程中,传递这些表面为需求和代码实则为知识的信息。

 

但通常,知识会衰减,知识资产的传递会不可避免地出现差池。比如,读不懂代码,无法持续更新文档,整个团队又被替换,等等。这些才是软件不断产生 Bug 和问题的原因所在。人工智能并未能解决这些软件工程中棘手的问题,至少现在看短时间内做不到。

幻觉三:更少的人

 

AI 的代码助手看起来确实像见多识广的程序员。甚至有人愿意把它当成结对编程实践的伙伴。用人成本一直是 IT 团队头疼的问题,好手太贵,合适的人招不到,从头去培养熟练的程序员又需要太久时间。有了人工智能和代码助手的加持,是否意味着可以缩编快一半的人?

 

AI 和代码助手不仅无法提供上述的速度快和质量高保障外,也期待使用者要有足够经验的程序员才好,才能尽可发挥它该有的优势。这位有经验的程序员,需要有能力判断代码的优劣,判定对已有生产代码的影响,还需要有精心调整提示词的耐心和技巧。

 

这篇文章里,作者讲述了她在使用代码助手时诸多要留意的问题,还有你能看到的她缜密的内心戏。因为代码助手带来的不确定性,可能会引起两类风险,一是影响到代码的质量,二是浪费时间。这里其实显示的是一位足够资深的程序员的自省能力。

 

也只有这样,代码助手才可以心安理得扮演见多识广的新手,而经验程序员充当守门员,她才是那个负责提交代码的人。这样说来,AI 改变的其实是编程体验。


(图片来源:https://martinfowler.com/articles/exploring-gen-ai.html,作者把代码助手想象成一个着急帮忙、固执、说话清楚但缺乏经验的角色,于是用 AI 画出了这个卡通形象)


AI 和代码助手在解决简单重复性问题上,效果显著。但在构建软件的过程中,有更多需要人和专业经验的场景来解决复杂的问题。比如软件系统日益增加的架构复杂度和范围,应付市场和业务侧的需求,跨角色之间的沟通和协作,还有那些更加时髦的涉及代码伦理和安全的问题。

 

虽然判断程序员是否足够专业和熟练,不像数数那样一目了然,但我们也可以说,引入 AI 和代码助手然后减员开发团队,能带来的成效是不确定的,目前看弊大于利。

写在最后

 

生成式 AI 的本质是模式转换,从文字的一种形式,转换成另一种形式,高级的代码助手的能力也不出其右。如果把涉足软件构建的 AI 代码助手,认为是解决诸多软件工程难题的妙方,我们恐怕只是把复杂的问题想得过于简单。

 

写到这里,我们一直在谈什么呢?

 

我们其实在谈的是,在软件开发上投资 AI 的成效该如何衡量。投资 AI 并不是简单如购买代码助手的 License,然后就可以坐享降本增效。不断询问“我们要如何衡量投资 AI 和代码助手的效果?”,不如询问“我们到底要衡量什么?”。从 DORA 定义的四个关键指标开始,是个明智的选择,它们是变更前置时间、部署频率、平均恢复时间 (MTTR) 和变更失败率。

 

以下几条基本衡量原则供参考:

 

  • 衡量团队效率,而不是个人绩效。

  • 衡量成效而不是产出。

  • 查看随时间推移的趋势,而不是比较不同团队的绝对值。

  • 用仪表板上的数据开启对话,而不是就此结束。

  • 衡量有用的东西,而不是容易衡量的东西。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-12-19 15:426300

评论 2 条评论

发布
用户头像
技术的进步正在让我们失去思考能力:
在没有网络的时候,我们想要获取信息,需要自己汇总分析手头的资料,从而得出结论。有了网络,我们更多的是通过网络直接搜索结果。
在没有AI助手的时候,程序员通过分析业务功能,整理思路编写代码。有了AI助手,我们就转向了分析AI生成代码的BUG修复上,从而失去了架构思考的能力。
2023-12-23 16:05 · 四川
回复
说得好,很难讲人的能力是在增强,还是在退化。
2023-12-25 17:06 · 北京
回复
没有更多了

海外云手机提供的当地IP有什么好处?

Ogcloud

云手机 海外云手机 云手机海外版 海外原生IP 海外IP

【教程】四种方法将App打包为IPA文件类型

雪奈椰子

Telegram电报机器人系统开发,关键词回复系统开发

西安链酷科技

tg机器人开发

X314协议发型、币安链协议发币

西安链酷科技

二维码使用技巧:自动填充信息,提高表单填写效率

草料二维码

二维码 草料二维码

云手机运营TikTok需要流量吗?

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 tiktok运营

从零基础到精通,抓包神器fiddler保姆级使用教程(一)

霍格沃兹测试开发学社

深入了解 Docker:革命性的容器化技术

霍格沃兹测试开发学社

ios ipa包上传需要什么工具

海外短剧系统开发,多语言搭建影视类分销软件开发

西安链酷科技

短剧app开发

区块链公链搭建终极流程 西安公链搭建技术团队

西安链酷科技

交易所开发 dapp开发 公链开发 区块链软件开发

为什么向量数据库在 RAG 中至关重要?

Zilliz

大模型 Zilliz 向量数据库 rag

交易所钱包系统开发

西安链酷科技

交易所开发软件开发

小米14 Ultra影像私享会在长春万象城成功举办

Geek_2d6073

如何使用pgvector为RDS PostgreSQL构建专属ChatBot?

阿里云瑶池数据库

数据库 阿里云 数据库开发 ChatGPT

智能推送SDK,你知道的东西太多了!

MobTech袤博科技

自定义对象池在Caffeine框架中实践

FunTester

海外云手机怎样助力Tik Tok运营

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 tiktok运营

如何在 Pytest 中添加日志记录

霍格沃兹测试开发学社

从IoTDB的发展回顾时序数据库演进史

Apache IoTDB

抓包神器wireshark安装保姆级教程

霍格沃兹测试开发学社

运维工具如此割裂,九招帮你统一纳管

观测云

运维‘

架构实战营 - 模块五作业

满心

架构实战营

天天挖宝零撸游戏app项目软件开发搭建

西安链酷科技

软件开发

海外短剧APP开发:短视频出海,多语言爽剧,国际支付定制开发

西安链酷科技

短剧app开发

软件测试学习笔记丨什么是装箱和拆箱

测试人

软件测试

碳实践 | 你真的会做碳数据收集么?入门必看!

AMT企源

碳管理 碳实践 碳资产

电商新宠:淘宝拍立淘API接口助力精准搜索商品信息

技术冰糖葫芦

API Explorer api 货币化

构建只涨不跌的DApp代币合约系统:LP分红项目开发详解

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

dapp开发流程以及应用

西安链酷科技

DAPP系统开发

nft外包开发团队流程和注意事项

西安链酷科技

NFT开发链游开发

生成式 AI 带给软件开发的三个幻觉:速度快、质量高、人更少_生成式 AI_张凯峰_InfoQ精选文章