Noapes's Blog

Stay hungry, Stay foolish

[译]程序员该如何提高生产力?


[译]程序员该如何提高生产力?

图片来源: 50 Inspirational (and actionable) time management quotes

原文链接: How to Improve Your Productivity as a Working Programmer

转载链接: How to Improve Your Productivity as a Working Programmer

在过去的几周里,我着迷于生产力提高的实践.在这段时间里,我一直关注着我自己完成工作过程,尝试做出一些改变来提高自己的生产力.仅仅两个月后,我现在可以在同等时间里有效地完成比之前更多的工作任务了.

如果在这之前你问我关于程序员生产力的看法,那么我可能没法谈论太多.回顾过去,看到自己可以做更多工作后,现在我认为了解如何提高生产力是一个程序员需要拥有的重要技能.下面是这几周我认为显著影响我生产里的改变.

消除分心

第一个也是最简单的改变是:尽可能消除让自己分心的事情.之前,我会把大量的时间花在阅读Slack消息,电子邮件,Hacker News上.如果我把这些时间花在专注完成工作,那么几乎所有的这些时间都能得到有效利用.

为了尽可能的消除让我分心的事情,我首先改掉了当我完成了部分工作后就拿出手机的习惯.现在,只要我拿出手机来,我立马又把它放回去.为了减少Slack的打扰,我退出了那些我无法立即获取有价值信息的闲聊群.现在我只保留与我团队和工作相关的群.此外,我只让自己在特定时间查看Slack,比如,开会之前,或者午饭之前,或者下班前.当我开始上班的时候,我故意不去查看Slack,而是开始工作.

养成持续专注工作的习惯

Flow,有时也被称为领域, 是指你的注意力全部集中在手中工作时一种精神状态.我努力地营造一个环境来最大限度延长保持这种状态的时间.比如,我把我的工作台搬到办公室的一个安静的角落,营造长时间不受打扰的环境.当我想进入这种状态的时候,我会带上耳塞,关掉所有的不相关的浏览器选项卡,然后把所有的精力集中在我当前的工作上.

根据自己生产力最高的时间来安排一天工作任务

当我开始计划当天任务时,我脑海里主要有两个目标.

第一是把所有我需要参与的会议集中安排.这使我专注状态的时间最大限度地延长了.我遇见过最差的安排是几个会议相隔半小时.半小时不足以让我完成任何重要的工作,因为半小时后,我就会被下个会议中断当前工作.相反,我将所有会议安排在一起,这样开完一个就可以接着开另外一个.这样我就需要长时间等待来进入进入专注并保持专注了.

第二个是尽量把计划安排在我生产力最高的时间段.比如,我发现自己一般在早上最具有生产力.然后下午4点的时候,我通常精疲力竭,没有足够的精力去完成所有的工作.为了减弱这种情况对我的生产力的影响,所以我现在会把会议时间安排在这个我生产力最低的时间段.毕竟,全程坐着开会并不需要很多能量.这种方式可以让我在自己生产力最好的时候工作.想想看,如果我把我最有生产力的时候半小时的开会时间换到我生产力最低的时间段,那么我这一天就可以增加30分钟有效工作的时间了.

观察自己写代码的过程

我发现一个个非常有效的实践就是观察自己的写代码的过程.在某一周里,我运行着一个录屏软件记录我操作过程.然后,在周末,我会观看上一周的几段视频.我通常会关注任务实际完成比任务原本计划完成长很多的时间.当我关注这些的时候,我会集中注意力观察时间花在何处,并且找出那些我本可以做的更好的事情.当我第一次尝试后,我被自己的时间开销记录震惊了.

比如,以前我写代码的时候,我会在完全实现功能的所有代码后,集中测试这些代码.而当我按照这种方式测试的时候,我需要先隔离bug可能会出现的函数,然后再debug单个函数.在我看完自己写代码的过程后,我发现我几乎花费了总时间的四分之一来实现追踪功能可能出现bug的函数上.在这之前,这并不是显而易见的,如果不对自己编码过程做记录,我根本无法发现这些.现在,我意识到我在隔离可能出现bug的方法上花费了太多时间,所以现在我写完方法就立即对他们进行测试,确保这它有效.这让我可以快速写代码,因为这种方式大大减少了我调试时间.

追踪过程并且完成改变

在下班前,我会花上15分钟来回顾这一天.我回顾自己在一天中哪些事情做好了,哪些事情是我本来可以做好的事情.然后再花上15分钟,把自己的这些想法写下来.每周六,我会再读一遍这一周里的回顾笔记,并根据这些笔记来实现一些改变.

举个简单的例子,以前周末早上,我在起床前在手机上花上一两个小时.那个时间我本来可以用来干其他事情.为了解决这个问题,我晚上临睡前会把手机放到离床很远的地方.然后早上醒来的时候,我强迫自己不带手机去卫生间.这就使得我很难在早上浪费时间了,每周可以为我节省几个小时。

耐心

我并不是一次性完成所有的这些改变.我一次只做出一两个改变.试想下,如果我尝试一次性完成上面的那些改变,那么我会很快精疲力竭,然后放弃的.相反,我可以更慢的引入每个改变来做更多改变.每周只需要做一两次,然后雪球将会越滚越大.仅仅过了几周,我就发现我比以前更具有生产力了.作出任何改变总比没有改变要好很多.我认为哈佛大学John Ousterhout的话恰当地描述了这一点.他说:"A little bit of slope makes up for a lot of y-intercept" - 类似"千里之行,始于足下!".