当您无法避免打扰时,快速隐藏您的认知状态的最佳方法


21

我什至不知道这个问题是否有道理...但是我让你来看看...

想象... 您完全沉迷于某种编程思想/观念/概念,您的大脑处于最活跃的状态,正在思考解决问题的方法,或者如Joel Spolsky 所说的那样-您深陷“领域” “-而且,突然之间某人或某件事破坏了您的专心-您无法避免的事情,您必须注意的事情。 ...想象力完整..回到现实

可能会破坏您的注意力的东西可能是...

  • 你被召集参加紧急会议
  • 您的代码破坏了日常构建,而您的同事正在打电话给您
  • 您刚刚想起了您必须做的事情,却忘记了做
  • 您的队友有一些令人振奋的消息要打破,并坚持要您听
  • 你的女友(或男友)刚过来

现在假设您只有5 10分钟的时间才能离开自己所处的深处,并进行娱乐。

我的问题是-当转移发生时,您如何迅速“保存”您所处的心理状态。您是以“某种形式”将其写在纸或计算机上,还是只是以某种方式“记住”它。您如何在5到10分钟内挽救那些确切的想法,以便以后回来时可以从左边的“点”赶上来。

我经常发生这种情况,以至于我无法回忆起打击之前我一直在思考的确切想法,而且我觉得我已经失去了解决问题的好主意或解决方案。我试图回想起来,努力达到那种使我兴奋的想法-同样的认知状态,但是我对无法“到达那里”感到沮丧。

这样的事情发生在您身上吗?您如何从中“恢复”?

我主要关心的不是代码,而是那些还没有转换为我需要以某种方式“保存”的代码的“抽象思想”。

-更新-

这些年来,我可以自信地说,没有可能的方法。在纸上随意书写您的认知状态不会让您完全恢复原状。当涉及到它在任何时间点上活跃地掌握的信息时,我们的大脑比一小段摘要的价值要复杂得多。

最好的方法是避免分心,无论多么重要,除非这是生死攸关的情况。没有什么比在区域中并完成它更重要了。

如果您的工作场所过于幼稚而不能欣赏某人的“存在于该区域”,那么就该找一个新的工作场所了。YMMV虽然。有了人际关系,社交技能和清晰的口才可以造就美好的世界。


我建议使用诸如FreeMind之类的思维导图工具。或Emacs组织模式。两者都便于快速编辑待办事项和想法。(并将它们备份到源控制系统以从任何地方访问它们)
haylem 2011年

Answers:


19

离开PC之前,我会在便利贴或纸上写下我所做的事情。无论如何,我通常都会将其作为错误修复或分析的一部分来进行。稍后(重新)打开错误,这真的很有帮助,您仍然可以看到一个月前的思路,并找出更快地执行操作的方法。

另外:在代码中设置一些书签。当您回来时,可以通过查看设置的书签来查看正在执行的操作。


2
+1。根据我的经验,写下您正在做的事情的行为本身就可以澄清,即使我没有发现自己后来提到的内容也很有帮助
jimwise 2011年

+1我同意,以“某种形式”写下来是最好的解决方案:)
treecoder

2
+1:有各种各样的认知研究来支持这一点。这就像在听大学演讲时做笔记。您现在可以参与的大脑区域越多,抓住细节的机会就越大。
鲍勃·墨菲

为我和我准备笔记本,尽管我会一直这样做,但是完成后我会将它们划掉。另外,我还会留下带有故意编译错误的部分代码,并给出需要完成的消息。
Newtopian

8

我鞭打了本地记事本应用程序,并写下了我的计划。

我发现这对您有最大的帮助。我有100%的时间不记得回来时打算做的事情,想法很容易出现,但是您还记得要执行的实际步骤吗?

我用类似的东西;

+ Fix i.d bug
    - look at first name , problem?
    - ...

+ Deploy changes to test database

+ Come up with production deployment plan

我将其保存到桌面并保持文件打开。

我发现这对我有好处。

  • 5分钟
  • 回到“区域”很容易
  • 它更容易触发记忆

那也是我所做的-只是以为有人可以有更好的主意:)
treecoder

我不知道当时是否有办法“保存”您的想法的完美“形象”。但是我会输入关键词来帮助带回整个话题,并思考一下这个想法,并在我写下这些单词时将其简短地与这些单词联系起来。另一个失败的想法是图表,我在将3d引擎编程为业余爱好时做了很多工作。这样,我可以将自己的想法或最终目标形象化,将其保存在纸上,然后返回,甚至比我离开时做的更好。
罗斯,

5

除了将事情写下来的绝妙建议外,这项技能还可以通过...

实践。

我曾经在多任务处理方面是世界上最差的。人们曾经害怕打扰我,因为我对此很不高兴。然后我意识到这真的不像是一个具有多个并行内核的CPU,而是一个带有任务开关的中断。因此,我开始训练自己放松自己,并接受它作为生活中必不可少的一部分。

