作为一个程序员,如何高效的管理时间?

Posted 人邮异步社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作为一个程序员,如何高效的管理时间?相关的知识,希望对你有一定的参考价值。

许多技术人员都有时间管理方面的问题。有时,我们的时间会被会议和其他任务占用。但是,对于留给我们的其他时间,大多数人可以管理得更好,学习时间管理是一项对获得职业成功至关重要的技能。

1 自律、拖延和懒惰

首先我想简单地区分一下拖延和一种经常与之混淆的行为:懒惰。在我看来,拖延是自律精神的对立面。下面先介绍一下我对自律的简单定义。

自律 记住你做某件事的初衷。

当我和人们谈论为什么有的任务他们会推迟去做,而另一些任务他们会马上去做时,他们的解释通常可以归结为“我当时就是不想做这件事”,这我能理解。我是个作家,有时我会非常没有心情写作。而且我很少有心情审阅校订稿(问问我的编辑们就知道了),所以这些任务很容易被推迟。因此,拖延是指把项目或者工作延期进行。我是在犯懒吗?也许吧。

但随即我记起了写本书的初衷。我有一个目标,我期望实现一些结果:名誉、财富、普利策奖。我现在依然想要得到这些东西,所以我必须把书写完。因此我根据自己对自律的理解给懒惰下了一个定义。

懒惰 忘记或者不知道你做某件事的初衷。

我推迟过一些项目,这使我感到很糟糕。很快,我就对整个项目都感到很糟糕,于是我把项目进一步地推迟了。终于,我坐下来并且意识到我并没有充分的理由去做这个项目。我看不出它能如何融入我的生活或职业生涯,也无法确定它能帮助我取得什么成果。在这个时候,我就不再进一步推迟这个项目,而是直接放弃它。如果我无法向自己解释我为什么在做这个项目以及它给我带来了什么价值,那我为什么还要为其感到焦虑呢?我不如承认这件事也许本就不需要做,然后及时止损,继续前进。

不过,下这个结论时你确实需要谨慎,不要简单地因为你现在没有心情做就放弃。相反,你要坐在镜子前,仔细看着自己的眼睛,问自己:“我当初为什么要做这件事?我希望通过它达到什么目的?”回答你自己,然后再问自己这个理由是否成立。

有些项目可能没有继续做下去的理由。例如,我大概做过3个播客栏目,都在大约20期之后就放弃了。我记得我为什么开始做这些播客栏目。但是,在有些情况下,我决定不再想要取得最初计划的结果了。我认为这些播客栏目其实并不能帮助我实现我希望的结果,所以我放弃了它们。

但是对于那些我确实有理由去做的项目,只要那个理由依然成立,为了完成那些项目我就必须管理好我的时间。

2 时间管理

我开始意识到成为一名有效的时间管理者几乎是所有高效专业人士的关键行为。在本节中,我想给出一些指导性意见,包括一些你需要注意的具体行为以及可以考虑采取的具体操作。

时间显然是一种有限的资源,能够有效地管理时间绝对是一项关键的职业生涯技能。下面让我们先学习一些通用技巧,掌握这些技巧可以帮助你成为更好的时间管理者,并且这些技巧几乎适用于任何职业。

2.1 时间盘点:翻转计时法

想要成功管理任何一种资源,你都要首先了解你的现状。在这里,我指的不是你有多少时间,而是你原本在如何使用你的时间。我用一个翻转计时器(可参见TimeFlip网站)来追踪我的时间分配情况,尽管用一个简单的日记本或软件应用程序也可以轻松做到这点,但我更喜欢用物理装置。翻转计时器是一个白色的塑料制的十二面体——就是一个有12个面的大骰子,如图7-1所示。

图7-1 翻转计时器

在翻转计时器的每一面上标注你一天的各项常规活动:编码、使用社交媒体、参加会议、查看电子邮件等。你的计算机上会运行一个配套软件应用程序。每当你切换活动时,就把翻转计时器上对应当前活动的那一面快速翻转朝上。你要全天记录,且要每天坚持。我坚持这样做几周之后,得到了如图7-2所示的结果。

图7-2 时间消耗基线

翻转计时器帮我做的事情就是建立基线。刚开始用它的两周里我的工作效率相当高,我觉得如果能每周保持这样就好了。所以这个翻转计时器向我展示了我每天在社交媒体、会议、编写PowerShell脚本和完成每日所有其他主要活动上,各花费了多少时间。

现在请记住:我已经在回顾时确定那是表现良好的几周。这个意思是说,我不必因为使用了社交媒体或去休息室休息而责备自己。即使做了所有这些浪费时间的事情,我仍然觉得这是表现良好的几周。所以那些所谓的浪费时间的事情对我来说就是一个普通的、健康的工作周的一部分。

