当事情不起作用时应对挫败感[关闭]


62

您曾经尝试实现一些简单的方法,但是由于某些奇怪的原因而无法正常工作。

因此,您尝试一个可能的解决方案,但其他方法不起作用。您一直在尝试不同的解决方法,但是每一次不同的方法都不起作用。

每次距离您更近一步,您也将比解决此问题更一步(或更多个步骤),而现在已经3个小时了,而这本来需要10分钟。而且仍然没有解决。

公司中没有人可以提供帮助,您将把拳头伸到屏幕上。


此时,您非常沮丧,无法再清楚地考虑问题了。此时您该怎么办?或者您可以采取什么措施来避免达到这一点?


3
我认为您和我曾经/曾经有过相同的经历。
AndrewKS,2011年

19
穿上这样,并提供赏金。
JeffO

4
如果就这么简单。这些问题中的一些是许多已解决/未回答/失败的问题。
Aditya P

2
这个问题似乎
不切实际,

我的同样的问题,同样的问题。
安华

Answers:


69

尽管这是一个实际的问题,但它并不特定于编程。但是,恕我直言非常重要,因此在该论坛上应该占有一席之地。

我的建议:休息一下。散步,冥想,睡觉,进行体育活动*-做一些完全不同的事情,以使您的大脑放松并摆脱精神障碍,同时让您的潜意识在和平解决问题上发挥作用。通常,它以惊人的速度提供结果-只需要让您知道它。但是,尽管您的意识在不断地反复重复相同的思想循环,但它无法听其他任何声音。

您可以怎么做才能避免到达这一点?

放松和正念技巧是克服压力反应并使您的思想清晰集中的关键。实践这些确实会有所收获。当某人经历过这些事后,他已经可以注意到压力水平在挫折感得以解决之前就已经上升。然后,您可以中断思想循环,例如深呼吸或进行几分钟的放松练习。这可能是此时所需的全部内容。

*亲吻你的伴侣,爱抚你的宠物-我妻子的建议:-)


12
+1,我们的思维总是试图解决问题,只是因为我们没有自觉地尝试解决问题,我们的思维仍在搅动。这就是为什么您似乎无法记住该名称的原因,一个小时后便无法记住它。并在半夜醒来并解决了一个问题。解释这件事的一本好书是《实用思维与学习:重构您的湿软件
CaffGeek》,2011年

+1无法说得更好。实际上,我走出办公室,离开办公室,到镇上走来走去,给我的妻子打电话,然后回到办公室。几乎100%的时间都有效。
蚂蚁先生

9
并且每天的工作时间不要超过8个小时。您越累,就越容易感到沮丧。
HLGEM 2011年

3
当我休息尿尿时,通常我回到办公桌前就可以解决问题。就像您的潜意识在等待您的意识闭嘴。
barrycarter 2011年

1
@junxiong,即使在时间压力下,也可以使用这些技术,但这需要经验。例如已经沉思多年的人,可以在几分钟甚至几秒钟内控制住自己。但是尝试在时间压力下学习新的东西,尤其是正念是非常困难的。如果所有其他方法均失败,则将其作为重要的课程,并且在截止日期结束后,通过分析您的行为并练习此处或其他答案中提到的一些技巧,开始为下一次危机做准备
彼得Török

35

现在已经3个小时了,这本应该花10分钟。

神奇的词是应该。从你的词汇中删除。

谁说要花10分钟?具体是谁?他们提出索赔的事实依据是什么?

如果您之前已经做过3次,并且每次都接近10分钟,那么您应该有一个理应的基础。

如果您从未做过,那么说应该只是让自己陷入失败。您应该今天停止使用应该


2
当然,有一天您停止工作后已经做了一百万遍很多事情。在某些自动生成的代码中损坏的文件可能会令人沮丧,有时甚至很难调试。我想到的是,当我不小心将两个名称都命名为相同的名称,然后使用重构工具来更改该名称出现的所有实例的时候。我已经用与我的ORM生成的类冲突的类来了几次。做这样的事情,您最好希望自己在办理登机手续方面表现出色。
Morgan Herlocker 2011年

1
@Prof Plum:“我做了几次骨头动作”。优点。这意味着期望值必须包括该脑袋移动的时间。同样,“应该”应包括所有事实,而不应包括“如果一切顺利”的事实,并且不包括“骨头行动”的事实。
S.Lott

