目录
2789 字
14 分钟
程序员恋爱与生活日常:代码之外的翻车现场

21:40 的一次误报#

21:40,对方放下包,说:「今天真的好累。」

你从屏幕前抬起头,认真地问:「具体是哪一块累?工作量大,还是沟通成本高?有没有什么触发点?」

空气安静了两秒。

你并没有恶意。你甚至觉得自己很关心——你在主动收集信息,试图定位问题。但在对方听来,这句话的意思是:你的疲惫需要先通过我的验收,才值得被安慰。

这不是一个「程序员不懂浪漫」的段子,而是一次模式误用:你在一个需要陪伴的场景里,启动了排障流程。

一、翻车现场图鉴#

「你能不能说得具体一点?」#

对方说「你根本不在乎我」。你的第一反应是:「这个结论的样本量有多大?能举三个具体例子吗?」

从工程角度看,这个要求无懈可击:没有可复现步骤的 bug 报告,确实很难修。但从关系的角度看,你刚刚把一句求助,退回成了一份不合格的需求单。

「那你当时应该……」#

对方吐槽老板、同事,或者一段糟糕的对话。你听了一半,开始分析:「你这里其实可以换一种说法」「你当时要是不接这个活就好了」。

你说的可能全对。但对方来找你,通常不是缺一个技术顾问,而是缺一个和自己站在同一边的人。顺序错了,再对的建议也会被听成「这是你的问题」。

「我看看排期」#

「这个周末陪我吧。」「我看看排期,周六下午有个线上问题要跟。」

这句话在工位上叫「负责任」,在家里叫「我需要申请资源」。亲密关系不是甲方乙方,没有 story point,也不该有 SLA。把陪伴排进 backlog,本身就是一种回答。

「我不是设了提醒吗?」#

纪念日的提醒在 23:50 响了。你打开外卖软件,在零点前下了一束花,然后在心里给自己记了一次「按时交付」。

技术上完美:任务触发、动作执行、截止时间前完成。体验上归零:对方等了一整天,等到的不是花,是一个被日历催出来的任务。

自动化能替你记住,但替不了你在意。

「你先冷静一下」#

吵架时说出这五个字,约等于在线上事故里对用户说:「你先别报错。」

情绪不是噪音,它是系统在告诉你「这里有问题」。让报警器闭嘴,问题不会消失,只会换一个更大的报警器再响一次。

二、段子的共同点:Debug 模式开进了生活#

上面这些场景,单看都像「直男/直女笑话」,但它们其实是同一种迁移失败:把调试模式用在了不支持调试的场景里。

调试模式的流程是:

  1. 收集信息;
  2. 定位根因;
  3. 给出修复方案;
  4. 验证问题是否消失。

它之所以在代码里有效,是因为代码世界有一个前提:问题是客观的,目标是消除不确定性。

而关系里的很多时刻,前提不一样。对方说「我好累」,不是在提交一个待修复的缺陷,而是在发出一个连接请求。此时最有效的回应往往不是「为什么累」,而是「先坐下,吃点东西」;不是「你应该怎么做」,而是「这确实很难受」。

这不是说关系里不需要解决问题。关键在于先判断这件事可不可控,再决定给什么支持。

心理学里有一个不算新的结论:在伴侣支持研究中,支持行为的效果与压力事件的可控性有关。Cutrona 和 Suhr 在 1992 年的研究里发现,对于可控的压力事件(比如一个可以着手解决的任务),偏向问题解决的支持更让人满意;对于不可控的事件(比如已经发生的损失、无法改变的人际关系),情绪支持更重要。

翻译成人话:

  • 对方遇到一个能动手解决的问题 → 一起想办法,是对的;
  • 对方遇到一个只能承受的事情 → 先陪着,别急着修。

现实中最常见的翻车,是在不可控的事情上疯狂给方案,在可控的事情上只会说「抱抱」。两种都省事,两种都没接住。

还有一个更简单的操作,可以放在所有分析之前:

「你是想让我听一听,还是想一起想办法?」

这句话的价值不在于措辞,而在于它把选择权还给了对方。未经请求的解决方案,常常会被听成「你的感受不重要,问题才重要」。

另一个有用的翻译练习,是把「对人的判决」改成「对行为的描述 + 自己的感受 + 一个具体请求」:

❌ 你根本不在乎我
✅ 这周有三次你回家后直接打开电脑,我一个人吃完了饭。
我有点失落。下次能不能先陪我十分钟再开始?
❌ 你从来不听我说话
✅ 刚才我说到一半,你看了两次手机。
我想把这件事说完,可以吗?

这不是话术模板,重点在于:判决无法回应,请求可以。 「你从来」是在给对方定性,「刚才」是在描述一件双方都能看见的事。

