Docs Vault

在 AI 时代,大家都在讨论 AI 对开发者的影响,并寻求在 AI 时代仍然具有职业竞争力。作为一门 Go 项目开发课程,很难不去思考和介绍这部分内容。


因为目前离 AI 终态还有很长一段距离,所以其中的一些观点仅仅是基于个人粗浅认知的阶段性思考及脑暴文章,更不是结论或答案。这篇文章旨在抛砖引玉,期待更多关于程序员未来职业发展的讨论。


本篇文章(非课程,因为观点有待论证)会包括以下 2 大部分:

  1. AI 时代的职业竞争力:会从宏观上分享下,基于有限能力水平思考下对 AI 时代程序员职业竞争力提升的一些思考;
  2. AI 时代的 Go 语言:同样基于个人有限的水平和认知,分享下 AI 时代下 Go 语言的竞争力。


AI 时代程序员竞争力思考


本小节分享下我对程序员开发模式及职业竞争力提升的一些思考,这些思考有待论证,仅仅作为个人一家之言,供参考。


AI 发展的 2 个阶段


脱离现状讨论终态并不明智。比较好的方式是基于现状层层进阶,最终平滑进阶到最终状态。这样既满足了现状,又能够无缝进阶,满足未来的发展需求。

为了能够基于阶段特性讨论开发模式和职业竞争力,我从开发模式及职业竞争力角度,将 AI 分为以下 2 个阶段:

  1. 弱人工智能阶段(ANI):当前所处的阶段,AI 能够辅助程序员进行编程,以提高编程效率,但还不能影响程序员的开发模式及职业发展模式。处在 ANI 时间的长度取决于 AI 能力的发展,也许 3 年?5 年?甚至更久;
  2. 通用人工智能阶段(AGI):终态阶段,这个阶段 AI 已经从根本上影响了程序员的开发模式及职业发展模式。


随着 AI 的发展,AI 可能会进入到 ASI 阶段,在 ASI 阶段,AI 的能力已经远超人类,那时候可能会存在 AI 程序员,跟人已经没太多关系了,所以这个阶段就没必要再去谈论程序员的职业发展了。开发模式及职业竞争力的提升,需要考虑不同的岗位、方向及职业发展方向,所以本文讨论的开发模式及职业竞争力提升,仅列出了我目之所及,且认为比较重要的点。


从职业发展上来看,跨过 ANI 阶段,直接准备 AGI 阶段,会让未来毁掉现在。所以,最好的方式是,既能够通过学习、成长,在 ANI 时代保持职业竞争力,又能够在 AGI 阶段保持职业竞争力。并且在 ANI 阶段的技能能够以复用方式,继续在终态阶段发挥价值,提升职业竞争力。


ANI 阶段程序员的开发模式及职业竞争力提升


为了能够更好的说明所讨论的问题,我将软件开发中程序员涉及到的功能划分为以下 3 层:

  1. 业务层:产品是业务层的 Owner,但一个优秀的程序员,在实现产品功能之前,应该透彻理解产品需求,并基于产品需求,设计技术方案,并实现产品功能;
  2. 应用层:绝大部分程序员的日常工作处在这一层,通过掌握的编程技术实现业务层的产品功能。这一层通常也被很多开发者戏称为 CURD 层;
  3. 基础架构层:负责应用层中各类业务应用的部署、运维等全生命周期管理,例如:Kubernetes、Promethous、ELK、网关、负载均衡等。相比应用层,基础架构层在技术难度和专业深度上要更高,伴随着更高的技术门,更低的可替代性(在我看来,这一层属于高级 CURD )。


每一层,又包含以下 2 类角色:

  1. 设计者:其实就是架构师,在应用层中架构师也叫应用架构师,负责应用层的架构设计,架构设计受到应用功能的影响较大;
  2. 实现者:其实就是开发者,负责根据架构师的设计,完成所设计的功能。


当前正处在 ANI 阶段,开发模式跟现在的开发模式没有什么本质区别,大部分情况下是:自己设计、自己开发。少数情况下,技术 Leader 或技术 Owner 会负责设计,由其他开发者按照设计,落地功能。


随着 ANI 阶段的发展和成熟,程序员的角色会逐渐上移,越来越多的关注设计而非实现。但因为 ANI 阶段,AI 还不能代替开发者完成功能开发,所以,这个阶段,开发者仍然需要亲力亲为其编写代码实现功能,AI 仅仅作为一种非常好的提效工具。


因为在 ANI 阶段,开发者的角色其实有 2 个:设计者和实现者。所以,想提高职业竞争力,就需要扮演好这 2 个角色:

  1. 成为优秀的实现者:开发工程师,首先要成为一个优秀的实现者。毫无疑问一个对实现有很深理解的设计者,可以设计出更好、更结合实际的实现;
  2. 成为优秀的设计者:优秀实现者再往上进阶就是要成为一个优秀的设计者。能够从更上层视角去考虑如何设计和实现一个功能。


