《理解專業程序員》-第四章:我們能更有效的思考嗎?
——氣象學家教給我們,預測明天的天氣,有一個簡單有效的辦法,在2/3的情況下都是正確的;隻消說明天的天氣和今天一樣就是了。這樣一來,每個人都算得上氣象問題的專家了——66%的準確率。請想象一下,如果我們也能輕易的預測99%的人類行為,那麼會早就多少心理學專家呢——隻要一條簡單定律就足夠,這就是溫伯格雙胞胎定律。
——醫療行業最大的秘密之一,就是90%的病都是自己好的——根本不用醫生動手,正是有了這樣一個了不起的秘密,醫生要做的一切,就是避免傷害病人。一個成功的醫生還得讓病人相信,為了治好他的病,他可是做了一些事情的——而且這些事情隻能出自醫生那個淨是秘傳醫藥知識的聚寶盆。
為什麼人們習慣不思考?
1.有人不願意讓人們思考。在閱讀/複審規格說明書時,我們把這種“催眠詞”看做觸發器。這裏還真有些挺可愛的東西,包括“所有的”,“永遠”,“每一個”,“可能”,“隻有”,“同一個”,“應該”,“也”,“將要”,“當然”,“所以”,“很明顯”,“顯而易見”等,我們的語言中存在這些催眠詞,從這個事實就可以引出為什麼人們不思考的一些原因。這樣的方式寫作,說話,從而扼殺了思考。
2.沒人在乎你是不是思考。絕大多數場合(當然是編程領域之外的場合),思考會給你帶來很大的麻煩,在大多數工作環境中,你要是想的太多,那就會冒丟掉工作的危險,因為工作完全成了慣例,思考被當成是管理層的一種特權。
即使在我們的私生活中,思考也是昂貴的事情,要是你每吃一口食物都得思考一番,每次過馬路都得思考一番,那樣你就沒什麼時間來做其他的事情——比如把省下來的時間用於思考必須思考的問題。
這對編程也適用,如果我們確實發現了什麼簡明的規則,遵照它就能百試不爽,避免思考,那麼我們就應該采用這樣的規則,還是那句話,把思考留給必須思考的東西。
3.思考讓人疲倦,因此也可能妨礙其他的思考。
那個不要“GoTo語句”的規則,實際上卻是另一種節省思考的習慣。當我發覺自己開始要寫一個goto語句時,我把它當做一個觸發器,而不是一個催眠詞。我會對自己說,“溫伯格,從前你在類似情況下不假思索的寫了goto,結果導致了不少多餘的思考。因此現在幹嘛不多想想,這樣也許會在以後必要時節省不少思考呢”。
4.要是我想的太多,沒準就會在這裏發現錯誤,那我又該怎麼辦?
同樣,這也不是一個徹頭徹尾的笨想法。通過多年的學校生活,我們學會了這個道理“如果老師沒發現,那就不是錯誤”。所以,如果我們知道老師其實沒有時間看我們的作業,那我們又為什麼要自尋煩惱地排除錯誤呢?
但問題是,計算機與學校作業不一樣,這裏的“老師”——也就是計算機——會查看所有的作業,任何一處錯誤,都會被上百遍,甚至千遍的放大。在學校裏,采取鴕鳥政策,把頭埋進沙子,大多數時候都能蒙混過關——所以人們在編寫計算機程序時,往往也會同樣行事,這也就不奇怪了吧?
總結一下,我能得出人們不思考的4點“顯而易見”的原因:
1.有人不願意讓人們思考。
2.沒人在乎自己是不是思考。
3.過渡思考會讓大腦疲倦,因此可能妨礙其他的事情。
4.在學校裏我們沒學會思考。 “顯而易見地”這張單子不可能有錯誤或不完整的地方,難道你想接受挑戰,提提意見?
我們能更有效的思考嗎?(集中還是強迫)
當你在對付一個難纏的問題時,有沒有過這樣的情形:過早的放棄了一個很有希望的方案,隻是因為如果采用這樣的方案,在最後出現結果之前你要全力投入得太多? 困在一個問題上整整兩天,卻被一個同事的偶爾提議——或者是一個臨時的打岔、一個偶然事件——給解救了:如果哪個程序員每過這樣的經曆,那他的靈魂一定是僵死得可以。
但還有一個更能讓人受益的辦法,那就是把某個行業的“秘訣集合”都拿過來,然後做對比考察。比如說,考慮一下我們剛剛討論的這2條:
1.不要太早地放棄一種療法。
2.不要讓一種療法耽擱太長時間。
也許說到底,醫生拿那麼多錢是有道理的。他們這個行業秘訣中的秘訣,不在於這些“秘訣”本身,而在於知道何時應用哪個秘訣。
最後更新:2017-04-04 07:03:23