为什么有时不考虑错误会帮助您解决它?[关闭]


12

昨天我花了很大一部分时间来修复一个我认为微不足道的错误。我绕圈转,不知道哪里出了问题。重写大部分代码。正在检查SO。仍然没有喜悦。

于是我回家,walk狗,看电视,在我睡觉之前,宾果游戏我意识到我犯的一个明显错误。今天早上,修复大约花了10分钟。

当我在家时,我并没有积极考虑这个问题。然而,摆脱困境使我得以解决。

这不是第一次发生,我知道这是解决编程问题的相当普遍的方法。我什至听说有人梦想着答案。

为什么这样做?

也许更重要的是,对于何时应该解决问题,应该休息多长时间以及问题离开多长时间后才有效,是否有很好的指南?

我想我正在尝试找出如何优化这种潜意识处理(或正在发生的一切)


3
我不确定这仅与编程有关,您可以在许多领域中问同样的问题。
ozz 2011年

1
如果仅认知科学堆栈交换处于beta状态!
马特·艾伦

1
因为思考是一个神秘的过程。
davidk01 2011年


4
这个问题似乎离题,因为它是关于一般问题解决的思考过程的,并不是编程或技术领域所独有的。

Answers:


22

过于关注问题会阻止您退后一步。在调试代码时,您倾向于不必要地重复相同的测试。

您尝试的次数越多,失败的机会就越多,您会感到非常沮丧。压力和沮丧感的增加使事情变得更糟。

这就是为什么很多时候同事可以偶然地看着你的肩膀,并在几秒钟内指出问题(和解决方案)的原因。

他们与您的心理状态不同

我经常尝试在一段时间后停止寻找,并在几个小时后以冷静的心态回来。

但是,最强大的技术只是…… 寻求帮助


9
当您寻求帮助时,您+1倾向于用他人可以理解的术语来定义问题,因此在此过程中您会获得更多的理解。就像当你发布一个Q&A网站或论坛的话题马上你会得到一个想法如何下一步继续..
阿迪亚P

1
以及@AdityaGameProgrammer的+1和+1:描述问题是如此有益,以至于将它描述给一个想象中的人-或一个动作人物或植物或其他东西-经常会触发相同的新思维(正如许多人所描述的) 。
马修·弗雷德里克

6

如果您从事某个问题已有一段时间,那么您的想法将遵循您在开发过程中设置的模式。换句话说,您为设置的心理框架之外的事物开发了临时的“黑点”。

暂时将问题排除在外会帮助您删除此过滤器,并允许您在未安装过滤器的情况下仔细研究。

在此类情况下,通常对我有所帮助的是向其他人解释为什么它应该工作(当它不起作用时)-通常在解释的一半,您会发现推理中的错误或错过了哪一步。

除了在开发工作期间开发心理过滤器外,您的大脑还具有大量的多线程功能,并且经常在无意识的过程中不断处理问题。有时,我会在下午学习所有关于问题的能力,然后将问题搁置一两天,然后再制定解决方案,以此来使用它。


1
我读到某位教授将泰迪熊放在他办公室外面的桌子上的消息。在学生向他求助之前,他们首先要向熊解释他们的问题。
Michael K

看起来很像Jeff Atwood在他的博客blog.codinghorror.com/rubber-duck-problem-solving上写的内容。我实际上认为这可以提供很大帮助。您有多少次对SO提出半个书面问题,然后才知道答案?我有这个相当多的时间:)
雷米

5

我不是心理学家,但是当您过于专注于单个问题(查找错误)时,对于大型系统往往会失去视线。但是答案通常不是在您正在寻找的地方“到那里”,而是在其他地方-您当时看不到。

因此,您真正需要做的就是摆脱困境,从更笼统的角度着手研究整个系统。人们倾向于忽略这一事实,以为“我真的知道它就在这里,我还没有找到它”。它一直在我们所有人身上发生。我什至知道“我无法使用良好的调试技术来发现错误,因此它必须存在于其他地方”,但仍然没有采取正确的措施并休息一下—人类的大脑是如此。有趣的事情。

