首页 > 程序人生 > 程序员如何解决项目中”拖延症“?
2015
08-08

程序员如何解决项目中”拖延症“?

比尔·盖茨曾说过:用代码行数来衡量程序的开发进度,就好比用重量来衡量飞机的制造进度。


“拖延症”

这个名词近些年很火,似乎每个人都觉得自己的效率不高,很难集中注意力做好手头的事,那我们究竟该如何提高自己的工作效率呢,大牛来告诉你.

肯定有人跟你说过这样的话“你有看电视的那么长时间,都可以用来写一本书了”,不可否认写书肯定比看电视更好的利用了时间,但是这个结论的成立需要一个假设:"时间是可互换的",也就是说看电视的时间可以轻松的用来写书。但是很遗憾,事实并非如此。
  不同的时间有不同的质量等级。如果我在走向地铁站的路上发现自己的笔记本忘带了,我就很难集中注意力写文章。同样,当你不停的被打断的时候,你也很难集中注意力。这里还有一些心理和情感上的因素,有的时候我心情很好,愿意主动去做一些事,但还有一些时候我感到很抑郁和疲惫,就只能看看电视了。
  如果你想变的更加有效率,你必须意识到这个事实,并且很好的处理它。首先,你必须很好的利用不同种类的时间。其次,你必须让你的时间更有效率。
  更有效的利用你的时间

选择合适的问题

生命是如此的短暂,为什么浪费时间做一些没意义的事呢?做一些让你感到舒适的事很容易,但是你应该问问自己为什么要做这些事呢?有没有一些更重要的事等着你去做?为什么你不去做那些事呢?这些问题很难回答,但是每解决一个都会让你更有效率。
  这不是说你所有的时间都应该用来做那些最重要的事。我的时间就肯定不是这样(否则,我现在就不会在写这篇文章了)。但是,这是我衡量自己的生活是否充实的重要标准。

收集很多问题

另一个很多人都知道的秘密是:如果你认准一个问题,投入全部精力去解决它,这样你的效率是最高的。我发现这却是很难实现的。以现在为例,我正在锻炼身体,喝橙汁,整理桌面,和我弟弟聊天,同时在写现在这篇文章。今天一整天,我写了现在这篇文章,读了一本书,吃了点东西,回复了几封邮件,和一些朋友聊了聊天,买了点东西,改了改其他几篇文章,备份了硬盘,还整理了一下图书列表。
  有很多不同的项目让我能够在不同质量的时间下做不同的工作。更重要的是,在你卡壳或是厌烦的时候有其他的一些事可以做。
  这同时会让你变得更加有创造力。创造力就是你把自己从其他地方学到的东西能够用到你的工作中。如果你同时做许多不同方向的工作,那你就会得到更多的想法和创意。

列一个清单

找一些不同的事同时做并不困难,大部分人都有很多很多的待办事项。但是如果你想把它们全记在脑袋里的话,它们就会慢慢消失。要记住所有这些事所给你带来的心智上的压力会把你压垮。解决办法仍然是很简单:把它们写下来。
  一旦你把要做的事列成了一个清单,你就可以更好的分类组织它们了。比如说,我的清单包括:编程,思考,差事,读书,娱乐休息。
  大部分项目都包括很多不同的任务。以写这篇文章为例,除了真正的写作过程,还包括了阅读其他关于拖沓的文章,考虑文章的各个部分,整理语句,向别人请教问题等等。每一项任务都属于清单的不同部分,所以你可以在合适的时间才去做某一部分。

把任务清单和你的生活结合起来

一旦你有了这样一个任务清单,你需要做的事就是时常记得它,而记住它的最好方法是把它放在你能看到的地方。比如说,我总在我桌子上放一摞书,最上面的那一本就是我最近在读的。当我想要读书的时候,我就直接从上面拿一本书来读。
  对于看电视/电影我也这么做。当我对某一个电影感兴趣的时候,我会把它放在电脑中一个特殊的文件夹内。每当我想休息一下,看看电影的时候,我就会打开那个文件夹。
  我也想过一些更深入的方式,比如说我把一些想看的文章标记为"待读"(to read),当我想要上网的时候就看看那些从前积累下来的未读文章。

提高你时间的质量

像上面那样最大限度的利用时间还远远不够,更重要的是提高你自己的时间的质量。那你究竟该怎样做呢?
  减轻身体上的约束

携带纸和笔

我认识的很多人的口袋里都有记事簿之类的东西。纸和笔在很多时候都是非常有用的,你可以随时随刻的记录自己的想法,我甚至通过这种方法在地铁上写过整篇文章。

避免被打扰

对于那些需要集中注意力的任务,你应该尽量避免被打扰。一个很简单的方法是去一个没人能打扰你的地方,另一个方法是告诉周围的人未来一段时间不要打扰你。
  关于这点不要过犹不及。当你在浪费时间的时候你反倒应该被打扰一下,帮助别人解决问题肯定比坐在那里看新闻更好的利用了时间。
  减轻心理上的约束

吃,睡,运动

当你感到很饿,很累,很焦躁的时候,你的时间的质量会很低。解决这个问题很简单,就是:去吃,去睡,去运动。对自己说“虽然我很累了,但我不能休息,因为我必须要工作”会让你感到自己很努力,但事实上休息之后你的效率会更高。既然你迟早都要睡觉,还不如先休息好,来提高剩余时间内的效率。

