要想提高工作效率,不论你看什么书,看什么文章,用什么工具,只有下面这三点最重要:
- 动力
- 剖析自己,找到改善的切入点
- 付诸行动并且坚持
目标驱动
有目标才能高效。
我们爬山,山顶就是目标,心怀山顶,在登顶之前,总是充满希望,纵有沟沟坎坎,也会克服困难,努力前行。
作为一个有追求的程序员,心中应该不只有一座山,更应该有一条绵延不断的山脉,千峰错落,峰峦叠起,终成峻岭。设立目标,付诸行动,不断攀登,是自我成就的不二法门。
放到日常工作中,就这么三点,就能让你与众不同:
- 每周一问自己:这周干什么,定下这周的目标
- 每天早上问自己一个问题:今天干什么,定下今天的目标
- 每天下班前花十分钟:今天完成了什么、有什么问题,记录下来
其实这是我从敏捷开发每日站会的三个问题延伸出来的。我的观点是,敏捷不只是做某一个项目时的模式和手段,而应当是一个有追求的程序员的贯穿始终的工作习惯。
从现在开始改变
抱歉,没有银弹,只有不起眼的小小经验谈。
作为软件开发工程师,在工作时需要高度集中注意力,动员所有神经来解决问题,最怕受到干扰。我正写代码写得HIGH呢,项目经理蹦过来问我进度怎么样,质管发邮件过来说过程检查不合格,测试MM说某个需求理解不了,有个无聊的网友在QQ发消息撩拨你晚上去幻影凶间,产品经理蹭到身边说不好意思兄弟需求又要改了……要知道保持速度与节奏很重要啊,我正突击呢你来这么一下子,看起来是几秒钟的事儿,可对程序员来讲,也许半天功夫就白费了,要想再找回断掉的思路,花费的时间可是那几秒钟的几十倍几百倍。
看看下面这张图:
“树欲静而风不止”。这是我们在开发过程中必须要面对的现实,各种各样的干扰会让我们的工作效率大打折扣。如果你有同感,往下看吧,包你不失望。
1)邮件的打扰
领导会要求你关注邮件,每隔多少分钟检查一下邮箱,最好安装一个邮箱客户端,设置一个自动检查新邮件。我原来也要求过部门的同事,现在想想这不大靠谱。关键的一点是:真正重要的事儿,真正紧急的事儿,不走邮件!所以,尽管关注邮件是必要的、必须要的,还是要给它设置一个限度。照下面这么做就好了:
- 每天早上扫一下邮件标题,把重要的、紧急的标记出来
- 每天中午查看邮件,汇总重要的事儿
2)即时通信工具的打扰
这年头,人都忙着在网上社交了,很多精力和时间都贡献给网络上的虚拟圈子和对象了,其实,我要说的是,玩的是热闹也是寂寞,别上瘾为好。
看张图片:
这是我某个时刻的QQ通知截图,同时和十四个人聊天,有的人比我还多,同时聊三五十个,要是笔记本没有静音,“嘀嘀嘀嘀”之声就像农村河畔夜晚的蛙鸣,此起彼伏连绵不绝,真够让人忙活的,你要是每听到一声“嘀嘀”都看一下子,那完了,就算你开着Qt Creator /Eclipse/VS/Android Studio之类的IDE,也没时间切换过去敲代码了。这场景,基本上就变成聊天为主开发为辅,看来淘宝小二的工作更适合你了。
电脑上有QQ,手机上有手Q、微信、陌陌等,也是一会嘀一下、震一下,也许我们每天要看手机100次以上,重度手机依赖者在300次以上,看微信、看微博、各种通知、看短信、接电话、看时间、看天气、看养的宠物、把玩游戏、看小说、看漫画……尼玛,智能手机太富有侵略性了。假如你从口袋里掏出手机的次数远远大于别人给你打电话的次数,那你可能就存在过度关注的倾向,得注意了,阿猿,你又没那么多女盆友,不会错过晚上的约会的,担心个什么劲儿呢。
下面几招就可以让你摆脱或降低即时通信工具和手机对工作的干扰:
- QQ,留给中午休息时间吧,或者下班前;关掉QQ,或者关掉消息提醒、设置提醒周期为很长很长;总之你别来烦我,我想你时去看看你。
- 微信,关掉提示音吧,把那些个不咸不淡的群,都设置为消息免打扰。
- 微博,关掉提示吧。
- 手机,调整为震动或者静音。
- 陌陌,办公室都是熟人,干掉它吧。
- 智能手机上各种应用的通知,都使用安全软件禁止掉吧,或者设置通知的提醒模式,不要提醒
- 断网,给手机断网,3G/4G/WIFI统统不要打开,看哪个软件还发通知
一句话:不要让手机和社交软件不停地通知你干扰你,你一个小时去查看一下状态即可。
3)张弛有度
工作一阵子(譬如45分钟、30分钟)就休息一下,有张有弛,活动下筋骨、站起来走走、活动脖子、腰、手,转转眼球看看远方,总之,一个人能集中注意力的时间长度是有限的,你要说你能连续高效工作四个小时,那我表示佩服。
为了能够张弛有度,程序员还需要做一些工作任务上的调整,把编码、设计、杀虫等工作的粒度细分,最好一个小任务能在几十分钟内完成,这样节奏就配合上了。
这方面有个著名的方法:番茄工作法。可以试试。
4) 提升开发效率的小贴士
程序员要写代码,这里有一些小贴士可供参考,也许能提高开发效率:
- 自测,每完成一个小功能都自测一下,看看这个功能自身是否正常,集成一下,看看有没有影响其他模块。开发人员的自测非常重要,编码期间频繁地测试、集成,会大大节省送测后回归的时间。
- 一个小功能完成后,提交到svn或者github之类的代码托管平台上,免得宕机、停电、误修改造成重复工作,对心情产生恶劣影响,这种影响甚至比外来干扰还要大、持久。
- 多与产品经理、需求人员沟通,完成一个功能就给他们看看,一方面是看是否是他们期待的,以便及时调整,另一方面是让他们对进度有所了解,降低他们因未知产生的焦虑,同时也能降低他们干扰你的频率。
- 多与测试人员沟通,完成一个功能集就可以Build一个版本给他们看看,玩玩儿,让测试人员熟悉产品,建立对产品的直观感受,也给他们时间写用例。
- 多与项目经理沟通,完成一部分功能,就可以给他们看看,让他们知道你在keep moving,也许他们也有一些想法,可以就此交流,免得什么都弄完了有人对结果不满意,要推倒重来,浪费时间。
- 多与团队成员沟通,很多功能都是要相互协作的,让他们知道你前进到哪里了,和与你有工作衔接的同事约定联调时间,相互发布进度。如果不能在预期时间内联调,提前告知。
- 多和UI及美工沟通,做出能看的东西就让他们看,看看是不是他们要的效果,免得到后面了返工浪费工作量。
知易行难
如果你发现自己的工作效率有待提高,并且拟定了一系列的措施,那就执行吧,坚持执行。想再多,落不到行动上,都是白瞎。
执行了,还要想办法度量效果。比如你觉得QQ影响你的开发效率,那就关掉它,坚持一周,看看有什么变化?要想度量效果也很简单,找一个时间跟踪软件,看看你每天花费在QQ聊天上的时间,花在开发工作上的时间,记录下来。然后在关闭QQ的情况下,再记录你花在开发上的时间。对比一下,在时间投入这个维度的结果就出来了。而工作成果这个维度,就看你自己如何度量了,比如通过工作量、完成的任务数等都可以。
总而言之,如果你觉得某个因素使你效率低下,那就制定策略,落实到行动上来,一定有效果。可惜的是有时我们明知那么做会有改善,可就是懒得动弹啊。