您现在的位置是:首页 > 正文

AI 时代,程序员无需焦虑

2024-02-29 16:22:24阅读 0

 

ChatGPT 横空出世后,“AI 即将取代程序员” 的观点一度引发热议,至今尚未完全冷却。作为一名服务端开发工程师,同时也是 ChatGPT 的“忠实”用户,经过将近一年的使用,今天抽空写一篇文章,谈谈自己对“AI 时代,程序员何去何从?”这一问题的看法。

一、前言

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

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

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

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

目前,一些有条件的人已经开始借助 AI 来学习技术、编写代码和辅助解决问题等。AI 技术极大地缩短了掌握知识的路径,一些原本需要读很多书、看很多专栏才能搞懂的知识点,让 AI 工具给你举例子,并用通俗易懂的语言来解释,就可以快速地掌握。一些看似并不复杂的代码,如果你自己去写可能要写半小时, AI 则可能只需一两分钟就能产出,而且质量往往更高。有了 AI 的加持,那些编程经验并不丰富的初级工程师,也可以 “写出” 相对优秀的代码。

AI 给很多行业带来无限可能,在部分场景下,AI 可以大幅提高开发效率。在不久的将来,AI 有望取代一些低水平(比如仅会 CRUD)的程序员 。不过,就笔者使用 ChatGPT 辅助编程的经验来看,AI 目前生成代码的水平,要全面取代程序员还有很长的一段路要走。

三、服务端开发尚难被 AI 取代

大型软件系统,本身往往具有较高的复杂度。我们可以简单地将复杂度分为两个维度:业务与技术。高业务复杂度的系统,必须进行科学、有效的需求分析与领域建模,方可在满足当前功能性需求的同时获得可持续演进的应用架构;高技术复杂度的分布式系统,则需要充分考虑诸如高并发、高可用、高性能、数据一致性等非功能性问题,才能在设计权衡中寻求技术架构最优解。纵观全球,AI 的水平尚无法应对上述两种复杂度。

此外,大模型虽然具备生成代码、解释代码甚至优化代码的能力,但是还多停留在 “函数/方法” 维度,不能很好地生成类维度、模块维度、项目维度的代码。同时,生成的代码仍然需要人工审阅、优化、部署、验证。对于复杂的任务,还需要人工拆解为大模型能够 “理解” 的粒度。

再者,即便不考虑数据安全、自研模型成本等因素,单就服务端研发流程来看。编码只是整个软件生命周期的一环 ,软件开发还包括需求分析、抽象建模、系统设计、数据设计、非功能性设计、测试、运维等环节。很多时候,编写代码作为解决问题的最终手段,并不困难,而困难在于对问题的识别、理解、定义和抽象,这些都依赖人工反复推演。当一个问题被明确并拆解到软件项目维度的时候,面对确定的任务、清晰的目标、合理的架构,可以解决问题的人就非常多了,AI 自然也才有用武之地。

四、服务端开发何去何从?

AI 时代必将对人类社会的生产、生活带来深刻的变革。虽然目前大模型还存在很多缺点,如幻觉、推理能力弱等问题,但是,其潜力不可小觑。某种意义上,正是因为大模型还不完美,我们才没那么容易被淘汰。

AI 时代,简单、重复的任务被 AI 取代是不可避免的。新的时代,我们需要重新审视核心竞争力的内涵, 持续学习,不断夯实自身的能力护城河。只有技术积累有足够的深度,才能提高对 AI 生成信息的辨识能力,才能在享受 AI 带来便利的同时,控制、降低其负面影响。

以服务端开发岗位为例,领域知识是最基础却又最重要的能力,但是,只有当领域知识形成体系时,才可以称之为真正的核心竞争力。那么,如何才能使自己的领域知识体系化呢?

想象一下,为什么你对家所在的小区周边特别了解,随便把你放在一个角落,你都能慢慢摸索出来?究其原因,是因为你脑海中已经形成了小区周边的整体大图,并对关键节点了然于胸。如果把你放到陌生的小区,你可能就懵了,关键节点、整体大图都没有,胡乱摸索,即便你把摸索路上所见到的每一个下水道井盖的情况都搞清楚了,也没什么意义,再过几条街你就忘了。

回到上面抛出的问题,高效学习、知识体系化的关键在于:构建宏观层面的整体大图,并深入理解关键知识点。这些关键点就是这个领域的骨架、支点。缺少骨架和支点自然难以体系化,缺了宏观大图则容易误入歧途。

五、业界首部体系化、全景式解读服务端开发的著作

