人生理想,技术交流加Q:411239339

AI时代程序员到底应该焦虑什么?

浏览:18次阅读
没有评论

共计 7489 个字符,预计需要花费 19 分钟才能阅读完成。


最近在网上看到那些天花乱坠地吹捧 AI 编程和 AI 工具的文章时,不禁陷入了沉思。作为一位在编程领域积累了十多年的经验的开发者,我深切体会到技术的每一次革新都伴随着无数的挑战与机遇。在这次关于 AI 编程的热潮中,我也不得不反思:AI 真的如同宣传中所说的那样无所不能,还是它能够真正为我们的工作带来革命性的变革?

过去半个多世纪,软件开发领域反复上演着一出熟悉的 " 狼来了 ":每当一种新技术诞生,总有人站出来宣布——" 程序员要失业了!"

从机器码到汇编,从 COBOL 到 C 语言,从 Java 到 Rails,从移动互联网到低代码,再到今天满大街的 AI 编程助手……这场 " 消灭程序员 " 的运动已经持续了五十多年。结果呢?程序员不但没死绝,反而越来越贵,越来越抢手。

经过两个多月的时间,我一直在利用 AI 辅助产品设计。在这段旅程中,我既是探索者也是挑战者,AI 带来的便利和挑战并存。我想,是时候分享我的观察与思考,与更多同道中人一起探讨 AI 在实际应用中的真谛。作为一个写了十多年代码,做了五年产品的老兵,我想从历史的角度,看看每一代 " 革命者 " 是怎么信心满满地登场,又是怎么悄悄调整自己的定位的。


1. 1950 年代:从打孔卡片到汇编,第一次 " 革命 "

故事要从上世纪 50 年代讲起。

那时候的程序员,活得像个人肉翻译机。他们面对的是一串串 0 和 1 组成的机器码,写程序就像用摩尔斯电码写情书——理论上能表达,实际上折磨人。

然后汇编语言来了。

它说:" 兄弟们,别再背那些鬼畜的二进制了!

MOV AX, BX

难道不比 10001001 11000011 好记多了?"

程序员们热泪盈眶。终于可以用人话(虽然是很僵硬的人话)来写程序了。

但很快有人开始担忧:" 汇编这么好用,以后是不是阿猫阿狗都能写程序了?我们会不会失业?"

结果当然是没有。因为大家很快发现:把 ADD 换成 01000000 只是省了查表的功夫,你还是得知道为什么要 ADD,什么时候 ADD,ADD 完了怎么办

汇编语言像是给你换了支更顺手的笔,但作文还是得你自己写。

2. 1959 年:COBOL,让会计也能编程?

就在汇编语言流行的同时,商业世界也在做自己的梦。

1959 年,COBOL 语言诞生,名字里就写着野心——" 通用业务导向语言 "(Common Business-Oriented Language)。设计者的想法简单粗暴:既然程序员那么贵那么少,不如让语法看起来像英语,这样业务人员自己就能写程序了!

MULTIPLY UNIT-PRICE BY QUANTITY GIVING TOTAL-PRICE.

看,这不就是英语作文嘛!会计小张应该能学会吧?

会计小张试了试,发现:虽然每个单词他都认识,但连在一起他就不知道自己在干什么了。

原因很简单:看起来像英语,和真的是英语,完全是两码事。 就像你把法律文书翻译成白话文,普通人还是看不懂——因为复杂的不是语言本身,而是语言背后的逻辑、概念和规则。

最终,COBOL 培养出了一大批专业的 COBOL 程序员,而不是会写程序的业务人员。直到今天,全球银行系统里还跑着大量 COBOL 代码,养活了一批 " 活化石 " 程序员。

但这个 " 让非专业人士也能编程 " 的梦想并没有死。它只是换了个战场,等待下一次机会。

3. 1969 年:阿波罗登月,软件走向舞台中央

1969 年 7 月,尼尔·阿姆斯特朗踏上月球表面的那一刻,全世界亲眼见证了 " 有组织的人类智慧 " 究竟能够走多远。

而支撑这次壮举的,是阿波罗飞船上那台只有 4KB 内存的导航计算机,和控制它的软件。

