土法炼钢兴趣小组的算法知识备份

务实的不可替代性:AI 时代程序员的生存手册

目录

第一篇讲了 AI 替代的是 System 1(模式匹配),不是 System 2(符号推理)。第二篇讲了职业身份的心理调适。第三篇讲了分化正在发生,中间层被压缩。

这是最后一篇。不讲理论了。讲具体怎么做。

一、可执行清单

以下不是”你应该做什么”的建议——是”根据前三篇的分析,在数据支撑下,什么能力在 AI 时代有最高的市场溢价”的推导。

Tier 1:AI 不能做的(投资回报最高)

1. 跨系统调试

能力描述:一个 bug 跨越多个组件(网络 + 存储 + 并发),需要同时理解所有组件的交互才能定位。

为什么 AI 不行:AI 的上下文窗口装不下整个系统。它能分析单个函数,但不能在”网络延迟 + GC 停顿 + 磁盘 I/O 突增”之间建立因果链。

怎么练:读 postmortem 报告(Google SRE book、AWS 故障分析)。自己写复杂系统并故意注入故障。

2. 性能建模

能力描述:在不跑 benchmark 的情况下预测一个架构方案的性能特征。“这个设计在 10K QPS 下 P99 大约是多少?”

为什么 AI 不行:性能建模需要理解 cache hierarchy、内存带宽、调度延迟、网络 RTT 的交互。这些参数在不同硬件上不同,AI 没有你的硬件信息。

怎么练:跑 benchmark,记录结果,建立直觉。这个博客里的分配器对比io_uring vs epollGo vs C vs Rust 就是这个练习。

3. 约束下的架构设计

能力描述:在矛盾的约束之间做决策。“预算只够 3 台机器,但需要 5 个 9 的可用性” -> 选择什么架构?

为什么 AI 不行:AI 会给你所有可能的方案。你需要的不是方案——是在你的具体约束下,哪个方案的 trade-off 最可接受。

怎么练:参与真实的系统设计。如果你没有机会,读别人的设计文档(raft 论文 vs etcd 实现的差距就是一个好例子)。

Tier 2:AI 很差但在进步的(中期投资)

4. 安全审计

AI 不擅长对抗性思维。它能找到已知模式的漏洞(SQL 注入、XSS),但不能发现新型攻击面。但这个领域 AI 在快速进步,3-5 年后可能不再是壁垒。

5. 技术选型与评估

“我们应该用 Kafka 还是 Pulsar?” AI 给你功能对比表。你需要的是基于你团队的运维能力、数据规模、延迟要求的判断。目前 AI 在这方面差,但随着它接入更多上下文(你的代码库、线上指标),会越来越好。

Tier 3:AI 正在接管的(维持但不要指望溢价)

6. 代码实现

写功能代码的能力仍然需要(你需要验证 AI 输出),但不再是差异化来源。

7. API 文档阅读和调用

AI 比你快。但你需要知道什么时候 AI 的 API 调用是错的。

8. 代码审查

AI 在 lint 级别的代码审查上已经很好了。深层的逻辑审查仍然需要人,但这属于 Tier 1 的调试能力。

二、时间分配建议

假设你每周有 10 小时用于学习和提升(除日常工作外):

活动 时间 类别
读源码 + 画架构图 3h Tier 1: 系统理解
跑 benchmark + 写分析 2h Tier 1: 性能建模
读 postmortem / 写故障分析 2h Tier 1: 调试能力
写博客 / 技术文档 2h Tier 1: 知识固化
学习新工具/框架 1h Tier 3: 维持基础

注意:学习新工具/框架的时间只占 10%。因为这些知识的半衰期短(AI 能秒查),而且 AI 在辅助学习新工具方面已经做得很好了。

三、关于”学什么语言/框架”

短回答:这个问题在 AI 时代变得不太重要了。

AI 降低了语言切换的成本。一个熟练的 Go 程序员用 AI 可以在一周内写出可用的 Rust 代码。语言的差异被 AI 抹平了。

真正重要的不是语言——是领域知识:

领域知识 AI 替代难度 薪资溢价趋势
Web CRUD 下降
移动端 UI 持平
数据库内核 上升
网络协议栈 上升
操作系统/驱动 上升
ML 基础设施 快速上升
安全/密码学 上升
编译器/语言运行时 极高 上升

规律:离硬件越近、需要理解的全局不变量越多、AI 生成代码的正确率越低——市场溢价越高。

四、30/90 天训练模板

上面说了练什么。这里说怎么开始。

前 30 天:建立基线

Week 1-2: 选一个你不熟悉的开源系统(推荐 <5 万行),不用 AI,
          纯手动读源码。画出核心数据流图。
Week 3:   对同一个系统,让 AI 帮你解释。对比你自己理解的和
          AI 解释的差异——差异就是 AI 的盲区。
Week 4:   写一篇 2000 字的架构分析。写不出来的地方就是你
          自己的盲区。

30 天后你会有两个清单:AI 的盲区和你的盲区。后面 60 天专攻后者。

Day 31-90:针对性训练

每周固定:
  - 2h 无 AI 编码(维持 chunking 肌肉记忆)
  - 2h 读 postmortem(推荐 https://github.com/danluu/post-mortems)
  - 1h AI 代码审计练习(让 AI 写一段并发代码,用下面的
    checklist 审)
  - 3h 读源码 + benchmark(交替进行)
  - 2h 写博客或内部技术文档

每月一次:
  - 找一个线上问题,从告警到根因写完整的故障分析报告
  - 不用 AI 独立完成一个小项目(500-1000 行)

90 天后回头看,你会明确感知到自己在 Tier 1 能力上的变化。

五、AI 代码审计 Checklist

每次收到 AI 生成的代码,过一遍这个清单:

□ 资源生命周期:malloc/free、open/close、lock/unlock 是否配对?
□ 错误路径:每个 if (err) 分支是否正确清理了之前获取的资源?
□ 并发安全:有没有共享可变状态?用了什么同步原语?够不够?
□ 整数溢出:有没有 size_t 和 int 之间的隐式转换?
□ 边界条件:空输入、超大输入、负数输入,AI 处理了没有?
□ 性能假设:AI 选的数据结构和算法,在你的数据规模下合理吗?
□ 平台假设:AI 假设了 x86 内存模型、Linux 系统调用、特定编译器行为吗?

这个清单来自我们审计 50 段 AI 代码的经验。AI 最常在前三项上翻车。

六、最后一句话

AI 时代对程序员的要求没有降低——是换了方向。以前的核心能力是”写正确的代码”。现在的核心能力是”判断什么是正确的设计”。

前者是手艺。后者是工程。

手艺可以被自动化。工程不能。因为工程的本质是在不完美的世界里做出足够好的决策——而”不完美”和”足够好”的定义,每个项目都不同。

这不是世界末日。这是手艺人向工程师的进化。和 200 年前手工织布工向纺织工程师的进化一样。痛苦,但方向是对的。


延伸阅读:

这个系列到此结束。 回到技术:eBPFio_uring无锁数据结构Rust——这些是 AI 做不好的领域。去学它们。

数据和引用截至 2025-03。


By .