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

说一些要花我几分钟的事情实际上要花几个小时才能完成,这并不夸张。

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

评论

我有一个类似的问题(因此,此评论:))。我发现真正有帮助的是早上少喝咖啡,或者根本没有。我也尝试在早上工作,并在下午安排会议。希望能对您有所帮助....哦,小猫咪。

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

啊!我现在正在执行此操作-感谢您的提醒-请恢复工作。

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

您应该开始为SharePoint b / c开发,实际上您必须等待20分钟:)

#1 楼

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

如果您想真正花哨/讨厌,请使用一些文本转语音包并触发对话框弹出。与工作相关的任务一旦完成,就会打扰您。

评论


快速示例:MSG =“恢复工作” && xmessage-按钮确定-默认确定-近鼠标“ $ {MSG}” 2> / dev / null

–sakisk
2012年4月5日在16:26

@faif在这种情况下,您想使用;代替 &&。第二个示例仅在make成功后才运行show_message,这并不是您想要的。需要说明的是:我确实喜欢您提供的示例,但是我对实现细节有些挑剔。 ;)

–溯源
2012年4月5日在17:28

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

–菲尔
2012年4月5日18:22

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

– corsiKa
2012年4月5日18:36



Ubuntu在.bashrc中设置了很好的警报别名。它取决于libnotify,但是如果已安装,则可以执行命令。警报,并在完成时为您提供桌面警报,指定完成的命令。对于冗长的编译或测试非常有用。

–狮子座
2012年4月5日在18:54

#2 楼

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

评论


+1用于快速散步/伸展。我们应该更多地做这件事。

–琼·普迪(Jon Purdy)
2012年4月5日在17:03

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

–溯源
2012年4月5日在17:20

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

– Laurent Couvidou
2012年4月5日在17:48



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

– eykanal
2012年4月5日18:52

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

–史蒂文·埃弗斯(Steven Evers)
2012年4月5日在20:29

#3 楼

做一些有益于健康的事情:

站立,离开计算机,做一些手和手臂的伸展运动。最多需要2-5分钟。您将来不会遭受RSI困扰的自我将为此感谢您。这是基于这样的想法,即经常进行短暂的休息,以使您摆脱当前的工作,让事情陷入困境。这是一个短暂的休息,不能完全放松您的思路,但足以让您的大脑喘口气。

评论


而且,您甚至不必起床-闭上眼睛休息30秒钟,将有助于保持眼睛湿润和减轻疲劳。

– JBR威尔金森
2012年4月5日在17:08

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

–DevSolo
2012年4月5日17:32

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

–纸浆
2012年4月5日19:39

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

–埃里克·雷彭(Erik Reppen)
2012年4月5日在22:56

#4 楼

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

乔尔·斯波斯基还解释了“不在区域内”的含义。每次遇到妨碍您完成工作的事情时,您都必须花十分钟,通常要花更多的时间才能回到该区域并再次变得富有成效。 />
老婆打来的电话,
打给你附近办公室里的业务人员的电话,
同事向你求助,
饿了,
遇到个人问题,
必须处理十年前经验不足的开发人员编写的旧代码,并且从未进行重构,
PC速度慢或Internet连接速度慢,
较长的编译过程,
等。

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


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

在您的情况下,如果编译器分散了您的注意力,请尝试通过以下方法减少编译时间:


减小程序的大小(例如,某些IDE使您可以从解决方案中卸载某些项目,从而大大减少了编译时间),
使用每晚生成的文件并在工作期间减少编译,
更快的机器(如果没有其他事情要做),
等。


#5 楼

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

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

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

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

评论


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

–user25946
2012年4月6日15:56

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

–艾伦·巴伯(Alan Barber)
2012年4月6日在22:38

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

–user25946
2012年4月7日4:54

#6 楼

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

#7 楼

我的门柱上有一根杠子



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

评论


我想知道现在到底有多少程序员可以完成工作