22

寻找某人用作探空板

即使没有人确切地掌握您的工作内容,还是经常谈论这些事情是一个好主意。仅仅用某人作为一个共鸣板就可以使您的思维开始转向。您会发现自己正在考虑尝试新事物。这也将减轻您的压力,使您发泄一些并可能结识新朋友。总体上来说,使团队感到舒适的彼此共享和同情也很健康,从而为解决此类问题营造了一种面向团队的氛围。


7
即使该人对您在告诉他的内容一无所知,只是说出来就可以帮助您澄清事情。
迈克尔·布朗

2
@Mike,即使“人”是一个玩具熊,它仍然在案件惊人比例的工作(没有在黑客字典AFAIR这个一些真实的故事)
彼得Török

3
@Mike Brown-参见“橡皮鸭调试”
ocodo

1
橡皮鸭调试?pfft。出于这个原因,我将Debugging Goomba放在桌子上,鸭子对于项目管理方面更好。
glasnt 2011年

是的,我要提到的是...太懒了,无法拉出链接:P
Michael Brown

9

走一会儿,然后做其他事情。睡个好觉,然后早上再解决问题。

另外,不要打自己。您的十分钟估算显然不正确,而且这种情况一直存在。


9

当我达到这一点时,我有几个步骤。通常,如果我花时间退后一步来反思,我可以找出解决方案。

第1步:远离问题,清理头脑。如果您不感到沮丧,请回来,可以焕然一新。

第2步:返回代码,看看是否有任何遗漏的内容。如果您不能正视某人,请有人来第二眼。

步骤3:从公式中删除代码。您要解决的问题是什么?将其写在一张纸或白板上。与某人讨论问题,以征求他们对问题和解决方案的意见。

第4步:联系社区,看看他们是否有解决方案,或者是否有其他人碰壁。

基本上,这些可以概括为“停止黑客攻击并远离代码”。


我一直在使用白板。在调试时可视化非常有用。
Michael K

步骤3被称为更改问题的领域,以查看并行成功是否可以重用。它也被称为使用隐喻。
2011年

2

我想在这里提出一个问题,并请社区帮助您解决。这样压力就小了。


6
有时只写问题就会找到解决方法
JoelFan 2011年

1

我有另一种解决方案- 睡觉

当您对问题感到沮丧时,您将无法轻易摆脱它。因此,如果您累了要解决问题然后入睡,那就更好了。

当您醒来时,您将有一种新鲜的感觉,您可以再次清楚地思考问题。有时候我会做。


别挑剔,但是至少在前面的两个答案中已经提到了这种“不同”的解决方案。
彼得Török

1
我的意思是->不只是休息,散步或睡觉,而是试图解决问题然后再睡觉就变得疲倦。因为当您遇到问题时,您可能不会轻易摆脱它
ruben

1

找到一些有助于建立信心的东西,当我达到这一点时,我倾向于做些自信。这可能是解决数独或Kenken难题,执行一些简单的无意识的管理任务,例如填写我的时间表或出去散步。对于我来说,关键是要对这点小小的分心有一定的成就感,这可以帮助我振作起来,重新回到马匹上,骑进狂野的蓝色峡谷,在那儿混合一些隐喻。

为了避免造成这种情况,我可能建议您采取一些时间装箱策略,这样,如果您认为某些事情要花10分钟,而突然过了一个小时,却没有太多进展,我会停下来稍作休息,而不是试图将我的头撞在墙上。


1

对于这种情况,我有一个特殊的名字:史诗般的编程之战

如果我至少没有与一种特定的编程语言或工具进行过史诗般的编程之战,并且解决了问题,那么我不能对自己说可以使用这种编程语言或工具。

因此,有我的解决方案:将其像打架一样进行思考,并进行勇气和耐力的考验。如果我不能解决问题,那我就“ 奋斗另一天 ”。

这听起来可能一点点可笑,但是,这将是更多的乐趣和令人欣喜的在这方面想起来(就像是某种游戏,你必须赢得的),而不是痛苦所有的方式,因为你要面对的事实你一无所知


0

