前段时间在网上看到一个求助帖,内容让很多同行感同身受。
一位程序员朋友刚入职几个月,就成为了某个服务的负责人(owner)。结果在一次操作中,因为巧合触发了旧代码里隐藏已久的 bug,直接导致了一次严重的 S0 级别线上故障。他非常焦虑,不知道这个“锅”到底该不该由自己来背。

针对这种情况,我的看法是:发帖的求助者大概率不需要承担全部责任,但可能需要承担部分责任。
为什么说不必背全责?
主要基于两点:
- 故障根源是历史遗留问题:问题的核心在于那部分陈旧的、充满隐患的“祖传”代码,并非他新引入的缺陷。
- 对新人的客观情况考量:他刚入职、刚接手系统,对这套代码的历史包袱、潜在风险缺乏足够的时间和途径去全面了解。期望一个新人立即掌握所有历史债,是不现实的。
那为什么又说可能要承担部分责任?
这通常与操作流程的规范性有关。如果他的操作行为本身违反了公司既定的运维或发布规范(例如,未按要求进行灰度发布、缺少必要的验证步骤等),那么他可能需要为“操作流程不规范”承担相应的责任。
不过,这里也需要综合考量另一个重要因素:公司对新人的培训和风险告知是否到位。如果缺乏系统的交接和风险提示,那么追责的天平也会有所不同。
原帖的留言区里,能看到一些调侃,比如“想想为什么你能成功入职”、“招你来就是背锅的”等等。这类言论当作段子一笑而过就好,现实中几乎没有公司会专门招聘新员工来背锅,这既不经济也不符合常理。
在相对规范的团队或公司里,遇到此类事故,更普遍的做法是启动事故复盘机制。重点在于剖析流程中的漏洞、加强系统的监控与告警能力、并制定改进措施,防止同类问题再次发生,而非简单地追究某个人的责任。这种系统性的改进思路,也是现代运维与测试实践中推崇的理念。
PS:不得不说,原帖中“一坨服务”的“坨”字用得极为精妙,生动形象地描绘出了那种面对混乱、臃肿、难以维护的代码库时的心情。你们觉得呢?

在云栈社区,我们也经常讨论类似的工程实践与职场问题。面对历史遗留系统,你有什么好的应对策略或难忘的经历?欢迎分享。
|