–kommradHomer
2012年4月6日在8:58

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

– Esko Luontola
2012年4月6日上午10:52

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

–user1249
2012年4月6日上午11:06

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

–user25946
2012年4月6日15:46

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

–埃里克·雷彭(Erik Reppen)
2012年4月9日在23:24

#8 楼

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

在编码时,这意味着关闭我最近没有使用的程序,定期修剪浏览器标签,并让我的桌面上没有与我当前项目无关的项目。可以这么说,我用十秒的延迟来“四舍五入”-关闭标签页,关闭程序,删除临时文件和存档需要归档的内容,等等。

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

重新打开一个您今天已经打开了5次的标签页,或者是第15次重新启动具有提升权限的命令提示符,但是利用键盘快捷键之类的加速器确实可以将其价格降低到非常低的水平。

评论


关闭浏览器选项卡(或程序等)的问题在于,当您关闭它们时,很容易被它们分散注意力。例如,在实现答案后返回Stackoverflow问题,然后在边栏中看到一个有趣的链接,然后单击它。

–鲍勃森
2012年4月6日在2:32

#9 楼

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

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

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

#10 楼

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

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

#11 楼

无论您做什么,都不会在任何StackExchange网站上进行操作。他们会吸引您:)

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

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

#12 楼

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

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

#13 楼

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

#14 楼

在每天的开始时制定计划,以了解如何使用此“业余时间”。它可能涉及


完成一些文档任务,为接下来要编写的类制定单元测试用例,
学习一些新知识。您一直在学习的一项技术,
给您最喜欢的阿姨写一封信,

或几乎所有的东西。

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

在执行次要任务时,请记住,这不是您的大脑应该关注的。继续考虑编程。这不容易;您仍然会经常遭受上下文切换的折磨。在一天结束时要显示一些东西。但是最重​​要的是,在一天的开始时计划一天的次要任务。

#15 楼

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

#16 楼

我通常只是试图寻找bug,错别字或与此同时改善代码风格的方法。这让我一直在看代码,但是我(始终)不会因为有趣的事情而分心。还有这个!

#17 楼

可以想象你有一些多动症。很多人这样做。应对机制与其他答案(或可能的药物)相同。

#18 楼

在这10到30秒内,去做一些不需要很多脑力活动的事情:


打开您正在编译的代码,然后再次检查(您可能会找到错误的地方或改善它的方法)

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


开始读一本书
如果知道会花很长时间,请阅读电子邮件
etc

此外,不要安装一些音频发出警报以指示编译结束。您的同事将不胜感激。

评论


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

–阿德里亚诺·卡内罗(Adriano Carneiro)
2012年4月5日在16:56

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

–埃里克·雷彭(Erik Reppen)
2012年4月5日在23:11

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

–BЈовић
2012年4月6日上午8:24

@ErikReppen,如果我这样做了,我就没有工作。

–HLGEM
2012年4月6日15:22

#19 楼

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

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

#20 楼

您所描述的完全是正常现象。

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


0.1秒:无察觉延迟
1秒:焦点不变
10秒:失去注意力
1分钟:用户切换到另一个任务
10分钟:用户将起身离开

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

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

在您的情况下,您达到了10s的阈值,而您的注意力逐渐消失了。您可以做的最好的事情就是减少延迟。延迟越短,生产率越高。想象一下,您的代码在屏幕的左侧,而正在运行的应用程序在右侧。在您编辑代码时,应用程序会实时更改。除非您在那里,否则您仍有改进的空间。 /03/visualizing-code-to-fail-faster.html

如果您要切换到其他内容,请选择与您的工作不一样的大脑在做。清洁办公桌,打坐,伸展,俯卧撑,艺术品,看着窗外。

#21 楼

在SAS中做临时工作时,我发现以下几行非常有用:我确定还有其他语言的等效语言。我会将其发布为对retracile的回答的评论,但我没有足够的声誉。