关于程序员的工作效率

今天早上我偶然遇到一篇George Stocker的文章《怎么毁灭程序员的工作效率》,和一篇Joel Spolsky的《打一枪换一个地方》。这两个博文谈论了程序员的工作效率的问题,尤其是降低工作效率的模式。所以我考虑到要分享我提高工作效率的实践经验。

激情

提高工作效率的第一个技巧是对你每天要上的项目充满激情。你一定要由衷的看好你要做的项目。你必须想象出来从现在开始的一年、两年、三年后的结果会有多酷。有几次我花了点时间来思考:hey NDepend(我的项目)已经在过去的两年中逐步发展了这么多。两年前,我还想象它将会拥有的这些新功能和改进是本科幻小说,今天这都成真了,已经发送给现实中世界范围内的用户了。真爽!

耐心和信心

所以不仅是激情,甚至爱和耐心也是需要的。衡量过去X年的工作成就让我意识到一次做一个功能,一项改进,修复一个bug,写一行代码,这种一次仅一个的思维让我不断进步。过去的每次成功都正孕育着未来更多的成功,在每个小时里都激发你自己变得更有工作效率,因为没有比这更重要(专业)的事情了。

今天我好像整天都在解决一个烦人的bug,如果我不是一直这么愚蠢很可能我已经在半个小时内修复它了!没有一点压力,在过去这样的事情发生的太多了,回首这么多年走过的路,我明白这就是我要走的路。这就是信心。

马上开始

一个项目的中心点,应该是我们知道该往哪里走。短期(数天,一周),中期(数月),长期(数年)。短期对我来说意味着我的代码库塞满了优先要写的注释,优先5比优先4更为紧迫。这个听起来好像一个非常基本的任务清单的方式,但任务清单又很强大的优势。行动计划出现在编程操作必须要发生的地方。因此,在行动计划上开始工作就省去了寻找从哪些地方开始编程的优先级的过程。马上开始的这个行为(或不马上开始的行为)是工作效率的杀手。因此能帮你马上开始写代码的一切事情都是工作效率的资本。

行动计划的另一个好处是当所有的计划都完成时,工作就完成了。由于所有围绕着编程展开的任务(写测试,代码评审,校验等)都能且必须被安排在行动计划里,所以不再有行动计划是一个很简单的工作完成了的定义。

专注

当然在某种程度上,行动计划必须列出来,然后代码就必须爬到它们最可能应该写到的地方。通常当开始在一个东西(产品积压工作项目)上开始工作时就会发生这样的事情。这时候产品积压项目就会转化为(几个或许多)优先待办事项,优先级取决于产品积压项目的规模。它可能是修复一小时的一个bug,或将需要3个月来开发的一项功能。

每次不应该有超过10个优先待办事项,因为一个提高工作效率的重要的技巧是专注于你在做的事情。因此这个功能可以被分解为90个一类优先级和10个二类优先级待办事项,然后我们就可以再90个一类优先级待办事项中挑选出10个来完成。如果当前在做的二类优先级待办事项太值得了,你可以把它转化为三类优先级待办事项等等。

这样一来,每天早上你只需要查找你工作空间里的待办事项就能立刻知道该做什么了。你就不用去考虑今天该干什么,马上开始,保持专注就够了。

目标

对中期(数月)和长期(数年)目标进行想象,能培养工作激情和一天天的工作效率。必须有两个待办事项清单保持做到这一点。由于NDepend紧跟着Visual Studio的发布所以我们的冲刺期大约有12个月到18个月。所以我们有一个中期清单,上面列出从现在开始到N个月后我们要发布下一个主要版本需要做的事情。中期清单被ROI(投资回报率,即功能效果与开发投入之比)和用户的声音共同驱动着,后者为每一项未来功能的效果提供了很好的建议。这同样适用于长期清单,不被冲刺期限制的清单除外。

心理

到目前为止,我特别提到了几个项目管理和组织经历,这些都说明了保持完整的激情能提高工作效率。但激情、耐心、信息、马上开始、专注、定目标都与心理有关。这里有几个保持高效率的经典的常心理学惯例:

有一个健全而快乐的生活当然是必不可少的。对个人而言除了编程我生活里还需要其他事物:朋友,家庭,孩子和业余爱好。每天都有几个小时必须专用于代码之外的东西。一个人一定要睡好觉,并在正常的时间段工作。当你最专注工作的时候(一般是清晨或深夜)你必须要确定时间,并且尽量能走在这个特殊的时间里工作。这个道理听起来对你(和我)很明显,但那些超级令人讨厌的个人一定要注意这个。你不可能埋头一天敲14个小时的代码还在长期项目中保持工作效率。

