当编程的特定方面需要10秒钟以上才能完成时,您如何保持专注?[关闭]


141

当某件事(编译,启动时间等)花费的时间超过几秒钟时,我很难集中精力在正在做的事情上(在编程方面)。奇怪的是,阈值大约是10秒(我还记得有关研究的内容说的是同样的话,尽管我现在找不到)。所以通常发生的是我进行更改,然后运行程序进行测试。这大约需要30秒,所以我开始阅读其他内容,在我不知道它已经过去20分钟之前,然后(如果我很幸运!)又花了10分钟以上的时间来处理上下文切换,然后返回编程。 。

毫不夸张地说,某些事情应该花我几分钟才能完成。

我很好奇其他程序员如何应对这种趋势(或者如果我很独特并且他们没有这种趋势?)。任何类型的建议都是受欢迎的-从“按下编译按钮后就坐到您手上”到思维技巧,再到“如果花30秒才能启动某个东西来测试更改,那么您的开发过程就出问题了” !”


24
我有一个类似的问题(因此,此评论:))。我发现真正有用的是早上少喝咖啡,或者一点都没有。我也尝试在早上工作,并在下午安排会议。希望对您有所帮助。
DevSolo 2012年

7
您正在处理一种拖延的形式-来自整个宇宙的知识工作者的敌人。
Aditya MP

130
啊!我现在正在做-感谢您的提醒-重新工作。
mjhm

8
我通常将这段时间花在SE网站上,阅读问题,回答可以帮助其他开发人员的内容,并在此过程中学习一些新知识。
伯纳德2012年

6
您应该开始为SharePoint b / c开发,实际上您需要等待20分钟:)
kev 2012年

Answers:


117

我写了一个叫做“ alert”的命令行小工具,它将使计算机发出蜂鸣声/播放声音等。然后,当我有一个很长的命令要运行时,例如a make,我运行了make; alert。在可能的地方,我还将带一个参数,以便根据参数发出不同的声音。因此,我可以做,make; alert $?并且我将知道a)构建已完成,b)通过或失败。您不必一定那么喜欢它。一个echo -e "\a"就足够了。

如果您真的想花哨/烦恼,请使用一些文本转语音包并触发对话框弹出窗口。

这里的主要思想是在完成与工作有关的任务后立即打扰您。


6
快速示例:MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
sakisk 2012年

6
@faif在这种情况下,您想使用;而不是&&。您的第二个示例仅show_messagemake成功的情况下运行,而这并不是您想要的。需要说明的是:我确实喜欢您所举的示例,但是我对实现细节有些挑剔。;)
retracile 2012年

2
我编写了一个快速命令行程序,当完成某项任务时会通过电子邮件将其发送给我-因此,如果我在等待时间离开房间去做一些IT事情,我的手机会发出哔哔声告诉我回到办公室并完成我在做什么
菲尔(Phil)2012年

7
+1分散您的注意力-用火扑灭火!这样你就不会被解雇!
corsiKa'4

1
Ubuntu在.bashrc中设置了很好的警报别名。它取决于libnotify,但是如果安装了它,则可以执行此操作,command; alert并且在完成时会向您显示桌面警报,并指定完成的命令。对于冗长的编译或测试非常有用。
Leo

104

我遇到了同样的问题,对我来说,解决方案是花时间做一些不会吸引您的事情。对我来说,这通常是(1)装满水的瓶子,或(2)站起来,然后绕办公室走30秒钟来伸展我的腿,但无论如何,这还是需要运动的。您可能会迷路浏览互联网;您很少迷路在自己的小隔间里走动。


37
+1用于快速散步/伸展。这是我们大家应该更经常做的事情。
乔恩·普迪

2
与我的答案结合使用时效果很好...将扬声器设置得足够大,可以在整个房间内听到声音,以便将其缩短。(例如,由于语法错误,该10分钟的构建会在30秒后终止。)
retracile 2012年

1
+1,执行不超过10秒的操作。喝。抓住口香糖。看着窗户,如果您足够幸运的话,外面可能会发生一些事情。如果您正在听音乐,请检查播放列表中的内容或添加一些曲目。
Laurent Couvidou 2012年

2
我还会添加并使用洗手间:)通常,当我在长时间的编码会议后第一次站起来时,我发现我确实需要使用他们所说的管道。利用这些休息时间来照顾自己。
eykanal'4

4
直到您在下一个座位/多维数据集上与开发人员交谈为止……现在是20分钟的聊天,而不是20分钟的浏览。
史蒂文·埃弗斯

