本文以常见的互联网公司敏捷开发方式为例, 简要说明一个需求迭代过程中所需的各种能力.
阶段一: 方案设计
- 开发需求文档的理解(抓住重点, 主要关注数据的流向, 从哪里来到哪里去?)
- 现有工程代码梳理, 快速定位代码所在(数据流向)
- html页面/app(http接口)–>chrome开发者工具/抓包工具–>http协议–>nginx–>java的Controller–>db
- uml图绘制: 流程图, 用例图, 时序图等(非必备)
- 服务间交互方式选型, 各种交互方式的适用场景和优缺点(rpc, http, mq等)
- 数据存储: 建库建表规范, 数据存储选型(db, redis缓存, 内存缓存)
阶段二: 代码开发&自测
- git的常用操作: 分支管理, 代码提交更新, 代码merge, 冲突解决, tag概念等, 提交记录查看等;
- 代码开发: 编码规范, 异常处理, 日志打印规范, 文档注释规范, 关键指标监控埋点, 常量的选择(代码写死, 配置文件配置, 动态配置)
- maven的使用: maven的生命周期, 依赖原理, 版本冲突解决, profile切换等
- 数据库的操作: 增删改查sql,
- 自测调试: 单元/集成测试 (非必备), 本地调试技巧
阶段三: 联调测试
联调(前后端联调, 微服务间联调):
- mock数据
- 接口测试工具postman的使用
测试
- linux开发机ssh登录与配置
- linux下业务日志查看, 开启远程调试端口, 本地ide连接远程机器进行调试
阶段三: 提交测试
本阶段同联调测试, 将代码最终提交给qa同学测试, 期间需要关注qa同学提供的bug并解决
阶段四: 发布上线
- linux下文件的增删改查, vim的简单使用, 进程线程的查看, 机器信息查看(cpu, 内存, 网络状态, 磁盘空间),jvm常用参数的含义
- 熟悉tomcat/springboot部署过程, 启动日志的查看, 启动成功/失败的识别(healthcheck)
阶段四: 线上问题处理
- linux下业务日志查看
- linux下pid的查看, 进程/线程信息的查看
- linux下jdk常用工具: jinfo, jmap, jstack
- 非侵入式调试工具(btrace, Arthas), 性能分析工具async-profile, gc原理及gc日志查看,
内存分析工具mat的使用
其他
此外,除上述的技术硬实力外, 还需要有诸多工作上软实力, 如
- 如何合理拒绝pm的临时需求/需求变更
- 如何和qa搞好关系少提bug
- 个人时间管理
- 协调合作团队, 共同推进项目如期上线