100% 手写代码的十九年老程序员就要被淘汰吗?

864c0b91fe3aa36097e9e613ce66f211.png

4239a5cfd3141fd10a3d8fdd099a440f.gif

👉导读

近日,推上用户分享的一则事件引发热议。一名拥有 19 年编码经验、会 100% 手写代码的程序员 Alex 在面试中败给一位仅有 4 年经验却善用 Copilot、GPT-4 的新人 Hamid。前者因不愿拒绝使用辅助代码工具,过于追求代码可控,惨遭面试淘汰,而后者轻松拿到了全职 Offer。从这件事情可以看出,AIGC 时代已悄然拉开帷幕,虽有资深编程经验,但无法使用好相应工具的程序员,在职业生涯中会遇到很大的挑战。作为一个从事5年的后台开发,并在工作生活中已经深度应用 GPT 等工具的程序员,分享一下自己的经验和见解。

👉目录

1 AIGC 的发展趋势

2 AIGC 对程序员职业发展有何影响

3 如何在 AIGC 时代不被淘汰甚至更好发展

4 AIGC 能在哪方面便利到程序员

5 如何比别人在使用工具上更进一步

6 总结

e81d20f95ef3e13fefc8ba4af4675c15.png

起初这个老板以为 Hamid 就算熟练使用各种辅助工具,最少也需要花费8-10周,而 Alex 作为资深程序员最多也就比 Hamid 多个一两周即可, 但实际结果却令这个老板大跌眼镜。 

我们看下 Hamid(资深老程序员)的工作:

Hamid 仅用一周就完成了第一个版本, 代码测试覆盖率都达到100%, 95%的工作已经完成。

他在 bubble 中构建了 UI 和前后端工作流, 使用 Copilot(一种代码预测生成工具)集成现有的代码,并使用 GPT4 生成测试用例。

总花费如下:

工具成本

GPT4

Copilot

Cloudflare

Bubble

花费(美元)

211

20

5

124

工资:$2460(41小时);托管运行:$139/月。

对比下 Alex(年轻的工具型程序员) 的工作:

Alex 完成了大约7%的任务, 总费用如下:Vecel(一个网站托管服务) $20;工资:$3500,  全部开发完毕:$45000, 而且还需要增加$11000的测试费用;托管运行成本:$20/月。

可以看出来 Hamid 搞得很快,但因为使用了很多工具,导致运行成本较高, Alex 搞得慢很多,花费也大,但是网站的运行成本低。

针对这种情况, 老板找 Alex 沟通下,看看他的反应,但 Alex 说,他觉得他写出来的应用更易于维护, 因为一切尽在掌握之中。 显然 Alex 没意识到巨大的时间和开发成本差距。

这位老板在差距这么大的对比之下, 决定把很多 Alex 这样的资深程序员,置换成便宜的 Hamid 这样的。

01

AIGC 的发展趋势

生成式人工智能 AIGC(Artificial Intelligence Generated Content) 人工智能发展到新阶段的重要标志,GAN、CLIP、Transformer、Diffusion、预训练模型、多模态技术、生成算法等技术的累积融合,催生了 AIGC 的爆发。

人工智能不是一个新鲜的话题,早在计算器诞生初期, 就有冯诺依曼模型和人脑模型的争论,上世纪80年代,经历过一段人工智能的繁荣,但最终发现是泡沫,没有落地,导致人工智能相关研究陷入很长时间的沉寂。

随着大数据时代到来,算力,数据量有了很大的发展,机器学习等相关研究再次火热起来,出现了 Siri,Cortona 等语音小助手,小爱同学等一大批智能音箱,但应用还十分有限, 交流也非常机械,没有大规模形成生产力。

但近两年,出现了 GPT 为代表的通用 AI 大模型,让人类第一次看到了通用人工智能的曙光。尤其在 GPT-4 问世以来,其超高的智能程度惊艳了世人。虽然国人很难第一时间体验到,但还是很难阻止大家的热情, ChatGPT 也成为了最快用户破亿的应用,足以见其影响力。

这次热潮是一股风会像过去一样沉寂,还是会实实在在的掀起一场革命,还不得而知,但从笔者的使用体验上,这次能够实际落地应用,大幅提高生产效率是板上钉钉的事情了。 

业内提到过 AIGC 将经历三个发展阶段,第一个阶段是『助手阶段』,AIGC 用来辅助人类进行内容生产;第二个阶段是『协作阶段』,AIGC 以虚实并存的虚拟人形态出现,形成人机共生的局面;第三个阶段是『原创阶段』,AIGC 将独立完成内容创作。

未来十年,AIGC 将颠覆现有内容生产模式,可以实现以十分之一的成本,以百倍千倍的生产速度,去生成 AI 原创内容。

02

AIGC 对程序员职业发展有何影响?

很多人看到 AICG 可以通过描述写代码,就觉得程序员要完了,也有人觉得编程只是程序员一小部分工作,而觉得 AICG 注定对程序员影响有限。这些其实都是片面的观点。 

首先明确一点, 程序员这个职业并不会随着 AICG 的出现而消失,在信息时代,还是会源源不断的出现更多的应用,更多的网站,更多颠覆性的设备。

这些都是需要写代码, 有代码就会有程序员。就像纺织工人不会因为工业革命而消失,因为布匹的需求是一直存在的,而且从原来的天然棉布,丝绸,到后来的工业化纤产品。随着工业化的进步,整个纺织业反而迎来了蓬勃发展。

AIGC 的发展并不意味着程序员的价值会减弱。相反,程序员需要在这个过程中不断提升自己的能力,适应新的技术发展趋势。

我们工作的社会不是一种零和的社会,不是说一个人有工作另外一个人一定要失业, 不是说有机器就会造成巨大的失业潮。

实际上,我们的生产力是随着工具不断发展的,好的工具解放了当前生产力,就会有更有价值的事情需要做。在封建时代几乎全是农民,后面出现了很多工人,现在很多自动化工厂出现又解放了很多人到第三产业。

正是游戏这种生产力的不断发展,社会上才涌现出各种各样的岗位,大家不再整天思索吃饱穿暖,有了更高的追求。

但是对于个体来说,因为工业化的效率远远高于手工,所以对手工纺织工人的需求是减少的。但产生了很多需要操作纺织机器,需要懂化学材料的新职业。

所以 AICG 会助力程序员行业发展的新的阶段,甚至引发新一轮的革命, 但对程序员相关的需求并不会消失,反而会更加旺盛。

对于因循守旧, 看不到新趋势程序员来说,确实是一场灾难,程序员行业发展这么多年, 从打孔时代,到汇编,再到高级编程语言,一路发展下来,程序员的门槛越来越低,行业从业者群体也不断扩大。

最大的感受就是程序员行业越来越“卷”了,35岁危机等不断发酵, 就是因为门槛不断降低,便宜学习能力强的年轻人确实对大龄程序员有降维打击之势。

我周围很多年轻程序员已经高度拥抱 AIGC,并且在工作中不断提升利用其能力,提高自己的效率,很令人佩服。

但程序员日常工作并不是简单的写代码,跟刷 leetcode 还是有差距的,要花很多的时间与产品,其他,沟通需求,理解需求,把控进度,设计架构方案等。这些都是 AICG 短时间无法取代的工作。这也是资深程序员的优势。

仅仅写代码的初级程序员就比较危险了, 因为 AIGC 会进一步降低准入的门槛,可能未来有基础编程知识,通过文字描述,就可以生成代码,自然就不需要那么多的人力堆积了。

总的来说,AICG 对程序员这个行业是积极作用的, 但对于程序员个体是福是祸, 就要看程序员本身的职位和工作了。

03

如何在 AICG 时代不被淘汰甚至更好地发展?

我看来,因循守旧才是最大的敌人。套用一个名梗, “拥抱变化“, 程序员就是一批不停自我革命的团体,牛逼的程序员做出来厉害的轮子,淘汰掉另一批程序员, 甚至有可能会自我革命。

很多程序员存在越底层越牛逼的思想包袱, 觉得搞解释型语言的不如编译型语言的, 编译型语言不如搞汇编的,写业务的不如搞底层系统的。

从技术力上来说可能如此,但程序员这个行业也不单单以技术力论英雄,更注重怎么高效的解决问题,再厉害的钻木取火也比不上打火机。

人和动物最大的区别是会使用工具,如何更牛逼的制造工具是一方面,如何更有效的利用工具也是不可或缺的。 

无论什么时候,能高效使用工具的人从来不用担心失业的问题,从线下到拥抱互联网,从淘宝店到短视频带货,各种平台和工具能够熟练使用,才不容易错失良机。

曾经有些人靠刷刷题,报个培训班就可以转行互联网开发,这在风口的时候确实是可行的,也有很多人这么干,但当行业逐渐成熟,谁在裸泳就越来越清晰了。 

所以到底如何在 AICG 的浪潮下有更好的职业发展呢? 

  • 我觉得程序员需要学会如何正确地使用这些 AIGC 工具。虽然这些工具可以生成高质量的代码,但并不是所有情况下都适用。程序员需要根据具体的项目需求,选择合适的工具和方法。此外,程序员还需要具备一定的创新能力,以便在遇到复杂问题时能够找到解决方案。

  • 同时,面对 AIGC 的发展,程序员还需要关注自己的职业发展。随着 AIGC 技术的普及,对于初级程序员的需求可能会逐渐减少。因此,程序员需要提高自己的专业技能,向更高层次的职位发展。这可能包括系统架构师、项目经理、技术顾问等角色。在这些职位上,程序员需要具备更强的沟通能力、团队协作能力和领导能力,以便在复杂的项目中发挥关键作用。

  • 此外,程序员还需要关注 AIGC 技术的伦理和法律问题。随着 AIGC 技术的发展,关于知识产权、版权等问题的讨论也愈发激烈。程序员需要了解这些问题,以便在使用 AIGC 工具时遵守相关法律法规,避免引发纠纷。同时,程序员还需要关注 AIGC 技术可能带来的安全隐患。

相信大家看出来了, 上面的内容是 GPT 生成的,已经将基本的应对策略罗列了,展现出了 AIGC 的强大能力。

很多程序员过于执着可控,底层技术,不喜欢使用现成的工具,觉得可能会踩坑,可能有各种问题,只迷信自己掌握的工具和技术。

这就是一种固步自封,这种是大忌,要勇于尝试新技术,大胆尝试,小心验证,积极关注 AIGC 新动向,灵活掌握如代码生成,智能补全工具等。将工具转化为生产力

04

AIGC 能在哪些方面帮到程序员

随着 AIGC 的发展,已经涌现了一批工具辅助程序员,未来工具不断迭代成熟,未来会有更多提效工具辅助开发,目前看,在以下方面对程序员将有很大帮助。

  • 代码生成与重构

AIGC 可以辅助生成代码,如 Copilot,根据上下文或者提示补全,自动给出代码建议,大大节省开发时间, Copilot 提供了 Vscode 的扩展插件。支持了 Go,Python,Js 等多种语言。

而且 与之前的代码补全工具相比, 它所做的不仅仅是模仿以前见过的代码。它会分析已经写过的代码并生成新的匹配代码,包括之前调用的特定函数。 用它的时间越长, 交互越多, 随着你的编写更多的注释指令,采纳或者拒绝,它就会根据这些经验优化改进,也就是常说的越用越懂。

559bb5a8a8856d3245a81aa1d37c8345.gif

Copilot 可以理解为一种 “结对编程”, 可以更容易发现代码种的错误,加快开发过程,很多人代码水平有限,写的代码耦合性高,扩展性差,可使用工具分析重构,避免写出垃圾代码。

  • 代码检查

可以使用 AIGC 工具,对代码进行复杂度,逻辑 bug 检查,虽然有很多语法检查工具,但更多的是分析语法,逻辑错误难以检查出来,使用工具,可以对如死循环,逻辑漏洞等做编译前检查。