29

为您的健康做点事:

站立,离开计算机,做一些手和手臂的伸展运动。最多需要2-5分钟。您将来不会遭受RSI困扰的自己将对此表示感谢。

另外,关于2-5分钟的休息时间,请通读Pomodoro技术。这是基于这样的想法,即经常进行短暂的休息,以使您摆脱当前的工作,让事情陷入困境。这是一个短暂的休息,不能完全放松您的思路,但足够长的时间可以使您的大脑喘口气。


10
而且,您甚至不必起床-闭上眼睛休息30秒钟,将有助于使它们保持湿润并减轻疲劳。
JBRWilkinson '04年

1
这是一个很好的答案(有助于消耗神经能量),如果您受足够的训练,番茄疗法也可以奏效。
DevSolo 2012年

1
+1。拥有可调节高度的办公桌也有帮助。我发现当我站着时,我的工作效率大大提高,因为在短暂的停顿(编译等)过程中,我会花一些时间思考自己的工作,并在任务完成后立即去做回到工作。也许只有我一个人,但是当我在思考和调整步调时,我喜欢走动很多。
Paperjam 2012年

1
从未听说过Pomorodo,但我一直支持以下观点:您需要偶尔休息一下,以使意识更强的人得到休息,并让您的后遗症暂时解决一些问题。这是有原因的,淋浴和浴室中会发生很多“哈哈”时刻。
埃里克·雷彭

25

发展是一个创造性的过程。您不能一直保持高效率,尤其是在您的办公室里有很多分心的事情时。这就是为什么乔尔测试建议安静的工作条件。

乔尔·斯波斯基(Joel Spolsky)还解释了“不在区域内”的含义。每当出现妨碍您完成工作的事情时,您就不得不花十分钟,通常要花更多的时间才能回到工作区并再次变得富有成效。

有很多分心的东西:

  • 你老婆打来的电话
  • 在您附近的办公室给商务人员打个电话,
  • 一位同事向您寻求帮助,
  • 肚子饿了
  • 有个人问题
  • 不得不处理十年前经验不足的开发人员编写的旧代码,并且从未进行过重构,
  • PC速度慢或Internet连接速度慢,
  • 编译过程很长,
  • 等等

与它无关。您唯一可以做的就是消除干扰因素:

  • 您办公室里没有电话,
  • 安静的工作条件
  • 快速的计算机和Internet访问,
  • 快速编译过程,
  • 等等

就您而言,如果是编译器使您分心,请尝试通过以下方法减少编译时间:

  • 减小程序的大小(例如,某些IDE使您可以从解决方案中卸载某些项目,从而大大减少了编译时间),
  • 在工作期间使用夜间构建并减少编译,
  • 购买更快的机器(如果没有其他事情可做),
  • 等等

9

我想我会这么说,但您应该坐在那里等它完成。

您需要对自己进行再培训,以使其不感到需要不断坚持并积极做事。这是一个非常有害的问题,不仅影响开发人员,而且影响所有人。社会已经对持续刺激(视觉,听觉,心理)的需求着迷。似乎没有人会在闲置30秒以上而没有拉出电话并发短信,浏览网页,检查Facebook等。

如果您进行编译,这将需要一分钟左右的时间,请考虑一下这是一个很好的机会,可以坐下来让您的大脑放松。抵制做刺激性事情的冲动,只享受片刻的闲暇时间。

随着时间的流逝,它将变得更加容易,当您停止全天保持100%的大脑发火时,您会发现您会获得更好的工作经验。


我想知道对多任务的仇恨是否真的合理,或者这可能只是世代相传的误解。当然,研究发现在执行多任务处理时会降低生产力,但这也许只是某些人开发的一项技能。对于任何新技术或新工艺,我相信在人们真正学会了如何有效使用它们之前,有研究发现它们对生产率造成了可怕的影响

@JonofAllTrades这与技术或学习无关,这是众所周知的事实,即人脑的生物学设计并未使我们能够连续地多任务处理多个良心思想流。我们能够在短时间内杂乱无章地思考几个问题,但除此之外,整个平衡行动都将分崩离析。这是不健康的,因为您会在精神上和身体上使自己疲惫。有没有想过为什么这么多人生病又累呢?我们都努力工作。
艾伦·巴伯

啊,但是专心做一件事情也很累,我们的注意力很快就消失了。与往常一样,有一个快乐的媒介。我怀疑曾经可以更好地学习多任务,并且例如1950年出生的40岁与1990年出生的40岁的理想工作流程是不同的。我不认为我们是与一百年前相比,现在的病人更加疲倦;如果有的话,我们可以负担得起意识到它的奢侈!

