2020年罗志祥因为私生活的风波被网民戏称为时间管理大师,火出了圈。虽然是个玩笑话,但是我还是很佩服他的时间管理技巧的。甚至严肃的说,我觉得程序员其实更需要补习“时间管理技巧”,虽然凌晨三四点不睡这种事情我是非常不提倡的,但是写一篇关于如何更有效利用时间的文章这个想法已经在我脑海里埋下了种子。。。。
假如你和同事智商都相差无几,工作平台都差不多,大家都每天工作八个小时的情况下,你如何能保证自己在工作若干年之后会比你的同事更优秀,更能胜任更高级别的职务呢?
答案是不可能。你要么肯花更多的时间,要么在花同样时间的前提下,把时间花的更有效率。但是多花时间干什么,和怎么花你的时间,都是很有讲究的。
工作日的时间
无脑的工作和有脑的工作
人一天的精力是有限的,不可能一天八个小时十个小时都100% 全神贯注。尤其是现在还有很多公司都还在执行996的制度,我们更要学会合理分配自己的精力。我的观点是,把最好的精神留给有脑的任务,把稍微差的精神留给那些无脑的任务。
在外行人眼里看来,做程序员是一个很有创造力的工作,写代码是很高深的东西。
下图是每次我老婆倒咖啡路过我房间看我编译安卓的时候满桌面都是terminal的感觉。。。
但是作为一个心里有点bbbbeeee数的人,我们应该清楚很多时候我们并没有在创新,甚至代码都不一定是自己原创的(从Stack Overflow。。。。)。很多任务,很多要修的bug压根就不需要动脑子。这种任务做多了,会很消耗自己的耐心和一天好不容易打起的热情。
我的处理方式是,每天在起床上班之后,列一个表,把今天要做的任务全部记下来,然后把任务全部一一归类,哪些是无脑任务,哪些是需要深入分析,或者仔细设计(比如写设计文档)的。把需要精神高度集中的任务放在一起,把无脑的那些放在一起。
[我的某一天的记录。。。]
然后根据个人每天精神的状态,合理的分配时间给不同种类的任务(有的人早上起床精神最好,有的人可能晚上安静的时候最好,因人而异)。把无脑的任务当做是消耗脑力之后的休息,也是一种非常好的放松方式。做无脑任务的时候,甚至可以奖励自己边听歌边写代码, 我自己有段时间(疫情刚刚爆发的时候)甚至会一边听郭德纲相声一边修无脑bug。(当然最后测试的时候千万别分心。。。)
把这个习惯培养之后,你会发现,这其实就是老板们(manager)每天都在做的任务分流(triage)和分类。比如,如果你是老板,你应该分配给新来的程序员修哪种类型的bug :)
学会每日总结
每天结束都需要做一个小总结,总结一下
- 今天有没有值得记录下来的技术上的学习要点
- 今天有没有什么时候自己在无谓的事情上浪费了时间
- 今天有没有可能在大组会上错过什么重要的信息
- 等等等等。。。。
我从正式工作开始就变天记录学习到的知识点,写完了六本笔记本,这个记录陪伴了我整整七年,每天都在督促我学习更多的技术和知识,同时也是我在一家公司的晴雨表,每次到记录的知识越来越少的时候,我就知道我可能需要跳槽了。。。。
[找到的其中一本笔记。。。还有点草稿。。]
尤其是是第一点和第三点,一个可以帮助自己拔高自己技术上的高度,
我从正式工作开始就变天记录学习到的知识点,这个记录陪伴了我整整七年,每天都在督促我学习更多的技术和知识,同时也是我在一家公司的晴雨表,每次到记录的知识越来越少的时候
一个提醒自己多留心组内,公司内的大方向的发展。
我自己就是一个反面教材。我们大部门是做谷歌的手表操作系统的,而我在的小组是负责手表上虚拟电话卡的组件。在以前我一般只会关注自己的一亩三分地,对大部门内的每次组会都不太在意,能躲就躲。从而导致自己完全不了解整个部门的发展方向,对大组内的人事变动也毫不关心,只要不炒了我,随便其他组怎么变动都无所谓。。。
在我意识到这个问题之后,我开始每周在开大会的时候把没听懂的地方记录下来,晚上再回忆一遍不懂的地方,第二天找资深一点的同事问一下。
更何况每天的总结压根就不花费太多的时间,甚至一边洗澡一边反思总结都有可以。。。。
周末的时间安排
我个人认为对技术有热情的人,周末也会抽一点时间出来“学习”。
做一些对自己平时技术工作的补充工作是非常好的。比如以我自己为例。我以前是做安卓app开发的,但是我对framework更感兴趣,于是我就抽周末某一天的一个上午的两个小时,去阅读安卓的framework分析。比如老罗的Android之旅等等。想象自己是一个班的班主任,给学生布置阅读任务一样,每周学习一点。我记得最清楚的是在面试谷歌的时候问到了一个和dex文件优化有关的设计问题,我很庆幸自己有阅读过相关的文章,虽然和面试的问题不是100%有关系,但是给了我足够多的启发让我通过了那一轮。
同时,挑选(筛选)学习和阅读的内容本身也是给自己树立方向的一个过程。
当然也有的朋友说,我做公司工作上的内容就已经够我学习了,我周末做一下行不行。。。。我个人的观点是不是不可以,但是要注意方式方法,做的不好很容易被组员骂奋斗逼。。。
首先你要清楚自己周末做这个任务的目的是什么,如果是为了学习一个新的知识,那没问题。
我自己刚刚开始做framework上的任务的时候会每周抽一个上午看一个没接触过的模块的任务的背景知识 (注意是背景知识,不是真的开始解bug)。比如我有段时间开始被老板频繁分配去看安卓Telephony和VoIP的问题。我知道我并不懂VoIP,但是我对这个知识有很感兴趣,所以我开始每个周末都看一点相关背景知识。从2G 3G的网络架构,到4G LTE 的核心网,到SIP协议等等我都会过一遍,这些知识很大的帮助了我在翻看相关bug的时候不会被繁杂的专业术语给晃瞎了眼.
所以如果这个额外的工作时间能帮助你学习到你想学的知识的时候,去利用这个时间学习相关知识的确没毛病(注意要区分我上文提到的无脑工作)。
但是切记最好不要用这个时间真的去写相关代码,至少别在大周末的时候把刚写的代码审查发出去,骚扰你想周末休息的组员。(这里插播周杰老师的原话。。。)
同时,消除组员的误会,不要让他们认为你在内卷,而是要让他们真心的意识你是一个想学习的好孩子(手动狗头 :dog: ) 千万别把自己学习到的知识藏着掖着,在开小组会的时候多分享多交流一下,大家会理解你的。。。
以上就是我自己的一些对于时间管理的见解,如果不同意就当我在放屁,千万别喷我。。。。 祝大家新年快乐 :)