这些软件是玛格丽特·汉密尔顿带领团队一行一行手写的。没有 IDE,没有调试器,没有 Stack Overflow,更没有 ChatGPT。每一行代码都经过反复推敲和人工审查,因为任何 bug 都可能意味着宇航员的生命。

阿波罗计划向世人证明了一件事:软件不是可有可无的配角,而是关乎成败、甚至生死的核心系统。

但它也暴露出一个此后几十年困扰企业管理者的问题:软件的编写需要高度专业的知识、长期的专注投入,以及难以压缩的时间成本。

如何让软件开发变得更简单?如何减少对这些昂贵而稀缺的专业人员的依赖?

这个问题,几乎在那一刻就成了挥之不去的执念。

4. 1972 年:C 语言,程序员的 " 瑞士军刀 "

1972 年,贝尔实验室的 Dennis Ritchie 在捣鼓 Unix 系统的时候,顺手发明了 C 语言。

C 语言对汇编程序员说:" 老铁,你看你写个循环要十几行汇编,我一个 for 就搞定了。你那堆寄存器操作,我用变量就能表达。而且——我还能跨平台!"

这简直是降维打击。

如果说汇编是手动挡拖拉机,C 语言就是自动挡轿车。你不用再关心每个轮子怎么转,只需要告诉它 " 往前开 "。

当时很多人预言:" 有了 C 语言,写程序会变得像写散文一样简单,程序员的门槛会大大降低!"

然后指针来了。

int *p = &a;
*p = 10;
**pp = 20;

新手程序员看着这些星号和取地址符,陷入了深深的沉思:这是编程还是占星术?

C 语言确实让编程效率提升了一个量级,但它同时也证明了一件事:工具再好用,复杂性不会消失,只会换一种形式出现。 以前你要和硬件搏斗,现在你要和内存泄漏、野指针、段错误搏斗。

魔鬼换了身衣服,但还是那个魔鬼。

5. 1980 年代:CASE 工具,画个图就能出程序?

进入 80 年代,计算机辅助软件工程(CASE)工具隆重登场。

它的卖点极具诱惑力:不用写代码了!只要画流程图,系统就能自动生成程序!

想象一下,产品经理再也不用和程序员吵架了,他自己画个图,系统就给他生成一个 App。多美好的世界啊!

企业为此投入了大量资金。厂商信誓旦旦地宣称,生产力可以提升 10 倍,甚至更多。

然而现实是:

  • 画出来的图要是能直接生成好代码,那这个图本身就已经很复杂了
  • 自动生成的代码性能堪忧,维护起来像在破译古埃及象形文字
  • 一旦你需要做点图里没覆盖到的事情,就得回去写代码——而且是和生成代码纠缠不清的代码

这就好比你以为买了个自动作文机,只要列个提纲就能出高考满分作文。结果发现:列出一个足够详细的提纲,跟自己写作文差不多累;而机器生成的作文还经常跑题,改起来比重写还费劲。

CASE 工具最终没能 " 消灭程序员 ",但它推动了软件建模思想的发展,UML 图至今仍在使用——虽然主要是用来开会时装装样子。

6. 1990 年代初:Visual Basic 与 Delphi,拖拖拽拽的快乐

90 年代初,微软的 Visual Basic(1991 年)和 Borland 的 Delphi(1995 年)另辟蹊径。

它们说:" 好吧,我们不自动生成一切,但我们可以让界面开发变得超级简单!"

拖一个按钮,放一个文本框,双击写个事件——嘿,程序就跑起来了!

突然之间,开发一个 Windows 应用,看起来不再是少数高手的专利了。

这次确实管用了。很多人通过 VB 入了编程的门,做出了真正能用的软件。无数 " 部门级应用 " 就是这么诞生的。

但当这些软件变得越来越复杂,需要连数据库、做网络通信、处理并发……专业开发者又被请回来了。工具降低了入门门槛,但没有降低精通门槛。

就像美图秀秀让人人都能修图,但要修出专业级效果,你还是得学 Photoshop——或者找个会 Photoshop 的人。

7. 1995 年:Java,一次编写,到处 debug

同样在 1995 年,Java 带着 "Write Once, Run Anywhere" 的口号闪亮登场。

这次的承诺更诱人了:你写的程序可以在 Windows 上跑,也可以在 Linux 上跑,还可以在你家电冰箱上跑(如果它有 JVM 的话)。程序员再也不用为了不同平台写不同版本的代码了!

Java 还搞了个 " 垃圾回收 " 机制。它对 C 程序员说:" 你们天天追着内存泄漏跑,累不累?把这活交给我吧,我自动帮你收拾。"

C 程序员们感动得热泪盈眶,纷纷改行写 Java。

但很快他们发现了新的问题:

  • "Write Once, Run Anywhere" 有时候变成了 "Write Once, Debug Everywhere"
  • 垃圾回收是自动了,但你得学会看 GC 日志,调 JVM 参数,处理 OOM 异常
  • 代码是少写了,但配置文件多了一堆,光 Spring 的 XML 就能写到你怀疑人生

Java 确实解决了很多问题,但它也创造了新的复杂性。企业级开发变成了一门玄学,架构师成了新的稀缺资源。

每一代技术都在消灭旧的复杂性,同时制造新的复杂性。 这就像打地鼠游戏——你按下去一个,又冒出来三个。

8. 2000 年代:Web 2.0 与框架狂潮," 约定优于配置 "

千禧年的钟声敲响后,互联网泡沫破裂了,但 Web 没有死——它变得更强了。

2004 年前后,"Web 2.0" 这个词开始流行。网页不再是静态的电子传单,而是可以交互、可以社交、可以产生内容的平台。Ajax 技术让页面可以局部刷新,用户体验一下子丝滑了起来。

与此同时,一个叫 David Heinemeier Hansson 的丹麦小伙搞了个框架叫 Ruby on Rails,喊出了一句响亮的口号:" 约定优于配置 "(Convention over Configuration)

Rails 对 Java 程序员说:" 你们写个 Web 应用要配置多少 XML?我这边,文件放对位置,命名按规矩来,框架自动帮你搞定一切!"

# 这就是一个完整的数据模型
class User < ActiveRecord::Base
  has_many :posts
end

Java 程序员看了看自己几十行的 Hibernate 配置文件,陷入了沉默。

Rails 掀起了一场 " 敏捷开发 " 革命。PHP 也不甘落后,WordPress、Drupal 等 CMS 让 " 人人都能建网站 " 成为现实。一时间," 全栈工程师 " 这个词开始流行——一个人就能搞定前后端,创业公司最爱这种。

但你猜怎么着?当网站流量涨到一定规模,当业务逻辑变得足够复杂,那些 " 约定 " 就开始变成 " 约束 " 了。Rails 应用的性能问题成了段子,大公司纷纷把核心系统迁移到 Java 或 Go。

框架让简单的事情更简单了,但复杂的事情还是复杂。 这个剧本,是不是有点眼熟?

9. 2007-2015 年:移动互联网,程序员不够用了

2007 年 1 月 9 日,乔布斯掏出了第一代 iPhone。

那一刻,整个软件行业的游戏规则被改写了。

突然之间,每个公司都需要一个 App。不,是两个——iOS 一个,Android 一个。不对,还要有个移动端网页,还要有微信公众号,还要有小程序……

程序员们懵了:" 我刚学会写网页,你告诉我要学 Objective-C?刚学会 Objective-C,你又告诉我 Swift 出来了?"

移动互联网带来了前所未有的人才缺口。2010 年前后,会写 iOS App 的程序员简直是香饽饽,薪资水涨船高。企业喊着 " 招不到人 ",培训班喊着 " 四个月包就业 "。

与此同时,前端领域也在经历一场革命。

JavaScript 这门当年被嘲笑为 " 玩具语言 " 的东西,突然变得无比重要。2009 年 Node.js 诞生,JavaScript 可以写后端了。2013 年 React 发布,2014 年 Vue 问世,前端从 " 切图仔 " 变成了 " 前端工程师 "。

// 以前的前端
document.getElementById('btn').onclick = function() { ...}

// 现在的前端
const App = () => <Button onClick={handleClick}> 点我 </Button>

工具链也爆炸式增长:Webpack、Babel、ESLint、TypeScript……一个前端项目的 node_modules 文件夹动辄几百 MB,里面躺着成千上万个依赖包。

