要不忙着活着,要不忙着死去。我想绝大多数人属于后者。现代生活一大特点是节奏快,压力大,如果你在北上广等一线城市的地铁口呆一会,在上班时刻,人潮像海浪一般,一波波不断的涌入。每个人都在小步快跑,生怕错过了即将到站的地铁。到了公司后,繁忙的一天开始:回不完的邮件,开不完的会,算不完的报表,写不完的代码,白领们每天加班加点,但工作似乎永远做不完。要命的是,现在互联网公司居然逼迫员工九九六或大小周,程序员们大量的心血都耗在电脑上,才三十出头要不就头发花白,要不就“聪明绝顶”。
很多人都在忙,但回头一看好像又什么都没做成。如果你让那些声称自己忙的不可开交的人回想过去三天乃至一周到底做了什么事,有哪些有价值的产出,他很可能会一脸懵逼,好像自己完全埋没在各种琐屑公事里,抑或自己总处于救火状态,疲于应对各种事件,身心俱疲后审计一下自己精力的付出,发现回报无比惨淡。倘若自己真的忙的创造高价值产出,那为何自己忙忙碌碌几十年,却没有升职加薪,始终拿着那点钱,干着那点事,生活看不到希望呢。
很多人瞎忙活是因为没有科学的调度策略。有些人恨不得自己能有多个分身,以便同时处理潮水般涌向自己的各种问题,但如果没有掌握科学的时间调度策略,即使真的能让人多几个分身,事情也处理不好。钱没了可以再挣,但人的时间有限,它是不可再生资源,时间过去了就再也找不回来,因此如何分配好有限的人生时光,让它的产出最大化,是每一个人应该严肃对待的问题。
在时间规划以实现高效产出上,人应该好好学习计算机。不难发现计算机是处理多任务的好手。你在电脑上一边收邮件,一边听音乐,同时偷偷的打开淘宝那些花花绿绿的网页缓解一下购物馋,甚至打开个小窗口播放最近热剧的一些片段,计算机只有一个处理器,却可以同时有条不紊的做很多事情,你会说那是因为它运算快,那只是表层原因,真正让计算机展现多面手的深层原因是工程师和科学家研发的调度算法,倘若我们能将调度算法的设计智慧应用到人生上,我们的时间效率完全可以实现高效提升。
高效时间调度最重要的是确定目标。也就是你必须非常清楚,你希望实现什么目的,很多人在这点上犯糊涂,他们或者没办法准确衡量自己想要完成的目标,于是陷入一种糊涂的忙乱中,要不就是太贪心,希望同时实现多个目标,而且不知道其中有些目标居然自相矛盾,这等同于一脚踩刹车,一脚踩油门。一旦目标不明确我们自然没办法进行针对性的设计时间规划。
试看时间调度算法在生活上的应用实例。现代人喜欢信贷消费,商家也想尽千方百计让你在信贷加持下进行过度消费。于是你有了好几种信用卡外,还有不少网络信贷手段,例如花呗,京东白条等。消费时自然爽快,但还钱时那就得忍受心疼,于是无论你是男人女人,只要你过度信贷消费了,每个月总有那几天,你不得不出血。
此时调度算法可以在还钱上派上用场。由于你没有钱一次将债务全部付清,因此不得不在支出时精打细算。还钱时有两方面需要考虑,一是逾期后,随着时间的推移,利息会积攒得越来越多;二是如果如果太多信用卡或信贷没有及时偿还就会造成信用损失,然而你每个月就那么点工资,除了还钱还得生活,因此你有限的资金无法同时完成这两个目标,鱼和熊掌不可兼得。
如果要防止问题一,我们采用的调度算法叫Earliest Due Day。你的目的是尽可能的减少逾期时长,从而减少你要偿还的利息。此时你可以将信用卡的逾期时期从早到晚排列,到期早的债务先偿还,以此类推,有严谨的数学证明,这种调度方法能减少最大逾期时长,由此你可以尽量减少因逾期而需要你支付的利息。
如果你在乎信誉重于利息,你要防止问题二,那么可以采用的调度算法叫Shortest Processing Time。此时你按照最低还款额对债务从少到多进行排序,然后其次还款,这种方法能够尽可能的帮你减少逾期的债务数量,从而尽可能减少对你信用的损害。
我们还可以把两种调度算法综合考虑。我们可以把每种债务的数量除以逾期时间,将结果从小到大进行排练,并依照次序依次还款。有意思的是,研究发现,野生动物觅食时也采用这种方法,动物本能的将食物产生的热量除以获取该食物所需要的时间,当然它是将结果从大到小排序,以此作为权衡食物与获取成本的依据。
好的方法可以缓解痛苦,前提是你知道要缓解哪种痛苦。采用方法一和方法三能有效的为你防止“债务雪崩”,也就是要还的钱越积越多,直到超出你的归还能力。如果你不想忍受因太多债务逾期而导致催账的电话或账单像雪花一样飞来,那么你就得采用方法二。很多人正是因为不知道要处理哪种痛苦,结果在压力下变成无头苍蝇,陷入到迷茫和无助中,但该吃的苦却一点都不会少。
此外,提升时间效率的调度算法有一条最重要的心法是:懂得拒绝。什么都想做,贪多嚼不烂是很多人办事效率低下的主要原因。当我们同时处理多个任务时,我们的思维需要在不同事情间切换,这种切换附带着巨大的精力成本。这种情况完全可以对应到计算机上。计算机只有一个CPU,但它要同时执行多个程序,这就类似于我们只有一个大脑,但要同时处理多项工作。
计算机通过任务切换来实现多个程序同时运行。我们看到计算机能让多个程序同时运行,其实是一种假象。程序其实是先后依次执行,只不过执行的速度快,于是造成我们觉得他们是在同时运行的假象。计算机实现这种功能的做法是,将一个程序的代码和数据加载到内存,然后CPU开始执行一个时间片长度,当时间片结束后,CPU将当前程序的代码和数据存起来,加载另一个程序的代码和数据,然后再运行一个时间片,这种切换快速进行,于是我们看起来就像多个程序同时运行一样。
当同时运行的程序过多,电脑就会奔溃。来自麻省理工的计算机科学家彼得.邓宁是计算机调度算法科学家,他发现有一个奇怪现象,当他不断的增加计算机正在运行的程序,有一个奇异的零界点存在,当程序增加到一定程度后,只要再增加一个程序,整个系统就会崩溃,最后增加的程序就如同压死骆驼的最后一根稻草,它使得所有程序都无法再执行。
计算机科学家把这种情况成为Trashing。计算机调度算法会让每个正在执行的程序分配一个时间片,时间片的长度大概是几十毫秒,当时间片结束后,CPU会把当前正在执行的程序搁置起来,然后加载另一个程序。当要执行的程序越来越多时,每个程序分配到的时间片越来越少。当CPU进行程序切换,也就是把当前执行程序的信息存储起来,加载下一个要执行的程序信息,这种切换要耗费时间一定时间,当程序越来越多,程序拥有可执行的时间片少到其长度正好等于程序切换的时间时就会出现一种诡异现象:当下一个程序执行时,CPU把相关数据读入,当数据准备好后,程序的时间片正好消耗殆尽,于是程序还没有被正式执行,它又被挂起,下一个程序同样面临这种情况,于是CPU资源完全耗费在加载和搁置程序这些无用功上。
人脑在负担任务过多时,同样会产生Trashing现象。当很多任务突然像潮水一般涌来时,我们会手忙脚乱,突然间头脑变成一片空白,你整个人完全傻掉了,眼呆呆的看着任务不断增多,但自己却无法做出任何有效反应,这就是人脑产生了thrashing现象。也就是人的精力完全耗费在不同任务的切换上,从而没有多余的脑力资源应用到任务的处理上。
处理Trashing问题的一种方法是拒绝。现在计算机的做法是,当运行的任务越来越多,分给每个程序的时间片越来越少,少到一定程度,大概是几十毫秒时,系统会拒绝启动新任务。因此人也一样,当老板或同事交给你的事情越来越多,你开始觉得不堪重负时,必须要当机立断的拒绝到来的新任务,要不然你会陷入Trashing陷阱,耗尽心机却什么都做不成,而且还得承担相应冤枉责任。
处理Trashing问题的第二种方法叫中断积累。计算机对不同的程序或任务分配不同的优先级,优先级高的任务优先得到系统响应。优先级最高的是与用户互动的任务,例如当你挪动鼠标时,系统无论当前正在处理什么任务,它都得停住,响应你鼠标移动请求,把鼠标在屏幕上从原来位置擦除,在新的位置绘制。如果不能及时响应鼠标事件,你挪动了老半天发现鼠标不动,或者移动得很缓慢,像得了老年痴呆症一样,你会以为系统崩溃了,总之你的用户体验会非常糟糕。
中断积累会把优先级低的任务积攒,然后抽出时间一并解决。中断积累给我们的启示是,我们应该尽可能的把精力集中在当前正在处理的事情上,此时无论是来邮件,微信,或是电话,只要不是非常紧急事务,你都可以暂时将这些分散精力的事情忽略。例如有些邮件或消息只要你下班前回复即可,于是你就可以认真处理当前任务,在下班前统一把积攒的邮件,消息依次回复即可。
我们为人面临的事情当然比计算机要复杂得多。但在很多情况下,我们面临的困境与计算机面临的困境并无本质区别,也就是如何在资源有限的情况下,尽可能好的完成各项任务。计算机科学家耗费大量精力,设计精妙算法解决了相应问题,而这些算法的绝妙思维完全可以平移到我们的生活上。
我们使用计算机的目的是提高办事效率。但更加美妙的是借用计算机巧妙的算法思维,提升我们的人生效率。一辈子说长不长,说短不短,只有尽可能的珍惜活着的每分每秒,人生才可能过得饱满和充实,只有用好的思维模式武装自己头脑,我们才能保证这一点得以实现。
新书上架,请诸位朋友多多支持:请关注公众号,让我们共同学习进步