在 ANI 时代 Go 开发工程师保持职业竞争力的方式便是成为成为一个优秀的 Go 开发者和优秀的软件架构师。能力层级越深(业务层 -> 应用层 -> 基础架构层),难度越大,越不容易被替代,竞争力就越大。


如何成为一个优秀的 Go 开发者以及如何成为一个优秀的架构师,进阶方式很多,不再本篇的讨论之内。如果大家感兴趣,可以关注我的公众号【令飞编程】,会在未来分享这些内容。


AGI 阶段程序员如何保持职业竞争力?


在 AGI 时代,整个技术领域的能力需求保持不变,但是对开发者(人)的能力要求会上移。开发者的设计能力从能力要求、竞争力及工作内容上占比会越来越大,甚至达到 90%,乃至 100%。倒不是因为在 AGI 时代不需要实现者,而是在 AGI 时代,实现者已经由人替换为了 AI。实现越简单的工作,被 AI 替代的越彻底。


在 AGI 时代,开发者的开发模式,越来越多的在扮演设计者的角色,但是这个设计者不仅仅是软件架构师,还包括了代码架构师。为什么会出现代码架构师?开发者将具体的编码任务交给 AI 去实现,AI 作为一线的搬砖工,其实现能力很强,但是设计能力偏弱。所以,开发者虽然将编码任务交给了 AI,但是代码架构设计、缓存的实现方案等偏设计的内容,仍然需要由开发者去把控。并且开发者作为 AI 实现者的 Review,要具备能力去辨别 AI 设计的代码是否是最优、是否由漏洞等。


所以,在 AGI 时代,开发者保持职业竞争力的方式是成为一名优秀的架构师以及代码架构师,并且具备很强的 Review AI 实现的能力。


如何学习进阶,以在当前及 AGI 时代保持职业竞争力?


先来介绍下,什么叫保持职业竞争力。所谓的职业竞争力,包含以下 2 个含义:

  1. 同类竞争:比其他开发者能力更强;
  2. 非同类竞争:比其他开发者有更好的选择,例如选择跟 AI 关系比较紧密的工作岗位(例如:算法工程师、LLMOPS、MLOPS 工程师等);


先来看下同类竞争。既然是竞争,那就是说一定要比别人做的更好,而不是跟别人做的一样。在 AGI 时代,对开发者的能力要求包括:软件架构师、代码架构师,并具备很强的对 AI 实现的纠错能力。在前文介绍过,一个优秀的实现者,更可能成为一个优秀的架构师。相较于实现能力不强的开发者来说,由基层晋升而来的架构师优势往往会更大。另外一个优秀的实现者,也具备更强的 AI 实现纠错能力。


再来看下非同类竞争。非同类竞争,其实就是做一个好的选择。在当前时代,各行各业,每个行业都有很多好的选择。对于开发者来说,除了选择一个好的业务之外,在技术上的选择的方向应该是越来越下沉(应用层 -> 基础架构层),因为越上层的东西,越简单,被取代的可能性更大。


所以,在 AGI 时代保持职业竞争力的方法在我看来也许是下面这种方法:

  1. 在 ANI(当前):努力成为一名优秀的实现者(Go 开发者),然后再进阶为一名优秀的架构师。这一阶段也是为下一阶段打地基;
  2. 在 AGI 时代:努力成为一名优秀的设计者(软件架构师及代码架构师)。虽然开发者不用去具体实现某个功能,但开发者应该具备很强的实现能力。如果在 ANI 时代打好了基础,在 AGI 时代,自然就具备了这些能力。


成为优秀的实现者、优秀的设计者,其实方式有很多,目前比较通用的方式是通过学习或工作来获得能力提升。不管是通过学习,还是通过工作,要想获得能力的大幅提升,最好的方式是成为一名学习苦行僧。所谓的学习苦行僧,其实就是学习的知识深度更深、广度更广,但也意味着要付出更多的时间和精力。因为简单的东西大家都会,大家都会的东西,就谈不上竞争力。所以,想要在竞争中获胜,就需要付出更多的努力。


在 AGI 时代,不仅要同人竞争,还要同 AI 竞争;不仅要具备实现者的能力,更要成为一名优秀的设计者。所以,在 AGI 时代,对开发者的能力要求会更高。


职业竞争力思考总结


在 AI 时代,很多人认为,包括我个人也认为程序员的能力应该上移,应该越来越向优秀的架构师、设计者靠拢,并且需要具备跨领域的能力。


也有很多技术博主建议程序员转型寻找一个好的行业、产品等。但在我看来,程序员放弃当前追求未来存在很大的不确定性。


