这些文章来自不同时期留下的学习笔记、项目记录和工作复盘。它们按经历的先后关系重新编排,记录关注点怎样从完成具体任务,逐渐扩展到系统、业务、协作和团队责任。
这不是一套职业方法论。处在不同阶段的人,可以从与自己当前问题最接近的部分开始读。
01
进入行业
从学生进入真实的软件团队,开始建立工作和学习的方法。
02
独立解决问题
从完成开发任务,走向处理线上故障、系统风险与现实约束。
- 06 第一次遇到 JVM Crash 一次线上服务反复崩溃的排查记录:从止损、JVM调参和升级JDK,到最终沿着崩溃文件定位序列化问题。
- 07 机器资源没有耗尽,系统为什么处理不过来 一次监控数据处理瓶颈的排查:CPU和内存仍有余量,真正限制吞吐的是单个分析节点的结构。
- 08 监控不是安装一套工具 从指标采集到报警责任人和故障处理流程,监控能力并不由工具数量决定。
- 09 一次旧系统的平滑迁移 在不能要求所有客户端同步升级的情况下,通过服务端双写、预计算、批量和分片完成监控存储迁移。
- 10 开源软件出了问题以后 企业使用开源软件遇到缺陷时,仍需完成证据收集、最小复现、风险判断,并在升级、绕过、修复和替换之间选择。
- 11 上线清单里应该有什么 代码完成只是上线准备的一部分。配置、数据、依赖顺序、监控和回滚共同决定一次发布是否可控。
- 12 技术评审不只是评审技术 技术评审除了检查方案,还承担需求确认、信息同步、风险暴露和保留决策背景的作用。
- 13 技术方案里的妥协 以一次动态表单设计为例,讨论配置、模板、硬编码、交付时间与长期维护之间的实际取舍。
- 14 不要急着批评一套旧系统 新人往往更容易看见旧系统的问题,也最容易忽略这些问题形成时的历史、组织和交付条件。
03
理解业务与系统
技术判断离开单一的代码尺度,开始面对业务、流程、组织和历史条件。
- 15 从 ToC 到 ToB 从面向消费者的系统转向企业软件后,我对系统复杂度的理解从流量和性能,扩展到角色、流程、权限和组织差异。
- 16 定制化的代价 一次企业系统定制化改造带来的不只是开发工时,还包括模型、测试、排查和长期维护复杂度。
- 17 “业务优先”的边界 业务优先不等于绕开协作流程。结合工作中的补位、返工和技术债务,讨论技术团队应该把主动性用在什么地方。
- 18 一个长周期项目是怎样失控的 长周期项目通常不是突然延期,而是在需求变化、依赖等待和局部进度正常的情况下逐渐偏离。
- 19 一次复盘应该还原什么 复盘不应只用已知结果追问个人责任,还需要还原当时的信息、约束、参与者和已经接受的风险。
04
承担结果
工作对象从个人任务扩展到结果、团队、平台与价值表达。
- 20 从完成任务到承担结果 回看自己如何从按要求完成开发,逐渐开始关注需求目标、上下游协作、上线效果与长期维护。
- 21 成为负责人以后 从个人开发转向小团队负责人后,工作对象从代码扩展到目标、信息、协作和团队能力。
- 22 代码评审不能依赖一个人 负责人集中评审可以快速统一代码标准,也可能逐渐成为团队瓶颈。代码质量最终需要成为团队共同能力。
- 23 我做面试官时关注什么 面试不是知识竞赛。相比记住多少答案,我更关注候选人如何描述经历、分析问题和确认自己的边界。
- 24 平台能力不是做出来就有人用 技术平台除了建设功能,还要处理接入成本、默认配置、文档和推广,否则能力很难转化为实际覆盖。
- 25 技术工作为什么难以被看见 功能上线容易展示,稳定性、风险控制和长期维护则常以‘什么都没有发生’体现,需要用问题和结果准确说明。
- 26 几次述职之后 回看2019年至2022年的几份述职材料,记录自己如何从罗列项目和技术指标,逐渐开始说明结果、取舍与不足。
05
重新理解成长
当能力和责任持续增加,重新判断忙碌、产出与阶段感。