Donald Knuth说“过早优化是万恶之源”(premature optimization is the root of all evil)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。同时,我觉得“过早优化”的概念不专属编写程序,生活中的示例也比比皆是。不信,你看看下面这些情形你是否遇到过:
1、当你开始学一门程序语言的时候(比如c#),你想如果可以精通开发工具(比如Visual Studio)一定如虎添翼,于是一开始你就花很多时间去研究开发工具,而忘记自己学习的重点是语言本身,而非工具。或者,一开始,你花不少的时间去选择哪门程序语言,比较各种语言的优劣,在五花八门的语言前面犹豫不决,这个想学,那个也不想放弃,结果都是学个半路子。
2、当你学习一门外语比如英语的时候,一开始,你花了很多的时间去下载有关英语资料,花了很多的时间去找英语书籍,以为有了这些资料和书籍就可以学好英文,而不是一开始就踏踏实实的从单词、语法开始,结果后来资料下载了一大堆,书籍买了不少,却没有坚持下去。
3、你想搞体育锻炼,比如打羽毛球,于是一开始你花大量时间去买球衣、球鞋、球拍等装备,可没连几天,你发现自己开始三天打鱼了,最后,那些装备都起了灰,也没锻炼几次。
4、你想做时间管理(Getting Things Done),于是你研究各种时间管理的资料,上各种时间管理技巧的网站,比如lifehack、 digg 、gtdlife,下载对最流行的GTD的管理软件,以节省时间的名义浪费时间,很浮躁,不能做到实实在在把每天的计划都落实,拖拖拉拉。
5、你有没有这样的体验,一本书你总是对开头的部分看的最仔细,后面的章节没坚持看下去,下次又重复这种循环。当你计划做一件事的时候,总是规划的非常完美,几乎考虑每个细节,但却没有认认真真、一步一步执行,或者过早完美计划,反而让你缩手缩脚,犹豫不前,瞻前顾后,顾此失彼,最后虎头蛇尾。
6、比如,如果我有了钱,我就如何如何享受快乐,比如,如果我将来有了很多的时间,我就会花更多的时间陪家人或锻炼...
这样类似的例子还可以举很多。
过早优化对大的问题在于:过早关注不重要的部分,而忽略行动和目标本身。以静态的思维来优化,殊不知,事务发展总是动态的,“优化”是需要长期的实践积累才可以获得。出发点是好的,但往往好心办坏事,折腾大量的时间,做了很多不该做的,而该做的、重要的反而没做。强化外部条件、工具等外在,而忽略内在因素和行动本身,或者,过多期望将来,而忽略当下眼前。
活在当下,实实在在做好手头的事,是避免“过早优化”最好的方法之一。
微信扫描下方的二维码阅读本文
历史上的今天所写的文章
2023: 历史的细节 (2 Comments)
666
666
厉害了
?
又看了一眼,发现这篇文章竟然是八年前的文章了!
道理不会过时。:-)
说的太对了,这篇文章好!
我表示鸭梨很大。。。
发人深省啊!可见坚持是多么重要啊。
to 曾经的阿飞:应该有最后的deadline,但优化也是渐进的,不能立刻到位。
我觉得是任何事情都必须要有一个deadline,假如在一个deadline前提下,去做尽可能的优化是非常值得的,因为有些东西可以重构有些东西其实是无法重构的。
过早优化,以致忘了自己最先要的是什么,呵呵
说的中肯!受教了!
说的太好了,我个人吃过很多这样的亏,计划完美,半途而废,受教了
to aflay:真高兴,对你有用
天!我感觉就是在写我,经常是想做的事情最后都忘了做,感觉是一直在做准备工作,永远也进入不了状态。尤其是上网的时候最容易迷路!唉。。。
谢谢!受教了!
to 群振:你过奖了
我就经常犯这样的毛病,听君一席话,胜读十年书!
God!
2.4.5 和我一样.
过早优化 这个名词用的好, 实际上就是策略加重复, 一个人是很难做到计划与实际同步的,所以与其浪费大量的脑时间去计划如何做好这件事情,倒不如现在就开始做,在实施的过程中不断思考改变, 这样更灵活些吧~