大家都担心人工智能会抢走人们的工作。卡车司机完蛋了。放射科医生完蛋了。会计师最好开始学习编程,对吧?错了。以下这个热门观点可能会激怒人工智能的拥护者:软件开发人员最终可能是最后一个幸存下来的职业,而不是第一个牺牲品。
我知道,我知道。听起来像是开发者的傲慢。不过,听我说完。
我们正在打造自己的替代品(这就是重点)
有件事几乎没人谈论:所有威胁要取代程序员的人工智能工具都是由……程序员开发的。ChatGPT?由软件工程师开发。GitHub Copilot?没错,就是开发人员。那个号称能写出完美代码的炫酷新人工智能?也是由以写代码为生的人类开发的。
这就像让木匠造一个机器人来取代所有木匠。只不过,这个机器人总是出故障,需要不断更新,而且不知何故,它还是搞不清楚为什么浴室的门关不严。
这不仅讽刺,更是战略性的。我们并非被动地等待自动化的受害者。我们积极地构建工具,这意味着我们比任何人都更了解它们的局限性。我们知道尸体埋在哪里,因为我们自己埋葬了它们。
编程不是打字,而是侦探工作
大多数人认为编程就是记住语法然后快速输入。这就好比认为做手术就是要有稳定的手一样。当然,这种想法很有帮助,但却完全没有抓住要点。
真正的编程就像侦探工作。你会不断地问:为什么这个系统会表现得这么奇怪?如果流量飙升 300% 会怎么样?我们该如何集成这个显然是由某个喝醉酒的表弟设计的 API?为什么除了周四下午 2 点到 4 点之外,支付系统都能正常工作?
上个月我花了三天时间追踪一个 bug,它只在用户购物车里刚好有 47 件商品时才会出现。结果发现,它与 2018 年的一个内存优化有关,但当时没人记录。祝你训练 AI 应对这种极端情况好运。
维护噩梦
关于软件,有一个不可告人的秘密:编写新代码可能只占工作的 20%。剩下的 80% 是维护、调试和升级由不同的人、在不同的时间、以不同的优先级和约束构建的系统。
我目前的项目包含 2009 年(在科技年代算久远的了)的代码、三个不同的 JavaScript 框架、两个已弃用的 API 以及四种语言的注释。一半的原始开发人员已经离开了公司。文档要么有误,要么缺失。测试覆盖了大约 60% 的实际功能。
现在想象一下向人工智能解释这个烂摊子。“嘿,ChatGPT,你能修复这个身份验证错误吗?哦,对了,身份验证系统是围绕一个已经不存在的 API 构建的,但我们无法替换它,因为它与计费系统集成在一起,无法更改,否则会计部门会造反。”
人工翻译问题
编程不仅仅是与计算机对话,更是将人类的混乱思维转化为逻辑指令。需求往往来自那些并不知道自己想要什么、不断改变主意的人,他们总是用“用户友好”和“让它流行起来”之类的词,仿佛它们代表着某种特定的东西。
想象一下,一个产品团队要求为他们的外卖应用添加一个“基础”通知系统。只需在订单准备好时发送一条消息——这能有多难?但他们希望它“智能”(机器学习预测最佳时间)、“引人入胜”(游戏化元素)、“个性化”(行为分析)和“病毒式传播”(社交分享集成)。哦,对了,它还需要兼容15个不同的应用版本,遵守国际隐私法,与仍在使用XML的古老短信网关集成,并以某种方式将用户留存率提高40%。
营销团队附和道:“让它感觉高端但又平易近人。” 法务团队补充道:“确保符合GDPR规定,同时又不破坏用户体验。” CEO总结道:“这应该是一个快速的周末项目,对吧?”
人工智能可能会生成产品推荐的代码,但它无法处理办公室政治、推迟不可能的时间表,或者解释为什么“简单”的请求需要重建一半的平台。
我们是免疫系统
每当人工智能的编码能力提升,开发人员就会不断调整,不断提升。计算器发明后,数学家并没有消失——他们开始研究更难的问题。Excel 自动化了基础会计工作后,会计师们开始从事分析和战略制定。
编程领域也发生了同样的事情。AI 可以生成样板代码?太好了,现在我可以专注于架构和系统设计,而不用一千遍地重复同样的 CRUD 操作。AI 可以捕获基本的 bug?太棒了,现在我可以把更多时间花在真正重要的复杂问题上。
我们不是被取代了,而是被提升了。这份工作越来越少地依赖语法,而更多地依赖思考。更少的打字,更多的是解决问题。说实话,这才是应该的。
引导问题
有一件事让我夜不能寐(但这是好事):随着人工智能在我们构建软件的过程中变得越来越核心,需要有人来构建和维护人工智能系统本身。一切都像乌龟一样,而我们都是乌龟。
每个神经网络都需要基础设施。每个机器学习模型都需要数据管道。每个人工智能助手都需要集成点、错误处理、监控和更新。我们使用的人工智能越多,就越需要传统的编程来支持它。
这就像是终极的工作保障计划,只不过我们并不是故意这么做的。
凌晨 3 点测试
想知道你的工作是否真的可以自动化吗?问问自己:如果周六凌晨 3 点系统崩溃,公司每分钟损失 1 万美元,他们会打电话给谁?
对于开发人员来说,永远需要人来解决问题。这并不是因为我们不可替代,而是因为调试生产系统需要直觉、创造力,以及基于不完整信息做出合理猜测的能力。你需要一个能够看到堆栈跟踪,忽略显而易见的解释,然后思考“等等,这感觉就像六个月前那个奇怪的缓存问题”的人。
人工智能擅长模式识别,但在识别不适用的模式时却很糟糕。
接下来会发生什么
一个无聊的事实是,人工智能可能会取代一些编程工作,尤其是那些专注于常规任务的初级职位。但它也会创造新的工作,并使剩下的工作变得更有趣。
能够生存下来的开发者并非那些能够最快编写代码的人,而是那些能够构建系统、驾驭复杂环境、并解决 Stack Overflow 上找不到答案的问题的人。他们能够理解,编程的最终目的是将人类的需求转化为数字现实,而这恰恰是人类的一项基本技能。
此外,还得有人维护 AI 的运行。当它们不可避免地出现故障时,还要有人负责修复。还要向管理层解释,为什么这个“简单”的 AI 集成项目要耗时六个月,而且需要彻底重新设计数据库。