好吧...我认为您需要一个新的职业或一套全新的期望。尽管肯定不那么频繁,但是花3、4、8、10或40个小时来完成您原本认为是10分钟的工作在软件行业中并不少见。我确信大多数从事甚至中等复杂性的工作的开发人员一旦深入研究并理解了问题,就会将2天的任务变成1个月的任务。

成为一名优秀的开发人员的一部分需要耐心,否则计算机将赢得胜利,您最终将合并某种快速修复的hack,这种hack似乎很少起作用,但不可避免地会破坏您没有想到的东西。如果轻微的延误给您带来很大的压力,那么您可能不应该从事此工作。


0

两个建议:

  1. 我认识的最聪明的人说,他有两个博士学位,并且在一家小型私营公司工作,职称为“研究研究员”。

    如果您已经解决了15分钟,但没有答案,那说明您做错了。

    不要再想了

    小睡一会儿。(散散步等)

    当你醒来时答案就在那里。

  2. 获取David J Agan的书“ Debugging”。它可能会教给您更多有关调试的知识,以便在无法正常工作时可以快速进行调试。


0

每当我遇到无法解决的问题时,我总是会记住这句话:

当您下地狱时,请继续走,因为那是此时可以做的最好的事情。

休息一下,尝试使自己恢复活力,并专注于新水平的问题。


0

回应其他人的建议:

  • 这种情况几乎总是你看不见的小事; 休息一下
  • 另一双眼睛,甚至只是向猫咪解释问题都会有所帮助

并添加:

  • 重新检查您的假设,尤其是未陈述的假设;很有可能您一直在吠错树
  • 扭转这种情况:假设当前行为是期望的结果,那么您必须对代码做些什么才能使这种情况发生?
  • 编写一些测试代码(断言或日志记录,或条件断点-保持简单),以沿执行路径验证您的假设

0

有时,最好不要只是尝试解决问题的方法。花一些时间,用伪代码写出您需要做什么。我知道有尽快完成工作的压力,但是据我所见,这种编码风格会导致您描述的情况的类型。如果有人编写的代码只能在少数条件下起作用并且设置了更改,那么代码将中断或执行意外的事情。

另外(我讨厌承认我的教授是正确的...),记录和单元测试也有帮助。这将使您更容易知道在给定输入集的情况下将输出什么代码段。然后,将更容易看到该部分输入中的更改将导致什么影响。


0

疲劳或缺乏睡眠对我来说从来都不是问题。对于整个行业缺乏组织,以及我们为自己设定的低标准,我感到更加沮丧。这让我感到沮丧的五件事:

  1. 设计复杂的API。就像学习一种全新的编程语言一样。实际上,某些API比学习新的编程语言要难得多。我很欣赏您的聪明才智,但您可以输入我需要软件工程或计算机科学博士学位才​​能理解的文档,这样可以节省我的时间。

  2. 缺少好的文档。我无法克服这样一个事实,即许多API设计人员花费大量时间来制作API,而只是用最少的文档发布它。谢谢,但是我怎么用呢?在这种情况下该怎么办?等等

  3. 专有实现。可以使用某些专有的实现,但是如果存在标准,为了人类的利益,请遵循这些标准。没有什么比花时间去思考为什么某些事情不能仅仅发现实现不遵循正常标准而令人沮丧的了。

  4. 沙盒环境/限制。好的,也许这有助于将坏人拒之门外,但是在我看来,限制程序员可以做什么只能限制创造力和技术进步。在发现我不允许做某事后,我曾被丢掉的许多好主意。编程行业真正的目的是搅动日常应用程序,而不是创新的突破性软件。因此,如果您决定当一名程序员,那么您真的会选择当现代人,除非您想成为一个孤独的学者。

  5. 现代讨论。如今,人们仍然在争论Lisp括号的丑陋性,Python清洁性的优点,或者像Cobol或Fortran之类的某些语言将如何灭绝,等等。真的有人吗?这是我们辩论的话题?让我们谈谈并行性,或设计更安全系统的更好方法,或逻辑编程如何改善我们的生活。让我们不再像编码员那样思考,而像明天的世界设计师一样思考。

因此,由于这些挫败感,我个人不再对此进行编程。直到业界决定它要做的不只是创建下一个Facebook,或者重塑我已经准备好的文字处理器。我把它留给你们。老实说,没有冒犯的意思,这是好钱。

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.