在度过最初的两周后,我继续使用翻转计时器(直到现在仍然如此)。我将每个新的一周与基线相比。在有的工作周里我会注意到我在社交媒体上消耗了太多时间,这意味着我会在接下来尝试使用时间分配技巧(我将在第7.2.2小节中讨论)来进行更好的时间管理。有些工作周里的会议变多了,我可以追踪这些时间并将其与我工作效率的提升或者降低相关联(“是的,老板,我上周确实少写了一些脚本,但你让我多花了20%的时间开会。时间是有限的,你得决定我该把它花在哪里”)。

使用翻转计时器对我来说是一项非常有用的练习,每年(或者每当我的工作性质发生重大变化时,比如被分配到新项目中时)我会更新2~3次时间消耗基线。没有这个工具,我根本不会知道我的时间都花在哪里了,而现在我知道了。

如今,我也常用分类账簿的形式看待我的日常时间花费情况。这样做有助于我规划一天的时间(我用的是Rocketbook记事本,这个本子使用有塑料涂层的纸页和特殊的标记笔,能让我每周擦除字迹并重复使用)。某日的分类账簿如表7-1所示。

表7-1 某日的分类账簿

重要的一点是,我是基于翻转计时器反映出的我已有的时间分配来规划这些时间的。我在觉得可行的地方稍做了一些优化,但并没有试图移除所有会浪费时间的事情,比如我可能还是会花时间使用社交媒体。我的大脑需要度过那些被浪费的时间,所以我要做出安排。我也尽量不把这些会浪费时间的事安排在一天的末尾。我的翻转计时器显示我常常在下午开始做这些事,于是我也继续如此安排。这个分类账簿让我知道自己什么时候有时间参加会议,所以我尽量把会议都安排在这些时段。当然,这个系统并不总能完美地运行,但它能帮我带着计划开启新的一周,而不是等事情出现了再做出反应。

请注意,我在分类账簿上留出了空间以记录实际完成的任务。这样我就能随时做出改变和调整,每周结束时我也能看到自己对计划遵循得怎么样。清楚实际发生了什么,这样有助于我更加准确地制订下一周的计划。

2.2 时间分配:番茄工作法

番茄工作法的发明者是弗朗切斯科·西里洛,我用这个方法来计划和分配我的时间。番茄工作法是指把你的时间划分成多块,给每个时间块分配任务,然后只在每个时间块规定的时间内工作。

弗朗切斯科按照25分钟的时间块(他称为番茄钟)工作,每个时间块之间有5分钟的休息时间。这种方法的背后有双重用意:你可以在较短的时间内集中精力完成很多工作,而频繁的短时休息又能使你免于身心疲劳。我会依据当前工作的性质调整时间块的长度。我用过的番茄钟有25分钟的、55分钟的,以及其他更符合我当时工作性质的时间长度。

番茄工作法是这样用的:你给一个时间块分配好任务,然后设置一个计时器。你在这段时间内处理这个任务,直到时间过完。然后你可以休息一下(我也会在休息时计时),再继续完成下一个任务。我根据翻转计时器的数据估算我完成某项任务需要花费的时间,然后将工作日历上的事项填入各个时间块中。我可能会把一个8小时工作时长分成16个25分钟的番茄钟,如下所示。

● 查看电子邮件/Slack最新信息。

● 在办公室转转,与同事们聊聊近况。

● 参加已预定的团队会议。

● 参加已预定的团队会议(接上)。

● 检查昨晚的单元测试日志。

● 根据电子邮件、团队会议和单元测试失败情况规划明天的时间块。

● 吃午饭。

● 吃午饭(接上)。

● 与老板沟通绩效考核问题。

● 编码。

● 编码(接上)。

● 编码(接上)。

● 编码(接上)。

● 跨团队站会。

● 提交代码,部署、运行单元测试。

● 查看电子邮件/Slack最新信息(下午4点30分至4点55分)。

我并不会把每一天都规划得这么精细,但有时会如此。比如,有的时候我会计划在单个项目上工作,那么划分时间块就没什么意义了。但是当我知道自己需要在多件事情上切换时,做好时间规划就能使我提高工作效率。

我每天最先做的事是沟通,以获取最新信息,这样我就能快速了解当天是否有多项任务要并行处理,或者我是否有时间完成一些单个项目。我给大脑留出了足够多的间歇时间(约80分钟),这些间歇时间(在拿可乐的时候)能让我更容易切换到下一项任务。

