真的不再需要程序员了?

news2025/1/4 19:52:27

图片

AI时代:程序员的终结还是新起点?

©作者|Ninja Geek

来源|神州问学

“基本上以后不会存在程序员这种职业了,所有人只要会说话,甚至连写字可能都不用,你就具备今天程序员所具备的能力,所以这个意义还是很大的。未来的编程语言只会剩下两种:一种叫英文,一种叫中文,这也是目前世界上人工智能技术最领先的两个语言。“

                                                                                                                     — 李彦宏

在 2024 年 3 月的一档对话节目中,百度公司创始人、董事长兼 CEO 李彦宏先生谈到了对未来软件工程领域的判断。

“由于 AI 创造的奇迹,技术鸿沟被缩小,所有人都不再需要学习程序设计,现在程序语言属于每个人。”

                                                                                                                      —黄仁勋

在 2024 年迪拜举行的世界政府高峰会上 NVIDIA 首席执行官黄仁勋先生的发言。

我们从人才市场的角度来看,自从以 ChatGPT 为代表的大语言模型问世以来,写作和翻译的自由职业者受到来自人工智能的压力最大。同时,软件开发相关职位反而增加了 6%。

从一位软件开发者的角度去思考,我们需要明白,大语言模型的回答质量需要考虑以下几个方面:

1. 模型的参数规模:理论上来说,参数规模越大的模型,在联想、上下文理解方面更有优势。

2.支持的上下文窗口大小:支持更长上下文的模型,对于提问者的意图理解更有优势。

3.更好的算法:在相同或更少的计算资源下,提升模型的训练速度、减少过拟合、提高模型的泛化能力,这样,模型在不同任务中的表现更优。

4.优质的语料数据:精准的原始数据有助于模型的回答表现。多样化的原始语料意味着模型能学到更广泛的知识,避免偏见的产生。

5.提示词的质量:精心涉及过的提示词总是能比随意输入的提示词在更少的轮次获得你想要的答案。

我们试想一个场景,当我们需要在一个 IO 密集型场景下去解决网络请求吞吐量控制的问题,这里就会涉及到入线程、信号量、线程切换等技术专有名字,如果做为解决问题的人不具备这些背景知识,他是很难提出好的提示词,那么大模型也就无法给出最优解。

从接触过的许多非技术领域的管理者对于人工智能带来的生产力提升的错误理解谈起

“我们的客户一直希望能够更快的获得更多功能,并且认为人工智能就是解决交付瓶颈的银弹。”

我一开始对于这种想法不以为然,但随着接触的客户越来越多,发现这是目前存在的一种普遍理解。那么人工智能真的是下一颗“银弹”吗?

许多人认为人工智能是软件开发领域的重磅炸弹。显然,我不这么认为。就目前而言,人工智能仍然是辅助性的,而不是一种替代关系。

稍后我会展开来谈。

蜜月期

在一些领域,的确,人工智能已经超越人类工程师,如代码快速生成、代码审查(当然这不包括业务逻辑的审查,仅仅只是某种代码逻辑的审查)、测试和文档生成。

在过去几十年间,创造代码的工作一直牢牢掌控在人类工程师手里,但也不得不承认,人类工程师的代码输出速度和质量却并不稳定。特别是在不同工程师间的差异最多可能达到 7 倍。

随着人工智能的发展,我们对软件开发领域的掌控力正在减弱。

如 GitHub Copilot、通义灵码提供的编程辅助工具能够在瞬间生成代码。只要你的提示词质量够好,这些工具/模型就可以给你质量不错的回答。我曾仅花费一周的时间,利用 GitHub Copilot 使用 Spacy 自然语言处理框架完成了一个生产可用的文本分类模型的实现。要知道在此之前我毫无 Spacy 框架的相关经验。如果没有大语言模型,通常的做法是去阅读官方文档,在 Spacy GitHub 官方项目主页查找各种 issue 的解决方法,去 Google 中去大海捞针式的去查找一些很小众领域的问题,这还无法保证一定能找到答案。这些所花的时间可能是数倍之多。因此,不可否认,大语言模型给工程师带来的便利是值得肯定的。

但我反对的是无脑的支持人工智能,甚至认为她是无所不能的,至少现在不是,也不希望她是😛。

下面我会从几个层面来进行说明。

对于组织来讲,为什么生成式人工智能对软件开发企业有如此大的吸引力?

对于组织来讲,追求更高的质量、更低的成本和更快的速度是永恒的主题。

但总体而言,我们回顾过去几十年软件行业的发展,并不能完全满足这些期待。软件研发的过程往往进展缓慢、令人沮丧。对许多人而言,软件开发带来的负担大于其好处。