我发现运动成为我编程生涯中最提升创造力的方式。经常跑步对我来说是一个提高工作效率的惯例。这过程中不仅会让我很自然的想出新主意,还会因耐力运动引发迅速分泌内啡肽激素,能很好的缓解痛苦和压力。跑步的人实际上很容易对这个上瘾,这是一个非常爽的过程。我把运动时间也当做工作时间的一部分。这样做是非常实用的,从不会错过任何会议。顺便提一下,我最近发现阿兰·图灵在跑步时就想到了许多超级棒的想法(他几乎能跑1948年的奥运会马拉松比赛了)。

除运动外,我每天还冥想,尤其是MBSR(正念减压疗程)。这样做会让我更安静,平和,专注。MBSR非常简单,在每天几分钟的会议期间都能做好几遍。它主要基于通过观息,察觉,感受环境来开发人感受当下的能力。关键是要发展“不以物喜,不以己悲”的能力。我们都知道,一个人想要长肌肉就必须锻炼,但很少有人明白大脑也能而且必须训练才能好用。一般情况下,MBSR和冥想是用来训练开发大脑和认知能力的。

当把心理学和工作效率联系到一起的时候,我们经常会听到“流动”的概念。“在流动的状态”意味着完全专注于当前的活动。达到“流动”的条件,就是工作效率之神:对工作保持激情和扎实的技能。我们经常会听到要熟练掌握一门技能需要10000小时的练习。“流动”更多发生在经验丰富的程序员身上。神奇的“流动”发生的另一个条件是:去接受有足够挑战性的任务。做简单的事情是不可能达到”流动“状态的。好消息是编程(技能牛的)这项工作并不简单。

当然,当谈到工作效率的时候避免被打扰也是一个很重要的方面。有些打扰你能控制,比如每天在批处理模式下处理邮件两次,而不是在网上辩论,不定期地浏览社交网络等,这就是冥想和运动能起到的重要作用了,因为专注度在提升。也有不可控的打扰,不论是同事,会议或孩子们(如果你在家办公的话)。除了应付这些打扰并能尽快的专注起来之外,你没有别的选择了。

对于没能和我一起工作的人,这还有一个奖励的理论。像我在一组安排里面做3个小时的编码工作,然后我就去海边玩一个小时。这不仅对我一个人起作用。我把完成工作后如果自己想去海滩就去当做一个奖励。奖励理论可能会对那些对他们自己工作没激情的人起作用。你职业生涯的第一责任就是要找到一个让你有激情的工作。

免费领取LAMP兄弟连原创PHP视频教程光盘/《细说PHP》精要版,详情咨询官网客服:

www.itxdl.cn

时间: 2024-07-29 02:44:22

关于程序员的工作效率的相关文章

程序员提高工作效率的15个技巧【Facebook】

程序员提高工作效率的15个技巧[Facebook] 作者: habadog 日期: 2015 年 02 月 13 日发表评论 (0)查看评论 1,Days always fill up. Only plan for 4-5 hours of real work per day.其实每天只有4-5个小时能专心编码,充分利用这些时间. 2,Work more when you’re in the zone. Relax when you’re not.在状态的时候多干一些,不在状态时可以就去做个大保

为什么程序员的工作效率跟他们的工资不成比例(转)

英文原文:Why programmers are not paid in proportion to their productivity 最有效率的程序员会比一般的程序员的编程效率高上几个数量级.但在任何公司里,他们的工资水平却只会出现很小的浮动差距.甚至在整个行业内,这种差距也不是很大.如果一个程序员的效率能达到其他人的10倍,为什么他不能得到10倍高的报酬呢? Joel Spolsky在最近的他的一个演讲里就这个问题给出了一系列的答案.首先,程序员的工作效率在整个行业内千差万别,但在一个公

为什么程序员的工作效率跟他们的工资不成比例