有人调侃:"JavaScript 疲劳症 " ——你刚学会一个框架,它就过时了;你刚配好一套工具链,新的最佳实践又出来了。

但讽刺的是,在这个 " 人人都能做 App" 的时代,专业程序员反而更稀缺了

因为移动互联网把软件的边界扩大了无数倍。以前一个网站够用,现在你需要 iOS、Android、小程序、H5、后端 API、数据分析、推荐算法……每一个领域都需要专业的人。

技术栈爆炸了,但能驾驭这一切的人,还是那么少。

10. 2015 年至今:低代码、无代码,这次我们是认真的

经历了移动互联网的 " 人才饥荒 " 后,企业开始认真思考:能不能让不懂编程的人也能做应用?

于是," 低代码 " 和 " 无代码 " 平台在 2015 年后开始真正崛起。

它们的承诺听起来很耳熟:

  • " 业务人员可以自己构建应用!"
  • " 不写代码也能做系统!"
  • "IT 部门的瓶颈将被彻底打破!"

等等,这剧本我好像在 COBOL 那章读过?

不过公平地说,这次确实比以前强。有了云计算的加持,有了成熟的组件生态,对于表单收集、审批流程、简单报表这类标准化需求,低代码平台确实快得多。很多 " 部门级小应用 " 不再需要 IT 排期了。

但问题在于:

  1. 简单的需求确实简单了,复杂的需求还是复杂。 当你需要对接一个奇葩的第三方 API,或者处理一个非标准的业务逻辑,低代码平台要么做不到,要么做起来比写代码还痛苦。
  2. 维护是个大问题。 当最初搭建这个 " 无代码应用 " 的业务人员离职后,接手的人往往一脸懵逼——这些七拐八绕的配置和流程,比代码还难读。
  3. 它创造了新的依赖。 你不再依赖程序员,但你开始依赖平台厂商。想迁移?祝你好运。

低代码 / 无代码找到了自己的生态位,但 " 消灭程序员 "?还是算了吧。

11. 2022 年至今:AI 编程,这次真的不一样?

终于讲到今天的主角了——AI。

2022 年底开始,ChatGPT、Copilot、Cursor……各种 AI 编程工具像雨后春笋一样冒出来。它们展示的能力确实令人印象深刻:

  • 你用自然语言描述需求,它给你生成代码
  • 你贴一段 bug,它帮你分析原因并给出修复方案
  • 你问它任何编程问题,它都能侃侃而谈

一时间," 程序员要被 AI 取代 " 的声音再次响起,而且这次声势更大。

但作为一个亲身使用这些工具的人,我想说几点观察:

AI 确实很强,但它像一个特别热心、知识渊博、但有时候又是一个“胡说八道”的实习生。

它能帮你快速生成样板代码,能帮你查 API 用法,能帮你解释一段复杂的正则表达式。这些事情它做得比 Baidu,Google 搜索快多了。

但当你让它处理真正复杂的问题时——比如重构一个有十几年历史的遗留系统,或者设计一个高并发分布式架构——它生成的代码往往需要大量修改,甚至可能把你带进坑里。

为什么?

因为 软件开发真正困难的部分,从来不是 " 写代码 " 本身

真正困难的是:

  • 理解业务需求背后的真实问题
  • 在无数种实现方式中做出正确的取舍
  • 预见到系统规模扩大后会遇到的问题
  • 在各种约束条件下找到可行的方案
  • 和人沟通,理解他们没说出口的需求

这些都是 认知工作,需要理解力、判断力和经验。AI 可以加速你的编码,但不能替你思考。

就像计算器可以帮你算数,但不能帮你决定该算什么。

12. 复杂性守恒定律

回顾这五十年的历史,我发现一个有趣的模式:

每一代新技术都确实解决了一些真实的痛点。汇编比机器码好写,C 比汇编高效,Java 比 C 安全,AI 比搜索引擎快……这些都是实打实的进步。

