导读:传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码
小李入职一年多,曾经因为代码漏水,被主管老李痛批了。然后旁边的研发妹子就说到参照于一个来自《程序员修炼之道》书中的一个故事。传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码 。许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。如果没有玩具小鸭子也可以考虑向其它东西倾诉,比如桌上的花花草草,键盘鼠标、程序员鼓励师等。其实很多程序员,包括很多其他的脑力劳动者,都有过类似的经历。当我们遇到一个Bug或疑难问题被卡住,迟迟没有解决思路,最后都要脑袋炸掉的时候,有的人就放弃不搞了,然后就摔门出去逛大街了,或者有时随便拉个人过来,和他 blablabla 讲一通。很多时候我们给别人讲着讲着,就有可能突然灵光一闪,一下子就找到了解决办法。这其实背后隐藏的原理也很简单,就是通过做另一件事情来打乱现在无法走出的困境,从而走出原有的思维陷阱,抽身而出。而这个时候,我们其实并不一定要和一个真正的人进行倾诉,还可以向其他某种物品进行倾诉。
强迫自己把遇到的问题,详细地解释出来(一定要说出来),在你讲解倾诉的过程中,解决问题的灵感可能就来了。类似的,有一种现象叫做cone of answers,这是一个常见的现象。你的朋友跑来问你一个问题,但是当他自己把问题说完,或者说到一半的时候就想出了答案走了,留下一脸茫然的你。相似的概念还有不少,例如自白调试、纸板程序员或程序员的假人、想出脑外等等。总的来说,在你试图表述自己的想法的过程中,自然地在促使自己去整理思路,重新考虑问题。在教育行业里叫“教学相长”,在自学领域里叫“费曼学习法”。
原因是纯思维是不可靠的(左脑的解释功能太强大,没逻辑也可能被解释成有逻辑)。
可靠性排序:梦中的思维<清醒的时候个人思维<个人用语音表达出来<个人能实践出来<多人能实践出来。说的时候,大脑就会对自己的话进行思考判断。很容易发现逻辑漏洞。当然,也会存在“睁眼说瞎话”的情况。所以还是需要实践来验证。但是如果这个逻辑错误太隐蔽,自己的实践都可能欺骗自己(太想成功,先入为主的太严重)。所以科学家需要把自己的实验方案发表出来,让别人复现,来再次验证自己的想法。小黄鸭调试步骤同样适合产品经理,那这个“小黄鸭调试法”具体该怎么用呢?- 首先找一只玩偶鸭子或其他任何东西或人,至于你怎么找到,办法有很多,可以去借、去偷、去抢、去买、去自己制作……反正你要搞到一个鸭子;
- 然后把这个玩偶鸭子放在你的面前,标准做法是放在你的桌子上,电脑显示器旁边,或是键盘边,反正是你的跟前,面朝着你;
- 对着那只鸭子,把你产生bug的代码,一行一行地,耐心地向这只鸭子解释。记住,这是解释,你需要认真地出你的想法、思路、步骤等;
- 当你向这只始终保持沉默的鸭子解释代码的过程中,你会发现你的想法、观点、或思路,可能和实际的代码发生了偏离,于是你就可能突然就找到了代码中bug产生的原因了,从而想出解决办法;
- 最后,你还要脸皮厚一点,对同事投来的看精神病人的目光直接选择无视即可。
只要你按照壹哥上面说的步骤去做,神功即可大成!切记切记!!!