所以,个人更倾向于立足现在探索未来,把当前的技术深度和广度夯实,争取成为在同类职业中竞争胜出的那波人。在这个前提下,探索其他可能性,一个好的产品即使在现在也是应该优先选择的方向,问题是这个产品方向并不好选。



AI 时代下的 Go 语言


在 AI 时代,如何提升职业竞争力是每位 Go 开发工程师关注的核心问题。本节将详细探讨 Go 开发工程师在 AI 时代的定位,以及如何通过不断学习和实践,持续保持职场竞争力。


AI 时代的技术栈分层


先来看下 AI 时代的技术栈分层,通过技术栈分层来看下 Go 语言的位置,以及未来 Go 工程师该如何在对应的位置上发光发热。AI 时代技术架构如图 15-3 所示。

图 15-3 AI 时代的技术栈分层

根据依赖层级,AI 时代的技术栈分为以下几层:

  1. AI 应用层:AI 应用层是离用户最近的一层,专注于构建面向具体场景的智能应用,直接将模型能力应用于解决终端需求。例如:对话式 AI 应用、搜索与推荐系统、垂直行业应用;
  2. AI 模型层:AI 模型层是提供各种功能性模型的实现层,专注于训练、优化和提供特定任务的 AI 模型,支持 AI 应用层实现特定功能。AI 模型层包含了众多种类的模型,例如:大型语言模型(LLM)、计算机视觉模型(CV 模型)、多模态模型、生成式模型等。当前,大型语言模型凭借在诸多领域的广泛应用和无监督预训练的强大能力,成为 AI 模型层最受关注的方向,推动从对话式 AI 到内容生成的各种创新;
  3. LLMOPS:LLMOPS 层是专门为管理和优化 LLM 服务的基础设施和工具链,解决 LLM 在训练、微调、部署、推理以及生产化过程中的复杂性需求;
  4. MLOPS:MLOPS(Machine Learning Operations)层是通用的机器学习运维层,提供针对 AI 工作流的开发、训练、版本化、部署、监控以及持续优化的一整套解决方案;
  5. IaaS:IaaS(Infrastructure as a Service)层是 AI 技术栈的底层物理与虚拟化计算资源支持,主要提供硬件、存储和网络服务,确保 AI 系统的运算需求;
  6. 应用生命后期管理:覆盖应用的全流程管理,从应用的初始开发到测试、部署、监控及运维,用于保障应用的稳定、高效运行,例如 DevOps、监控告警、日志等。


AI 时代的 Go 语言


在 AI 时代,Go 语言凭借其高性能、易用性和对并发友好的特性,仍然在多个层级中占据重要地位,并展现出强劲的发展潜力。


(1)应用层:Go 语言逐步成为首选语言之一


在 AI 应用层,Go 语言正被越来越多的公司广泛采用,成为构建智能应用和后端服务的首选语言之一。字节跳动、腾讯等国内一线互联网企业,在其内部大量业务中都使用 Go 语言,尤其是在高并发、高性能的需求场景中表现突出。随着 AI 应用层解决方案逐步复杂化,Go 语言的快速开发、轻量化、高效并发特性使其在应用层的使用越来越广泛,未来发展前景非常乐观。


(2)AI 模型层:Python 和 C++占主导,Go 语言发展有限


AI 模型层目前主要由 Python 和 C++主导。这一层对高性能数值计算、神经网络建模与训练有较高需求,Python 凭借强大的生态支持(如 TensorFlow 和 PyTorch)成为主流选择,而 C++则因其在高性能计算领域的优势备受青睐。因此,当前 Go 语言在这一层的发展空间相对有限。然而,随着生态的逐步完善,未来在某些特定场景(如轻量化推理服务)中,Go 语言也有可能逐步找到发挥其优势的机会。


(3)LLMOPS 层:多样化可选语言,Go 语言具备一定发展空间


在 LLMOPS 层,由于涉及 LLM 的管理和优化,不同团队会根据现有技术栈选择最适合的语言,其中包括 Java、Python 和 Go。Go 语言凭借其高效、简洁、稳定的特性,在这层中仍然具备一定的发展潜力。其具体使用情况则取决于开发团队对技术栈的需求。


(4)MLOPS 层:Go 语言占据主流地位


MLOPS 层的很多能力依赖 Kubernetes,例如:GPU 调度、设备插件、模型训练、模型推理等。考虑到接入 Kubernetes 生态的成本,这些 MLOPS 组件大都使用 Go 语言开发,这使得 Go 语言在 MLOPS 层占据了核心位置。


(5)IaaS 层:Go 语言处于核心位置


IaaS 层当前最主流或者标准的资源提供形态是容器,并借助 Kubernetes 的容器编排能力提供弹性可扩展的计算资源。容器技术和 Kubernetes 的开发语言都是 Go,自然在 IaaS 层,Go 语言可以说是绝对的主流语言,占据核心位置,发展空间十分广阔。