但每一次,复杂性都没有真正消失,只是换了个地方藏起来。

  • 汇编消灭了记忆机器码的痛苦,但引入了汇编语言本身的复杂性
  • C 消灭了汇编的繁琐,但引入了指针和内存管理的复杂性
  • Java 消灭了内存管理,但引入了框架配置和 JVM 调优的复杂性
  • Rails 消灭了繁琐配置,但引入了 " 魔法 " 背后的隐藏约定
  • 移动互联网消灭了地域限制,但引入了多端适配的复杂性
  • 前端框架消灭了 DOM 操作,但引入了构建工具链的复杂性
  • AI 消灭了大量重复编码,但引入了提示工程和结果验证的复杂性

这就是我总结的 复杂性守恒定律:软件系统的总复杂性不会因为工具的改进而减少,只会在不同层面之间转移。

为什么会这样?

因为 软件的复杂性本质上来自现实世界的复杂性

你想做一个电商系统。看起来很简单:" 用户下单,付款,发货。"

但仔细想想:

  • 库存不足怎么办?部分发货还是全部取消?
  • 优惠券能叠加使用吗?哪些叠加哪些不行?
  • 跨境订单的税怎么算?不同国家规则不一样
  • 订单支付超时怎么处理?支付成功但回调失败呢?
  • 同一商品同时有两人下单库存只有一件怎么办?
  • ……

这些复杂性不是程序员发明的,是业务本身带来的。无论你用什么语言,什么工具,什么 AI,这些问题都需要有人去思考和决策。

而这个 " 有人 ",就是程序员——或者叫软件工程师、开发者、码农,随便什么称呼都行。他们的核心价值从来不是 " 会打字写代码 ",而是 " 能把复杂问题想清楚并转化为可运行的解决方案 "

13. 几句大实话

如果你是一位技术团队的管理者,或者是一位负责数字化转型的决策者,这段历史应该能帮你建立更理性的预期。

每当有人跟你说 " 用了这个工具 / 平台 /AI,就不需要那么多程序员了 ",请回想一下:这句话在过去五十年里被说过多少次?结果又是什么?

我不是说你不该尝试新工具。恰恰相反,好的工具确实能提升效率,应该积极采用。

但在评估时,与其问 " 这能不能消灭程序员 ",不如问:

  • 这个工具能帮程序员提升多少效率?
  • 它在什么场景下效果最好,什么场景下不适用?
  • 我的团队需要学习什么新技能才能用好它?
  • 长期来看,它会带来什么新的复杂性或依赖?

最重要的是:投资在人身上,而不只是工具上。

好的程序员能用任何工具做出好东西,也能判断什么时候该用什么工具。而再好的工具,交给不懂的人,也只会制造更多问题。

14. 带着清醒的乐观前行

写到这里,我想澄清一点:我不是一个技术悲观主义者。

恰恰相反,我对每一代新技术都持开放态度。汇编、C、Java、Python、AI 工具……我都用过,也都从中受益。

每一代工具都在解决真实的问题,都在降低某些方面的门槛,都在让更多人能够参与软件创造。这是实实在在的进步。

只是," 让编程变简单 " 和 " 消灭程序员 " 是两回事。

前者正在发生,而且会继续发生。入门的门槛确实在降低,很多以前需要专业程序员才能做的事,现在普通人也能完成了。这是好事。

后者不会发生,因为它基于一个错误的假设——以为软件开发的难点在于 " 写代码 " 本身。实际上,写代码只是冰山浮在水面上的部分,下面 90% 是理解问题、设计方案、处理边界情况、维护演进……这些才是真正需要人类智慧的地方。

也许有一天 AI 会真的具备这些能力。但那一天来临时,它改变的就不只是编程这个职业,而是人类社会的整个运作方式了。在那之前,程序员的饭碗应该还是稳的。

所以,放心大胆地拥抱 AI 工具吧。它是迄今为止最强大的编程辅助。但不要指望它替你思考。

用它来加速重复性工作,用它来学习新知识,用它来验证想法——然后把省下来的时间,投入到真正困难的、需要深度思考的问题上。

这才是 AI 时代程序员的正确姿势。


五十年来,每一代技术都想 " 干掉 " 程序员。结果是:程序员越来越多,越来越重要,越来越贵。下一个五十年,大概率还是这样。

因为复杂性不会消失,只会转移。而处理复杂性,永远需要人。

正文完
创作不易,扫码加点动力
post-qrcode
 0
果较瘦
版权声明:本站原创文章,由 果较瘦 于2026-01-21发表,共计7489字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。