切勿过早优化

Donald Knuth说“过早优化是万恶之源”(premature optimization is the root of all evil)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。同时,我觉得“过早优化”的概念不专属编写程序,生活中的示例也比比皆是。不信,你看看下面这些情形你是否遇到过:

1、当你开始学一门程序语言的时候(比如c#),你想如果可以精通开发工具(比如Visual Studio)一定如虎添翼,于是一开始你就花很多时间去研究开发工具,而忘记自己学习的重点是语言本身,而非工具。或者,一开始,你花不少的时间去选择哪门程序语言,比较各种语言的优劣,在五花八门的语言前面犹豫不决,这个想学,那个也不想放弃,结果都是学个半路子。

2、当你学习一门外语比如英语的时候,一开始,你花了很多的时间去下载有关英语资料,花了很多的时间去找英语书籍,以为有了这些资料和书籍就可以学好英文,而不是一开始就踏踏实实的从单词、语法开始,结果后来资料下载了一大堆,书籍买了不少,却没有坚持下去。

3、你想搞体育锻炼,比如打羽毛球,于是一开始你花大量时间去买球衣、球鞋、球拍等装备,可没连几天,你发现自己开始三天打鱼了,最后,那些装备都起了灰,也没锻炼几次。

4、你想做时间管理(Getting Things Done),于是你研究各种时间管理的资料,上各种时间管理技巧的网站,比如lifehackdigggtdlife,下载对最流行的GTD的管理软件,以节省时间的名义浪费时间,很浮躁,不能做到实实在在把每天的计划都落实,拖拖拉拉。

5、你有没有这样的体验,一本书你总是对开头的部分看的最仔细,后面的章节没坚持看下去,下次又重复这种循环。当你计划做一件事的时候,总是规划的非常完美,几乎考虑每个细节,但却没有认认真真、一步一步执行,或者过早完美计划,反而让你缩手缩脚,犹豫不前,瞻前顾后,顾此失彼,最后虎头蛇尾。

6、比如,如果我有了钱,我就如何如何享受快乐,比如,如果我将来有了很多的时间,我就会花更多的时间陪家人或锻炼...

这样类似的例子还可以举很多。

过早优化对大的问题在于:过早关注不重要的部分,而忽略行动和目标本身。以静态的思维来优化,殊不知,事务发展总是动态的,“优化”是需要长期的实践积累才可以获得。出发点是好的,但往往好心办坏事,折腾大量的时间,做了很多不该做的,而该做的、重要的反而没做。强化外部条件、工具等外在,而忽略内在因素和行动本身,或者,过多期望将来,而忽略当下眼前。

活在当下,实实在在做好手头的事,是避免“过早优化”最好的方法之一



微信扫描下方的二维码阅读本文

那年今日

2023-04-12 历史的细节 (2 个评论)

切勿过早优化》有19个想法

  1. xjb

    to 曾经的阿飞:应该有最后的deadline,但优化也是渐进的,不能立刻到位。

    回复
  2. 曾经的阿飞

    我觉得是任何事情都必须要有一个deadline,假如在一个deadline前提下,去做尽可能的优化是非常值得的,因为有些东西可以重构有些东西其实是无法重构的。

    回复
  3. 授人以愚

    说的太好了,我个人吃过很多这样的亏,计划完美,半途而废,受教了

    回复
  4. afly

    天!我感觉就是在写我,经常是想做的事情最后都忘了做,感觉是一直在做准备工作,永远也进入不了状态。尤其是上网的时候最容易迷路!唉。。。

    谢谢!受教了!

    回复
  5. zong

    God!

    2.4.5 和我一样.
    过早优化 这个名词用的好, 实际上就是策略加重复, 一个人是很难做到计划与实际同步的,所以与其浪费大量的脑时间去计划如何做好这件事情,倒不如现在就开始做,在实施的过程中不断思考改变, 这样更灵活些吧~

    回复

回复 xjb 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注