人工智能将如何重塑软件研发 | 第12期

2023-04-27 15:06:30
践行者
原创
606
摘要:ChatGPT横空出世,给所有人带来了巨大的想象空间。那接下来,人工智能将如何影响软件研发的方方面面呢?


ChatGPT横空出世,给所有人带来了巨大的想象空间。那接下来,人工智能将如何影响软件研发的方方面面呢?
 
践行者第12期,我们非常荣幸地邀请到了阿尔法数聚联合创始人陈勇老师、券商敏捷“胜熊肝帝”吴言老师、某外资车企Team Coach陈霁(云层老师)以及禅道项目管理软件创始人王春生。软件研发各领域的KOL齐聚一堂,他们对人工智能与软件研发的碰撞又会有怎样的见解与主张?


一、人工智能将如何重塑软件研发

聊到人工智能,不可避免的话题就是“TA会给我们带来哪些好处”以及“目前TA又有哪些限制”。
 
对于前者,老师们分享了自己的尝试:
  • 比如团队中暴露出来的问题可以通过ChatGPT得到回答,甚至我们可以用ChatGPT代替coach的一部分工作;
  • 通过Copilot这类的AI编程工具可以在实际的编程过程中发挥极大的用处,比如写一个代码的开头,让它补全代码等等;
  • 虽然ChatGPT在编程的细节问题上有一些漏洞,也无法替代Scrum Master所做的与人、团队进行直接交流的工作,但我们可以借助ChatGPT做一些基础性的工作,比如生成下一次回顾会的议程、写份会议纪要、日报等等;
  • 禅道目前在用ChatGPT进行需求的润色、测试用例的拆分,效果也很不错。
 
但凡事都具有两面性,人工智能给我们带来了一些便利,自然也有其缺陷,人工智能会有哪些缺陷呢:
  • 在和ChatGPT做接入时会受到一些限制:每次会话会有token的限制,因此无法与ChatGPT做更整体性的对话,也无法做更自动化的一些事情。比如尝试让它生成测试脚本,但从它呈现的一些脚本来讲,可阅读性、可维护性还有待商榷。
  • 其中还有一个问题:我们怎样向这些人工智能进行提问?如何组织我们的提问,让人工智能的产出更精准?我们又如何对运行的结果做比较精准的控制,这是接下来我们需要去探索的。
  • 另外的问题是,当ChatGPT在我们的工作生活中占比越来越大时,我们会越来越依赖于ChatGPT。但ChatGPT带来的这种似是而非的东西有可能会影响我们的正确认知。


二、问答实录

1. 大佬们有被GPT巧妙地“骗到”过吗?当时的场景是什么?

春哥:
前段时间,我第一次尝试使用GPT写公众号文章。我给了GPT一个大纲,想要生成一篇2000字的文章。因为GPT有token限制,只生成了一篇1500字的文章,但我发现GPT能完全理解我想要表达的意思,它给出了一篇结构完整、逻辑清晰的文章。直到后来,我再次看这篇文章时,还以为是自己的文章,但因为我自己写的文章和GPT生成的文章会存放在不同的文件夹,我才发现这是GPT生成的文章,这件事让我感觉被骗到了。

云层老师:
在GPT出现之前,我翻译文章一般要先查电子词典,再借助谷歌翻译、百度翻译等翻译工具,最终完成翻译。使用ChatGPT翻译确实方便很多,生成的文章读起来也很通顺。但当我满怀欣喜相信时,我查阅了几个关键词发现出现了很大的问题。如果在非专业的角度来看,文章内容看起来非常合理;但一旦从专业的角度来看,ChatGPT生成的翻译文章就像一个小朋友在胡乱拼凑,是完全经不起推敲的内容。

当然,我也承认ChatGPT有很多非常优秀的地方:比如ChatGPT能够理解某些规则,ChatGPT内含大量的有效数据。如果GPT想得走得更远,不得不考虑一些问题,就像百度一样。百度刚出来时我们搜索到的是标准答案,而现在百度搜索提供的基本上是被SEO优化的套路答案。

陈勇老师:
现在很多职业很容易被GPT或者AI取代,我在想怎么看一个职业会不会被取代。我突然发现世界上分两种事情: 一种是创意型工作,另一种是确定型工作。

什么是创意性工作?文学创作、艺术创作、做Logo、做PPT版式等都是创意型工作,这些工作都是一个开放性的答案,只有在创作过程中才能逐渐知道自己想要什么,AI在这类工作中产出会快得多,它在一开始就可以给出确切答案。

