“過早優化”是萬惡之源……
Posted: January 6th, 2009 | Author: 李笑來Filed under: 思維工具, 隨便想想 |
上個月徐宥同學的一篇“編程珠璣番外篇3 — 關于程序優化的八卦”中提到Donald Knuth說的一番話:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.)
真知灼見需要很長時間的積累才可以看得清楚、想得明白、說得簡單易懂令人醍醐灌頂。愛德華?墨菲提出“墨菲定律”時候也是如此。
所謂“premature optimization”(過早優化)其實并不是只有程序員才能看得懂的概念。生活中“過早優化”的例子比比皆是。我有個朋友生活中就有典型的這種習慣,比如他報名去練太極拳,在第一節課還沒上的時候就先跑去把全套裝備都買齊——當然包括很多第一節課之后就發現買錯了的,以及因為實際上沒上過幾節課之后就再也不去了所以永遠堆在倉房中的剩下的全部。
這就叫“過早優化”,幾乎每個人或多或少在至少某一方面有這樣的習慣,不信看看身邊,有多少人是這樣的:他們在做什么事兒還沒怎么樣的時候早已開始憧憬成功之后的結果,比如,“這筆錢賺到手之后我要……”,或者“如果他們肯投資給我就……”。甚至那些在某些領域中頗有成就的人也很難例外:猜一猜就知道有多少人致死也沒得過什么大獎,可是“獲獎感言”早已練習了無數遍——當然,那些真的得了大獎的人中也有一大部分同樣提前練過很多遍。
對此,我深有痛悟。沒把一項技能模仿通透、沒有習得個大概之前,不宜馬上想著要重組、優化,就好像一開始就想著偷懶少干些活,結果是咋呼一圈后仍原地的周圍晃悠。
剛開始不能興沖沖地準備齊全,不能立馬就假想自己就掌握了那個技能、達到了那個水準的成果。不要緊盯著還沒到手的“果實”,這是因為。
- 太早享用未到手的成果,接著在具體的學習過程,一遇困難就會煩躁,速度的緩慢,趕不上自己迫不及待的想要習得、進而炫技的心情。這就像望梅止渴的另一個角度解釋——已然望梅(瀏覽的很多的amazon書評),少了繼續喝水(真正去閱讀一本書)的動力,繼而,沒覺著自己的身體是處于嚴重缺水狀態(無知),而假裝成不那么缺水甚至止了渴(覺得看了書評,就認為是讀了書,就覺得自己習得了那概念)。
- 過早地準備齊全,反而會引致客觀原因的漩渦——陷入老在磨刀、換添工具的泥潭,而遲于行動??上袷悄サ恫徽`砍柴工的極端版本:小家伙偷懶,為了磨而磨,怕山林之苦而行拖延之實。跟行動起來相比,工具、方法等可以忽略不計。
與盯著結果的思考模式,略有細微差別、但實質迥異的是,要盡量假想牛人在習得這項技能的過程及所需各項投入的努力(堅毅的心力與廣博的見識)。在不能馬上看到自己所做每一步的效果的時候,讓自己的腦子想多一個層次:認定自己的每日投入、努力并將有成果,將成果切分到各階段去(而不是一股腦兒在開頭就享用了,或直至攻堅克難、習得技能之后也遲遲不用),作為及時反饋的標志。
- 這個投入的過程,都可拆解成哪些小步驟,直至每一步驟從恐慌區滑到學習區里,以便可操作——知道力從何處使、怎么使;
- 想象攻克每個可操作的小步驟,需要的關鍵點是什么、攻克該步驟的標志是什么;
- 各步驟之間是循序漸進的階梯,還是進兩步退一步的閉環,或是可以各自獨立但又關聯的分布式網格。
比如,寫作技能的習得,所帶來的可能成果,自己腦子更清楚、賣錢、影響力……若是還沒開始或剛寫幾篇,就腦補這么個頂好的美景,是會打雞血,接下的一段短時間里,可能不斷地寫、不斷地腦補;但久而久之,腦子享受夠了,就提前默認已經有了那世俗的成功,就不覺寫作本身有啥新鮮可期。過早優化就是這樣透支了后續的寫作。
若提前有個對寫作這個技能習得過程的各步驟的感知,比如整體上假定:需要1年每日365篇千字以上文章的訓練,方可有所成效。那么,就從多個維度,
- 可以將365天的每一天提溜出來,以一日8小時的工作時間,擠出一塊來寫作,在這8小時中安排,漸漸形成如同刷牙般的習慣,刷個365天,成果自顯。
- 也可從寫作本身這一技能的延伸,把寫作視為“充分輸入之后,予以處理,便是輸出”的過程。向這一工序的前端進發,每天的安排把大塊的時間放在過往輸入的反芻和當天的新知獲??;加上不斷打磨的處理技能——邏輯思維與科學方法論。