十年后,我使用类似于Pomodoro的系统,在计时器关闭时只是休息一下。几分钟的休息后,在轻松的环境中回到“区域内”非常容易-我很期待!对于更长的中断时间,这些书面笔记非常宝贵。除非经过一天以上的时间,否则我现在可以轻松恢复几乎所有的心理“ CPU状态”。

另外,由于我现在已经习惯于应对打扰,因此当人们这样做时,我不再那么烦恼。简单地说,“我做笔记时稍等片刻”就使我变得更好。令人惊奇的是我的社交互动更加愉快!

大脑就像一块精神肌肉,如果逐步增加难度,它在多任务处理方面会变得更好。


4

这事儿常常发生!当我正在编写代码时,我可以告诉90%的人等待几秒钟-他们知道不打扰我是他们的最大利益。在这几秒钟中,我有意将一些键混搭在我正在工作的代码行上,并在上面的行中用XXX标记(这在vim中很好地突出显示了)。

混搭了代码,因此程序无法编译,因此我不得不看那行。对于我所写的大多数语言,这足以让我了解我离开的地方,并迅速将我的记忆力转变为生产状态。

我还了解到,如今(由于不断受到干扰),现在处于“区域”已成为一种奢侈。尽管从生产率的角度来看这绝对不是理想的选择,但它会迫使您充分利用现有的一切。


3

我发现,每当我使用git时,将工作抛在后面的麻烦就更少了(更重要的是,继续进行工作)。这不是因为git本身,而是因为我在学习git工作流程时采用的做法。我在谈论主题分支

如果您在专门的主题分支中完成开发过程中所有有意义的“整体”操作,则回到工作轻松得多。这就是为什么。

  • 主题分支提供了上下文。您已经给它指定了描述性的名称,因此您知道自己在看什么。
  • 历史范围较小,线性范围更大。当您处理较小的变更集(分支)时,可能需要较少的提交,并且它们将是线性的(在它们之间没有无关的提交)
  • 如果在完成主题后删除主题分支,则更容易了解您正在处理的主题,更重要的是,仍然需要引起您的注意

如果您有纪律,则这种工作方式将使您更轻松地离开工作,以后再接手。

当我在做某事时,我总是想出一些与当前主题相关的作品。同样,有纪律也有回报。请完成当前的工作。如果不能(我经常遇到这个“问题”-“我需要立即修复”等),只需为该修复创建一个新的主题分支(或重构,改进,无论如何)。即使您当前的工作空间尚未准备好提交,也只需执行git stash,在其自己的主题中进行小工作,然后pop从存储中恢复到实际工作即可。


3

对于保存任务状态并切换到其他状态,我绝对喜欢Mylyn上下文保存。Mylyn所做的是存储并稍后恢复IDE的确切状态(打开透视图,打开的文件,在这些文件中的位置等)。

对于我正在做的事情,我添加了TODO注释。Eclipse自动将这些显示为任务列表。


2

我在VM中进行开发。当我被打扰(一天结束,午餐,会议等)并且不想失去思路时,我只是在代码中写了一条注释,例如:

//Figure out how to implement "Date range too far out" check correctly

如果很复杂,有时这些注释会持续几行。但是我只是在IDE中的代码中编写注释,然后保持IDE打开并在VM上使用“ Suspend and Exit”命令。然后,当我再次将其拉回原处时,我的评论立即出现在我的眼前,这有助于我快速恢复以前的想法。


1

我开始使用思维导图软件(当前为FreeMind)。我将其用于所有内容,但与此相关的是,它包括我正在从事的每个项目的待办事项列表。当我在思考列表中给定问题的解决方案时,我开始在心智图上键入该问题。即使在我工作时,也就是在这里存储我的解决方案的地方,而不是试图将其全部掌握在脑海中。

那让我将精力集中在代码实现细节上,而又不会丢失总体情况。这也意味着中断对我的工作影响最小,因为无论如何我都会记录我打算遵循的步骤。

您使用的特定软件或跟踪方法无关紧要。这个想法在记事本中或与一张纸一样有用。相关概念是,您在记录想法时就在记录它们,因此它们始终可用。


1

如果您处于高中断环境中,我会发现保持每小时一本日志(每小时记下几个项目符号)非常有用。我将TiddlyWiki和纸张结合使用(Tiddly用于记录/可搜索性,纸张用于快速思考)。

当我与一个婴儿在家工作时,我就开始这样做,这提高了我的整体生产率。它有助于解决重新发现我的想法的直接问题,并具有提高自我意识的良好副作用(我上周花了一个小时修改10行位敲打方法,以使其更具可读性。可能不是最佳用法我的时间)。


+1感谢TiddlyWiki-我以前用过它,但从未想到我可以用它来快速“序列化”我的想法:)
treecoder

