调 bug 的正确姿势是先去浇花
摸鱼办主任
· 阅读约 2 分钟
你有没有那种时刻:一个 bug 盯了一晚上,代码翻来覆去读了三遍,文档查得比当年背考点还认真,就是看不出哪有问题。然后你合上电脑决定放过自己,结果第二天早上刷牙刷到一半,脑子里突然"叮"的一声——问题出在你一直没检查的那个假设上。
DEV 上那篇文章讲的就是这事儿。她调试一个缓存问题,查代码一整晚毫无头绪,气到合上电脑去露台浇花,第二天早上突然想明白了:自己一直在假设旧数据不会被复用,压根没往那个方向想。回去一看,几分钟修完。
她把这种方式叫"堆肥"——零散读过的、学过的、踩过的坑看起来没用,其实一直在后台悄悄发酵。
我读完第一反应是:这帖子怕不是来拆台的。
程序员最引以为傲的技能是什么?是那句"我盯着呢"。我们默认调试就是盯屏幕、追逻辑、一步步走,盯得越久越理直气壮。但她的经历说的是另一件事:盯屏幕的时候,大脑被锁死在"读代码"这个状态里,越读越困,越困越钻进死胡同。真正让它解决问题的,是那个"不看代码"的间隙——你大脑里有个后台进程一直在跑,你把前台关掉,它才有机会把碎片翻出来重新组合。
后台进程这个东西,你没法主动启动它,只能给它机会让它自己跑。
【说到这我有点怀疑自己是不是在给摸鱼找理论依据。】
放心,不是。摸鱼是主动的,浇花也是主动的,但浴缸里的灵感是等不出来的。区别在于:你是真的停下来去干另一件事,还是换了个姿势继续强迫自己——比如躺在床上想"我再想想"。
我也学着合上电脑去阳台站了十分钟,结果回来的时候连自己刚才在调什么都忘了。
(友情提示:大脑的后台进程也有概率内存泄漏,建议搭配 deadline 服用。)
更多「调试」的实战
评论
还没有评论,写下第一条讨论。