你好,我是葛俊。今天,我来和你聊聊深度工作这个话题。
我在上一篇文章中提到,要想成为一个10x程序员,我们需要在编程技术、工作方式、工具使用等方面全面提高自己。今天,我们就从工作方式的角度来看看如何提高个人效能吧。
毋庸置疑,身边充斥的各种信息,无时无刻不在吸引着我们的注意力,导致我们的可用时间越来越少,需要处理的信息、事情却越来越多。这中间的关系一旦处理不好,很容易就会出现问题。比如:
所以今天,我就和你聊一个看似简单的问题:在任务多、干扰多的现状下,如何最高效地利用时间,去做最重要的事儿,同时有更多的时间来放松和享受生活。
在我看来,这个问题的答案就是深度工作,聚焦最有价值的事儿。深度工作这个概念,是由卡尔 · 纽波特(Cal Newport)提出的,指的是在无干扰的状态下,才能专注地进行的专业活动。这样的活动能够使个人的认知能力发挥到极限,从而让我们创造出最大价值,成为一个不可替代的人。
就我个人而言,我也一直在想办法去聚焦最有价值的事儿,也读了不少GTD(Geting Things Done,尽管去做)的书,尝试了不少方法,积累了不少经验,也踩了不少坑。总结来看,实现深度工作的办法说起来很简单,可以概括为以下三步:
但,这些办法真正实行起来,就比较有挑战了,所以接下来我会从这3个方面与你分享些实用的方法和技巧。
我们都清楚,事情做得快非常重要,但做真正有效的事情更重要。这也就意味着,我们首先要找到目前最最重要的任务。
在找最重要的任务时,我建议你按照以下三步来操作。
下面我们分别看看这三步具体如何实施吧。
GTD的创始人大卫 · 艾伦(David Allen)提出,日常任务可以分为3种:
在我看来,我们要把更多的时间和精力放到自己定义的任务上。你可能会觉得,前两种任务已经够多了,也非常重要。但其实,我们容易忽略的第3种任务,可以帮我们减少前两种任务中不必要的浪费。
因为,预先计划好的任务的优先级常常会随着情况的改变而改变,而临时产生的任务很可能当时觉得很紧急,但实际上是可以推迟或者甚至不做的。我们根据当前情况决定要做的任务,就可以避免把时间花在低优先级的任务上。
我的建议是,在每天的工作间隙,花一些时间考虑自己去定义任务,问自己这几个问题:
聚焦目标,以终为始,其实就是在自己定义任务。因为时间有限,为目标服务的任务才最重要。
作为高效开发者,常见的目标包括业务成功、帮助团队,以及个人成长这3个。如果能找到三者重合的任务就最好不过了。
我在Facebook工作的时候,有个朋友发现日常工作中自己和团队常常要用到面板,而现有的面板系统对他们的场景不够友好。于是,他自己花时间实现了一个基于Python的DSL的面板系统。他的工作中就会大量使用Python,所以这个项目对他的个人技术成长很有好处。
工具做好第一版之后,团队成员非常喜欢这个工具,并很快就扩展到其他的很多团队,比如我也用它给我们团队做了一个面板。这个工具非常好用,半年后在公司立项,并由这个朋友主导,逐渐发展为公司最受欢迎的面板系统。
这个面板工具任务,就是一个帮助业务成功、帮助团队和个人成长三者相结合的案例。
日常工作中更常见的情况是,三者不能兼得。这时,我们首先应该关注业务成功,因为它是我们工作的最基本目标,是基础。在此之上,我推荐先考虑帮助团队成长。因为帮助团队的同时,往往会给自己带来一些直接或间接的成长机会。
生命有限,而工作无限,所以我们必须要无情地排优先级。
很多人都有一个倾向,就是贪多,认为越多越好,我曾经也这样。在自己的书单里添加了几百本书,书签页中添加了几百篇要读的技术文章,Todo List里添加的任务也越来越多,还计划学习这个语言、那个框架。但实际做起来,却因为时间有限,不但只能浅尝而止,还让自己很疲倦。痛定思痛,我下决心去做减法。
在我看来,“数字3原则”很有效,也就是强制把要做的事、要达到的目标,都限制在3个以内。
我曾参加过一个增进对自己了解的工作坊,期间有一个练习,帮助我们明确自己最关注的道德品质。
首先,我们要从一个有50项品质的列表上,勾选出25项自认为最重要的;然后,在这25项品质中,再选出10项最重要的;最后,从这10项里再筛选出3个。
第一轮筛选很轻松,第二轮筛选时就有一点儿困难了,到了第3轮10选3时真的非常痛苦。它强迫我仔细思考,到底哪3个品质对我才是最重要的。作出决定之后,你就会发现对自己的了解更深了。
这对我帮助非常大,所以我在后续的工作计划中,也强迫自己使用数字3原则,无论是三年规划、半年规划、本周规划,还是当天工作,都做一个无情的筛选,找出最最重要的3件事儿。我推荐你也尝试一下。
经过这三步,我们已经明确了最重要的任务,接下来我们再看看如何寻找高效的解决方案吧。
回想一下你和产品经理打交道的过程,是不是下面这样呢?产品经理决定如何在业务上满足用户需求,而开发人员就是,从产品经理手中接过任务,马上开始技术上的设计和实现。
这种工作方法我们很熟悉,但其实有很大的局限性。因为开发人员对技术实现最熟悉,如果我们能结合业务进行思考,追根究底,常常能对业务的解决方案做出一些改进,甚至是重新设计出更好的方案。而这样的改进,对个人研发效能的提高帮助非常大。
我在做Phabricator项目时,曾收到一个任务,要解决用户进行inline讨论时,模态弹窗(modal)挡住弹窗下代码的问题。你可以先思考下,自己收到这样的任务会如何做,然后再对比看看我的经历,收获会更大。
这个任务的描述很简单,就是去改进Phabricator使用的JavaScript库,让它支持用鼠标拖动模态弹窗。但是,当我了解这个JavaScript库后,发现工作量非常大,需要三四天才能完成。正当我考虑如何下手时,一个经验丰富的同事提醒我先别着急去做这样的大改动,可以想想看还有没有其他方法,能够更简单地解决这个问题。
我觉得这个建议非常有道理,于是仔细思考了用户需求,并与产品经理进行沟通和讨论。结论是,要解决代码被遮挡的问题,并不一定非要拖动模态弹窗,还有一个比较简单的办法,就是放弃使用模态弹窗做讨论功能,而是直接在被讨论的代码和下一行代码之间插入一个文本框供用户进行讨论。
这样一来,不但解决了代码被遮挡的问题,还因为无需改动底层库,工作量直接降为了一天,同时给用户提供了预期之外的方便。因为没有模态弹窗,用户写注释时还可以上下滚动代码窗口,来查看更大范围内的代码,体验更好了。
此后,我在接到任何任务时,都会先考虑它到底要解决什么问题,有没有更好的解决方案,花些时间去深入思考,往往都能帮我节省后面的很多时间。
所以我认为,开发人员也要对业务有一定的了解。面对任务的时候,多问几个Why,并与产品经理和团队成员充分沟通,了解它到底要解决什么问题,只有这样,我们才能以解决问题为出发点,找到最高效的解决方案。
接下来,我们再看看如何管理时间和精力,去具体实现这些方案吧。
信息爆炸、时间碎片化,给我们的时间管理和精力管理带来了很大挑战。关于这个话题,也有很多理论和实践了,我也尝试过很多方法。在这里,我给你推荐3种我认为最有效的方法,包括用番茄工作法来记录深度工作时间、用拥抱无聊来控制对手机的依赖,以及用反向行事日历(Reverse Calendar)来确保休息和高效。
接下来,我们分别看看这3种方法吧。
简单地说,番茄工作法就是把时间划分为固定时长的工作时间和休息时间。一个番茄时间包含两部分,25分钟的工作学习和5分钟的休息时间。
番茄工作法的精髓是,在每一个工作时间段,避免干扰、全神贯注。因为只有精力高度集中,减少上下文切换,才能进入深度工作状态,进而最大程度地发挥我们的心智能力,提高个人效能。
根据我的精力以及工作性质,我对番茄时钟做了一点调整,把每一个工作时段调整成为40分钟。在这个时间段内,我尽量避免实时聊天工具和电话的干扰,集中精力去做当前最重要的事情。条件允许的话,我会把手机调成静音,并关闭电脑上的提醒功能,甚至干脆离开办公区去走走,边散步边进行专注的思考。
手机依赖症越来越普遍,我也深受其害,有段时间甚至去卫生间都一定要带着手机。
后来,我发现了一个“拥抱无聊”的方法。具体来说就是,在一些非常碎片化的时间,不要因为无聊就马上抄起手机,去找一些有意思的东西放松或者学习,而是尝试适应无聊。
其实,无聊也是一种不错的状态,试着去享受它,不要让自己的大脑一直处于活跃状态。这样可以让我们得到休息,而且更重要的是,能够比较好地避免自己打扰自己的倾向。所谓“自己打扰自己”,就是会不自觉地去想、去做一些与手上工作不相干的事儿,自己干扰自己。
不知道你有没有这样的感受,当习惯一有空闲就使用手机之后,在工作中稍有一点空闲,或者是遇到比较难以处理的问题时,就会不自觉地想停下来看一看手机。我认为,这就是因为我们习惯了用手机来缓解紧张和压力而形成的条件反射,就是对手机的一种依赖。
反向行事日历主要用来处理因为工作太多导致的忽略休息、影响健康和效率低下的问题。
我们在安排日程时,通常会把工作任务放到日历中,而不会把运动、休息、吃饭等非工作任务放入其中。反向日历正好相反,首先就是把这些非工作任务作为最高优先级放到日历中,然后再在剩余的时间中安排工作任务。
在我看来,这个方法有两个非常明显的好处:
我在开篇词中指出,团队研发效能的定义包括有效性(准确)、效率(快速)和可持续性3个方面。实际上,个人研发效能也包括这3个方面。其中,有效性就是要做对的事儿,效率就是要高效地执行,而可持续性就是要安排好时间和精力,有张有弛才能持续发展。
针对这3点,我今天就与你分享了聚焦最重要的事儿的3个步骤:第一,以终为始,寻找并聚焦最重要的任务;第二,追根究底,寻找最高效的解决方案;第三,安排时间和精力,高效执行解决方案。
可以看到,这三步就是从个人效能的3个方面入手的,即:聚焦最重要的任务,是帮助我们提高有效性;寻找高效的解决方案并高效执行,是帮助我们快速完成开发任务;而合理安排时间和精力,就是让我们持续地进行高效开发。
知易行难,同样适用于这些原则。所以,我非常希望你能实践并坚持这些原则和方法,当然了你也可以去寻找更适合自己的方法,让自己这块好钢能用到刀刃上。
感谢你的收听,欢迎你在评论区给我留言分享你的观点,也欢迎你把这篇文章分享给更多的朋友一起阅读。我们下期再见!
评论