`
maoxy
  • 浏览: 141278 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

程序员该如何提高效率(转载)

阅读更多

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

Aaron Swartz写过一篇很有名的文章,叫做"HOWTO: Be more productive",这篇文章写的实在是太好了,我看了好多遍,很赞同作者的观点。我借鉴了作者提到的一些方法并运用到自己的生活中,发现确实有效果,所以我愿意让更多的人看到这篇文章。Aaron Swartz这个人绝对是大牛人,他14时就参与了RSS1.0的制定,他在Stanford读了一年就主动退学了,成为了YC的一员,他的公司后来与reddit合并了,他还是web.py框架的创始人。
废话少说,下面就是译文:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
肯定有人跟你说过这样的话“你有看电视的那么长时间,都可以用来写一本书了”,不可否认写书肯定比看电视更好的利用了时间,但是这个结论的成立需要一个假设:"时间是可互换的",也就是说看电视的时间可以轻松的用来写书。但是很遗憾,事实并非如此。
不同的时间有不同的质量等级。如果我在走向地铁站的路上发现自己的笔记本忘带了,我就很难集中注意力写文章。同样,当你不停的被打断的时候,你也很难集中注意力。这里还有一些心理和情感上的因素,有的时候我心情很好,愿意主动去做一些事,但还有一些时候我感到很抑郁和疲惫,就只能看看电视了。
如果你想变的更加有效率,你必须意识到这个事实,并且很好的处理它。首先,你必须很好的利用不同种类的时间。其次,你必须让你的时间更有效率。

更有效的利用你的时间

选择合适的问题

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

收集很多问题

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

列一个清单

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

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

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

提高你时间的质量

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

减轻身体上的约束

携带纸和笔

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

避免被打扰

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

减轻心理上的约束

吃,睡,运动

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

与快乐的人相处

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

与朋友分担你的压力

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

拖沓

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

艰巨的任务

把任务细分

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

简化任务

另一个让任务变得艰巨的原因就是它太复杂了。"写一本书"这个任务会放你感到无从下手,那么就先从写一篇文章开始吧。如果一篇文章也觉得太多了,那么就先写一个段落的概要吧。最重要的是真正做了一些工作,真正的有进展。
一旦你明确了你的任务之后,你就可以更清楚的判断它,更容易的理解它。提高完善一些已有的东西比从头创建东西更容易。如果你的一个段落写好了,那么一点一点积累,它会变成一篇文章,最终变成一本书。

认真考虑它

通常来说解决一个困难问题需要一些灵感。如果你对那个领域并不熟悉,你应该从研究这个领域开始,借鉴一下其他人的经验,慢慢的研究理解这个领域,并且做一些小的尝试看看你能否搞定这个领域。

被指派的任务

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

虚构一个任务

如果你要完成X,那就告诉自己做Y。然而不幸的是,这样欺骗自己却很难,因为你清楚你究竟要做什么。

不要自己给自己布置任务

给自己布置任务看起来很诱人,比如对自己说"我要写完这篇文章才去吃饭",更糟糕的是让别人假装布置给你一些任务。但是这两种方式都会让你变得更没有效率,事实上你还是在给自己布置任务,你的大脑只会去逃避它。

把事情变得有趣

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

总结

效率的真正秘密在于"聆听自己",在你饿的时候吃饭,在你疲惫的时候睡觉,当你厌烦的时候休息一下,做那些有趣好玩的项目。
这看起来很容易,但是社会上的一些观念正在把我们向相反的方向引导。要想变得更加有效率,我们需要做的就是转过头来"聆听自己"

分享到:
评论

相关推荐

    Java程序员面试的试题集(1_122)帮助初学者的技术问题(转载)

    ### Java程序员面试试题详解 #### CORBA的理解与应用 CORBA,全称为Common Object Request Broker Architecture,即公共对象请求代理体系结构,是由Object Management Group(OMG)制定的一项标准。其核心目标在于...

    程序员资料系列之CSDN经典帖子及文档合辑2

    "源代码"则意味着合辑中可能包含实际的DELPHI项目代码,通过阅读和分析这些代码,学习者可以更好地理解编程实践中是如何运用理论知识的,这对于提高编程能力大有裨益。 "资源"一词暗示了这个合辑不仅仅是文字教程,...

    软件开发人成长经历(转载)

    项目管理涉及时间规划、风险管理,以及使用敏捷方法如Scrum或Kanban来提高效率。 在实际工作中,开发者需要学会与团队沟通协作,这包括编写清晰的代码注释、参与代码审查,以及利用工具进行有效的团队协作。此外,...

    高效C语言PDF合集

    (一)--提高C语言代码效率的方法 (二)--经典 C语言 (三)--如何优化C语言代码(程序员必读) (四)--switch与if的效率 (五)--高效可移植程序的一些习惯 (六)--C语言嵌入式系统编程之软件架构篇 (七)--小...

    使用gcc和glibc来优化程序 转载.docx

    例如,通过使用`__attribute__((__noreturn__))`标记,可以告诉编译器某个函数(如错误处理函数)不会返回,这样编译器就可以删除函数返回后的代码,提高效率。另外,纯函数(pure function)是一种只依赖于其输入...

    鬼鬼JS调试工具7.5

    鬼鬼JS调试工具,就如软件名说的那样,辅Zhu程序员的,提高效率的,有需要的欢迎来下载! V8调试注意:一般JS运行返回的结果长度不会超过1024,当遇到变态级的超过1024长度的返回结果时,增大数值,否则会崩溃。小...

    【RPA之家转载视频教程4】UiPath初学者教程-RPA初学者教程-UiPath在线培训-Edureka.rar

    RPA,即机器人流程自动化,是一种技术手段,它允许自动化执行重复性、规则明确的业务流程,从而提高效率、减少错误并释放人力资源。UiPath作为RPA行业的领头羊,提供了一个强大的平台,使得非程序员也能设计、部署和...

    【RPA之家转载视频教程5】Salesforce自动化与UiPath机器人的多个用例.rar

    RPA是一种先进的技术,它允许软件机器人模仿人类在应用程序中的交互,实现业务流程的自动化,极大地提高了效率和准确性。 首先,我们需要理解RPA的基本概念。RPA是信息技术领域的一个热门话题,它通过自动执行规则...

    数据结构微软面试100道题

    微软面试100道题系列是一套针对IT行业内应聘微软等知名科技公司的面试题集,它主要包括三个部分:数据...通过系统地学习和练习这些题目,程序员不仅可以提高编程能力,而且能够更好地准备面试,提高通过面试的概率。

    (转载大神杰作)单片机多功能调试助手

    "单片机多功能调试助手"正是一款专为单片机编程人员设计的强大工具,旨在简化和加速调试流程,提高开发效率。这款调试助手集成了多种通信协议和接口,包括TCP/IP、UDP和串口,使得在不同网络环境下的数据传输和设备...

    【RPA之家转载AA视频教程】38.Recorder.rar

    【RPA之家】提供的【RPA之家转载AA视频教程】38.Recorder.rar是一个关于RPA(Robotic Process Automation)的教程,主要聚焦于Automation Anywhere的通用记录器(Universal Recorder)工具。这个工具是RPA流程自动化...

    【RPA之家转载视频教程5】对UiPath有疑问,请咨询我们的社区会议专家,由syed pasha(UiPath MVP)主持.rar

    RPA是一种技术,它允许自动化重复性、规则明确的业务流程,以提高效率和准确性。UiPath作为业界领先的企业级RPA平台,提供了丰富的功能和易于使用的界面,使得非程序员也能构建和部署机器人。 本视频教程可能涵盖...

    传智健康-项目源码+项目总结

    传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与会员间的互动,增强...

    Eclipse快捷键大全(转载)

    它的高效性和强大的功能深受开发者喜爱,其中快捷键是提高开发效率的关键工具。这篇博客“Eclipse快捷键大全”汇总了Eclipse中的常用快捷键,帮助开发者快速上手并提升编码速度。 在Eclipse中,快捷键可以分为多种...

    展现C#世界[转载]

    C#是一种由微软公司开发的现代、面向对象的编程语言,它源于C/C++,但具有许多简化和优化的设计,旨在提高开发效率和代码安全性。C#的主要特点包括简单性、现代性、面向对象、类型安全、版本控制和兼容性。 1. **...

Global site tag (gtag.js) - Google Analytics