(6)应用生命周期管理层:Go 语言是重要开发语言之一


在应用生命周期管理层,Go 语言同样具有重要地位。该层主要负责从应用的开发到测试、部署、监控、运维的全流程管理,涉及 DevOps 工具链、监控告警系统、日志管理等。Go 语言凭借其高效并发性能、简洁的语法以及对云原生生态的良好支持,在这一层被广泛应用。例如,许多 DevOps 工具(如 Terraform、Helm)、监控系统(如 Prometheus)和日志管理工具(如 Loki)均采用 Go 开发。


AI 时代对 Go 开发者的能力要求


在 AI 时代,对 Go 语言开发者的能力要求反而更高,CURD 工程师可能会逐渐被 AI 替代。那些具备很高 Go 开发能力的开发者并不会被轻易取代。相反,这些 Go 开发工程师只要选对技术栈,从事跟 AI 相关的工作,还能享受到 AI 带来的时代红利。


在 AI 时代,Go 语言开发者,越来越多的扮演架构师的角色,通过优秀的架构能力,设计出优秀的软件架构、代码架构,并引导 AI 完成代码的开发。开发者不仅要设计软件和代码架构,还要学会引导 AI 完成开发者所设想的设计,除此之外,开发者还应该具有很强的代码审查能力,审查 AI 写出的代码是否合理、是否是最优解、是否有漏洞和缺陷等,这就要求开发者还要具备优秀的 Go 编程能力。


Go 开发者如何保持职业竞争力


在 AI 时代,虽然 Go 语言在部分层级(如 AI 模型层)中受限,但 Go 语言在应用层、LLMOPS 层、MLOPS 层、IaaS 层和应用生命周期管理层中都展现出了强大的竞争力。尤其是在以 Kubernetes 和容器为核心的云原生生态中,Go 语言具有不可替代的作用。


因此,Go 开发工程师只需找准位置,并持续不断的去学习提升,也能够充分享受 AI 带来的技术红利。具体建议如下:

  1. 找准定位,明确 Go 语言在 AI 技术栈中的优势领域;
  2. 精通 Kubernetes 与云原生技术;
  3. 掌握 LLMOPS 和 MLOPS;
  4. 成为擅长跨领域合作的复合型开发者。


在 AI 技术栈中,Go 语言在 MLOPS 层和 IaaS 层占据核心地位,同时在应用层和 LLMOPS 层也拥有良好的发展潜力,Go 开发者应精准定位技术方向,并持续学习,沉淀相关技术。


在应用层要学会高效构建一个高质量的 Go 应用。在 MLOPS 层和 IaaS 层要精通 Kubernetes 及 Kubernetes 编程。在 LLMOPS 层,要知道如何设计和开发一个高质量、功能全、可扩展的 LLMOPS 平台。LLMOPS 平台能够很好的满足用户对 LLM 赋能的业务诉求。


在 AI 时代,Go 开发者需要拓展跨领域能力,与数据科学家和机器学习工程师密切合作,以应对复杂 AI 系统的开发需求。这要求开发者要了解或掌握基础的机器学习概念(如模型训练、特征工程、超参数调优),理解分布式系统与 AI 系统的结合,具备复杂系统架构设计能力,并熟悉 AI 工具生态,成为连接数据科学与工程化实现的关键桥梁,从而提升协作效率与自身价值。


在具体学习和实战上,建议重点学习 Kubernetes 相关技术栈,例如 Kubernetes 调度器和 OneX 技术栈。特别是 OneX 技术栈,涵盖了 Go 语言高阶实战、Kubernetes 源码剖析、Kubernetes 编程实战以及 LLMOPS 和 MLOPS 实战项目。通过系统性的学习与实践,Go 开发工程师可以通过 OneX 技术栈全方位提升自己的技术能力,从而增强在 AI 时代的竞争力。


总结(AI 自动生成并人工审核)


本文探讨了 AI 时代对程序员职业竞争力的影响,并重点分析了 Go 开发者在这一背景下的定位与发展路径。


文章首先区分了 AI 的两个阶段:弱人工智能(ANI)和通用人工智能(AGI),指出在 ANI 阶段,开发者需同时具备实现能力与设计能力,而在 AGI 阶段,设计能力将成为核心竞争力,开发者需要从实现者逐步转型为优秀的架构师与代码架构师。


对于 Go 开发者而言,AI 时代的技术栈分层展示了 Go 语言在多个层级中的重要地位,尤其是在云原生生态、MLOPS、LLMOPS 和 IaaS 层中展现出了不可替代的优势。


为了在 AI 时代保持竞争力,Go 开发者需找准定位,精通 Kubernetes 等云原生技术,拓展跨领域合作能力,并通过系统化学习与实践不断提升自身技术水平,从而在技术变革中把握机遇,持续增强职业竞争力。