中国最难被看见的程序员:稳定性工程师
在很多人眼里,程序员的分工很清楚:前端负责界面,后端负责服务,客户端负责体验,算法负责模型,架构师负责设计。
但在真实的工程现场里,还有一类人长期站在系统风险的前线:负责稳定性的人。
他们可能叫 SRE,可能叫高可用负责人,可能在平台团队,也可能分散在各个业务团队里。名字不同,处境却很相似:系统不出事时,没人知道他们做了什么;系统一出事时,所有人都会问他们为什么没兜住。
这就是稳定性工程师最难的地方。
一、稳定性的“神医悖论”
稳定性工作有一个天然悖论:做得越好,越不容易被看见。
这很像“神医”的故事。真正厉害的医生,往往是在病还没有发作之前就把问题处理掉;但因为病人没有经历痛苦,也就很难意识到这次预防的价值。反而是等到病情严重之后再出手的人,更容易获得“妙手回春”的名声。
工程系统也是如此。
一次容量风险被提前发现,一次上线事故被灰度拦住,一次依赖故障被降级机制吸收,一次数据异常被监控及时报警。这些事情如果处理得好,最终呈现给外界的结果只有一个:什么都没有发生。
问题也恰恰在这里。
业务增长、功能发布、收入提升,都是看得见的成果;但一次没有发生的事故,很难被写进周报,也很难被折算成明确的绩效。
稳定性工程师要证明自己的价值,本质上是在证明一件没有发生的事情本来会发生。
二、责任很大,权限却常常不够
稳定性岗位的危险,不只在技术复杂度,更在组织关系。
业务团队希望快速上线,因为上线带来增长、转化和阶段性成果。稳定性团队则必须不断提醒风险:容量够不够,链路有没有兜底,压测有没有做,回滚是否可靠,监控是否覆盖,依赖失败后系统会不会雪崩。
这些提醒在事故发生前,往往显得“不够业务导向”;但事故发生后,又会立刻变成“为什么没有提前拦住”。
这就是典型的权责倒挂:
- 业务团队获得快速交付的局部收益。
- 稳定性团队承担系统故障的外部成本。
- 决策权分散在多个团队,背锅压力却集中在兜底的人身上。
稳定性工程师不是不想把系统做稳,而是很多时候他们只能提出建议、推动规范、补齐工具,却未必真正拥有最终决策权。
三、越救火,越没有时间防火
很多公司口头上重视稳定性,实际使用方式却很粗暴:哪里报警去哪里,哪里故障补哪里,哪里复盘追哪里。
于是稳定性团队很容易陷入一个循环:
- 线上出问题,先救火。
- 救完火,马上补复盘、补监控、补临时方案。
- 还没来得及做系统性改造,下一个问题又来了。
- 长期忙于救火,系统越来越难彻底变好。
稳定性建设需要时间,需要工具化,需要平台化,也需要业务团队配合。但在许多组织里,它经常被当成一种“随叫随到”的保障能力。
这类团队表面上像工程团队,实际运行起来却像技术物业:系统哪里漏水,就赶紧去堵;业务哪里着急,就先让路;等真正需要投入治理时,又会被问“这个事情能不能晚点做”。
四、自动化越成熟,剩下的问题越危险
稳定性工程师当然会做自动化。
自动巡检、自动扩缩容、自动熔断、自动告警、自动恢复、自动化发布、自动化回滚,这些都是稳定性建设的重要方向。
但自动化也有一个残酷现实:简单问题被机器处理掉以后,留下来的往往是更复杂、更罕见、更难定位的问题。
也就是说,自动化并不会让人的压力完全消失。它只是把低级重复问题过滤掉,然后把最棘手的异常留给人。
真正需要人在半夜接手的问题,通常不是“重启一下就好”的小故障,而是多系统耦合、链路级雪崩、数据不一致、依赖异常、流量突刺、发布回滚失败等高压场景。
稳定性工程师被自动化解放了一部分时间,也被自动化推向了更高难度的战场。
五、值班消耗的不只是时间
外界常常低估值班的成本。
值班不是“手机响了再处理一下”那么简单。真正的值班意味着持续警觉:睡觉不能完全放松,出门要带电脑,手机不能静音,网络不能断,脑子里要一直留一根线。
这种压力短期看不明显,长期会变成稳定的精神消耗。
尤其是在大促、迁移、发布窗口、核心链路改造期间,稳定性工程师面对的不是单点任务,而是一整套风险集合。每一次报警都可能只是误报,也可能是事故前兆;每一次异常曲线都可能很快恢复,也可能马上扩大。
长期处在这种状态里,人会被磨损。
六、复盘如果和处罚绑定,就很难真正无责
技术团队都喜欢说“无责复盘”。
这个理念本身是对的。事故复盘的目的应该是找到系统性原因,修复流程、工具、架构和协作机制,而不是简单寻找某个倒霉的人。
但现实里,一旦复盘和绩效、处罚、问责强绑定,无责就很容易变成口号。
团队会本能地保护自己,信息会变得不完整,讨论会从“系统为什么会允许这个问题发生”滑向“这一步到底是谁操作的”。最后,复盘不再是改善系统的过程,而是寻找责任归属的过程。
对稳定性工程师来说,这尤其痛苦。因为他们既要推动真实复盘,又经常处在最容易被追问的位置。
七、懂得很多,却不容易被市场准确理解
优秀的稳定性工程师通常是广谱型人才。
他们要懂网络、操作系统、数据库、中间件、缓存、消息队列、容器、云服务、分布式系统、监控体系、发布系统、容量规划、故障演练和应急响应。
但这些能力在简历和绩效里并不总是好表达。
业务工程师可以写“上线了某个核心功能,带来多少用户增长”;算法工程师可以写“模型指标提升了多少”;前端工程师可以展示交互和体验改造。
稳定性工程师写什么?
“避免了若干次潜在事故”“提升了系统可观测性”“完善了应急机制”“降低了故障恢复时间”。
这些当然很重要,但如果组织没有成熟的度量方式,它们很容易显得抽象。
八、AI 让问题变得更复杂
AI 正在提高代码生产效率,但它并不会自动承担线上责任。
上游生成代码更快,意味着变更更多;变更更多,意味着审查、测试、监控、灰度和回滚压力都会增加。写代码的人提效了,负责兜底的人却未必同步减负。
更现实的问题是:AI 生成的代码可能能跑,但未必符合系统长期可维护性要求;它可能能通过单元测试,但未必理解生产环境里的依赖关系、流量形态和故障边界。
当更多代码进入系统,稳定性工程师要面对的不是“代码多了”这么简单,而是系统复杂度和不确定性的上升。
所以,AI 时代并不会让稳定性岗位消失。相反,稳定性治理、变更管控、可观测性、自动化验证和事故响应会变得更重要。
九、稳定性不是成本中心,而是风险资产管理
很多组织低估稳定性,是因为它常常被当成成本。
但从本质上看,稳定性不是成本中心,而是风险资产管理。它管理的是用户信任、品牌信用、交易连续性、数据安全、员工精力和业务韧性。
一次严重故障的损失,可能远远超过长期稳定性建设的投入。只是因为这类损失没有每天发生,很多人就会误以为它离自己很远。
稳定性工程师真正要解决的,不只是技术问题,还有一个管理问题:如何让“被避免的损失”变成可度量、可讨论、可被组织承认的价值。
这需要更成熟的指标体系,例如:
- 故障发生频率。
- 平均恢复时间。
- 变更失败率。
- 告警有效率。
- 核心链路可用性。
- 容量水位和风险趋势。
- 演练覆盖率。
- 高风险变更拦截数量。
只有当这些指标被纳入组织决策,稳定性工作才不会永远停留在“出事才想起”的位置。
结语
稳定性工程师的难,不只是技术难。
他们难在功劳不显眼,责任却很显眼;难在问题被提前解决后,很少有人记得风险曾经存在;难在系统越复杂,他们越需要兜底,但组织未必给出同等的权限、资源和认可。
真正成熟的技术组织,不应该只奖励“创造变化”的人,也应该奖励“让变化不失控”的人。
因为业务可以跑得快,前提是系统还能稳稳接住它。