因此,各类企业对于生成式人工智能的前景垂涎三尺,希望能够出现一种技术提供无限的生产力。企业希望出现没有情绪,不会生病,无时无刻在产出代码的数字员工。似乎从大语言模型和未来的通用人工智能身上找到了答案。

但这真的能实现吗?我们需要明白一点,效率不等同于效果。快速做事并不意味着快速做出正确的事。人工智能可能会让我们更加关注产出而不是好的结果。而在这一过程中减少人的参与是一个可怕的想法。

这也是我们在使用人工智能解决问题时必须避免陷入的思维陷阱。

软件开发仍然是一种创造性工作,不只是编码本身

A bad system will beat a good person every time.

                                                                                                  — Edwards W. Deming

这是美国著名物理学家、统计学家爱德华兹 戴明说过的一句名言。

这意味着环境、行为和工作方式决定绩效。价值流动的问题不在于人,而在于人所处的系统。

人工智能无法修复损坏的系统。

我将这句话引申到人工智能领域则是:“糟糕的系统每次都会打败好人和人工智能。”

让我们来看看我是如何得出对人工智能的立场的。

更多、更快的产出一定带来更好的结果吗?

许多公司和组织开发的软件产品中充斥着面向绩效的,不必要的,半成品的功能。

多年来的信息系统建设导致信息孤岛的出现,要把这些信息孤岛重新连接起来,仍然需要具有行业经验的设计者来解决这些问题,这时,人工智能可以起到很好的辅助作用。如果一味追求产出而不是结果的系统并不会从更多的功能和特性中受益。

其问题的核心从来都不是开发人员可以输入多少代码以及速度有多快,也不是产品经理构思出多么酷炫的功能和输出了多少 PRD 文档。其实更多的是关于:

●我们对用户的了解程度。

● 我们可以更快的否定掉那些伪需求。

●我们如何更密切的与客户协作以解决他们的真实问题。

能够轻松地产出客户想要的任何功能的能力对于组织来讲是极具吸引力的。

但是,一旦整个系统出现问题,这一切都只是空中楼阁。信息孤岛的存在则会让更多好的想法停留在待办清单上。如果我们很少与客户交流,那么更多的产出只是在浪费时间和金钱。

与过往的各种开发技巧和工具相比,人工智能的确做得更好,变得更有效率了,但还没有出现颠覆式变革。我们试想,当前使用人工智能解决你的编码问题,使用传统的方式,如 Google 搜索,查找 GitHub issue,翻阅 StackOverflow 同样可以解决你的问题。

人工智能可以代替真实的客户沟通过程吗?

大概在几周以前我阅读了一篇文章,文章中提到如何利用人工智能来代替真实的客户沟通过程。

大概的意思是只需要将客户系统的关系型数据库结构和数据丢给大语言模型中即可。它将了解客户的需求和愿望。接着,我们就可以向大语言模型提出各种各样的问题,最后得到满意的回答。这种方法让我首先想到了神话传说中的炼丹炉,似乎把任何东西丢到炼丹炉就能制造出长命百岁的灵丹妙药。这听起来似乎过于理想化,我们来看看为什么:

1. 随着互联网与移动电商的兴起,我们与客户之间已经不受物理空间的限制,通过远程会议、即时通讯软件、电子邮件这些工具我们可以随时与客户保持连接。但没有发生变化的部分仍然是持续沟通。随着商业环境和业务的复杂化,没有什么比持续的沟通能更快了解客户和解决客户问题的“灵丹妙药”。也就是说人工智能无法感知物理环境的变化和情感变化,对,至少目前不行。

2. 大语言模型的幻觉问题一直是业界公认的难题。由于本质上语言模型是建立在概率学基础上的技术,因此,我们无法得到一个面面俱到,百分之百没有问题的模型,我们能做的只是让她变得更好而已。在真实的业务场景中,一定会有那么一些业务单元是绝不允许出现错误的,在这种情况下需要谨慎使用 AI,适当的工程化手段是必要的。

哪些部分是人工智能在客户沟通过程中能帮到我们:

1.如果你深刻理解客户的问题,那么你可以借助人工智能来学习和增强领域知识。可以想象一下,当你对客户所处的业务环境足够了解后,通过切片和数据清洗来使人工智能更好的“理解”用户的业务。这将是有用的。我认为人工智能是一个快速、强有力的客户业务的研究助手,而不能代替真实的客户沟通过程和对特定业务领域的学习和了解。

2.快速的原型输出。以往任何时候都没有像现在这种可以利用人工智能技术快速将想法转变成实际可运行的原型产品,当你认为你已经理解了客户的需求和需要解决的问题时,你确定真的完全懂了吗?没有什么比能够运行的系统更能够证明你已经弄明白要解决的问题。

了解您的客户和客户所处的业务环境没有捷径可走。

