从会实现、会负责模块,到会做系统判断:把 Java 能力升级成系统能力
| 阶段 | 经验区间 | 核心变化 | 主要工作单位 | 判断标准 |
|---|---|---|---|---|
| 第一阶段:会实现 | 0-2 年 | 从语法和框架进入稳定交付 | 接口、页面功能、简单业务流程 | 一个中小功能交给你,能从接口、数据库、业务逻辑到测试跑通 |
| 第二阶段:会负责 | 2-5 年 | 从功能开发进入模块负责 | 模块、服务、数据模型、线上问题 | 一个模块交给你,能设计、交付、排障、解释风险和维护成本 |
| 第三阶段:会判断 | 5 年以上 | 从模块负责进入系统判断 | 系统边界、业务状态流、跨服务协作、演进路径 | 一个复杂系统问题交给你,能分清代码、架构、流程、容量和组织边界 |
| 能力 | 要做到什么 | 常见短板 | 训练动作 |
|---|---|---|---|
| Java 基础 | 集合、异常、泛型、常用工具类能熟练使用 | 只会照抄,不知道为什么选 List / Map | 重写一个命令行管理系统,强制用对象和集合组织 |
| Web 开发 | 能写 Controller、Service、Repository,能处理参数校验和错误返回 | 业务逻辑堆在 Controller 或 SQL 里 | 做一个完整 CRUD,并补接口测试 |
| 数据库 | 会写基础 SQL、索引意识、事务基本概念 | 不会看慢查询,不知道事务边界在哪里 | 给项目加分页、筛选、唯一约束和事务 |
| 交付习惯 | 能按需求拆任务、提交代码、处理 review 意见 | 只顾功能跑通,不留边界和错误处理 | 每个功能写清输入、输出、异常、测试样例 |
| 能力 | 要做到什么 | 典型问题 | 训练动作 |
|---|---|---|---|
| 模块设计 | 能设计接口、数据模型、状态字段和模块边界 | 新增需求总是牵一发动全身 | 把一个老 CRUD 模块重构成清晰分层和领域对象 |
| 数据库与缓存 | 能处理索引、事务、缓存穿透、缓存一致性 | 加缓存后数据更乱,或者慢 SQL 只会加机器 | 为一个读多写少场景设计缓存、失效和回源策略 |
| 消息与幂等 | 能处理 MQ、重试、幂等、补偿和消息堆积 | 只会发消息,不会处理重复、乱序和失败 | 设计订单支付后异步通知和失败补偿链路 |
| 线上排障 | 能排查 CPU 高、内存涨、接口慢、线程池耗尽、消息堆积 | 只看日志,不看指标、线程栈、慢 SQL 和链路追踪 | 为模块建立排障手册和关键指标面板 |
| 系统能力 | 核心问题 | Java 高级工程师要能输出什么 |
|---|---|---|
| 业务状态流 | 订单、支付、审批、账户、库存这些对象从什么状态到什么状态,谁能改变它 | 状态机、关键事件、异常分支、人工干预点、审计记录 |
| 系统边界 | 哪些逻辑属于一个模块,哪些应该拆出去,哪些不该拆 | 模块边界图、依赖方向、接口契约、拆分成本和不拆的理由 |
| 数据一致性 | 哪里要强一致,哪里可以最终一致,失败后怎样恢复 | 事务边界、幂等键、消息确认、补偿任务、对账方案 |
| 异常补偿 | 超时、重复、部分成功、下游失败、人工改数时怎么兜底 | 失败矩阵、重试策略、补偿流程、重放方案、人工处理台账 |
| 性能容量 | 瓶颈在 CPU、数据库、缓存、锁、网络、下游,还是业务流程 | 容量估算、压测计划、P95 / P99 指标、限流和扩容策略 |
| 稳定性治理 | 上线后怎么观测、灰度、回滚、降级和复盘 | 监控指标、告警阈值、灰度策略、回滚脚本、Runbook |
| 架构演进 | 老系统怎么改,既不让业务停,也不把团队拖死 | 分阶段迁移计划、兼容层、双写 / 回放 / 校验、风险闸门 |
| 阶段 | 会先看什么 | 能继续追问什么 | 输出形态 |
|---|---|---|---|
| 第一阶段 | 代码有没有异常、接口有没有报错、SQL 有没有写错 | 这个 bug 怎么修掉 | 修复提交、基础测试 |
| 第二阶段 | 线程池、慢 SQL、Redis、MQ、下游接口、日志和链路追踪 | 这个模块为什么慢,怎么优化和监控 | 排障结论、优化方案、指标面板 |
| 第三阶段 | 订单链路是否过长、同步调用是否过多、库存支付优惠券是否耦合太死 | 是否改异步,用户是否接受处理中,一致性、补偿、客服和财务如何兜底 | 系统改造方案、状态流、补偿对账、灰度回滚和运维责任 |
| 误区 | 为什么危险 | 更好的判断 |
|---|---|---|
| 把高级等同于懂更多框架 | 框架堆多了,系统边界和数据流仍然可能是乱的 | 高级在于能解释取舍和长期维护成本 |
| 所有问题都上微服务 | 服务拆开后,数据一致性、发布、监控和排障都会变复杂 | 先判断模块化单体是否足够,再看拆分收益是否大于治理成本 |
| 所有慢都靠缓存 | 缓存会引入一致性、穿透、雪崩和脏数据问题 | 先定位瓶颈,再决定缓存、索引、异步、批处理或流程调整 |
| 只做技术方案,不管业务兜底 | 系统失败后往往需要客服、财务、运营和人工流程接住 | 方案必须包含异常状态、人工处理、对账和审计 |