当然,不是每一天都进展得很完美。但是当事情真的偏离了计划时,我能知道后果并做好安排(“老板,我知道会议延长了,但这样我要么得缩减半小时的编码时间,要么不参加下午的站会。你觉得怎样最好?”)。

我有同事进一步发扬了这个聪明的做法。他们在开放式办公室里办公,在这样的环境中干扰是常态,于是他们买了一个能显示巨大数字的电子倒计时器,然后安装到任何路过的人都能清楚看到的位置,旁边还有一个牌子写着“×分钟后你可以来打扰我”,他们周围的人很快就接受了这个约定。一旦你知道可以在不到25分钟之后拍某个人的肩膀,等待就变得更容易了,事实上这也鼓励了更多人发电子邮件,这样对方就会在特定的时间内处理。

2.3 时间目录:了解你的能力

通过长期使用翻转计时法和番茄工作法,我终于对自己有了更充分的了解:我知道自己可以高效地编写大约90分钟的代码,然后就需要切换任务了(这是我不再是专业软件开发人员的原因);可以实实在在地写作三四个小时;参加时长为25分钟的会议的状态比参加时长为50分钟的会议要好;需要大约20分钟来清理前一晚的电子邮件;需要大约25分钟来处理当天的紧急Slack消息;每天需要大约75分钟的“不思考”时间(我可以分小段用掉这些时间),和吃午饭的时间。

这些事实有助于我创建自己的时间块。我现在有一个时间块的目录,上面列出了我常做的事情以及需要耗费的时间。我借助这个目录来规划工作日的时间块。我知道安排25分钟的写作时间段没有意义,我需要3个或4个小时才能有效率。我知道我不需要每天安排一个小时去处理电子邮件,半个小时就可以了。我知道如果我安排了3个时间段写代码而中途被打断了,我在那天最好还是不要再写代码了,因为我无法保持足够长时间的最佳编码状态。

通过了解这些与我自身相关的基于时间的事实,我获得了有助于时间管理的信息,这样我就能更好地管理我的时间,而不是任其流逝。

3 多项任务并行处理

你擅长并行处理多项任务吗?为了便于讨论,请大声地说:“是的,我非常擅长并行处理多项任务。”

不,你不擅长。多项任务并行处理其实是不存在的。这个词出现在现代,来源于计算机领域。但计算机的多项任务并行处理有时也不是真正意义上的多任务并行处理。一个给定的微处理器(这里我们指的是内核,好比人类的大脑)一次只能做一件事。多核计算机可以做到真正的多项任务并行处理,但这就像一个人有多个大脑一样。但你没有多个大脑,你是一台单脑机器,因此只能一次做一件事。

单核计算机通过在任务之间快速切换来显得像能并行处理多项任务一样,这个过程称为任务切换。该理论认为,计算机在大部分时间都在等待人类操作,因此在空闲时间它会切换当前的任务去处理其他任务。事实上,计算机擅长切换任务,因为它们拥有完美的“记忆”,永远不会忘记之前在哪里、在做什么。

人类并没有完美的记忆,我们会忘记之前在哪里、在做什么,所以我们不是完美的任务切换者。然而,我们可以做的是学会识别空闲时间,然后在此期间切换任务。大多数人不擅长这么做,因为他们倾向于认为多项任务并行处理是真实存在的。当你意识到自己进入了空闲状态(“我正在等待贾森回复我的电子邮件”),你就可以切换到其他可以处理的任务上。如果你有特别好的短期记忆力和对细节的深度专注力,那么当空闲时间过去后你可以回归原来的任务,显得像在并行处理多项任务。

我可以在需要时像机器一样切换任务,可以在脑海中跟踪多个对话、待办事项列表、上下文等,也可以以某种方式非常地高效工作。这里我指的是,如果当天的任务都是短小的、冲刺式的,中途有很多空闲时间(比如从同事那里收集信息并根据这些信息做出决定),那么我可以完成很多工作,但这并不是我唯一的工作状态。当我坐下来写作时,我无法切换任务,因为写作留不出空闲时间。写作时没有自然的中断点,写作之外的任何事情都会分散我的注意力。在我写作的时候,干扰事物会迫使我从这项需要我集中注意力的任务中切换出来,从而降低工作效率。因此,当我不处于任务切换模式时,我会排除干扰:关上门、关闭手机中的弹出式通知,如果可以我甚至会切断网络。当我处于单任务模式时,只有如电话这样的高级别、紧急的中断,才能迫使我停下来。

问题在于,大多数人不会刻意管理他们所处的模式。他们不会将自己置于单任务模式,并且他们没有意识到多项任务并行处理模式(其实就是任务切换模式)是一种截然不同的运作方式。他们不会把自己安排在不同的模式下工作。也许你在早上会使用多项任务并行处理模式,下午会用单任务模式。但是,如果你能学会认识这些不同的工作模式,你会变得更加高效,而且会感觉更满意、更理智。

