“過(guò)早優(yōu)化”是萬(wàn)惡之源……
Posted: January 6th, 2009 | Author: 李笑來(lái)Filed under: 思維工具, 隨便想想 |
上個(gè)月徐宥同學(xué)的一篇“編程珠璣番外篇3 — 關(guān)于程序優(yōu)化的八卦”中提到Donald Knuth說(shuō)的一番話(huà):
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.)
真知灼見(jiàn)需要很長(zhǎng)時(shí)間的積累才可以看得清楚、想得明白、說(shuō)得簡(jiǎn)單易懂令人醍醐灌頂颓帝。愛(ài)德華?墨菲提出“墨菲定律”時(shí)候也是如此婆跑。
所謂“premature optimization”(過(guò)早優(yōu)化)其實(shí)并不是只有程序員才能看得懂的概念届垫。生活中“過(guò)早優(yōu)化”的例子比比皆是聪全。我有個(gè)朋友生活中就有典型的這種習(xí)慣微酬,比如他報(bào)名去練太極拳霉赡,在第一節(jié)課還沒(méi)上的時(shí)候就先跑去把全套裝備都買(mǎi)齊——當(dāng)然包括很多第一節(jié)課之后就發(fā)現(xiàn)買(mǎi)錯(cuò)了的橄务,以及因?yàn)閷?shí)際上沒(méi)上過(guò)幾節(jié)課之后就再也不去了所以永遠(yuǎn)堆在倉(cāng)房中的剩下的全部。
這就叫“過(guò)早優(yōu)化”穴亏,幾乎每個(gè)人或多或少在至少某一方面有這樣的習(xí)慣蜂挪,不信看看身邊,有多少人是這樣的:他們?cè)谧鍪裁词聝哼€沒(méi)怎么樣的時(shí)候早已開(kāi)始憧憬成功之后的結(jié)果嗓化,比如棠涮,“這筆錢(qián)賺到手之后我要……”,或者“如果他們肯投資給我就……”刺覆。甚至那些在某些領(lǐng)域中頗有成就的人也很難例外:猜一猜就知道有多少人致死也沒(méi)得過(guò)什么大獎(jiǎng)严肪,可是“獲獎(jiǎng)感言”早已練習(xí)了無(wú)數(shù)遍——當(dāng)然,那些真的得了大獎(jiǎng)的人中也有一大部分同樣提前練過(guò)很多遍。
對(duì)此诬垂,我深有痛悟劲室。沒(méi)把一項(xiàng)技能模仿通透、沒(méi)有習(xí)得個(gè)大概之前结窘,不宜馬上想著要重組很洋、優(yōu)化,就好像一開(kāi)始就想著偷懶少干些活隧枫,結(jié)果是咋呼一圈后仍原地的周?chē)斡啤?/p>
剛開(kāi)始不能興沖沖地準(zhǔn)備齊全喉磁,不能立馬就假想自己就掌握了那個(gè)技能、達(dá)到了那個(gè)水準(zhǔn)的成果官脓。不要緊盯著還沒(méi)到手的“果實(shí)”协怒,這是因?yàn)椤?/p>
- 太早享用未到手的成果,接著在具體的學(xué)習(xí)過(guò)程卑笨,一遇困難就會(huì)煩躁孕暇,速度的緩慢,趕不上自己迫不及待的想要習(xí)得赤兴、進(jìn)而炫技的心情妖滔。這就像望梅止渴的另一個(gè)角度解釋——已然望梅(瀏覽的很多的amazon書(shū)評(píng)),少了繼續(xù)喝水(真正去閱讀一本書(shū))的動(dòng)力桶良,繼而座舍,沒(méi)覺(jué)著自己的身體是處于嚴(yán)重缺水狀態(tài)(無(wú)知),而假裝成不那么缺水甚至止了渴(覺(jué)得看了書(shū)評(píng)陨帆,就認(rèn)為是讀了書(shū)曲秉,就覺(jué)得自己習(xí)得了那概念)。
- 過(guò)早地準(zhǔn)備齊全疲牵,反而會(huì)引致客觀原因的漩渦——陷入老在磨刀承二、換添工具的泥潭,而遲于行動(dòng)纲爸∈钢蓿可像是磨刀不誤砍柴工的極端版本:小家伙偷懶,為了磨而磨缩焦,怕山林之苦而行拖延之實(shí)读虏。跟行動(dòng)起來(lái)相比,工具袁滥、方法等可以忽略不計(jì)盖桥。
與盯著結(jié)果的思考模式,略有細(xì)微差別题翻、但實(shí)質(zhì)迥異的是揩徊,要盡量假想牛人在習(xí)得這項(xiàng)技能的過(guò)程及所需各項(xiàng)投入的努力(堅(jiān)毅的心力與廣博的見(jiàn)識(shí))腰鬼。在不能馬上看到自己所做每一步的效果的時(shí)候,讓自己的腦子想多一個(gè)層次:認(rèn)定自己的每日投入塑荒、努力并將有成果熄赡,將成果切分到各階段去(而不是一股腦兒在開(kāi)頭就享用了,或直至攻堅(jiān)克難齿税、習(xí)得技能之后也遲遲不用)彼硫,作為及時(shí)反饋的標(biāo)志。
- 這個(gè)投入的過(guò)程凌箕,都可拆解成哪些小步驟拧篮,直至每一步驟從恐慌區(qū)滑到學(xué)習(xí)區(qū)里,以便可操作——知道力從何處使牵舱、怎么使串绩;
- 想象攻克每個(gè)可操作的小步驟,需要的關(guān)鍵點(diǎn)是什么芜壁、攻克該步驟的標(biāo)志是什么礁凡;
- 各步驟之間是循序漸進(jìn)的階梯,還是進(jìn)兩步退一步的閉環(huán)慧妄,或是可以各自獨(dú)立但又關(guān)聯(lián)的分布式網(wǎng)格顷牌。
比如,寫(xiě)作技能的習(xí)得腰涧,所帶來(lái)的可能成果,自己腦子更清楚紊浩、賣(mài)錢(qián)窖铡、影響力……若是還沒(méi)開(kāi)始或剛寫(xiě)幾篇,就腦補(bǔ)這么個(gè)頂好的美景坊谁,是會(huì)打雞血费彼,接下的一段短時(shí)間里,可能不斷地寫(xiě)口芍、不斷地腦補(bǔ)箍铲;但久而久之,腦子享受夠了鬓椭,就提前默認(rèn)已經(jīng)有了那世俗的成功颠猴,就不覺(jué)寫(xiě)作本身有啥新鮮可期。過(guò)早優(yōu)化就是這樣透支了后續(xù)的寫(xiě)作小染。
若提前有個(gè)對(duì)寫(xiě)作這個(gè)技能習(xí)得過(guò)程的各步驟的感知翘瓮,比如整體上假定:需要1年每日365篇千字以上文章的訓(xùn)練,方可有所成效裤翩。那么资盅,就從多個(gè)維度,
- 可以將365天的每一天提溜出來(lái),以一日8小時(shí)的工作時(shí)間呵扛,擠出一塊來(lái)寫(xiě)作,在這8小時(shí)中安排每庆,漸漸形成如同刷牙般的習(xí)慣,刷個(gè)365天今穿,成果自顯缤灵。
- 也可從寫(xiě)作本身這一技能的延伸,把寫(xiě)作視為“充分輸入之后荣赶,予以處理凤价,便是輸出”的過(guò)程。向這一工序的前端進(jìn)發(fā)拔创,每天的安排把大塊的時(shí)間放在過(guò)往輸入的反芻和當(dāng)天的新知獲壤怠;加上不斷打磨的處理技能——邏輯思維與科學(xué)方法論剩燥。