8

我同意@retracile的建议,但是请注意,根据Zen编程规则,您一次只能专注于一项任务。接听电话,浏览Web,社交网络甚至执行多任务处理很可能会降低您的生产力。使用短暂的等待延迟来考虑现有的任务/解决方案以及您可以采取哪些措施来对其进行改进。


8

我在门柱上贴了一个酒吧

在此处输入图片说明

我只能做5个引体向上,所以花费不到一分钟。或者我泡一杯茶。


我想知道地球上到底有多少程序员可以做起来呢
kommradHomer 2012年

2
如果他们至少尝试在每次编译时进行上拉,则可以做更多的事情。
Esko Luontola 2012年

3
因此,如果您的IDE不那么聪明,您会处于更好的状态。

我使用一台古老的Mac并不断过热的主板获得了不错的成绩。我在等它降温的同时锻炼了身体。

我喜欢这个!开发人员越熟悉,他的工具就越是!@#$ tier。
埃里克·雷彭

6

对我来说,保持专注的方法是无论工作空间如何,都要保持清洁的工作环境。我当前项目中不包含的任何东西都是虚幻的信噪比中的噪音。保持专注的重要部分是保持高信噪比。

当我编码时,这意味着关闭我最近没有使用过的程序,定期修剪我的浏览器选项卡,并使我的桌面上没有与我当前项目不立即相关的项目。可以这么说,我用十秒的延迟来“四舍五入” —关闭选项卡,关闭程序,删除临时文件以及归档需要归档的内容,等等。

养成“巡回赛”的习惯也有助于防止兔子走弯路,因为它迫使我不断评估并提醒所有当前的任务。

当您不得不重新打开一个已经打开了5次的标签页或第15次重新启动具有提升权限的命令提示符时,付出的代价很小,但是利用诸如键盘快捷键之类的加速器可以将其削减为确实是一个很小的价格。


1
关闭浏览器选项卡(或程序等)的问题在于,当您关闭它们时,很容易被它们分散注意力。如返回到提问#1实现了答案,然后看看在侧栏的一个有趣的链接后,并点击它....
BOBSON

6

我发现它有助于跟踪我不工作的实际时间

您可以为此使用任何东西。我知道那里有很多免费的应用程序,您可以下载来为您执行此操作(现在想不出什么,但是如果有人给我一些,我会把它们添加到此答案中),或者创建自己的非常容易。我通常使用我创建的窗口,它是屏幕角落的小窗口,带有Working/的按钮,NotWorking只要切换焦点,我就单击任何一个。

国际象棋钟也可以

跟踪您的时间的行为使您更加了解自己浪费了多少时间应该花在工作上,我发现它使我更有效率,因为我会强迫自己离开这个超级有趣的stackoverflow问题或博客文章,然后重新开始工作


5

为了保持注意力,我使用了Doodle。我总是在键盘后面放一支笔和一个记事本,然后涂鸦开来。这不只是在一张纸上乱七八糟,没有任何意义,而是它使我的注意力保持在足够的水平上,并且不会分散我的注意力,因此我可以立即回到正在研究的内容上。

我一生都在不知不觉中做到了这一点,但最近找到了有关它的Wiki:http : //en.wikipedia.org/wiki/Doodle


4

无论做什么,都不会在任何StackExchange网站上进行。他们会吮吸你的:)

更严重的是,在等待完成某些操作时浏览Web不利于提高生产力(除非您正在研究与当前任务相关的内容)。

我通常会做一些次要的工作,而这些工作不会超过1-2分钟。(清理东西,写评论,做笔记)。


1

就您而言,起身走走一点。如果很难回到“区域”,则可能是因为您距离太远。在网络上做的事情只是另一个区域,很容易浪费时间。给您的大脑明显的休息时间,出去散步,做个小精灵,最好是在洗手间里,或者与一个随机的同事交谈。我们在自动驾驶的幕后做很多事情。休息对编码来说并不坏,但也不错,但其主意是让所有气缸停止点火一会儿,然后观察一下您的后燃器产生了什么,同时您更清醒的头脑会休息一下。好的开发者不是人类的计算器。让您的大脑部分在自动驾驶仪上完成所有直观且与模式匹配的工作,一段时间后再做。

如果这不仅是编码问题,您可能需要考虑添加。


1