如 codiga, 可以实时检测代码错误并反馈, 有助于开发者快速识别和解决代码错误,如下图, 可以直接提示不要使用 format 的方式执行 sql,容易产生 sql 注入漏洞。 

b209e5d93c5af379a0c1369b391c8baf.png

  • 单测编写

很多人提到单元测试就是真香,但是业务压力大,很多时候不得不压缩单元测试的时间,又因为 roi 不高,很多时候甚至被直接放弃。

而 AICG 时代的到来,可以将针对特定业务代码或者基础代码编写的时间大幅减少,进一步可以辅助单元测试用例生成,从而让核心项目快速覆盖单元测试变得极其简单。

比如 Refraction AI, 使用 OpenAI 辅助代码查生成, 不仅可以用于单元测试便携,还可以重构代码。只需要在工具生成的代码上做些微调就可以使用。 未来这些需要消耗大量人力的工作可以完全交给 AI。

83370e11b3110c1bccd59b28963556ad.png

  • 脚本工具

程序员难免会进行一些批处理脚本的编写,但如果对脚本语言不熟悉,需要边查边写,不仅效率低下,还容易出错。

有了 AI 工具,我们可以使用描述式的语言快速生成脚本。之前我们可能需要学习 python,awk, sed 等各种工具, 每一个工具都很强大, 但是要自己用的好需要阅读大量的文档, 反复的调试。

用 AI 工具, 可以用“写一个处理 txt 文本的 awk 命令, 将文本的第三列删除”即可生成可用的代码,甚至还给解释了实现的原理:

35c3fa19f2e09c94a3125a46935164f7.png

不再需要阅读繁杂的文档, 简洁高效。

  • 文档整理

有个梗是程序员都最讨厌自己写文档和别人不写文档,我们可以使用 AI 工具分析项目代码,快速生成文档和代码注释。

针对别人写的老项目代码,注释和文档不全,可以让 AI 工具进行分析,分解,并加上关键注释,再也不用担心接手屎山代码了。

另外可以使用工具分析文档内容,比如 ChatPDF 工具 ,上传 PDF 文件后,可以对它提问任何关于这份 PDF 的问题,非常适合快速提取各种 paper 论文的摘要,也支持中文输出。很适合程序员学习一些代码文档。

9ebb0b78e9a83d342dc0b0dcff74285f.png

  • 资料检索与问题查询

之前我们遇到了技术问题,更多的是借助浏览器检索如 google, github,stack overflow 等网站, AIGC 时代给我们提供了一个新的选择, 这里首推Chatgpt,如下是 chatgpt 的页面,它是一个基于 GPT 技术的智能聊天机器人,我们可以直接问用我们看到的现象使用自然语言去问问题,而不是需要加工一下。

ChatGPT 可以回答各种问题,用户可以直接在网站上输入问题或话题,并获得快速和准确的答案。需要注意的是,ChatGPT它的回答并不能保证是 100% 准确。此外,ChatGPT 模型训练的数据截止到 2021 年,所以一些最新的数据是无法获取的。 但对于解决大部分问题来说已经足够了。 

427154faea10c641e05926b19e54f4fb.png

05

如何比别人在使用工具上更进一步?

说实话,对于大部分程序员来说,未来应该都会使用 AIGC 工具提升自己的开发效率。如何比大多数人更了解?掌握的更熟练,就在未来的职场更有竞争力。

能用好一个轮子,灵活使用,既能避坑也能发挥优势就已经超过大部分人。

要做到这一点,除了基础的使用以外,必须对底层原理有所了解,很多人说会用就行,但没有对底层方法理解的会用很容易踩坑。

想起来高中的时候做数学题,有些人一知半解的套公式,也能拿一些分,但不理解原理很难举一反三,题型稍微变化,就完全不懂了。

所以我们要想成为使用专家,也要积极的补课,学习其原理特性,学习其相关论文资料,系统性的学习,逐渐成为很专业的工具使用人,可以分析解决各种疑难杂症。

另外 aigc 为从事全生命周期开发提供了可能,之前随着应用复杂度的提升,互联网的岗位将工作划分的越来越细,产品,设计,前端,后台,客户端,测试,采用流水线的方式,每个人都负责一小块。

这种方式中间的沟通产生了大量的内耗,借助 AIGC 工具,可以真正做到全栈开发,我们从提出想法,到生成设稿,辅助生成前后台代码,代码检查与测试,可以显著提高效率。

有点像特斯拉虽然也是流水线生产,但使用更多的一体化成型工艺以后,还是大幅压缩了成本。

所以未来程序员可以向着全栈的思路发展,借助工具对项目完整把握,拒绝内耗,这是非常强的竞争力。

06

总结

回到最初的事件上,一个资深程序员和一个灵活使用 AIGC 工具的初级程序员,资深程序员反遭淘汰也就不足为奇了。

这其实是一个程序员界很好的案例,不仅局限于这次 AIGC 大潮,任何一次技术革命,如果不能积极的掌握新的能力和工具,都注定要被淘汰。

我们回顾了 AIGC 的发展历程,分析了对程序员行业的影响也具体讲如何做才能在这次大潮下更好的发展。

技术这么多年一直在飞速发展,就像历史的车轮不会停下,永远保持一颗学习的心态,大胆尝试,小心应用,这样每次技术迭代对你就是机会,而不是灾难了。如果这篇文章对你有帮助,欢迎转发分享。

-End-

原创作者|董辰辰

25b573678385f74303dae74aaa9071d4.png

958463509fdee3a664f7c1272010d23c.png

cf001128028e720585353925b02fd687.png

3abc97d3165ea8a88fb9d0e5e6c4ffdb.png

关注并星标腾讯云开发者

第一时间看鹅厂技术

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 事务

Redis 事务 事务是指一个完整的动作,要么全部执行,要么什么也没有做。 Redis 事务不是严格意义上的事务,只是用于帮助用户在一个步骤中执行多个命令。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性…

一生一芯1——windows与Ubuntu双系统安装

UltraISO下载 下载链接:https://pan.baidu.com/s/18ukDs6yL64qU6thYyZEo-Q?pwdo8he 提取码:o8he 一路傻瓜安装,安装后点击继续试用 Ubuntu系统下载 这里我使用的是官网的22.04版本,由于大于4G,无法上传至百度网盘…

操作指南 | 如何使用Chainlink喂价功能获取价格数据

Chainlink的去中心化预言机网络中的智能合约包含由运行商为其他智能合约(DApps)使用或截取所持续更新的实施价格数据。其中有两个主要架构:喂价和基础要求模型。此教程将会展现如何在Moonbeam、Moonriver或是Moonbase Alpha测试网上使用喂价功…

自动拆箱与装箱

自动拆箱与装箱 先进行专栏介绍自动拆箱与装箱是Java语言中一个重要的特性,它们在编程过程中起着至关重要的作用。本文将深入探讨自动拆箱与装箱的原理和相关细节。概念基本概念分析 原理自动拆箱的原理自动装箱的原理总结 注意事项代码示例 先进行专栏介绍 本专栏…

Synchronized同步锁的优化方法 待完工

Synchronized 和后来出的这个lock锁的区别 在并发编程中,多个线程访问同一个共享资源时,我们必须考虑如何维护数据的原子性。在 JDK1.5 之前,Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁…

奥威BI系统:零编程建模、开发报表,提升决策速度

奥威BI是一款非常实用的、易用、高效的商业智能工具,可以帮助企业快速获取数据、分析数据、展示数据。值得特别注意的一点是奥威BI系统支持零编程建模、开发报表,是一款人人都能用的大数据分析系统,有助于全面提升企业的数据分析挖掘效率&…

java+springboot+mysql日程管理系统

项目介绍: 使用javaspringbootmysql开发的日程管理系统,系统包含超级管理员、管理员、用户角色,功能如下: 超级管理员:管理员管理;用户管理;反馈管理;系统公告;个人信息…

SpringCloud实用篇2——Nacos配置管理 Feign远程调用 Gateway服务网关