三、可以带回家的五个工程习惯#

工程思维不是原罪。有些习惯迁移过去,效果出奇地好。

工程习惯带回家之后边界
写清楚验收标准提前对齐「怎样算过得好」:家务怎么分、节日怎么过、多久见一次朋友别把它变成 KPI;亲密关系不是季度考核
自动化日历、提醒、共享清单、定期订花自动化的是「记得」,不是「在乎」;没有心的准时,仍然扣分
无责复盘争执过后聊「这次是什么触发的」,而不是「这次是谁的错」要在双方都冷静、且对方愿意聊的时候进行
灰度发布把关心拆成小步、持续交付,而不是憋一个年度大招惊喜可以有大招,但日常不能长期缺席
可观测性用笔记记住对方提过的小事,而不是赌自己的脑子记录是为了更好地回应,不是把对方变成监控对象

无责复盘这一条,工程界已经有很成熟的实践。PagerDuty 的 blameless postmortem 原则说得很清楚:复盘的目标是改进机制,不是寻找责任人。把它搬回家里,意思不是「吵架也要写文档」,而是在事情过去之后,讨论下次怎么做得更好,而不是重新审判一次谁更糟。

再补充一条没有边界的:不要把重要对话放在深夜、饥饿、疲惫或者刚吵完架的时候。 这相当于在生产环境的高峰期直接改配置——不是一定会炸,但完全没有必要冒这个险。

四、必须留在工位的五个习惯#

1. 根因执念#

不是所有情绪都有 root cause。有时候只是没睡好、天气差、激素波动,或者单纯地今天不顺。你追问「到底是为什么」,对方可能真的答不上来——这不代表对方在隐瞒,只代表人不是一个所有状态都能解释的系统。

2. 「可复现」要求#

情绪不提供复现步骤。你要的是证据,对方要的是人。把「你每次都这样」和「你举三个例子」放在一起,赢的是辩论,输的是关系。

3. 「我早就说过了」#

这句话在 code review 里叫「有先见之明」,在关系里叫「补刀」。事情已经发生,正确不再是稀缺资源,体面才是。

Gottman 的研究把批评、蔑视、防御和冷战称为亲密关系里的「四骑士」。它们危险的地方不在于某一次出现,而在于会形成循环:一方防御,另一方更用力地批评,然后双方都开始冷战。而「我早就说过了」恰好同时踩中批评和防御两脚油门。

4. 静默重构#

你默默改了周末计划、默默退掉了旅行、默默决定今年不过纪念日——然后默认对方应该知道。代码里未经通知的行为变更叫 breaking change,关系里也一样。区别是,代码有 changelog,人没有。

5. 「在我机器上是好的」#

你觉得「我已经很关心了」,对方觉得「我完全没感受到」。这不是谁在撒谎,而是两套环境观测到的不是同一个东西。感受不需要被证伪,它需要被听见。

五、一份不太严肃的自检清单#

下班回家前,或者吵架之前,可以问自己几句:

  • 我现在是想解决问题,还是想证明自己是对的?
  • 我上一次认真说「谢谢」,是什么时候?
  • 我有没有把「记得」外包给日历,却忘了「在意」外包不出去?
  • 对方说话的时候,我的手是不是还在键盘上?
  • 我是不是把最好的耐心给了同事和陌生人,把最差的留给了最亲近的人?
  • 如果今晚只能做一件事,我是选择再修一个 bug,还是选择好好吃一顿饭?

最后一条不是反问。很多年后你不会记得那个 bug 的堆栈,但会记得那顿饭有没有吃完。

写在最后#

代码世界给了我们很多安全感:可以回滚、可以重试、可以在 staging 里先试一遍、可以把失败控制在一次部署里。

关系没有这些。

说出去的话不能 git revert;信任是有状态的,不能靠重放请求恢复;同一条消息在昨天和今天发送,返回的结果可能完全不同。它更像一个长期运行、没有测试环境、还带着大量历史数据的生产系统——你能做的不是每次出事都去排障,而是平时把它维护好。

所以,下次对方说「我今天好累」,最好的回答可能不是「具体哪一块累」,而是:

先过来,吃点东西。

如果非要写代码,那就把 git commit 留到明天。今晚的 on-call,不产出 commit。

参考来源#

延伸阅读:本博客里还有几篇讲「代码之外」的文章——《如何向爸妈解释你的工作:为什么你妈至今以为你在修电脑》、《摸鱼的艺术:办公室生存指南》、以及《程序员与咖啡因:续命水的一百种喝法》。

程序员恋爱与生活日常:代码之外的翻车现场
https://www.hehonglei.cn/posts/programmer-love-and-life-bloopers/
作者
Honglei He
发布于
2026-10-17
许可协议
CC BY-NC-SA 4.0