关于程序员的工作效率(绝对干货!)

今天早上我偶然遇到一篇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个小时的编码工作,然后我就去海边玩一个小时。这不仅对我一个人起作用。我把完成工作后如果自己想去海滩就去当做一个奖励。奖励理论可能会对那些对他们自己工作没激情的人起作用。你职业生涯的第一责任就是要找到一个让你有激情的工作。

我希望分享我的有关工作效率的经历现在或以后能帮你变得更有生产力!现在是时候回头去敲代码了(我也是!)。

未经允许不得转载:SuperMan's blog » 关于程序员的工作效率(绝对干货!)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址