《服务端开发:技术、方法与实用解决方案》一书取材自阿里和蚂蚁集团的精品内训课程,由资深服务端技术专家、技术讲师、阿里第二届技术讲师课程大赛年度冠军得主、CSDN 博客专家撰写。该书理论与实践结合,全景式、体系化地阐述了服务端开发,内容包括以下两个部分。

  • 第一部分:服务端开发的技术和方法

首先介绍服务端开发的职责、技术栈、核心流程和进阶路径;然后从需求分析、抽象建模、系统设计、数据设计和非功能性设计5个方面展开,结合案例深入讲解了服务端开发的实操方法和重难点,为读者呈现服务端开发的全景图,帮助读者快速、体系化地掌握服务端开发的知识和方法。

  • 第二部分:服务端典型问题的解决方案

针对高并发、高性能、高可用、缓存、数据一致性、幂等、秒杀等服务端开发实践中的典型问题,给出了对应的解决方案和开发规范,同时还结合案例深入分析了不同方案的优缺点。此外,还总结了接口设计、日志打印、异常处理、代码编写、代码注释等落地层面的行业案例和规范。

读者对象

  • IT 从业人员:服务端开发工程师、客户端开发工程师、产品经理、测试开发工程师等。

  • 高校学生:计算机、软件、自动化、电气、通信等专业有志于进入 IT 行业的在校学生。

 官网现货服务端开发技术方法与实用解决方案郭进互联网服务端开发教程书籍

网站文章

  • windows10文件服务器,windows10文件服务器

    windows10文件服务器,windows10文件服务器

    windows10文件服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。本文以云...

    2024-02-29 16:21:56
  • Linux常用150个命令

    常用Linux操作做指令

    2024-02-29 16:21:48
  • python的__name__属性详解

    python的__name__属性详解

    有关文件导入: 一个独立的python文件就是一个模块 在导入文件时,文件中 所有没有任何缩进的代码都会被执行一遍 在实际开发中,开发人员通常会在模块下方增加一些测试代码,测试代码是仅在模块内使用,而被导入到其他文件中不需要执行 这里就需要知__name__属性 __name__属性可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行 __name__时python的一个内置...

    2024-02-29 16:21:41
  • 一篇文章让你弄懂二分查找

    一篇文章让你弄懂二分查找

    首先,我们要聊一下什么是二分查找,二分查找只适用于有序表,举个例子,一个元素1-10的数组,我要你找到元素7所在的位置,通过我们人眼观察,你可能一下子就可以找到。此时,我们要找的元素7比mid下标所指...

    2024-02-29 16:21:12
  • 第一章 动态网页基础

    第一章 动态网页基础

    本章简介     通过学习的JavaSE、Web前端等方面的技术,从本章开始,将结合之前所学内容,逐步接触用用的Web系统开发。本章将从动态页面和静态页面的区别说起,介绍Web应用系统的工作原理。大家...

    2024-02-29 16:20:58
  • 朝戈《敏感者》

    朝戈《敏感者》

     朝戈《敏感者》  1986年,朝戈回到他求学四年的母校,这次,他是以一名教师的身份进入中央美术学院的。 20世纪90年代在不知不觉中悄然来临了。美术学院的高墙虽然挡住了市井的喧闹,但激烈的社会变革气息透过墙角的隙缝吹进了校园。这种躁动的情绪影响了朝戈。 中央美术学院教授 朝戈:这个时代

    2024-02-29 16:20:30
  • 深度学习论文分享(八)Learning Event-Driven Video Deblurring and Interpolation

    深度学习论文分享(八)Learning Event-Driven Video Deblurring and Interpolation

    暂无??在此仅做翻译基于事件的传感器在像素强度变化超过触发阈值时具有响应,可以以微秒级精度捕获高速运动。在事件相机的辅助下,我们可以从低帧率的模糊视频中生成高帧率的清晰视频。本文提出了一种有效的基于深...

    2024-02-29 16:20:22
  • java-面向对象中级-习题(设计父类子类一打印学生和老师的基本信息)

    java-面向对象中级-习题(设计父类子类一打印学生和老师的基本信息)

    题目代码Homework13 main classpackage com.hspedu.homework.homework13;public class Homework13 { public ...

    2024-02-29 16:20:15
  • GC Roots

    在Java语言中,GC Roots包括以几类元素: 虚拟机栈中引用的对象I ➢比如:各个线程被调用的方法中使用到的参数、局部变量等。 本地方法栈内JNI (通常说的本地方法)引用的对象 方法区中类静态...

    2024-02-29 16:19:40
  • 用原生js封装运动框架

    … function getCssStyle(obj,styleName){ if(obj.currentStyle){ return obj.currnentStyle[styleName] }else{ return computedStyle(obj,false)[styleName] }function startMov

    2024-02-29 16:19:32