时间估计的难题

from Free Mind http://blog.pluskid.org/?p=830

喜欢看书的同学,放假回家的时候都会带几本书呢?然后开学回学校的时候发现真正打开看了的又有多少本呢?反正我从前回家带的书总是看不完的,不止回家,甚至是去自习室或者图书馆,带的书也总是会超过我的处理能力——而且我还没次都是仔细计划过的。当然造成这样的原因有多方面的,比如多带几本书的话,在一本书看不下去的时候可以换一本;又比如也许是因为执行力不够没有能把计划实施(比如中途开小差去了什么的)。但是似乎有一个重要的原因在生活中其他地方也非常常见——就是我们对于时间或精力的估计上,似乎经常存在相当大的误差。

我想来想去,觉得大部分人进行估计的时候,由于无法预料和处理所有的细节,因此会将注意力集中在几个重要的因素上,然后忽略剩下的那些琐碎的细节。这是非常自然的方法,然而问题出在哪里呢?考虑哪些琐碎细节所占的时间,虽然它们单独都小到可以忽略的情况,但是各种各样的小细节加在一起如果总时间非常多呢?是不是就不成了?

比如,要写一个程序,主要的部分当然是在写代码部分喽,但是琐碎的部分呢?比如配置一下工程环境啊,做个 Makefile/automake/CMake 之类的啊,为编辑器选一个新的字体和配色方案来换一下心情啊,找个工具来高亮和清晰化编译器的编译错误啊,更新某个库到最新版本并解决一下相关的依赖关系带来的麻烦呀,去 reddit/twitter 之类的地方看看呀,去找一个“最适合 coding 的时候听的音乐专辑”之类的,等等等等。似乎根本就列不完,也没有办法事先想到所有的事,但是这些乱七八糟的事情加在一起就会悄悄地占去了想到“可观”的一大段时间,以至于最后计划中的任务可能只完成了一半。

当然,这样子来看似乎最大的问题还是这个人注意力不够集中,在这个观点上似乎有两派分歧的意见,因为有些人认为这些琐碎的时间是必要的,特别是在关于开发工具的 tweak 方面或者“不必要的”重构等方面所花的时间;而另一些人则相反。不过,且抛开这些问题不说的话,在写程序这个问题上,还有一个大问题就是 debug :bug 的出现基本上是完全不可预料的,结果“乐观”的人通常倾向于假设 bug 可能是不会出现的;而“悲观”的人则会假定 bug 会出现,当然,这类人中也分为两类:假定 bug 即使出现也可以很快解决掉的人和觉得 debug 非常费时费力的人。结果呢,不管人们持什么观点,似乎最后项目中 debug 所消耗的时间总是远远大于真正 coding 所消耗的时间。而且由于 bug 总是各式各样的,所以导致对项目的时间估计成为一个非常困难的问题。所以每次老板问道“这个东西多久能写完”的时候,我都非常希望回答“我希望是一万年”…… =.=!!

类似的问题在画画中也会出现。我现在根本不知道自己画一幅画到底需要多少时间,因为根据我自己的记录,有些画是要画七八个小时才能画完的,但是有时候花个不到十分钟画出来的东西似乎也看起来挺不错的,然后我就很诧异,画画的时间都消耗在哪里的呢?这次过年无心工作的时候准备画一个小圆,于是趁机把各个部分所花费的时间大致记下来看看:

先是草稿部分,似乎经过 15 分钟的描绘,虽然还有许多细节都是粗略勾一下(比如手),但是整体形状以及有了,可以说修修补补一下基本上就大功告成了。后面 5 分钟的基本色的结果其实在最后没有用到,大概只是为了给自己一个概貌吧。然而实际上还差得远呢:

头部上色大概花了半小时,不过看起来似乎并不需要花那么多时间啊,就是头发、脸、眼睛和蝴蝶结嘛。然后是衣服也花了半小时,手和裙子更多(绿色的背景是辅助上色临时加上的)。最后差不多就只剩下脚而已,结果,在我都不知道到底画了些什么(所以我用“其他”来标注呢)的那段时间竟然用去了 40 分钟。然后是细节修改部分:

是不是基本看不出任何变化呢?然而却花去了 15 分钟——可以勾画出完整草图的时间。不过确实是有一些细小细节变化的,但是其实主要的时间是花在尝试添加一个背景上,由于画背景相当麻烦,我希望在网上找一张现成的图贴上去,然而找了好几张都由于视角和光线问题看起来不合适最后干脆放弃了。所以说,这部分可以算做是“不必要的”时间,就好比我们做作业,预计一个小时做完,然而突然出现一道题我们做错了或者老师做不出来,就产生了预期外的不必要的时间,然而,这些时间是不能忽略不计的。

最后,我决定把小圆的忧郁表情稍微修改一下:

其实就是把眉毛重新画了一下,当然(至少我看起来)表情还是有变化的(关于绘画中细微修改引起的强烈变化的问题,之前曾经专门讲过),不过这个过程居然耗时 20 分钟。其实也可以类比到写程序里,并不是看到只有 5 行代码就觉得是一下子搞定的事,也许是尝试了无数种解决方案之后才得出的这 5 行代码呢。

结果呢,关于时间的谜题似乎明白了一些,也许随着经验的积累,就会慢慢开始注意到那些消耗时间的小细节吧。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s