有句笑话,程序员就是喝咖啡产代码的机器。
果不其然,随便抓一个程序员,问问他们什么时候效率最高,十之八九会说是在深更半夜。为了有更高的效率,早起的人起得更早,晚睡的人睡得更晚。现在一个日趋流行的趋势是,凌晨4点起床写代码,或者是凌晨4点才上床睡觉。
夜猫子之所以效率高是因为不容易分心。但是貌似和白天相比,也就锁了门而已,这有什么特别的吗?
我分析了一下,把原因归结为三个方面:生产型的时间表、昏昏欲睡的大脑以及明亮的电脑显示屏。
生产型的时间表
paulgraham在2009年写了一篇关于时间表的文章——世界上所有的时间表基本上可以分为两个类型:管理型时间表和生产型时间表。传统的管理型时间表把一天的时间切割成一个一个小时来安排,这样即便是走神了10分钟也不过最多是浪费了1小时而已。
但是,如果是生产型时间表,就不一样了。这一类型的时间表有助于我们全身心投入到一个大型的抽象系统中去,统筹帷幄。有人曾经把这一时间表比作用昂贵又脆弱的水晶制造的房子,一旦有人搅乱了你的注意力,这间华丽丽的房子就会立马分崩离析、碎成万万片。
这也是为什么我们程序员特别讨厌别人打搅的原因。
因为编程需要巨大的精神投入,使得我们往往要花上几个小时的时间,才能把散乱的思绪连贯起来,继续工作。好像我们在大脑中构建了整个模型,碎掉只要一秒钟,但是要再组建起来就非常麻烦,为了一秒钟的打搅而付出长时间的代价,真心不值得。
其实,在访问过很多创始人之后,你会发现他们也常常觉得自己根本没法在白天进行任何工作。不得不应付的中断、重要人物的到访、需要回复的电子邮件纷至沓来。所以他们只能在别人都睡觉的时候,才有时间来搞定他们的大部分工作。
昏昏欲睡的大脑
不过,程序员可不是真正的机器,也是需要睡觉的。并且老实说,白天的时候程序员更为精力充沛。
那你或许要问了,为什么我们要在大脑昏昏欲睡的时候才开工做复杂的工作,而在白天脑细胞最活跃的时候做点简单的任务?
因为疲倦的时候编程效果更好。
当大脑感到疲倦的时候,它就会不得不集中注意力,因为这个时候,大脑已经没有剩余精力去关注其他事情。
举个例子,当我喝了很多茶水或者饮用了功能饮料之后,对着电脑完全静不下心来,好吧,我是活跃过度了,我一会儿刷twitter,一会儿浏览《黑客新闻》,等等,看上去忙忙碌碌,其实啥也没做。
如果你认为当我转向工作的时候,工作效率会更高——那你就大错特错了。精力越是充沛,注意力就越不能好好集中,老实说,我甚至不能在同一个事物上专注超过两秒钟。
相反,当我感觉有点累了,就能静下心来好好写代码,甚至一写就是几小时,中间还不带停顿的,那个什么twitter还有facebook统统抛之脑后,完全想不起来还有网络这个玩意儿。
大多数程序员也是深有同感。要应付80%甚至以上的工作——分析问题、写一个漂亮的算法、创造一个可运行代码的环境等等,对于我们精力充沛的脑力而言都是绰绰有余的。即使你在做的是无法想象的最最先进的机器学习工作,还是有大量的工作就是简单的清理数据,并以一个可爱又迷人的方式呈现结果。
当你的大脑不能照顾到方方面面的时候,它会自动选择一样关注下去。也就是说,疲倦会让你的大脑傻乎乎的认为只要搞定眼前这一个工作就可以了。
明亮的电脑显示屏
这个原理就简单多了。晚上长时间地盯着一个明亮的光源会延迟睡眠系统起作用的时间。于是乎,我们忘记了困倦,可以直到凌晨3点搞定之后才上床睡觉,然后上午11点醒来。好玩的是,接下来到晚上的时候,你就完全不困了,哈哈,伙计,你难道忘记你是11点才起来的吗!
如果保持这种循环,那么你的作息方式就会慢慢改变。而更为有意思的是,调查结果显示,一旦你的就寝时间进入凌晨3点和凌晨4点之间,时间点不会再向后推延,会一直保持着这种平衡。
当然原因之一也有可能是因为,到一定时间我们的闹钟会叫醒我们。并且话说大家都知道,如果我们肆无忌惮的睡觉,然后到下午2点才吃早饭的话,那真的就是彻彻底底的懒汉了。
小结
总而言之,程序员之所以是“夜猫子”是因为晚上工作没有时间限制,可以选择一个更为轻松自在的方式写代码,同时我们的大脑也不会常常分神,而明亮的显示屏还能保持我们的清醒。