与快乐的人相处

跟快乐的人相处会也会让你变得快乐,也会让你心态更放松。也许很多人愿意躲在屋子里,不与其他人接触,埋头干活,他们觉得这样的话时间才没有被“浪费”,但事实上这会让他们变得情绪低落,工作效率也会大大下降。

与朋友分担你的压力

即使你的朋友并不是能够感染他人,给你带来快乐的那种人,和其他的人一起解决复杂的问题也会让问题变得简单。一方面,精神上的压力大家可以互相分担,另一方面,和其他人在一起可以让你专注于工作而不是时常分心。

拖沓

上面所说的那些并不是问题的重点,关于效率大家最大的问题还是“拖沓”。虽然很多人不承认,但是几乎所有人都或多或少的会拖沓。那又该如何避免呢?
  拖沓是什么?从旁观者来看,你在做好玩的事(如玩游戏,看新闻)而不是做真正的工作。但问题的关键是:你究竟为什么会这样?你的脑子里究竟是怎么想的?
  我花了很多时间来研究这件事,我能给出的最好解释是在你的大脑赋予“脑力场”给每一项任务。你玩过两块磁铁相互作用吗?如果你让它们异极相对,他们就会相互排斥,你会感到他们之间的磁场力。你越是想要把它们和在一起,越会感到它们之间的排斥力。
  心智和精神上也是类似的。它是看不见摸不着的,但你却可以感受到它的存在。并且你越是想要接近它,它会离你越远。
  你不可能通过蛮力来克服两个场之间的排斥力,相反,你应该做的是调转方向。
  那又是什么产生了“精神力场”呢?似乎有两个主要原因:任务是否艰巨,任务是否是被指派的。
  艰巨的任务

把任务细分

一个任务很艰巨的原因之一是这个任务很宏大。比如说你想要做一个菜谱构造程序,没有人能一下子完成它,这是一个目标而不是一项任务。一项任务是使你能够朝向目标更进一步的具体概念。一个好的任务是你能够立即拿来实施的,比如"画一个展示菜谱的草图"。
  当你完成了上一个任务后,下一步就会变得更加清晰。你将会考虑一个菜谱有什么构成,你需要什么样的搜索机制,如何构建菜谱的数据库,等等。这样你就构建了一个引擎,每一个任务都会通向下一个任务。
  对于每一个比较大的项目,我都会考虑我需要完成一连串什么样的任务,并且将这些任务加入到我的待办事项列表中去。同样,当我做完一些任务之后我会把接下来需要完成的任务再加入任务列表中去。

简化任务

另一个让任务变得艰巨的原因就是它太复杂了。"写一本书"这个任务会放你感到无从下手,那么就先从写一篇文章开始吧。如果一篇文章也觉得太多了,那么就先写一个段落的概要吧。最重要的是真正做了一些工作,真正的有进展。
  一旦你明确了你的任务之后,你就可以更清楚的判断它,更容易的理解它。提高完善一些已有的东西比从头创建东西更容易。如果你的一个段落写好了,那么一点一点积累,它会变成一篇文章,最终变成一本书。
  认真考虑它
  通常来说解决一个困难问题需要一些灵感。如果你对那个领域并不熟悉,你应该从研究这个领域开始,借鉴一下其他人的经验,慢慢的研究理解这个领域,并且做一些小的尝试看看你能否搞定这个领域。

被指派的任务

被指派的任务是那些你被要求完成的任务。很多心理学实验都表明,当你"刺激"其他人做什么事的时候,他们反倒不容易做好那个事。奖励,惩罚等外部刺激会扼杀"内在动机" —— 你对于某个问题发自内心的兴趣。人类的大脑对于被要求做的事有先天的抗拒力。
  这种现象不仅局限于其他人要求你做的事,当你向自己分配任务时仍然会出现这种现象。如果你对自己说"我应该好好做X工作了,这是我现在最重要的事",之后你就会感到X突然变成了世界上最困难的事情了。然而一旦当Y变成了"最重要的事",原来的那个X又变得简单了。

虚构一个任务

如果你要完成X,那就告诉自己做Y。然而不幸的是,这样欺骗自己却很难,因为你清楚你究竟要做什么。
  不要自己给自己布置任务
  给自己布置任务看起来很诱人,比如对自己说"我要写完这篇文章才去吃饭",更糟糕的是让别人假装布置给你一些任务。但是这两种方式都会让你变得更没有效率,事实上你还是在给自己布置任务,你的大脑只会去逃避它。

把事情变得有趣

困难的工作听起来不会令人感到愉悦,但事实上这可能就是最能让我感到高兴的事。一个困难的问题不但能让你集中全部注意力,而且当你完成它的时候你会感到非常棒,非常有成就感。
  所以帮助自己完成一件事的秘密不是说服自己必须完成它,而是说服自己这件事确实非常有意思。如果一件事没有意思的话,你需要做的就是让它变得有意思。

总结

效率的真正秘密在于"聆听自己",在你饿的时候吃饭,在你疲惫的时候睡觉,当你厌烦的时候休息一下,做那些有趣好玩的项目。

这看起来很容易,但是社会上的一些观念正在把我们向相反的方向引导。要想变得更加有效率,我们需要做的就是转过头来"聆听自己"

有的时候宁愿付钱让你周一在床上待着,也不想让你用这周剩下的时间去调试你在周一所写的代码。 —— 丹·所罗门

编程技巧