the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


你一天能工作几个小时

作者:the5fire | 标签:     | 发布:2016-04-17 4:26 a.m. | 阅读量: 4878, 4864

当我们在对程序进行调优的时候,经常采用的手段是先输出程序从开始执行到最终结束耗费的所有时间,了解下当前程序的大体耗时是多少,以便于对之后的优化做一个比对。之后要做的就是输出程序执行过程中调用到的所有函数的执行时间。放到Python中的话就是每个函数都增加这么一个装饰器:

import time
from functools import wraps


def time_cost(func):
    @wraps(func)
    def wrapper(*args, **kargs):
        start = timet.time()
        result = func(*args, **kwargs)
        cost = time.time() - start
        print 'func[%s], cost[%s]s' % (func.__name__, cost)
        return result
    return wrapper

程序中的东西很容易量化,但是对于人每天的生活,尤其是工作来说,无法量化,因此很难说有意识的进行优化。

之前记得在哪看过一个微软还是哪的程序员的采访,大意是一个优秀的程序员平均下来一天也就写几十行代码。(如果有人记得正确版本欢迎指出)

程序员每天工作的直接产物是线上能够支持产品正常运行的代码,上面说的情况,大部分优秀的程序员会把时间花在思考如何更合理的实现工作,写出更好的代码。但是对于日常维护性的工作来说,其实并不需要消耗太多的思考。(这里指的是大部分正常的程序员,不包括只会copy代码,重复别人逻辑,写出shit一样代码的菜鸟)

在这样的情况下,每天的产量,取决于投入的时间。大部分情况下我们写的都是业务性的代码。在这样的情况下,程序员应该如何提高自己的效率呢?

这是我从很久之前就开始考虑的事情了,每个人的工作时间都有限,我们不提倡加班。那么如何能够在固定的时间范围中更多的完成需求任务呢?我们需要回到文章的开头,参考程序的优化逻辑,要想提高效率,要么减少程序的执行时间,要么增加运行程序的时间(这里指程序的产出,时间越长产出物越多)。

前面我有说到,不提倡通过加班解决问题,那么优化的手段就只剩下一种了。如果你也这么想,那就太naive了。

在一个稳定的工作环境中,大家的状态是舒适的,没有焦虑,没有竞争。每个人早上定点(自己的固定时间)到公司,到一杯茶水,或者冲一杯咖啡。然后打开电脑,看看今天的新闻,程序界的事情。然后开始打开vim/sublime/pycharm/atom/otherthing,开始昨天未完成的任务或者是今天计划要做的需求。

等同事到的差不多之后开下早会,会上可能出现技术细节的讨论,一群人可能需要在那里花5分钟陈述完自己昨天和今天的任务之后,等着别人讨论的结束。 可能终于半个小时了,觉得讨论没结果,散会。会上的技术讨论有时是没什么“软”用的,因为散会后,大家都会沉浸在自己的世界里了。

上午的时间其实很短暂,10点是大家到达公司的deadline,上午的例会时间,收快递时间,群里闲扯的时间,往往会挤压有效的工作时间。对于每个上午都需要开多个例会的人来说,上午的时间真是少的可怜。

从我自己来说,上午所有的例会开完,数据看完,再找人沟通下需求什么的,上午的时间很快就会消耗完。所以我是比较烦那些没有意义的会议,以及会议上没有意义的讨论的。因此学会如何有效的开会也是一个重要的技能点。《重新定义公司》里面的很多内容是可以借鉴的,很有效。

下午的工作一般是从两点开始,这个时间应该算是黄金时间,可以高效的来处理一些问题。没有上午的例会和需求讨论(当然也有的需求会议会在下午开始),午休过后的一个新的开始,这段黄金时间一般能够持续一个多小时,之后自然的疲惫,确实需要休息下。再之后可能出去透个风。在下班之前的一个小时是比较紧张的时刻,该上线的需要尽快上线,不能太晚,要不上线出了问题大家都在路上不好处理。上完线之后会稍微轻松一点,继续搞搞排期中的其他任务。六点半之后差不多就是放松时间了,来的早的都开始走了,来的晚的,可能会选择先去吃饭,然后在回来干活。差不多7点之后就没什么人了。

上面是一段比较常规+理想的描述,虽然有一些时间上的浪费,但是还是有大段的时间存在的。不过在实际情况中,随时都会出现被打断的情况。各种各样的事情随时都会出现在你面前。这种打断就像是在某个函数中突然出现了同步的网络IO请求,着实耗时,并且带来额外的状态切换上的消耗。

因此,对于程序员个人来说,要想提高每天的工作效率的话,除了快速的完成每个任务之外,还有一个项很重要的技能,就是把时间合理分配,主要的问题是要解决来自其他人或者自己内心的打断。同样是每天九个小时(这个是公司定义的),有些人可以充分的利用,有些人也会选择充分的等待——第九个小时的到来。

对于想要提高每天工作效率的人来说,方法或者手段有很多种。最关键的问题并不是这些,而是 你认为你每天工作的九个小时,其实并不是九个小时。

就好像所有人的每一天都是24个小时一样,有些人可能活出了多一倍的长度。


----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: