AI时代又如何?程序员无须焦虑

AI 时代又如何?程序员无须焦虑

ChatGPT 横空出世后,“AI 取代程序员”的说法一度盛嚣尘上,至今还未冷却,作为一名 ChatGPT 的“忠实”用户,今天有空,顺便写一篇文章,谈谈自己的看法。

一、前言

2022 年 11 月 30 日,OpenAI 发布了一款名为 ChatGPT(Chat Generative Pre-trained Transformer) 的聊天机器人程序,旋即引爆网络,给全球带来了巨大冲击。紧随其后,各种大语言模型如雨后春笋不断出现。国外如 Google 的 Bard、Anthropic 的 Claude,国内如百度文心一言、阿里通义千问、讯飞星火认知大模型、昆仑万维天工大模型等。

相较于之前的模型,以 ChatGPT 为代表的大语言模型在代码生成、代码解释能力方面有了质的飞跃,很多程序员已经开始使用大语言模型编写代码,因此很多人认为 “程序员将会被 AI 所取代”。

作为首批使用 ChatGPT 编写代码的“尝鲜者”,我认为轻言 AI 会取代程序员过于草率了,在当下,宣扬 AI 取代程序员更多是在“贩卖焦虑”,或者说是“外行们”的狂欢。
AI时代又如何?程序员无须焦虑_第1张图片

二、程序员会被 AI 取代么?

“AI 取代程序员” 并不是什么新鲜的话题,事实上,早在“低代码”概念出现时,人们就已经开始讨论程序员是否会被淘汰的话题了;在 ChatGPT 横空出世后,该话题被人们连夜从地里挖出,重新装扮后,紧急上线,再度推上了热搜。

就笔者使用 ChatGPT 辅助编程的经验来看,AI 目前生成代码的水平,要全面取代程序员还有很长一段路要走。当然,在部分场景下,AI 确实可以提高开发效率,甚至取代一些低水平(比如仅会 CRUD 的程序员)的程序员 。事实上,AI 时代,还有很多比程序员更容易被取代的岗位,在此,笔者就不引战了。

AI时代又如何?程序员无须焦虑_第2张图片

大型软件系统,本身往往具有较高的复杂度。我们可以简单地将复杂度分为两个维度:业务与技术。高业务复杂度的系统,需要考虑有效的需求分析与领域建模,方可获得可持续演进的应用架构;高技术复杂度的分布式系统,则需要考虑诸如高并发、高可用、高性能、数据一致性等质量属性,才能在设计权衡中寻求技术架构最优解。显然,目前的AI 水平还很难应对上述两种复杂度。

除此之外,还有一些因素也会制约 AI 在软件领域的深入应用。

首先,大模型生成代码的能力很有限 。目前,大模型虽然具备生成代码、解释代码甚至优化代码的能力,但是还停留在“函数/方法”维度,尚不能很好地生成类维度、模块维度、项目维度的代码。同时,生成的代码还存在各种问题,如无法运行、使用过时的类库、存在潜在的 BUG 等。生成的代码仍然需要人工优化、部署验证等。复杂的任务,还需要人去拆分成大语言模型能够轻松胜任的粒度。

其次, 数据安全的限制 。很多公司,尤其是头部大厂,通常都将数据安全视为红线,不允许将公司的业务机密泄露给外部大模型,不允许用户将公司代码暴露到外部环境中,因此大模型在大厂的应用受限。通常只用来生成一些简单的类似工具类的代码或者其他没有业务属性的代码。

再次, 自研模型能力限制 。虽然现在很多大厂已经开始自研大模型,但是,目前在数据、GPU 资源、模型能力等方面和国外大模型相比还有较大差距。基于目前的水平,作为辅助研发提效工具尚可,但还很难形成足够的生产力。

最后, 编码只是整个软件生命周期的一环 。软件开发还包括需求分析、抽象建模、系统设计、数据设计、非公性能设计、编码、测试、运维等环节。很多时候,编写代码作为解决问题的最终手段,并不困难,而困难在于对问题的理解、识别、定义和抽象。当一个问题被明确并拆解到软件项目维度的时候,面对确定的任务、清晰的目标、科学的架构,可以解决问题的人就非常多了。

三、程序员进阶之路

3.1 跟上节奏,顺势而为

AI 时代必将对人类社会的生产、生活带来深刻的变革。虽然目前大模型还存在很多缺点,如幻觉、推理能力弱等问题,但是,其潜力不可小觑。某种意义上,正因为大语言模型的不完美,我们才没那么容易被淘汰。如果有一天,只需产品经理设计好需求文档,AI 就可以自动写代码,自动修复问题,自动部署,或许程序员真的就要失业了。当然,如果 AI 强大到如此这般,产出比产品经理更好的需求文档将更加容易,将被替代的也不只是程序员。

目前,部分有条件的人已经开始借助大模型来学习技术、编写代码、寻找思路、辅助解决问题,也有一些业务团队开始用大模型解决业务问题。AI 技术极大地缩短了掌握知识的路径,一些原本需要读很多书、看很多专栏才能搞懂的知识点,让 AI 工具给你举例子,给你用通俗易懂的语言来解释,可以快速、系统地掌握。一些看似并不复杂的代码,如果你自己去写可能要写半小时, AI 则可能只需一两分钟就能产出,而且质量往往更高。很多之前苦思冥想,找不到解决办法的问题, AI 可以快速提供很多候选方案,帮助做出更完善的方案。