什么是确定型工作?我想到三个例子:一是手术:病人什么病症、该做哪个手术、该什么时间动手术……这些必须一步一步想清楚,不能自由发挥。二是编程:一个运行2年的产品本身已经存在50、60万行代码,现在只需要添加1000行代码。用什么语言编写、代码添加后会影响谁……这都是需要思考的问题。三是建筑:针对一个建筑,设计者可以随意发挥,但建造者必须按照设计图纸的指示进行建造,否则整个建筑就可能会遭受灾难。

所以说,这个职业未来到底会不会被取代,可以从这个职业是创意型还是确定型的角度考虑。相比于确定型,创意型工作被取代的概率更高。

2.项目管理中,哪部分工作最应被AI替代?

我觉得初级程序员或没有太强编程能力、架构设计能力的程序员可能会被替代。因为GPT这种生成式人工智能的进化速度很快,也许在未来某天它就能够用自然语言编程。其实现在,我只要把需求用严谨的、规范的语言表达出来,GPT就可以在编码方面做一些加强,把不确定性的因素刨除。

自然语言在翻译成编程语言的过程中会存在大量问题的,从需求到实现过程中,各种各样的Bug就是这么产生的。从自动化测试的角度讲,GPT现在已经接近能够实现自然语言编程的程度,比如用一些比较确定性的语言去描述,打开浏览器输入网址,点击button,去做一些事情。

其实,现阶段GPT生成的脚本已经运行得非常良好,只不过它的逻辑相对简单。如果未来GPT能够把输入量做得更大,能够知道完整的、系统的上下文语境,加强对编程方面的一些要求、一些内部框架和一些业务逻辑的了解,将来有一天GPT是可以用自然语言编程的。当这一天到来时,我觉得最容易被替换掉的可能是这类没有太强的编程能力和架构能力的初级程序员了。

3.GPT对软件开发的流程和开发人员的角色要求有啥影响?产品经理等会不会被替代?

云层老师:
ChatGPT能够给我们提供什么?ChatGPT能跑代码并连接数据库数据,从数据库里查询记录并显示在界面上,也能提供像Excel一样的列表,在上面放一个查询框等等。其实这些东西都可以形成一个标准的内容。标准的内容本质是什么?我认为这是一个统一语言的问题。对于我们敏捷开发团队来说,为什么要做全栈化、能力的打通,本质上就是解决从产品到开发到测试到运维的语言不统一的问题。

既然能快速试错,为什么一定要让AI写人能看得懂的内容?为什么不能变成AI写自己能懂,我们能用的内容呢?换个角度说,现在AI的前身可能是低代码,给它一个规范化的说明,它就能组织成一个标准模型的解决方案,随之落地。我们通过AI将不够丰富的场景组合起来,很多问题就解决了。

从这个角度来说,我们未来的团队可能只需要两个产品经理和一个熟悉GPT或AI的员工,他们通过不断地向AI说明功能需求,将AI提供的内容修改成满意的产品即可。这个过程完全不需要在意代码是如何跑起来的,一旦CI/CD出现错误,只需要向AI说明“这里有Bug出来,结果跟我想的不一样,请把它改掉”就行了。

不过这种方式的缺点可能是随着代码的增多及复杂程度的提升,改Bug所要消耗的资源会呈几何倍数式上升。AI能够真正实现重构和TDD,为每一行代码都提供单元测试,所以它的运算量也会大大增加。
 
春哥:
GPT的出现对人的能力提出了更高的要求,这同样给了我们新的考验:

  • 能不能跳出之前的思维定势,提出一些更有创造性的想法。
  • 能不能够把想法用一些结构化非常好、逻辑性非常强的语言丢给GPT。
  • 在与GPT不断地交互过程中,能否根据GPT的反馈不断调试提词。这相当于debug的过程,但这个debug是不确定性的,背后的运作逻辑可能是一个大黑盒,我们只能用提词不断地去调试。
我认为将来确实有一些流程,或者一些角色的职责会发生变化。将来我们团队里面可能有像结对编程一样的提词小组,一个产品经理带上几个人,大家各取所长,有的人擅长天马行空地抛出一些不着边际的想法,有的人擅长结构化、逻辑性表达。从开发角度、从实现角度来讲,一些简单原型图设计、简单页面工作、写项目的总结报告等文案型的工作,逐渐都可能会被 GPT 替代。