我们应该坚信人与人的沟通作用远大于人与机器的沟通,这也是我想谈的最后一点。

人工智能是否值得信赖

多年来,企业和组织一直在寻找建立信任的最佳方法。

那么人工智能值得信赖吗?

在一开始,人工智能似乎非常好。她完全透明、可以不间断的 24 小时工作、掌握丰富的知识、没有脾气。但盲目信任人工智能可不是什么好事,还记得终结者里的天网吗?

我们必须加强法律法规,对人工智能加以约束,因为人工智能带来了许多额外的问题:

●安全、数据保护和版权问题日益突出。

●数据治理与合规问题需要引起重视。

●加强模型的质量控制措施以便捕捉可能的人工智能幻觉。

从好的方面来说,目前许多大语言模型都提供了自省机制,某种程度上能自我修正可能的错误,但这并不能消除人类反馈机制,人类反馈机制仍然是改善大模型的必要有效手段,这种手段可能会一直存在。

人始终应该处于绝对控制的角色。

人工智能适合缓解瓶颈

如果你读过 Eliyahu M. Goldratt 的《目标》,你就会知道约束理论背后的概念。没读过也没关系,让我来总结一下:

“目标”的核心理念就是如何识别瓶颈和消除瓶颈。瓶颈总是潜伏在系统中,造成流程混乱。对瓶颈之外的系统部分的任何改进都无济于事。以下是他建议的要点:

1. 识别并优化瓶颈。

2. 增加出现瓶颈部分的容量使其不再阻碍流程流动。

3.找到下一个约束点并重复这个过程。

人工智能则可以通过多种方式帮助你实现这一点:

● 分析并识别瓶颈。

●建议优化造成约束或阻碍的方法。

●通过自动化来加速寻找并优化瓶颈的过程。

团队可以将 AI 作为约束理论的好伙伴。我们试想一下,编码速度其实很少会成为整个软件产品生命周期的瓶颈。

因此,我们可以更好的利用人工智能来作为瓶颈的破坏者而不是通过代码生成器来改进系统和流程。

结论和思考

在我写完这篇文章后,停下来思考良久,我意识到:

1. 更快的输出并不一定会带来更好的结果。

2. 人工智能无法代替与客户的直接沟通。

3. 人需要具备完全掌控的能力,而不是相反。

4. 持续学习,保持竞争力。

因此:

“我们应该让团队来决定如何使用人工智能来改进系统。团队最清楚问题出在哪里。就像任老讲的,让听得见炮声的人做决策。没有谁能比一线作战的人更好的指导人工智能应该做什么和怎么做。”

归根结底我们需要回归到人性的一面,团队仍然至关重要。当人工智能来临时,只是团队中的角色发生了变化,团队为人工智能腾出了她擅长的那部分空间。只有团队能更好的部署人工智能以改进整个系统和流程。

人工智能会一直存在,人也是如此。让我们彼此找到合适的生态位吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1820737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

D咖饮品机入驻奇轩商贸,为DF101大规模入驻荆州拉开序幕

荆州,一座历史悠久的城市,如今正焕发着新的活力与魅力。而这股活力的源泉之一,正是奇轩商贸的一次创新尝试——D咖智能饮品机的入驻。这不仅仅是一次机器设备的更新,更是一场技术与美味的碰撞,为DF101大规模入驻荆州市…

8086汇编 add指令学习

ADD,是Intel x86平台的汇编加法指令,MEM代指操作数为内存或寄存器,REG代指操作数为寄存器,IMM代指立即数,SEG代指操作数为段寄存器。 形式和示例如下; ADD MEM8,REG8 ADD DS:[BXSI],AL ADD MEM16,R…

App推广效果分析,Xinstall助力精准优化

App推广效果分析:Xinstall助力精准优化 在App推广的激烈竞争中,如何确保每一次推广活动都能带来最佳效果,是每个运营者都关心的问题。Xinstall作为一款专业的App推广工具,不仅提供了全方位的推广支持,还能通过精准的数…

学会python——密码校验(python实例三)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 pycharm编译 3、纠正密码输入的格式问题 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可…

鸿蒙轻内核A核源码分析系列七 进程管理 (2)

本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口,读读代码,做些记录。 1、LiteOS-A内核进程全局变量 ⑴是进程池,存放各个进程控制块LosProcessCB的信息。⑵处开始的g_freeProcess是空闲进程链表,挂载各…

美业门店管理系统Java源码分享-【库存管理】的功能和作用

美业收银系统在美容行业中的作用和重要性体现在提高管理效率、提升客户满意度、降低成本、促进业务增长等方面。它为连锁美业提供了一个全面的管理工具,能够更好地应对市场挑战,提升竞争力。 美业系统中的【库存管理】在整个美容行业中起着非常重要的作…