下面列举了一些避免在多项任务并行处理模式中“摔跟头”的方法。

● 意识到什么时候该将自己置于单任务模式,比如当你在编码、写作或者做其他需要长时间全神贯注的工作时,尽你所能减少会让你停止处理当前任务的干扰因素。如果你在办公室工作,试着设置一个受到广泛认可的信号,比如戴耳机,以表示拒绝打扰,关闭电子邮件应用程序、Slack和其他电子干扰。

● 当你需要进入多项任务并行处理模式时,避免扎进需要你几分钟以上注意力的工作中。反之,去处理许多可以快速完成的任务。如果有需要,你可以用笔记帮你记住并需处理的每项任务的进度,并且列出你要负责处理的任务清单。

● 不要混用不同模式。如果你进入了单任务模式,但实际情况又需要你转换注意力到别的事情上,那么就暂时进入多项任务并行处理模式。当你留出足够的时间时,再回到单任务模式中。

4 练习建议

在本章中,我希望你思考自己一天有多少事要忙,并开始进行一些时间管理练习。

● 清点你工作上的项目以及生活中的待办清单。你知道每一件事都是为什么要做吗?你能清楚地讲明你对每件事期望的结果,并且解释清楚你认为每件事会带来的价值吗?考虑一下是否需要删掉某些事,以便你有时间去做那些不能放弃的事。

● 为自己建立一个时间目录。首先,跟踪你目前的时间使用情况,不做任何评判。如果你每周花8个小时看视频,没有关系,记录下来。如此记录一个星期,然后试着从中找出你认为正常或可以接受的用于看视频的时间长度。这样做能帮助你了解自己一般在哪里并怎样度过自己的时间,还能让你识别出那些可以具有其他用途的时间。

● 尝试使用如番茄工作法等时间管理技巧,看看它们对你是否有效。养成良好的时间管理习惯可能需要几周的时间,因此如果你一开始没有严格遵守也不用沮丧。

本文摘自《程序员软技能》

 技术人的软技能实用入门指南,20余年经验总结程序员职业素养软技能,涵盖沟通能力、团队合作能力、冲突处理能力、领导力等14项软技能,帮助掌握技术职业生涯!

本书是专为技术人员编写的关于职业生涯的综合指南。首先,本书介绍了如何定义你的人生——不管你想要的是高薪,是良好的工作/生活平衡,还是其他,只有知道要去哪里,你才能开启成功之旅。采纳本书提出的职业规划、个人品牌营销、时间管理、远程工作等适应性建议,你将事半功倍。其次,本书深入探讨了技术专家应该重视的书面/ 口头沟通、冲突解决和团队合作等技能,从而帮助你在日常磨炼中走上正轨。此外,本书还会指导你掌握批判性思维方式,以及理解企业的运作方式和如何成为更好的决策者,同时指导你帮助他人并为任何事情做好准备。最后,本书介绍了技术人员容易忽视的财务知识,帮助你理解业务架构,并就求职策略给出了中肯的建议。

本书适用于任何正在寻求或已经开启技术职业生涯的人——开发人员、数据工程师、网络架构师、系统管理员、安全团队人员等。行业新手从本书中获得的益处可能是**、最显著的,但即使你从事技术工作很久了,本书的观点也会有效地指导你之后的职业生涯。

本书目录

  • 第1章 掌握你的职业生涯
  • 第2章 建立和维护个人品牌
  • 第3章 人际关系网
  • 第4章 成为技术社区的一分子
  • 第5章 保持技能的新鲜度和相关性
  • 第6章 以专业人士的身份出现
  • 第7章 管理你的时间
  • 第8章 进行远程工作
  • 第9章 成为团队合作者
  • 第10章 成为团队领导者
  • 第11章 解决问题
  • 第12章 征服书面沟通
  • 第13章 征服口头沟通
  • 第14章 解决冲突
  • 第15章 成为数据驱动的有批判性思维的人
  • 第16章 理解公司的运作方式
  • 第17章 成为更好的决策者
  • 第18章 帮助他人
  • 第19章 为任何事情做好准备
  • 第20章 技术人员的商业数学和术语科普
  • 第21章 现代求职工具

以上是关于作为一个程序员,如何高效的管理时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何做好一个软件测试管理者,高效带好团队呢?

作为一名研究生/博士生,你会管理自己的文献吗?

作为一名研究生/博士生,你会管理自己的文献吗?

如何领导员工成为项目管理者?

Yarn队列高效管理的结构设计方案

Win7系统如何高效使用内存