4.使用ChatGPT等AI来辅助编程,对于代码安全有没有考虑,比如和内部业务相关的代码泄露出去?

春哥:
对于这个问题,我的观点就是取决于你做的是什么样的应用和软件。其实对于我们禅道这类应用软件来讲的话,代码重要,但并不是最重要的,最重要的还是我们的产品理念和产品设计以及整个团队的服务能力等等。我们禅道的核心代码都是开源的,大家可以随便去用、去改,所以从这方面来讲代码安全的话,我觉得是没什么问题的。

但在编码层面来讲,我可能会更保守一点。我们团队现在还是让大家是在用Linux、Shell、VM这些相对来讲提示能力没有那么强、比较原始一点的编程环境来进行编程。我们会刻意地训练团队成员不要完全依赖于这些人工智能类的工具,能够保持对编程能力的掌握。

所以从这个角度来讲,我们团队所理解的安全,是另外一种安全,它不是代码的安全,而是指能力的安全,你可以把我的代码偷走,但你偷不走我的能力,有这个能力在,我们就可以应对各种各样的挑战和变化。

吴言老师:
金融是强合规行业,强合规行业肯定不能让代码公开出去,这个是有很深的历史原因,编码里边可能会有大量的业务信息,包括业务模式、业务代码、内部术语,如果这些东西暴露在网上,那整个行业面临的麻烦还挺大的,像这些强合规的行业我们还是要去训练一些小模型做生成,其实这也是个好的出路和解决方案。
 
云层老师:
关于AI,我觉得还是会淘汰很多人。人类进步的核心在于工具的产生,工具产生本质就在降低我们做很多事情的门槛。AI给我们带来机会是让我们一下子从不会,跨越到勉强能会的那个阶段,但其实在专业程度上面,它是极大地提高了你的要求。我们需要是能力,能力就是我们能基于AI把事情做好,我们从AI身上学习经验,但不能只依赖于AI工具活下去,因为我们需要有自我成长和生存的能力。
 

5.AI在软件研发中是什么样的定位?是提效助手还是团队的伙伴呢?

陈勇老师:
AI未来应该是我们的加速器,像CI/CD一样,它让我们一切都变得更快。但大家也不要认为有了AI之后,不会编程的人也可以任意写代码。举个例子:未来,产品经理也需要学习代码。假如十年后,告诉产品经理们需要和计算机直接沟通需求的话,我们只用自然语言是无法说服计算机把产品造出来的。因为自然语言是多变的,就像说同一段相声,不同的人说的相声给听众的感受也会不同。而对于计算机来说,理解我们不同人的语言习惯也是很困难的。

所以最好的状态是反向训练,我们需要反过来理解计算机到底在干什么,它接收什么样的语言才能明白。所以尽管AI会帮我们加速,但也需要我们自身能力的提高。毕竟,零乘任何数都是零。
 

6.CI/CD还会有吗?

云层老师:
CI/CD和云一样,是基础设备,不会没有的。

吴言老师:
先问几个问题,就是我们要不要做整体软件工程流程?要不要编译打包上线?要不要走发布部署流程?如果说有一天我们完全不需要这些过程了,我们说一句话代码就能自动写好、可以上线、完全不会有Bug的话。CI/CD或许不会再有了,但那一天什么时候会到来?这是我们目前不清楚的。

陈勇老师:
我预测一下,CI/CD这一活动会存在,从业人员数量会直线下降,估计五年左右,也许会有大半的人不需要了。十年后很可能就彻底不需要了。

7.送给大家的一句话

春哥:
一方面我们要把GPT应用到极致,充分拥抱它,另一方面我们要训练人类原生的能力,让我们具有不依赖任何工具的能力。
 
云层老师:
我们做敏捷特别能感受到“适应变化”。AI的最大好处在于让我们不必花费太多时间去弥补短板,它可以在极短时间内帮我们解决我们不擅长的事情,将我们的能力提升到一个平均水平,那么我们和别人的差距就在于长处到底有多少项了。只要长处增多,还是能与别人拉出很大差距的。这要看新的红利时代我们到底能不能抓住。
 
陈勇老师:
第一,千万不要害怕被AI取代;第二,一定要学习和AI共存;第三,一定要学习驾驭AI,让它成为我们的工具。
 
吴言老师:
我们不求什么,但你要躺太平的话,就可能会像最早期的AI,当初被人称为人工智障的那些东西一样,这比被AI取代更可怕。


    发表评论
    通过审核后显示您的意见