最有效率的程序员会比一般的程序员的编程效率高上几个数量级.但在任何公司里,他们的工资水平却只会出现很小的浮动差距.甚至在整个行业内,这种差距也不是很大.如果一个程序员的效率能达到其他人的10倍,为什么他不能得到10倍高的报酬呢? Joel Spolsky在最近的他的一个演讲里 就这个问题给出了一系列的答案.首先,程序员的工作效率在整个行业内千差万别,但在一个公司里却不会有太大的差距.如果一个人比他的同事的效率高10倍, 那他基本上会离开,要么去找更有天赋的人一起工作,要么去创业开公司.第二,极高

为什么程序员的工作效率跟工资不成比例!

最有效率的程序员会比一般的程序员的编程效率高上几个数量级.但在任何公司里,他们的工资水平却只会出现很小的浮动差距. 甚至在整个行业内,这种差距也不是很大.如果一个程序员的效率能达到其他人的10倍,为什么他不能得到10倍高的报酬呢? Joel Spolsky在他的一个演讲里 就这个问题给出了一系列的答案.首先,程序员的工作效率在整个行业内千差万别,但在一个公司里却不会有太大的差距.如果一个人比他的同事的效率高10倍, 那他基本上会离开,要么去找更有天赋的人一起工作,要么去创业开公司.第二,极高的工

程序员提高工作效率、节约时间的22条日常技巧

我一直在测试和调整各种生产效率的技术,在过去的五年中,阅读了大量的书籍(其中大多数是重复的) ,这里是我的一些结论: 这不是一个关于时间的问题,而是关于精力. 为了“有效率”,我们试图在一个工作日内塞进尽可能多的小时,但最终一切都更多地取决于你的注意力,积极性和良好状态(这些都是直接与精力等级联系在一起)而不是工作时间 . 我最近在葡萄柚的一个内部演示上提及了我提高效率的想法,结果性的演示是在Slideshare上的:producitivity porn. 其中一些关键结论: 1. 决定什么是重

如何让程序员幸福工作:细节决定成败

众所周知,优秀的程序员不但代码写得快,而且 bug 少.如何发现和留住这些人才,如果一个企业想要做大做强,那么这绝对是一个挑战.除了加薪和晋升以外,有时候一些细微的地方也能加分.虽然看上去并不重 要,但是要知道压死骆驼只需要最后一根稻草就够了.那么这些“细微的地方”指的又是什么呢? 合适的硬件 请注意这里有个形容词“合适”.编程需要有计算机是毋庸置疑的.不过企业也没有必要倾尽全力去配备最高端的设备.购置 CPU.内存.硬盘等设备应该根据实际情况量力而行.决策要明智,因为足够与奢侈之间只有一步之遥

程序员的工作、学习与绩效

工作中,碰到一些这样的例子,总有人提出疑问,为什么一个同事工作勤勉,完成了很多事情,季度绩效评定很高,但晋升却碰壁了.之前已经写过一篇<技术晋升的评定与博弈>,基本就能解答这个问题.但隐藏在背后的更深层次的本质却是:工作.学习与绩效的关系. 工作 程序员的主要工作是:编程,产出代码,完成需求,交付软件系统. 程序员按其工作技能和经验,大体又分为三个阶段:初.中.高级.三个级别的程序员的主要工作都是编程与产出代码,产出代码的数量也许相差不大,但产出代码的属性可能有明显差别. 在曾经的文章中提出过

白天工作型程序员VS夜晚工作型程序员,夜晚工作型胜出

浏览网站时看到一篇文题为 <The Day Programmer vs. The Night Programmer>的旧文章,该文章由 Mitch Denny 所写,因为 Mitch Denny 担任着某家公司的CTO,文章已经发出就引来火热跟帖.文章是由网友直译过来的,为让大家看的更明白,有些地方稍作修改. 多年前我就相信,世界上有两种程序员,不管他们用什么技术,我称之为: 1. Day Programmers 白天工作型程序员 2. Night Programmers 夜晚工作型程序员 在

程序员在工作中遇到最郁闷的事情

1:自我感觉很牛X的领导 2:自我感觉什么都会的开发程序员 3:没有架构的软件 4:没有任何文档的开发 5:没有注释的程序 6:自己开发完后自己都搞不懂的代码 7:需求不断的变更 8:加班加到吐 9:突击完成项目后.但是公司减掉你的加班时间,并且还说你效率不行 10:"我写代码的时候一个BUG都没有"的牛人 11:辛辛苦苦工作,到发工资的时候拖很长时间 其它的希望程序猿们可以补充.天下奇葩事情很多.为什么程序猿要很受伤. 程序员在工作中遇到最郁闷的事情