AI 帮我五分钟写完一个订单模块。同事问:「设计模式还要背吗?Spring 源码还有人看吗?JVM 是不是交给运维就行了?」
我的答案:都要,但不用像以前那样学。 AI 替掉的是「手写重复实现」,没替掉「判断对不对、出问题能不能查」。这三块,正好对应 选型、边界、排障------AI 写得越多,你越缺不得。
一、先搞清:AI 替掉的是什么
| AI 很擅长 | 仍然是人负责的 |
|---|---|
| CRUD、配置、常见样板代码 | 复杂 bug、性能、并发、内存 |
| 拼出「像 Spring 的代码」 | 事务为什么失效、Bean 为什么没注入 |
| 快速解释概念(表面) | 线上 OOM、假死、Full GC 定位 |
| 一次生成大量代码 | Review:能不能合、能不能上 |
一句话:日常「写」可以交给 AI,「懂」和「担责」还是你的。
二、设计模式:要会「认和选」,不必背完 23 种
还要学吗?
要。 但目标从「全会实现」变成「会识别、会选型、会识破过度设计」。
| 深度 | 干什么用 | AI 时代还要不要 |
|---|---|---|
| 知道常见模式名 | 看懂 AI 生成的 Strategy、Factory | ✅ 要 |
| 会选型 | 扩展点、解耦时选对工具,而不是堆 if-else | ✅ 要 |
| 手写每种模式实现 | 面试、框架开发 | ⚠️ 按岗位,不必全员 |
AI 写代码时怎么处理?
AI 爱「为了模式而模式」------简单业务套三层抽象,Review 时问三句:
- 这个模式解决什么问题?
- 不用它代码会不会更简单?
- 团队其他人(和半年后的你)读得懂吗?
java
// AI 常生成:为策略而策略
public interface DiscountStrategy { BigDecimal calc(Order o); }
// ... 三个实现类 + 工厂 + 上下文 ...
// 很多时候够用:清晰的分支 + 抽方法
public BigDecimal calcDiscount(Order order) {
return switch (order.getType()) {
case VIP -> vipDiscount(order);
case NEW -> newUserDiscount(order);
default -> BigDecimal.ZERO;
};
}
个人建议: 掌握 8~10 个高频(单例、工厂、策略、模板、观察者、装饰、适配、责任链等),其余当手册查阅。
三、Spring:懂原理和边界,源码当字典查
还要学吗?
做 Java 后端,Spring 原理比逐行啃源码 ROI 更高。
| 深度 | 干什么用 |
|---|---|
| 会用注解开发 | 日常 + 让 AI 写 Controller/Service |
| 懂 IoC、AOP、事务传播、MVC 链路 | Review AI 稿、解释「为什么失效」 |
| 读关键源码 | 遇到怪问题时查入口,而非通读 |
AI 写代码时常见坑(不懂 Spring 看不出来)
| AI 常犯的错 | 你需要懂的点 |
|---|---|
@Transactional 包 Feign/HTTP |
事务边界、同类自调用不走代理 |
| 同类内自调用加事务 | 代理机制,事务不生效 |
乱 @Async、乱 @Autowired 字段注入 |
生命周期、循环依赖 |
| 在 Controller 写 SQL / 业务逻辑 | 分层边界 |
java
// AI 爱这么写------能编译,上线才爆
@Transactional
public void cancel(OrderId id) {
orderRepo.updateStatus(id, CANCELLED);
paymentClient.refund(id); // 远程调用在事务里,连接占着等 HTTP
}
个人建议:
- 不必脱产三个月通读 Spring 全家桶源码
- 要 维护一份「失效场景清单」,遇问题再查对应源码类(如
TransactionInterceptor) - 你定 Spec,AI 填实现,Spring 边界你来守
四、JVM:基础和排查必会,内核按岗位再深
还要学吗?
要对线上负责,就要会排查;不必人人成为 GC 算法专家。
| 深度 | 干什么用 |
|---|---|
| 堆栈、GC 种类、类加载、OOM 类型 | 听懂告警、看懂日志 |
| jstack、jmap、MAT、Arthas | 假死、OOM、内存泄漏定位 |
| GC 调优、底层实现 | 中间件、大规模性能优化岗位 |
AI 写代码时怎么处理?
AI 容易写出:无界缓存、线程池乱建、大对象循环 new。代码能跑,压测或上线一周才爆。
你不需要每次都手写 JVM 参数,但需要:
javascript
AI 出稿 → 问:有没有静态 Map 只增不减?线程池谁关?
→ 上压测 / 看监控
→ 出问题:jstack 先看,再决定是否 heap dump
个人建议: 内存模型 + GC 基础 + 排查工具 必须会 ;G1/ZGC 调优细节、字节码级优化 按兴趣/岗位。
五、一张表:学到哪一层够用
| 方向 | 还要学吗 | 推荐深度 | 别花时间 |
|---|---|---|---|
| 设计模式 | 要 | 会认、会选、识过度设计 | 背 23 种手写实现 |
| Spring | 要 | 原理 + 失效清单 + 按需查源码 | 通读全家桶源码 |
| JVM | 要 | 基础 + 排查工具 + OOM/GC 场景 | 非岗位相关内核论文级 |
六、AI 日常写代码,这些知识怎么接上去
可以记这个流程:
sql
AI 出稿
↓ 设计模式:模式用对了吗?是否 over-engineering?
↓ Spring:事务、代理、分层、异步边界 OK 吗?
↓ 运行:压测 / 监控有没有异常信号?
↓ JVM:慢、OOM、假死 → 线程 Dump / Heap Dump
↓ 只有这时,才需要「很深」的那一层
平时 80%: 原理 + Review 级
20%: 线上出问题,再深挖源码 / JVM
七、时间怎么分配(参考)
| 占比 | 投在哪 |
|---|---|
| 40% | AI 协作:Rules、Spec、Review 清单 |
| 30% | Spring 原理 + 工程化(测试、CI、分层) |
| 20% | 设计模式(问题驱动,用到再学) |
| 10% | JVM 排查实战(结合线上/压测) |
不必跟 AI 抢「写实现」;把省下的时间,补在 AI 替不了的地方。
八、还要不要「专门深入研究」?
我踩过一次:AI 给折扣逻辑生成了 Strategy + Factory + Context 三件套,我差点照单全收。后来对照业务------就 VIP 和新客两种,改成 switch 抽方法 ,少 4 个类,测试也好写。设计模式那节不是白学,是用来 拦住 AI 过度设计 的。
| 你的方向 | 建议 |
|---|---|
| 业务开发 + AI 提效 | 广度优先,不专门脱产深挖 |
| 架构 / Tech Lead | 选 一条纵轴 深挖(性能→JVM;平台→Spring/中间件) |
| 纯靠 AI 出活、自己 Review 弱 | 危险------至少 Spring 边界 + 基本排查要有 |
三句话收束:
- 设计模式------要,用来 Review AI,不是炫技。
- Spring------原理和边界必会,源码当字典。
- JVM------排查必会,内核看岗位。
AI 没有替你承担线上责任。这三块,就是「为什么这样写」和「错了怎么查」的底子。