如果您的周期较长(一个小时左右),则建议起床和走动等。但是,当周期时间变短时,我发现自己在vim之间来回跳动,每隔几分钟便跳一次,然后我留在管道中,停留在该区域中:在构建或测试套件运行时,我倾向于回去查看代码,然后在构建或测试成功的情况下开始处理我将要做的下一个块。


1

每天开始时都要计划一下如何使用此“业余时间”。可能涉及

  • 赶上一些文档任务,
  • 为接下来要编写的类制定单元测试用例,
  • 研究您一直想学习的一些新技术,
  • 给你最喜欢的阿姨写一封信,

或几乎任何东西

始终在桌面上的某个窗口中打开此辅助任务。按下“编译”按钮(或花费30秒钟以上的任何时间)后,请切换至次要任务,并留出足够的时间来实际向前推进,这可能需要几分钟,或可能更少。

在执行次要任务时,请记住,不要将其放在大脑上。继续考虑编程。这不容易;您仍然经常遭受上下文切换的折磨。

如果这样做,即使您丢失了很多次上下文,您丢失的时间实际上也不是浪费的时间,并且在一天结束时您会有所收获。但是最重​​要的是,在一天的开始时计划一天的次要任务。


1

我想我们可以使用编译时间来记录代码,代码清理,正确地对齐代码,这样我们就不会离开IDE并仍然提高代码质量。


1

我通常只是试图寻找bug,错别字或与此同时改善代码风格的方法。这让我一直在看代码,但是我不会(总是)被一些有趣的事情分散注意力。另外,这个


1

可以想象您有一些多动症。很多人这样做。应对机制在其他答案(或可能的药物)中给出。


1

在这10到30秒钟内,去做一些事情:

  • 不需要大量的智力活动
  • 打开您正在编译的代码,然后再次检查(您可能会发现错误或改进它的方法)

在这段时间内,不要做一些您知道会花很长时间的事情(除非您有能力花一些时间),例如:

  • 开始看书
  • 阅读电子邮件(如果您知道这可能需要很长时间)
  • 等等

另外,请勿安装任何声音警报来指示编译结束。您的同事将不胜感激。


12
就个人而言,检查电子邮件是一个糟糕的主意。您会发现,它变得很浪费时间,您的30秒很容易变成30分钟。
阿德里安

在一天的开始和结束时检查电子邮件是许多执行人员喜欢提供的提示。我想这取决于您的公司规模。
埃里克·雷彭

如果您需要30分钟才能查看电子邮件,请不要这样做。我不去邮局取邮件,因此对我来说是30秒-3分钟。
2012年

1
@ErikReppen,如果我这样做了,那我就没有工作。
HLGEM '04年

0

一般而言,如果要在工作中分散互联网注意力,建议您使用Pomodoro插件(如果您使用的是Google Chrome浏览器)

我个人认为您无法在所有工作时间内保持生产力!既然您正在编译,则意味着您已付出了足够的努力以喘口气...不要滥用或脱离上下文,如果编译不会产生错误,请继续考虑下一步...或清理工作区域:桌面,选项卡,资源管理器...


0

您所描述的完全正常。

在进行可用性研究时,我们将按数量级查看延迟。用户单击按钮时,他们需要等待多长时间?

  • 0.1秒:无察觉的延迟
  • 1秒:聚焦无变化
  • 10秒:注意力消失
  • 1分钟:用户切换到另一个任务
  • 10分钟:用户起床离开

有很多例外,例如复合操作(如键入)。

在执行性能工作时,我们经常问“操作X应该多快?”这一问题。答案是,只要用户可以感知到延迟,速度越快越好。

在您的情况下,您达到了10s的门槛,而您的注意力逐渐消失了。您可以做的最好的事情就是减少延迟。延迟越短,生产率越高。假设您的代码位于屏幕左侧,而正在运行的应用程序位于右侧。在您编辑代码时,应用程序会实时更改。除非您在那里,否则您仍有改进的空间。

另请参阅杰夫(Jeff)最近的博客文章(带来大量的良好内容):http : //www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html

如果您打算改用其他产品,请选择与您的工作不一样的大脑。清洁办公桌,打坐,伸展,俯卧撑,艺术品,看着窗外。


0

在SAS中进行临时工作时,我发现以下几行非常有用:

dm log 'postmessage "Code finished"' continue;

一旦所有前面的代码完成执行,这将产生一个弹出对话框。我确定还有其他语言的等效语言。我会将其发布为retracile的答案的评论,但我没有足够的声誉。

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.