一、引言
三年前,"AI 要取代程序员"的说法铺天盖地。我当时也有些焦虑,但三年过去了,我所在的团队不仅没有裁人,反而还在扩招。
我的真实观察是:AI 没有取代程序员,但改变了"什么算编程能力"。
二、三个正在消失的能力
2.1 手写样板代码
以前:我们花大量时间手写 CRUD、配置类、DTO 转换等样板代码。记得刚入职时,写一个完整的订单模块需要两天——一天写 Controller、Service、Repository,一天写测试和配置。
现在:让 AI 生成这些代码只需要几分钟。
真实案例:
去年我们要做一个库存管理模块,按照以前的节奏至少需要三天。
我让新人小周尝试用 AI 辅助开发:
1. 向 AI 描述需求:"创建一个库存管理模块,包含商品入库、出库、盘点功能"
2. AI 生成了完整的代码结构:Controller、Service、Repository、DTO
3. 小周只需要调整业务逻辑和添加事务注解
4. 最终只用了半天就完成了,代码质量还不错
但这里有个关键:小周必须能看懂 AI 生成的代码,知道哪里需要修改。
现状:手写样板代码的能力正在快速贬值,因为 AI 能做得又快又好。
2.2 死记 API
以前:面试必问"Spring Boot 的启动流程"、"Redis 的数据结构"、"Java 集合类的实现原理"。我们花大量时间背诵 API 和源码细节,仿佛记住这些就是能力的证明。
现在:遇到不会的 API,直接问 AI 就好。
真实案例:
上个月我需要实现一个复杂的 Redis 缓存策略,涉及到 Lua 脚本和分布式锁。
说实话,我已经记不清 Redis Lua 脚本的具体语法了。
我直接问 AI:
"帮我写一个 Redis Lua 脚本,实现分布式锁的获取和释放,要求支持锁续期"
AI 立刻给出了完整的脚本,还解释了每个步骤的作用。
我只需要理解逻辑,不需要死记语法。
但关键是:我必须知道什么时候该用 Lua 脚本,什么时候不该用。
现状:死记硬背 API 的能力正在消失,因为 AI 是随时可用的"活文档"。
2.3 逐行调试
以前:遇到 bug,我们会逐行查看代码,打印日志,一步步排查问题。这个过程可能需要几个小时甚至几天。
现在:AI 能帮我们快速定位问题。
真实案例:
上周测试反馈一个空指针异常,堆栈信息很长,涉及多个服务调用。
我把堆栈信息粘贴给 AI:
"帮我分析这个空指针异常的根因"
AI 立刻指出了问题所在:
1. 在 OrderService.processOrder() 方法中,findById() 返回了 null
2. 后续代码没有做空检查
3. 建议使用 Optional 或添加 null 检查
我按照建议修复,问题很快解决了。
但关键是:我必须判断 AI 的分析是否正确,不能盲目信任。
现状:逐行调试的能力正在转变为"AI 辅助调试",纯手动调试的场景越来越少。
三、三个正在升值的能力
3.1 系统设计
以前:系统设计能力虽然重要,但在快速迭代的环境中,往往被"先做出来再说"的心态所忽视。
现在:AI 能写代码,但不能做系统设计。
真实案例:
今年初,我们要重构用户服务。团队里有两个方案:
方案 A:单体架构,简单直接
方案 B:微服务架构,扩展性好
我让 AI 帮我分析两个方案的优缺点,AI 给出了一份详细的对比表。
但最终的决策还是需要我来做:
1. 考虑团队的技术能力(微服务需要更多的运维投入)
2. 考虑业务的发展趋势(用户服务未来是否需要独立扩容)
3. 考虑成本和时间(微服务架构需要更多的开发时间)
最终我们选择了方案 A,因为当前团队规模小,业务也比较简单。
AI 可以提供信息,但不能做决策。
现状:系统设计能力正在成为区分普通程序员和优秀程序员的关键。
3.2 需求翻译
以前:产品经理提出需求,我们直接照着做。如果需求不清晰,就去问产品经理。
现在:AI 能帮我们实现需求,但前提是我们必须能正确理解和翻译需求。
真实案例:
产品经理说:"我们需要一个智能推荐系统,根据用户的浏览历史推荐商品"
这个需求很模糊:
1. 智能到什么程度?
2. 推荐的算法是什么?
3. 数据从哪里来?
4. 性能要求是什么?
我需要把这个模糊的需求翻译成具体的技术需求:
1. 使用协同过滤算法
2. 实时计算用户的兴趣向量
3. 从用户行为日志中获取数据
4. 推荐结果需要在 100ms 内返回
然后把这些技术需求交给 AI,让 AI 帮我实现具体的代码。
如果需求翻译错了,AI 生成的代码再好也没用。
现状:需求翻译能力正在变得越来越重要,因为 AI 需要清晰的输入才能产生好的输出。
3.3 代码审查
以前:代码审查主要关注代码规范、命名、注释等表面问题。
现在:代码审查需要关注更深层次的问题——AI 生成的代码是否正确、是否有安全隐患、是否符合业务逻辑。
真实案例:
上个月,小周用 AI 生成了一段支付相关的代码。代码看起来很完美,通过了所有测试。
但我在代码审查时发现了一个问题:
AI 生成的代码没有处理并发支付的情况。如果用户同时发起两次支付请求,可能会导致重复扣款。
我指出了这个问题,小周添加了分布式锁来解决。
AI 生成的代码往往是"看起来正确",但缺乏对业务场景的深度理解。
现状:代码审查能力正在变得更加重要,因为我们需要对 AI 生成的代码进行"把关"。
四、能力变迁图
能力变迁图(趋势示意):
┌─────────────────────────────────────────────────────┐
│ │
│ 正在消失的能力 │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 手写样板代码 │ ████████████░░░░░ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 死记 API │ ██████████████░░░ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 逐行调试 │ █████████████░░░░ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ │
│ 正在升值的能力 │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 系统设计 │ ██████████████████ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 需求翻译 │ █████████████████░ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 代码审查 │ ████████████████░ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
五、调整学习方向
5.1 减少投入的方向
减少投入的方向:
1. 不再死记硬背 API 和框架细节
- 知道有这个功能就行,具体用法查文档或问 AI
2. 不再花大量时间手写样板代码
- 让 AI 生成,自己专注于业务逻辑
3. 不再依赖逐行调试来解决问题
- 学会用 AI 辅助定位问题,提高调试效率
5.2 增加投入的方向
增加投入的方向:
1. 系统设计能力
- 学习设计模式、架构模式
- 理解分布式系统原理
- 掌握微服务设计原则
2. 需求翻译能力
- 学会从业务需求中提取技术需求
- 学会用清晰的语言描述问题
- 学会拆解复杂任务
3. 代码审查能力
- 学习代码质量标准
- 掌握安全审查方法
- 学会判断 AI 输出的质量
4. 领域知识
- 深入理解业务逻辑
- 了解行业最佳实践
- 积累领域经验
5.3 具体行动计划
具体行动计划:
┌─────────────────────────────────────────────────────┐
│ │
│ 短期(1-3个月) │
│ ├── 学习 Prompt 工程,提高 AI 使用效率 │
│ ├── 练习用 AI 生成代码,并进行审查 │
│ └── 阅读系统设计相关书籍 │
│ │
│ 中期(3-6个月) │
│ ├── 参与大型项目的架构设计 │
│ ├── 练习将业务需求转化为技术方案 │
│ └── 建立个人的代码审查标准 │
│ │
│ 长期(6个月以上) │
│ ├── 成为领域专家 │
│ ├── 培养团队的技术能力 │
│ └── 关注技术趋势,保持学习 │
│ │
└─────────────────────────────────────────────────────┘
六、总结
6.1 核心观点
核心观点:
1. AI 没有取代程序员,而是改变了编程能力的定义
2. 以前比的是"会不会写",现在比的是"会不会用 AI 写得更好"
3. 正在消失的能力:手写样板代码、死记 API、逐行调试
4. 正在升值的能力:系统设计、需求翻译、代码审查
5. 程序员需要调整学习方向,拥抱 AI,提升核心竞争力
6.2 不焦虑的理由
不焦虑的理由:
1. AI 只是工具,不能替代人类的创造力和判断力
2. 编程的本质是解决问题,而不是写代码
3. 好的程序员从来不是"写代码最快的人",而是"解决问题最好的人"
4. AI 让我们从繁琐的工作中解放出来,专注于更有价值的事情
6.3 给年轻程序员的建议
给年轻程序员的建议:
1. 不要害怕 AI,要拥抱 AI
2. 不要和 AI 比写代码速度,要比解决问题的能力
3. 专注于提升核心竞争力,而不是表面技能
4. 保持学习,适应变化
💡 互动话题:你觉得 AI 对你的工作影响最大的是什么?你正在调整哪些学习方向?欢迎在评论区分享!
