我,10年程序员,离职交接是这么做的
1. 为什么离职交接如此重要作为一个在代码堆里摸爬滚打了十年的老程序员我见过太多因为交接不当引发的血案。最夸张的一次是前同事离职时只留下一句代码在服务器上结果新接手的团队花了整整两周才理清项目结构期间线上系统还因为误操作宕机了8小时。这不仅影响团队效率更会消耗你在行业里积累多年的专业口碑。程序员的工作本质上是知识密集型劳动我们每天产出的不只是代码更是一整套解决问题的逻辑链条。完整的交接就像给代码世界绘制一张藏宝图需要标注清楚三个关键坐标技术资产代码/服务器、知识脉络业务逻辑、人际关系协作网络。我习惯把交接清单分为四大模块源码层、基础设施层、协作层和文档层每个模块都有必须移交的技术遗产。2. 源码交接的隐藏技巧2.1 代码仓库的终极清理提交代码前我总会做三件事首先运行git status --ignored检查是否有漏提交的文件曾经就遇到过测试图片没提交导致页面404的尴尬其次用git rebase -i整理提交记录把修复bug、临时修改这类含糊的注释重构成有意义的描述最后给关键代码添加交接注释比如# [交接注意] 此缓存机制与订单超时相关 # 修改后需同步更新redis_cleaner服务 def update_order_cache(): ...特别提醒要检查.gitignore文件有次发现前同事把数据库配置文件也ignore了导致测试环境始终连不上数据库。对于SVN仓库记得清理.svn目录外的零散文件我见过最离谱的情况是有人把node_modules也提交了...2.2 容易被忽视的脚本文件除了主项目代码这些角落最常出问题部署脚本特别是Jenkinsfile中的硬编码IP数据库迁移脚本检查是否有未执行的Flyway/VLiquibase脚本Crontab任务用crontab -l cron_backup.txt导出本地工具脚本比如自动生成测试数据的Python脚本去年我们有个定时统计报表的shell脚本就因为没交接直接导致月度财报延迟。现在我会用tree -I node_modules|.git project_structure.txt生成项目结构文档标注每个目录的用途。3. 服务器与数据库的死亡陷阱3.1 权限交接的防坑指南服务器权限就像核按钮交接不当随时引爆。我创建的检查清单包括SSH密钥对特别是跳板机配置数据库账号区分读写权限云平台IAM权限AWS/Aliyun的RAM账号第三方服务Token如短信网关的API密钥曾经有同事离职后我们才发现生产环境的Redis密码只有他知道。现在我会用openssl rand -base64 32生成新密码并记录到公司的密码管理器同时准备两套方案立即生效的临时密码和30天后生效的正式密码。3.2 数据库的暗礁标注数据库交接要特别注意这些点存储过程与触发器用SHOW CREATE PROCEDURE导出特殊字段约束如非空的允许空字符串敏感字段加密规则我们有个表用AES加密但没留IV记录跨库关联有次发现用户数据居然分散在三个库我习惯用以下SQL生成数据库文档SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA your_db;4. 人际网络的隐形资产4.1 对接人矩阵模板大公司里最耗时的往往是找对接人。我做了一张包含这些信息的表格角色类型姓名联系方式紧急程度备用联系人支付系统接口人王伟企业微信002P0李娜运维值班张强值班电话#811P1自动工单特别提醒要标注每个人的响应习惯比如测试组的Linda喜欢邮件沟通而非即时消息。跨部门对接最好保留双方领导的联系方式有次我们和财务系统联调全靠前同事留的财务总监直线电话才没卡流程。4.2 知识传递的三种方式比起文档我更推荐这些方式录屏操作用OBS录制部署流程注意要包含错误处理场景结对编程至少安排2次代码走查会议故障模拟故意制造一个典型bug让接手人排查上周刚帮朋友公司做了交接审计发现最有效的知识传递发生在咖啡间的白板前——手绘系统架构图时那些即兴的问答往往能揭示文档里没有的隐性知识。5. 文档体系的降维打击5.1 必交的七类文档除了常规的技术文档这些最容易遗漏故障应急预案包括回滚checklist技术决策记录ADR为什么选MongoDB而非MySQL技术债务清单标注每个债务的利息比如现在不修以后要多花3天领域术语表我们项目把用户叫乘客的历史原因测试数据字典为什么用户ID从10000开始监控指标说明Prometheus里那个error_rate的含义奇怪的workaround那个必须每月重启一次的service建议用Markdown编写并托管在内部Wiki我最近交接时还加了段语音说明用Anchor.fm录制了15分钟的架构演进史。5.2 文档的保鲜秘诀所有文档顶部我都添加这段元信息最后验证时间2023-08-20 验证人李四 待更新项 - [ ] 新采购的短信接口文档 - [ ] 客服系统v2的调用方式同时建立文档健康度指标比如代码注释与提交记录的比例理想值1:5文档引用次数被其他文档链接的数量最后访问时间超过3个月未查看需复核6. 个人设备的清理艺术6.1 Windows电脑的深度清理如果是公司电脑我会按照这个顺序处理浏览器数据不仅清除缓存还要检查已保存的密码chrome://settings/passwordsSSH配置删除.ssh目录下的config文件和known_hosts开发环境变量清理PATH中的个人路径IDE历史记录特别是JetBrains系列的项目打开记录Docker镜像docker system prune -a --volumes有个同事离职后接手的同学发现VSCode里保存的所有API测试请求都带着生产环境token...6.2 Mac设备的特别注意事项除了常规清理还要重置Keychain中的开发证书删除~/Library/Developer/Xcode/DerivedData清理brew安装的软件包brew list brew_list.txt检查Time Machine备份是否包含公司数据我习惯用tree -a -L 3 ~ home_dir.txt生成家目录快照方便IT部门核查。7. 交接后的优雅退场正式离职前两周我会主动做这些事发起一次架构评审会邀请相关团队提问创建交接问答文档记录所有答疑过程设置自动转发规则把与自己相关的邮件转发给接手人在README.md添加交接完成声明交接状态已完成2023-08-20 当前负责人张三 遗留风险 - 订单模块的分布式事务尚未完全验证 - 与物流系统的心跳机制需要优化最后别忘了给协作过的同事发封感谢邮件我通常会附上自己的个人联系方式公司邮箱一般会在离职后冻结。有次前东家的服务器突发故障幸好他们还存着我的手机号十分钟的电话就解决了问题——这既是职业操守也是给自己留条后路。