目录 1 Nacos配置管理1.1 统一配置管理1.1.1 在nacos中添加配置文件1.1.2 从微服务拉取配置 1.2 配置热更新1.2.1 方式一1.2.2 方式二(推荐) 1.3.配置共享 2 搭建Nacos集群2.1 集群结构图2.2 搭建集群2.2.1 初始化数据库2.2.2 下载nacos2.2.3 配置Nacos2…

UDS服务基础篇之31

UDS服务基础篇之31服务 前言 正如前文《UDS基础之2F服务》所说的2F服务与今天本文要将的31服务存在着有些相似之处,因此需要针对31服务本身进行较为细致的剖析,在此小T抛出如下几个基本问题供大家思考: 你知道31服务是干什么的吗&#xff…

vue 在方法里用字符串赋值图片路径获取不到,提示找不到图片

原因 直接通过字符串赋值命名路径是不会生效的,如 this.file1"../assets/addmodel/TAR.png" 因为在Vue模板中直接使用字符串赋值的方式不会被解析为正确的资源路径。 你可以使用动态绑定(v-bind 或简写为 :)来设置图片的路径。…

Redis性能瓶颈揭秘:如何优化大key问题?

1. 什么是Redis大key问题 Redis大key问题指的是某个key对应的value值所占的内存空间比较大,导致Redis的性能下降、内存不足、数据不均衡以及主从同步延迟等问题。 到底多大的数据量才算是大key? 没有固定的判别标准,通常认为字符串类型的k…

在WebStorm中通过live-server插件搭建Ajax运行环境

1.下载node.js 官网: https://nodejs.cn/download/ 2.配置Node.js的HTTPS 使用淘宝的镜像: npm config set registry https://registry.npm.taobao.org 也可以使用cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 配置之后可以验证是否成…

SAP SD 交货单发货过账缺料提醒 改成 弹窗框清单提醒增强

场景:零件库下销售订单100来个行项目,产生的交货单也是100多个行项目,但因为库存做不准,不及时,以及本来就缺料,在交货单发货过账时会提醒,见下图 但是每次只提醒一个,零件库实际业务…

HCIP-linux知识

linux安装教程参考,https://blog.51cto.com/cloudcs/5245337 yum源配置 本地yum源配置: 8版本配置:将光盘iso挂载到某个目录,/dev/cdrom是/dev/sr0软链接,# mount /dev/cdrom /mnt,# ls /mnt AppStream B…

webpack基础知识十:与webpack类似的工具还有哪些?区别?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割,组织和打包应用。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体(bundle) 在前端领域中,并非只有webpack这一款…

K8S系列文章之 Kind 部署K8S的 服务发布

安装kind 下载 https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令: mv kind-linux-amd64 /usr/local/bin/kind chmod 777 /usr/local/bin/kind 之前需要先在本地主机安装好docker yum -y install yum-utils d…

微服务 云原生:基于 Gogs + Drone 进行项目 CI/CD

传统构建部署 以一个简单的前后端项目来说,分别编写前后端的 Dockerfile 文件并构建镜像,然后编写 docker-compose.yml 构建部署,启动运行。 一个简单的例子: 前端: 项目名:kubemanagement-web技术栈&am…

调整vscode

调整vscode 连wifi linux连接wifi

Git从远程仓库中删除文件,并上传新文件

目录 删除: 拉取远程分支的更新: ​编辑 首先查看git状态: ​编辑 删除文件并提交版本库: 提交: 上传新文件: 首先查看git状态: 提交到暂存区: 提交到版本库: 上…

HCL MPLS L2VPN BGP lsp

目录 1 拓扑 2 配置步骤 2.1 配置接口IP 和路由协议 2.2 配置MPLS LDP 2.3 配置L2VPN PW(BGP) 2.4 验证L2VPN 使用EVE-NG 中 的H3C 镜像,配置bgp 后,OSPF 会失效,可能镜像有问题,使用HCL没有问题。 1 拓扑 2 配置步骤 2.1…
最新文章