但是,无论您去洗手间,与同事交谈还是walking狗,它的确对您的工作没有多大帮助。当我被卡住时,我经常去附近的商店买一些糖果,当我把夹克穿上溶液时,几乎每次都会出现。在编程时喝很多水也是一件好事。它迫使您时不时地休息一下,然后去洗手间,这是迫使您跳出战trench的原因。


4

从我的个人经验以及在我训练的初级开发人员中所看到的经验来看,我们都带有假设和期望。我们假设函数x执行任务y以产生结果z。它总是如此,那为什么要改变呢?当我们越来越关注一个问题时,我们假设我们已经涵盖了基础知识,并且这个问题的确确实比我们最初解决这个问题时要复杂得多。将疲倦与不断增加的我们认为是真实的但尚未实际验证的事情清单相提并论,稍后您将为完整的“ WTF”做好准备。

只有在您断开自己与问题的联系之后,这些假设才能被抛弃并追溯。另外,我们通常在刚刚解决的另一个问题的基础上解决问题。我修好了A,但是却弄坏了B,现在我必须修好B。所以我们已经有了前进的动力和方向(这使我们的假设变得更加难以分离)。当您返回解决问题B时,问题A不再是新鲜事物,您无法排除潜在的可能性。您无需先入为主就可以解决问题,这开辟了新的思路和视角。

现在,每当大三学生向我求助时,他们都知道他们必须回答的第一个问题是“您的假设是什么?”。即使尝试回答该问题也可以帮助您摆脱思维障碍。


3

我猜你的大脑就像肌肉一样累了。稍事休息,使其休息一下,加满氧气/燃料等,然后重新开始工作。

当您真正被某物卡住时,散步或运动通常是一个好方法。即使您没有“尤里卡”的时刻,它通常也可以使您回来并采用新的方法来解决问题。


3

我喜欢称它为思想和问题的孵化时间。

您的良心仍然会以非线性方式继续处理问题,超出您的意识。这与午睡之前学习新东西时发生的情况非常相似。您有时间将信息“整理”为可以更灵活地处理的方式。

另外,克服被卡在错误上的另一个有用技巧是自白调试。在这里,您与另一个不了解问题的人联系,然后开始解释问题。我经常发现,只要大声说出问题,便会想到解决方案。

查看以下心理链接: 创造力提示小睡问题


2

“ 有时候我们都会被玫瑰刺伤。可悲的是,当我们 过多地专注痛苦时,我们会忘记玫瑰的美丽。”


2

在淋浴期间,我修复了职业中的几个严重错误。

我不是心理学家,但我想区别是:

  • 坐在电脑前,我看到了源代码,断点,printf输出...

  • 在浴室里,代码在我的脑海中荡漾。


1

我经历过相同的现象,并且将其归因于我花了更多的时间来思考问题(更多的时间意味着大约更遥远的视角)。

但是,我发现还有另一个技巧可以在大多数时候完成相同的任务:向同事解释代码。这不是对他们赶上你的错误,虽然他们可能; 这将迫使退后一步并在所有相关级别上解释代码的逻辑。我从来没有(尽管有合理的警告-样本量是有限的)能够下意识地解决一个逃脱了这种“描述同事”待遇的错误。


1

我最近一直在使用pomodoro技术,这要归功于该网站上某人的建议,并认为它可以很好地回答您关于时间安排和休息时间的问题。基本上,它使您集中精力解决问题25分钟,然后短暂休息3-5分钟,然后每隔4个周期休息一次。他们引用了一些研究来对其进行备份,但有趣的是,我发现这些间隔非常有效。

我曾以为25分钟的跨度会阻止我进入“区域”,人们声称这需要15分钟左右。相反,有了这个时机,我几乎立即进入了区域。我认为这是因为当我知道自己只需要保持25分钟时,使自己不致分心就容易得多。将外部中断推迟25分钟也更容易。当我试图在午餐前努力工作4个小时之前,这非常困难。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.