@greengit-我从中得到了很多收获。我将日记,解决方案日志和待办事项保留在其中。我用它来评估性能。我经常做一个人研发,每年要进行几个星期的项目(自然是在演示之前),然后又搁置起来。如果我没有办法备份自己的大脑,我会迷路的。我喜欢TiddlyWiki,因为它仍然是个人的,我不必写任何人都应该能够理解的公司Wiki或doc的正式程度。
史蒂夫·杰克逊

因此,您是否建议使用桌面版本(默认版本)或ccTiddly-这是服务器支持的tiddlyWiki的化身
treecoder

@greengit-我使用桌面版本和cron作业将其备份到网络共享。我没有使用ccTiddly版本,但是它的大部分功能似乎已被我们用于项目协作的项目Wiki所涵盖。ccTiddly似乎确实击中了我的愿望清单项目之一-可以将文件附加到小提琴手-但我会根据需要粘贴链接。
史蒂夫·杰克逊

0
  • 随手思考开发人员的日志文件
  • 当您被打扰时将大脑转储到日志中
  • 确保写下您要做的下一件事

前者是避免打扰,回溯和以后重演的保险,而后者对于从上次中断的地方接机至关重要


0

我在我旁边的记事本中放了一段评论。我试图在记事本文件上执行此操作,但由于某种原因,它无法像将其记录下来一样有效。如果您对工作中记录下来的东西有合理的组织,则可以有效地将抽象思想的核心转储回来。


0

我发现的帮助很大(即使是“好,现在我回家,明天再去工作”),这在我脑海中不断记录着最重要的几种想法,然后从列表中删除了东西。

但这绝对取决于(i)积极处理该列表-至少清除它,而不是最终生成数百个您要返回的半成品“待办事项列表”,以及(ii)进行足够的实践以获得经验知道您需要写什么,不需要什么-哪些任务具有“添加工具栏按钮”以及您下次可以重新创建设计的细节,哪些任务已经完成了一半的计划而无需意识到这一点,就需要自己写下来。

另外,显然,请避免不必要的干扰。能够继续分散注意力总是一件好事,总会有一些,但不要鼓励太多。


0

由于在一家前公司的午餐时间匆匆中断,我实际上造成了一些错误。我最终花了几分钟的时间,或者只是为了让他们迫使我加入而离开了我,于是我把代码写了一半,认为写了一半,只等了一个小时后又回到代码中,跟踪并弄错事情。

最终,我开始做笔记并写出待办事项清单来弥补这一点,而只是保持了“较浅的心理状态”。TDD还可以提供帮助,因为测试可以表达您要对设计进行的操作并确保您正在执行设计。

我还开发了一种语言,介于我觉得直观的编码和人类语言之间。它由“ Nyargh!Bloobly-bloop! ”之类的声音组成,如果有人在我忙时试图与我交谈,我有时会发出这些声音。尽管他们听不懂这些声音,但它表明我目前处于无法与人正确交流的状态,这时他们走开了,让我继续思考和编写代码。

就是说,我的妻子已经习惯了这样的想法,即她可能会跟我说话,而我可能正在点头等等,并且没有在心理上处理过她说的一个字。就像我可以看到她的嘴在动,听到声音响起一样,但实际上并没有正确地翻译成机器指令。当我全神贯注的时候,她已经学会了注意我的反应。

我有时还会中途处理她所说的内容,然后将其推送到并发队列中,例如,如果她问我一个问题,那一刻我无法完全处理它,直到我将所有内容从心理队列中弹出(这效率非常低下)螺纹安全锁紧机构)。因此,她已经习惯于问我一个问题,只点头而没有回应,或者对“你今晚想做什么?”的回答是“是”或“ blobly-bloop”。只是让我在十分钟后处理它,然后回答问题,就好像我刚才听到它一样。

同样,我也不了解你们,但是当我迷失于编程思想时,我真的会心不在a。最后我找了好几年的袜子,却忘了把它们放在哪里。我不知何故将它们放入冰箱。我想我想用手拿袜子喝些东西,然后以某种方式将袜子放在冰箱里,忘了拿饮料。在另一时间,我拿着车钥匙把车停在停车场后,试图去扔垃圾,然后去了一个垃圾场。取而代之的是,我最终把车钥匙扔进了垃圾箱,直到我试图用塑料包装纸将车开锁后才意识到这一点,那时我不得不将垃圾浸入我的钥匙中。无论如何,我的妻子已经习惯了这类事情,而我的东西却出现在奇怪的地方。

[...]您的女友(或男友)刚刚过来

顺便说一句,约会和浪漫很难用编程来完成。我有很多以前的恋爱关系,约会直到我们开始共同生活才经历了一段美妙的时光,他们看到我的那一边一直坐在电脑,并在回想“ bloobly-bloop! ”时在思考中徘徊,失去兴趣。很难找到有耐心的人。我真的很幸运能忍受我的妻子。

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.