Pages

Saturday, 25 June 2016

提升软件开发者生产力的10个提示


在参加了一些以生产力和时间管理为主题的研讨会并阅读了一些关于这个话题的图书以后,我了解了一些深奥的概念并且对我曾经的工作方法产生了一些深刻的领悟。运用这个新的知识,我完全重新设计了我的工作流框架,而这极大地推动了我的生产力。
我想与你分享一些最重要的技巧,它们可以帮助你推动你的生产力,提升你的总产量,而且可能最重要的,使你空闲出时间从事其它的活动。
注意下面的技巧可以用在个人和专业两个方面,本质上这些原则是一样的。
所以,我们开始吧……

永远、永远、永远不要把阅读邮件当做早上的第一件事

如果有一件事要排除在本文之外,那么就是这件事。重申一遍,永远不要把阅读邮件当做早上的第一件事。如果你这样做了,你会自动进入一种反应和被动的模式,而不是我们想要的、积极而富有创造性的模式

只在一天中预定的时间查看和回复邮件。这些时间应该在午饭之前,我们假设大概12:00-13:00,之后16:00左右再来一次。在这些时段,你的活力等级总会降低,所以你不会失去任何具有创造性的活力。不用担心,那些“紧急”E-mail,并不是那么紧急。

如果可以,尽量避免开会

在企业环境中,会议是生产率的头号杀手。我这样说,你明白,我明白,每个人都明白(但也许不会承认)。
“会议是一种令人沉溺的、高度自我放纵的活动,企业和其他大规模组织习惯性的参与其中,仅仅因为他们真正的振奋自己。”——Dave Barry
确实,这是对其的概括。最有趣的是,会议同时扼杀了许多人的生产率。令人惊叹。所以,如果不是参加绝对重要的会议,就忽略它。比如说你手头有很多工作(这可能是真的)并且计划会后与同事见面来了解一些重要的事情。
如果开个会真的很重要(这是很罕见的事情),那么记住这些:
下午晚些时候再开会,那是你的生产率总是很低。
总要有一个关于讨论话题的议程,不要忽略这一点。
设定一个严格的结束时间,到时间就结束会议。
在得出一系列清晰的、可操作的步骤之前,不要离开会议室。

消除干扰

这很艰巨。信息时代的世界充满了干扰,它们来自各种可能的渠道,阻止你完成事务。我会将干扰分为两大类:我们自己产生的干扰和别人产生的干扰。
先来看我们自己产生的干扰。这想起来看似有些古怪,但事实是,我们成功的让自己不能保持高产,即使我们这样做是无意识的。有很多例子:把我们的E-mail和社交媒体账户,设置成当有“重要”的事情发生时就“通知”我们;像疯子一样在不同的事务之间切换;在Hacker News或者Reddit上设置一个快捷“关注”等等。
问题是,你应该以这样的方式配置你的工作环境——当你着手于一项工作时,没有什么能让你分心。首先,关闭你的手机、Facebook更新等等上面的消息提醒。下一步,关闭你的E-mail软件,如果你决定开着它,确保没有打开自动发送/收取选项。之后,消除任何可以访问那些不高产站点的渠道,包括你经常泡在上面的DZone、Hacker News等等。注意,我并没有说“不要用”。我说的是“消除访问渠道”。我们这里都是极客,所以我相信你们能够找到一个技术上的办法来搞定这件事。你可以使用一个低级的方法——编辑你机器上的Host文件来让facebook.com指向127.0.0.1,或者使用一个插件暂时限制对这些站点的访问。我个人使用 Blocksite plugin。通过这样的配置,你将能达到这样一种的状态——消除大多数你带给自己的干扰。
我们来看看由别人产生的干扰。你可能会争辩,说前文中的一些干扰是别人产生的;但是事实是,你自己产生的,因为没人强迫你浏览Twitter或者Facebook。在这里,我要说的是“强加于别人”的干扰。例如,多少次这样的案例发生在你身上?你收到一份你老板的E-mail,之后他打电话问你是否收到了他的邮件。这是在说生产率。或者这样的情况:你的同事在你调试代码的时候戳了戳你,并问你一些琐碎的东西怎么在Java中实现,而你想到的第一种回答是:“Google一下,混蛋!”
事实上,那些干扰躲避起来有点麻烦,因为很可能过分并逾越人们认可的界限。建议如下:使用耳机(尽管我发现有时这样也没用);把来电放入语音信箱,之后再接听;在你的电脑上挂一张纸,写着“请勿打扰,编程中”等。你必须判断在你当下的工作中哪些是适合的,并依照执行。目的是能够形成一个不会被打扰的工作流程。

前一晚准备一个待办事项的列表

前一晚,你应该列一个明确的事务列表,它在第二天能够实现是很重要的。我说的不是有很多项目的大表,这永远不管用。而是精确的指出2-3个重要的任务,它们一旦完成,你的项目将有重要进展。比如像这样问:“如果我今天只完成了这两个任务,我会感到我的一天很高产吗?”如果是的,把它们记下来。