【SpringBoot系列】覆盖重写第三方Jar包中类

要覆盖或重写一个第三方JAR包中的类,你可以使用以下几种方法: 方法一:使用类路径优先级 Java的类加载机制会优先加载类路径(classpath)中最先找到的类。因此,如果你在自己的项目中定义了一个与第三方JAR包…

天地图开发实战:Vue结合OpenLayers实现动态点位地图

在Web开发中,地图功能是一个常见的需求,尤其是在需要展示地理位置信息的应用程序中。OpenLayers(简称OL)是一个强大的JavaScript库,用于创建交互式地图。本文将介绍如何利用OpenLayers和天地图API,实现一个…

南卡、漫步者和Oladance开放式耳机哪个强!无广甄选测评!

在当前市场上,因为许多质量不行,音质平平的开放式耳机让消费者的选择陷入了困难。这些品质低下的产品既无法提供优秀的音频享受,长期佩戴还可能对使用者的听力健康造成健康问题。 作为一名经验丰富的音频设备评测专家,我建议在选…

音频提取格式转换,一招教你轻松搞定!

在数字化音频的时代,我们经常面临着需要提取音频片段或将音频文件转换为不同格式的任务。无论是创作音乐、编辑声音效果,还是适应不同设备或平台的需求,音频提取格式转换都是音频处理中不可或缺的一环。在本文中,我们将分享一招教…

【HarmonyOS】遇见的问题汇总

一、当前编辑的页面,预览打不开 1、问题说明 当前编辑的页面,预览打不开,日志提示如下: Route information is not configured for the current page. To avoid possible redirection issues, configure route information for…

VScode ssh远程连接代码开发XHR failed

一、问题描述 在vscode下载插件Remote-SSH远程连接进行代码开发时,提示 XHR failed 无法建立连接。 二、解决方案 1. 离线下载vscode-server 第一步:vscode菜单栏----帮助----关于----提交后面的一串数字字母即为vscode的 commit_id 第二步&#xff…

群辉其它方案远程访问(ZeroTier篇)

目录 1、注册ZeroTier 2、创建网络 3、下载安装客户端 (1)Windows (2)移动端 i.Android i.iOS (a)注册新ID (b)登陆苹果应用商店 iii.群辉NAS 4、客户端加入网络 (a)Windows (b)Android (c)群辉NAS 5、使用 群辉的远程访问,最标准的做法就是使用…

31、shell循环

一、循环 循环:循环是一种重复执行一段代码的结构。只要满足循环的条件,会一直执行这个代码。 循环条件:在一定范围之内,按照指定的次数来执行循环。 循环体:在指定的次数内,执行的命令序列。只要条件满…

建筑垃圾/城市固废倾倒转移乱象:青犀AI智能视频监控方案助力城市环保监管

近日有新闻记者报道,中央生态环境保护督察组在上海、浙江、江西、湖北、湖南、重庆、云南7省市督察发现,一些地方建筑垃圾处置工作存在明显短板,乱堆乱倒问题时有发生,比如,江西湘东区在杨家田地块违规设置弃土场&…

看完“土猪拱白菜“的张锡峰,我明白计算机有多难了

计算机有多难? 今天无意中,看到一篇关于「"土猪拱白菜"学霸后悔报考浙大计算机」的文章。 或许会有不少和我刚开始一样懵圈的同学:张锡峰是谁?"土猪拱白菜"又是什么梗? 带着疑惑,我打开…

项目实战--文档搜索引擎

在我们的学习过程中,会阅读很多的文档,例如jdk的API文档,但是在这样的大型文档中,如果没有搜索功能,我们是很难找到我们想查阅的内容的,于是我们可以实现一个搜索引擎来帮助我们阅读文档。 1. 实现思路 1…

《C++程序设计》银行管理系统

莫思身外无穷事 且尽生前有限杯 我们先来看一下项目需求: 【场景】 在日常生活中,我们普遍接触到窗口服务系统,如到银行柜台办理业务、景区现场购买门票等。当需要办理业务的顾客数超过窗口数量时,我们需遵循排队等待原则。 【需…

不想搭集群,直接用spark

为了完成布置的作业,需要用到spark的本地模式,根本用不到集群,就不想搭建虚拟机,hadoop集群啥的,很繁琐,最后写作业还用不到集群(感觉搭建集群对于我完成作业来说没有什么意义)&…

Eclipse创建Spring项目

第一步&#xff1a;先用Eclipse创建一个tomcat项目 打开eclipse 配置tomcat 这里点击add去添加tomcat 创建项目 写好项目名字&#xff0c;点击next 将这个Deploy path修改一下 配置一下项目&#xff0c;将项目部署到tomcat上面去 写个html测试一下 <html><h1>Hel…