書名:程序員的思惟修煉——開發認知潛能的九堂課
做者:(美) 亨特 (Andy Hunt)
譯者:崔康程序員
本書從德雷福斯模型入手,闡釋了程序工程師發展的五個階段;接着從階段間的特徵中引出 L 型與 R 型思惟的區別,並經過多個章節闡述如何有效地利用、發掘、調控本身的 R 與 L 型思惟;最後,本書總結了開發潛能的其餘必要因素:如何學習、如何控制注意力、以及如何成爲和超越專家。編程
閱讀本書,能夠切實地感覺到做者淵博的知識。書中的例子不是冷冰冰的代碼或牽強的抽象,而是來自多個學科的理論提煉、多個領域的研究,或是真實存在的實驗。稍有經驗的開發者在閱讀本書時,必定能夠從字裏行間有所感觸。本書融匯了做者在多年的經驗和研究中,提煉出的易於模仿與嘗試的發掘潛能、提高自個人手段。這些雖不是走向人生巔峯的銀彈,卻能夠在往後的發展中爲咱們提供參考。安全
德雷福斯模型將技能水平分爲新手、高級新手、勝任者、精通者和專家五類。並指出在由新手向專家轉換和發展的過程當中,技能全部者會更多的將關注點由局部向總體轉換。且在此過程當中,人們會愈來愈傾向於使用直覺提出方案和解決問題,而不是拘泥於在「新手」階段的依賴指令和局部關注。架構
新手須要指令清單;異步
高級新手不須要全局思惟;工具
勝任者可以解決問題;佈局
精通者可以自我糾正;學習
專家憑直覺工做。優化
值得注意的是,大多數人都停留在只會「執行本身所作的任務,並根據需求學習任務,但從沒有對任務環境得到更普遍的、概念上的理解」的高級新手層面上。編碼
做者以 20 世紀 70 年代末的護理專業類比,指出當今程序員所在領域的生存環境有如下特徵:
程序員認爲本身只是一種工具,只是執行訓練有素的分析師的指令,沒有人期待他們會對項目的設計和架構有所創見;
因爲薪資等級的不平等,有經驗的專家級程序員紛紛離開一線編碼工做,而經過巡迴演講和教學、管理得到經濟收穫;
軟件工程教育受到質疑,對正規方法和工具的過分依賴削弱了實踐中真正經驗的做用;
對項目結果這一真正目標的忽視。
由此,解決問題能夠考慮兩方面:
摒棄「我只是執行命令」的想法,承擔起必定的責任;
保持實踐。
此外,做爲組織和管理者,應當就處於德雷福斯模型不一樣層級的人提供相應的環境,如對偏新手階層的程序員提供更多的指令和可模仿的樣板,對專家則留有更多的空間和自由以發揮其源於直覺的判斷和決策。
既然直覺是新手向專家轉換的一個必要因素,那麼咱們該如何得到這種能力呢?想要探討這個話題,就不得不提到大腦的工做方式。類比計算機,大腦能夠被看做是雙 CPU 組成的,負責邏輯思考的線性、緩慢的 1 號 CPU,以及負責處理搜索和模式匹配的非線性、快速的 2 號 CPU。因爲共享內存總線,兩者並不能同時工做。這一特性致使咱們並不能自由的轉換和利用兩類 CPU,但同時也提供了一些咱們本來沒有意識到的絕佳機會。
咱們能夠將負責語言、邏輯和線性處理的模式成爲 L 型,而將 2 號 CPU 中異步、綜合的處理方式稱爲 R 型。因爲兩種模式的處理風格,R 型更擅長於產生直覺和創造力;而 L 型則更擅長於細緻的工做並實現相應的目標。
因爲 R 型不負責語言處理,這其實也意味着由 R 型產生的結果並不容易被描述(想象本身夢醒時回憶夢中場景的狀況)。然而 R 型對於總體處理、模式匹配和搜索能力的優越性致使這種思惟模式能夠更好的幫助咱們發現規律、處理存儲的信息,並提供富有創造力的解決方案。
可問題在於,對於這兩類思惟模式的切換並不可控。
因爲咱們大部分時間須要進行邏輯思惟,用已有的解決方法獲得思路、處理問題,於是總線老是會被擁有 L 型思惟的 1 號 CPU 佔據,使得 R 型思惟沒法獲得利用。表明 R 型思惟的 2 號 CPU 一般只有在放鬆和不經意間才能發揮做用(想象一下本身的靈光一現)。
基於此,當咱們集中注意力去解決問題的時候,L 型思惟獨佔的問題就更爲嚴重,以致於在面對艱難的、無前例可循的問題時,耗費大量的時間每每也沒法解決。而靈感一般是在某個瞬間忽然出現,且轉瞬即逝,這就意味着咱們須要時刻準備記錄這些極具價值的 R 型思惟產物,並及時地實踐它。
讓咱們擴充一下 L 型和 R 型模式的特色:L 型表明着分析、推理和抽象的能力,而 R 型表明着非語言、非理性、綜合與直覺的能力。基於此,L 型更適合處理局部問題,而 R 型則適合尋找總體規律、對總體得出結論。
咱們須要可以在面對不一樣問題時使用不一樣的處理模式,但問題就在於 L 型思惟老是默認使用,以致於問題的關鍵變爲了如何可以調節 L 型和 R 型思惟模式,以期提升大腦的總體思惟能力和效率。
咱們能夠利用如下方式刺激大腦以期更高效地利用大腦。
使用多感官獲取反饋;
試着改變一些原有的習慣,大腦是善於適應改變的;
試着無心識地繪圖;
在接受指導以前先進行嘗試;
在整理本身的思路以前,先給本身時間和空間放縱和創造;
結對編程。結對編程中,編碼者集中注意力於小段代碼,使用 L 型進行開發;觀察者總覽總體,使用 R 型感覺。這是一種經常使用的結合 L 型與 R 型的例子;
使用引喻幫助本身尋找答案;
利用大腦的思路在於試着抓住 R 型出現的時機,並充分利用 R 型和 L 型各自的特色—— R 型先行,L 型隨後。
因爲 L 型在平常思惟和邏輯中起到了相當重要的做用,以致於「內存總線」長期被 L 型佔據。於是若是咱們試圖利用 R 型模式,使本身脫離高度集中和理性的狀態就顯得很是必要。咱們能夠經過這些方式訓練 R 型,使其做用可以發揮:
晨寫和自由寫。在早起後意識朦朧的狀態中,L 型還未徹底佔據,此時提筆書寫,不要過多地思考措辭和邏輯,有助於聚集 R 型的輸出;
利用圖像流。在腦海中想象一張圖像,利用各類感官儘量細緻地觀察它。事實證實,心中想象的圖像在不少狀況下,是 R 型努力想要告訴咱們的事情;
散步。散步途中不要刻意進行問題解決方案的思考,給 L 型思惟倦怠的時機,使得 R 型能夠運轉;
此外,文中還提到了「醉酒書寫,酒醒修改」,這也是一種切換 R 型思惟的方法。但切記,記憶是一種脆弱且昂貴的機制,咱們須要隨時記錄下 R 型輸出的精闢領悟,不論什麼時候何地。
調試大腦的要義在於探究和審視如下四大問題:
認知偏見:思惟如何被誤導;
時代影響:同代人如何影響咱們;
個性傾向:個性如何影響思惟;
硬件故障:大腦的舊區域如何壓制聰明的區域;
咱們須要重視如下偏見:
思惟定勢:先前的見聞會影響到咱們以後的決定;
基本歸因錯誤:錯誤地將行爲歸由於個性,而不考慮當時發生的情形;
自私的偏見:樂於接受成功的分賞,卻拒絕承擔失敗的責任;
須要定論:對疑惑和不肯定性感到格外的不舒服。強行指定「項目截止時間」、「項目細節方案」等本就難以所有肯定的事情。與其說這是一種嚴謹,不如說是一種逃避和自我掩飾;
承認偏見:依據本身的成見和喜愛進行判斷和選擇;
曝光效應:咱們會對本身的熟悉的事情產生偏見,儘管這些「熟悉的事物」已經再也不好用;
霍桑效應:當人們知道本身在被審視的時候,每每會表現出異常的反饋,但這並不表示常態;
虛假記憶:大腦可能會混淆想象、暗示、以及真實發生的事;
括號簡約謬論:在使用符號表明一個系統時,可能會丟失必要的細節;
名詞謬論:覺得使用標籤或符號進行抽象就能夠徹底瞭解事物;
對於「須要定論」這一偏見,做者還引伸出了知識量之於項目進展的關係,代表在項目交付的結尾,咱們的智力會達到高峯,而項目最開始時則是無知的。於是,推遲決斷,或許會有更好的解決方案。
處於不一樣時代的人有着各自的成長環境和時代背景。這些變因每每會成爲一代人對於事物見解和處理態度造成的主要緣由。
在書中將其作以下劃分:
1901 - 1924,大兵的一代,務實、地道的美國建設者;
1925 - 1942,沉默的一代,穿灰色法蘭絨的墨守成規者;
1943 - 1960,嬰兒潮的一代,道德仲裁者;
1961 - 1981,X 一代,自由選手;
1982 - 2005,新千年一代,忠誠,不冒險;
2005 - ?,祖國的一代;
這些特性每每來自於所處時代所經歷的戰爭、技術革新、政策等因素。瞭解這些因素可使得咱們在與人相處、試圖說服和接受領導時可以更多地考慮到時代的影響。
極可能你天生就喜歡你這一代人所鍾愛的作事方式和價值觀。但請意識到這種影響來源於何處。可能你的極端我的主義不是你獨有的特質。可能你羨慕別人和指望本身擁有的特質不是來自沉思或者邏輯推理,而只是由於你出生在那個時代。
當你激烈的支持或同意一個觀點的時候請記住這一點。你提出的論據是邏輯性的,仍是感情做怪,或者只是由於熟悉?論據在特定的情境中成立嗎?是否真的考慮過別人的見解?
基於卡爾·榮格(Carl Jung)的研究成果,個性傾向能夠分爲四大軸線領域。
外向和內向;
感受和直覺;
思考和情感;
判斷和知覺;
瞭解這些個性傾向除了找到本身的定位外,更重要的是瞭解到交往時合做者與本身的個性傾向差別極可能會左右結果。具備強烈性格差別的人之間的合做過程將極其困難,這一點在與人爭辯的時候也會有所體現。
大腦不是生來完美的,它須要不斷的發展。也正是由於這個緣由,一些老舊的區域時常會左右咱們的行爲,並在某些情形下爲咱們提供一些貼近原始的、表現生存本能的行爲:
戰鬥、逃跑或者恐懼:當你在陳述時,忽然有人提出了尖銳的問題,你可能很是想要逃離現場;
當即行動:對於行動沒有思考和計劃,而只是處於衝動的興奮點;
領頭意識:拼命成爲領頭人,只是爲了任意地對待下屬;
守衛領土:毫不分享任何的信息、祕訣、技巧和空間;
在受到傷害時憤憤不平:花費全部的精力去責備別人,而不是努力解決問題;
吾即真理:以本身爲中心,和本身一方的老是好的,反之必然是壞的;
見樣學樣:無條件不理性的模仿;
此外,書中還列舉了電子郵件的例子:在沒有即時通訊、電子郵件的日子裏,人們互相交流須要經過紙質信件。從書寫到等待郵遞員收取郵件之間一般間隔較長的時間,人們會在這段時間以內再三思考本身的措辭和行爲,並最終保持一種相對冷靜的狀態。反觀現在論壇、即時通訊、郵件等平臺的爭執和謾罵,大多都是原始情感的當即輸出,而不是通過高級思考活動的。
大腦不是用於填充的容器,而是一束須要點燃的火焰。 —— 普盧塔赫
掌握持續學習的能力而不是技術自己,這一點對於軟件行業更是如此。不管咱們多麼熱情地追逐技術的發展,老是會有新的技術或是技術的新版本須要學習。面對現在幾年就會使得信息翻一番的時代,除了持續學習之外,沒有別的辦法。
但這種持續學習的方式不該是某些企業推崇的「羊浸式」教育。這種強烈的、陌生的、中毒性的清晰過程表如今培訓領域就是週期性的、集中式的課程進修。公司和企業喜歡這種培訓,由於它易於購買,便於安排時間,但的確不起做用。緣由在於:
學習不是一種強加的行爲,而是須要主動作的事情;
僅僅掌握知識而不實踐是無用的;
隨機的方法,沒有目標和反饋,每每只會獲得隨機的結果。
爲了可以在生活和實踐中不斷成長,咱們須要制定目標和任務,這些目標和任務不該是隨意的,它們須要知足如下特性:
具體的(Specific):具體化本身任務,而不是提出一個模糊的目標;
可度量的(Measurable):能夠度量定下的任務和目標,否則,也許是它還不夠明確;
可實現的(Achievable):目標務必能夠實現和操做;
相關的(Relevant):目標須要在本身的掌控之中,本身須要對其具有熱情;
時間可控的(Time-boxed):爲目標定下截止時間;
此外,咱們還應該主動的、多維度的制定目標。好比學習新興的語言,或是涉獵其餘學科。
在學習中,儘可能使用本身適合的學習方法。慣於利用視覺和聽覺的人可能更適合於接受視頻教育或參與講座而不是靜讀。除此以外,參與學習小組和使用思惟導圖也是不錯的學習方式。
一輩子中,你所讀的書可能比聽的講座多得多。可是,相比於任何一種學習方法,閱讀是最爲低效的。
做者在書中提出,使閱讀更爲有效的方式是主動,而不是埋頭苦讀。可操做的一種方法被稱爲 SQ3R:
調查(Survey):掃描目錄和每章總結,得出整體見解;
問題(Question):記錄全部問題;
閱讀(Read):閱讀所有內容;
複述(Recite):總結,作筆記,並用本身的話進行描述;
回顧(Review):重讀,擴展筆記,進行討論;
切記,寫做和閱讀同等重要,咱們須要採起合適的方法進行主動閱讀,也須要利用思惟導圖等方式聚集思考,進行寫做。
重視文檔的力量。把文檔看成自學的另外一種方式,重視文檔製做的過程而不是文檔自己。
以教代學。嘗試向某人甚至是桌上的玩偶講述本身學習的內容或是遇到的問題,一般能夠幫助咱們更好的理解和記憶知識,或是高效地發現問題。
先進行知識的灌輸,再期待往後會使用到它們,這實際是一種本末倒置的事情。咱們應該在觀察和「玩耍」中構建知識和學習方法。
玩耍的第一層意義在於非目的性探索,咱們不只僅是要接收信息,也要親自探索和構建思惟模型。另外一層意義在於提高樂趣,樂趣的提高有助於咱們調動所有的感官探索事物。結合書中先前章節的內容,咱們經過這一方式再次調用的 L 型與 R 型思惟。
學習的另外一要義在於利用現有的知識。咱們在遇到問題時,應該將其分解爲若干個更小的、更易於管理的部分,分紅大腦足以容納的幾個部分。書中提到了波利亞的解題思路:
解決問題前,先提問本身:
未知量是什麼?
已知量是什麼?
條件是什麼?
可使用以下的技巧:
努力回想擁有相同或相似未知量的常見問題;
畫一張圖;
解決一個相關的或者更簡單的問題,放寬限制,或者使用已知量的子集;
是否已經用上了全部的已知量和條件,若是沒有,爲何?
嘗試從新敘述這個問題;
嘗試從未知量推導已知量。
這種解決思路實際上能夠簡述爲:若是解決不了當前的問題,那麼是否能夠解決相似的問題?可是切記,這種思路也許不能適用於某些狀況,好比當新舊問題的思路徹底不一樣時,就應該徹底摒棄舊方法。
錯誤是發現的大門,證明失敗出現的近乎必然性,但須要注意如下幾點:
創建探索環境:儘可能創建安全可控的環境去應對嘗試新的技術和想法;
自由實驗:嘗試尋找問題的其餘解;
可以原路返回穩定狀態:這意味着咱們能夠在發生錯誤時迅速回到以前的狀態,分析錯誤、修改方案或嘗試其餘作法;
重現任意時刻的工做產品:咱們須要可以回到程序的任意版本;
可以正視進展:尋找一種證明進展的方法。
有一種失敗並不能爲咱們帶來收穫,反而有可能會扼殺學習的熱情。爲此,咱們須要瞭解學習訣竅,好比適度延長反饋的時長、在修正錯誤時首先進行觀察而不是馬上動手等。
最後期限會使得大腦恐慌,並且會使得、本身處於一種「壓力宿醉」的狀態中。在這一狀態後,咱們的創造力會一直受到壓制。
當壓力出現的時候,咱們所觀察的視野範圍會急劇縮小,L 型思惟霸佔了總線,使得 R 型徹底得不到發揮。於是,在壓力出現的時候,咱們更須要的是放鬆。在項目之中給本身提供「容許失敗」的領域是一種不錯的手段。
大腦有時會先入爲主地給咱們提供信息,而這些信息一般伴隨着錯誤的預測、舊信息與偏見。這種現象一般基於記憶和想象的經驗,於是咱們能夠好好地利用它,好比在大腦中模擬本身的成功、斷言本身已經改正了某一缺點、在跑步前先進行負重運動等。
僞裝本身能夠成功,那就真的會成功。
一個海軍飛行員在夜間以每小時 224 千米的速度在甲板上着陸一架 18 噸重的飛機,可能比一個普通少年切下一片硬麪包圈更加安全。
提升注意力的方法有不少種,如下是書中的一些建議:
使用 wiki 或其餘手段管理本身的知識,這樣在須要的時候它們就會本身冒出來;
優化當前情境,避免情景切換形成注意力轉移和時間浪費,咱們的大腦沒法很好地支持情境切換;
避免因電子郵件、推送消息、屏幕切換等分心,將注意力集中在當前屏幕的當前焦點;
有效地組織任務,使用記事貼保存外部信息,而不是動態的刷新頭腦;
積極地管理干擾:如制定會議和可打斷的時間段、安排郵件處理時間等;
保存情境堆棧:當本身被打擾時,將必要的信息記錄下來,而不是在迴歸情境時從新回憶;
佈局工做空間,擴大情境保存空間。
可是,有時咱們也須要轉移注意力以浸泡本身的意識,給本身以思惟發散的時間來得到更多的創造力。
咱們須要執行力和決心,摒棄「不做爲」,步步爲營、不斷爲下一個目標努力。在成爲專家以後,也要保持一個新手的頭腦,須要像小孩同樣擁有無窮的好奇心,充滿問題和驚訝。咱們須要不斷評估本身,不要讓過去的智慧使得本身看不到眼前的現實。