先做重要的事务

正如前文提到的,E-mail从不该是首先处理的。那么,应该是什么呢?列表中最重要的事务!你已经找到了一个最关键性的事务,那么你就坐下来搞定它,而不考虑任何其他的事情。理论上,你应该在“一坐”中完成它。休息片刻,之后处理你列表上第二重要的事务。我会在后面的部分谈谈如何为了优化结果而配置工作和休息。

批处理不仅用在数据库上

我确信你们中的大多数很熟悉查询批处理。简单来说,你“批量处理”许多相似的DB查询,而只向数据库发送一个请求,这实现了更佳的性能。进行最好的优化。你猜怎么着,你可以在你的事务上使用类似的原则!通过这种方法,你能够将活动经费和从特定事务中产生的各种日常开销最小化。事务批处理的一个好例子,就是查看邮件(想到办法了吗?)、电话和几乎任何枯燥重复的工作。

自动化处理,就像没有明天

另一个可以加到你的“生产率工具箱”中的东西,就是自动化的概念。作为程序员,我们就生活在一个相当自动化的环境中,但是我还是看到了许多“小插曲”——人们决定人工处理一些枯燥、平凡的事务,而这些事务可以轻易的被自动化处理。瞧,人类衰退了,比机器更不可靠了,当手头的事务无趣而又微不足道的时候就更加衰退了。让尽可能多的事务自动化处理。例如:实现一个只需单击一下的完整应用;只用一个脚本就能部署到生产服务器等等。说真的,不要为了那些机器能够处理的更快的事情,而损失精力和体力,没有你参与更可靠。
为了结果最大化,调整“工作”和“娱乐”
好,现在是时候说说怎样真正的配置一个工作框架了。我的建议是,分配特定的时间段给“工作”,并分配特定的时间段给“休息”,或者更好的“娱乐”。
例如,你会花费连续的45分钟,专注于处理特定的事务;之后紧跟着休息15分钟,在这段时间里你可以上网、查看你的社交媒体信息更新、阅读最新的Java Code Geeks文章等等。确保在休息期间把你的目光从屏幕上移开,并真正的做一些身体的轻微活动。说真的,“久坐会害死你”(sitting can kill you),站起来走一走。
概念上是这样的,撇开其他的东西,在自律并痛苦的经过了时间更长的“工作”时段之后,“娱乐”时段将扮演一个自我奖励的角色。我们的思维是难以理解的东西,但我可以向你保证,设定一个像这样的奖励机制,将帮助你在完成更多事情的同时,享受一些快乐时光。
有数不清的计时应用,来从技术的角度达成这一机制,并且你也可以用Pomodoro technique进行实验。

把所有东西记录下来

这里我想说的,是养成把所有东西记录下来的习惯。不管是你的一个新主意、一个你打算用来解决你手头的问题的新方法,或者是你明天要付的一个账单。你必须确保你的大脑容量不会被“记忆东西”消耗掉,而是专注于你正尝试达成的特定目标。
把你的大脑想象成一个电脑的CPU。你分配给他的“事情”,就像把许多进程加载到后台。这最终会导致挂起并无法正常工作。记录下东西的过程,会降低你大脑的负载,并让它表现的更理想。
列一些分开的列表,并把你的思想分类。这些列表可以包括“潜在项目”、“要买的东西”、“开发”等等。因此,过后你可以很快的浏览他们。

撬动“流逝” —— “在区域中”工作

这是圣杯。这是我们想通过适当的设计我们的工作框架来尝试实现的。这是所有上述的提示想要让你实现的。我确信你已经经历过“流逝”的状态和“在区域中”的状态,因为它广为程序员所熟知。它就是,当你大脑完全专注,聚焦于特定的事务或者程序,而你基本上失去了对时间的感知的那个时间段。你写代码、写代码、写代码,其他什么都不存在。外部的刺激甚至不会在你的大脑中留下痕迹,只有你和你最喜欢的IDE。我敢打赌,在我们编程工作的所有进展中,80%出现在“流逝”的状态中。
Heck, 我在写这篇文章的时候,达到了“在区域中”的状态!
这里的底线是,你需要把自己摆在这样一个位置,你可以轻易地进入"流逝"的状态,并尽可能长时间的留在那里。这是我们的大脑进入工作状态的模式,并且这会使得你的生产率暴涨。我喜欢"在区域中",并且我确信你也喜欢,那么为什么不给我们自己一个体验更多的机会呢?
因此,你会拥有它。关于你花费时间的一些建议。请在短时间段内进行尝试(比如一到两周),之后在讨论中告诉我进行得怎么样。你甚至可以发给我一封E-mail,我将会很高兴收到你的消息!
并且像以往一样,分享是关怀。如果你发现这些建议有帮助,和同事分享一下,让我们把我们的工作环境变更优越。