有了 AI 的加持,那些编程经验并不丰富的初级工程师,也可以“写出”相对优秀的代码。有了 AI 的加持,一些非英语语言的国家的人,也可以写出地道的英文文章。AI 在这个时代,给很多行业带来无限可能。

在我看来,说“AI 取代程序员”还是狭隘了,某种意义上,“不是 AI 取代程序员,而是使用 AI 的人淘汰不会使用 AI 的人,善用 AI 的人取代不能善用 AI 的人。”

AI时代又如何?程序员无须焦虑_第3张图片

3.2 警惕“舒适”陷阱

凡事皆有利弊,AI 带来方面的同时,也暗藏了“温柔陷阱”。信息时代,手机、电脑、平板等电子设备几乎成了刚需,在生活中,我们极少需要用到纸和笔,因此经常会 “提笔忘字”,这就是所谓的 “用进废退”。

此外,AI 的应用在不经意间构筑了一个“信息茧房”。大型互联网公司基于用户的偏好特征推荐其感兴趣的内容,使得越来越多的人开始沉迷于抖音、快手、头条等“快餐信息洪流”中,无法自拔。

推演到我们的生活、工作中,如果我们不经思考,过度依赖 AI,那么就可能导致我们的思考能力下降,进而成为 AI 的傀儡。不要忘了——人相对于 AI 最大的优势是创造性思维和定义问题的能力。因此,当遇到问题时,建议先思考,再尝试 AI ,基于 AI 的建议,不断完善方案,形成良性循环。

说句题外话,在笔者看来,AI 不应该被来生产文学、美术、音乐等精神文明相关的内容,批量制造下,往往乏味而低级。而应该投入更加有助于提升生产力、改善生活水平、促进社会进步的领域。

3.3 提升辨识能力

坊间常言:“遇事不决,问百度”。随着 AI 的普及,以后将演进为:“遇事不决,问 AI” 。我相信,以百度、谷歌为代表的搜索引擎势必会嵌入 AI,在搜索+推荐的基础上,提供更加灵活、高效、智能的问题解答能力。

不过,当前的大语言模型还存在“毒性” 和 “幻觉”问题。举个例子,大模型生成的答案中可能掺杂虚假信息,生成的代码中可能存在漏洞,倘若我们缺乏专业知识,缺乏辨别意识能力,很容易造成负面影响。

很多人会说:“AI 时代来了,不需要深入学习计算机理论了”,我认为恰恰相反,只有学好计算机相关的理论和技术,才能够提高对 AI 生成信息的辨识能力,才能享受 AI 带来效能提升的同时,控制、降低其负面影响。

3.4 持续学习

AI 时代,简单、重复的任务被 AI 取代是不可避免的。新的时代,我们需要重新审视核心竞争力的内涵, 持续学习,甚至终身学习,不断构筑自身的能力护城河。

在互联网领域,技术和业务相辅相成,技术服务于业务,业务促进技术更迭,两者同行,因此一般将技术知识和业务知识统称为领域知识。

以服务端开发为例,领域知识是最基础却又最重要的能力,但是,只有当领域知识形成体系时,才可以成为真正的核心竞争力。当遇到问题时,如果连相关的知识储备都没有,将很难解决问题;而如果你有相应的知识贮备,则可以将知识迁移到问题场景中,辅以推理寻找解决问题的方法。为了让领域知识和逻辑推理更好地结合,学习知识要系统,专注于某些技术方向的同时,要有意识地向周边拓展。对于服务端开发工程师,除了掌握服务端开发技术栈和相关业务知识,也应了解一些客户端的原理,以及服务端和客户端之间如何联系。

那么,如何才能使自己的领域知识系统化呢?很多时候,领域知识点本身是可以相互联系起来的,但前提是你对这些点都理解透彻。在工作中学习,最常陷入的困境就是学习时间过于碎片化,一个知识点每次碰到花半个小时学习,当时可能觉得掌握了,但三个月后基本就没印象了,总是学到后面就忘了前面的,不得要领。之所以出现这样的情况,一个很重要的原因在于:领域知识宏观层面的整体大图没有形成,关键知识点深度不够,理解不透彻。这些关键点就是这个领域的骨架、支点。缺了骨架自然难以体系化,缺了宏观大图容易误入歧途。

不知道读者是否曾有过这样的体验:在某个领域学习知识特别快,但换个领域就总是不得要领。想象一下,为什么你对家所在的小区周边特别了解?随便把你放在一个角落,你都能慢慢摸索出来,本质上就是你脑中已经对小区周边形成了整体大图,并对关键节点了然于胸。把你放到陌生的小区,你可能就懵逼了,关键节点、整体大图均没有,胡乱摸索,即便你把摸索路上所见到的每一个小餐馆的情况都搞清楚了,也没什么意义,再过几条街你就忘了。

鉴于上面抛出的问题,在学习领域知识的时候,特别是进入一个新领域,首先要理清整体大图和关键知识点,而后循着大图和关键点通过实践进一步强化。

四、总结

不要轻视 AI,也不必过度焦虑,AI 不可怕,更不完美。因为 AI 不可怕,我们可以努力去学习驾驭 AI;因为 AI 不完美,我们没那么容易被淘汰。

你可能感兴趣的:(人工智能,chatgpt,AI,机器学习,后端)