《程序員思維修煉(修訂版)》從認(rèn)知科學(xué)、神經(jīng)學(xué)、學(xué)習(xí)理論和行為理論角度,深入探討了如何才能具備優(yōu)秀的學(xué)習(xí)能力和思考能力,闡述了成為一名專家級(jí)程序員的關(guān)鍵要素,具體包括:大腦運(yùn)行機(jī)制簡(jiǎn)介,如何正確使用和調(diào)試大腦,改進(jìn)學(xué)習(xí)能力的具體技巧,如何通過(guò)自我引導(dǎo)積累經(jīng)驗(yàn),控制注意力的方法。為了讓讀者加深印象,作者還特別設(shè)立了一個(gè)“實(shí)踐單元”,其中包括具體的練習(xí)和實(shí)驗(yàn),旨在讓讀者真正掌握所學(xué)內(nèi)容。
生命中沒(méi)有什么是一成不變的,人們需要改變自己的習(xí)慣和方法。不論你是程序員、軟件公司管理者、技術(shù)奇人還是思想家,或者你只是想讓自己的大腦更聰明一點(diǎn)兒,所有嘗試改變自己的人,請(qǐng)把本書(shū)當(dāng)作改變的開(kāi)始……
做一名程序員,就意味著要不斷地學(xué)習(xí),不但要學(xué)習(xí)新技術(shù),還要學(xué)習(xí)怎么解決應(yīng)用領(lǐng)域的問(wèn)題,要了解用戶社區(qū)的奇思妙想,要適應(yīng)同事的怪癖,等等。在本書(shū)中,作者將帶領(lǐng)大家共同經(jīng)歷一次有關(guān)認(rèn)知科學(xué)、神經(jīng)學(xué)、學(xué)習(xí)和行為理論的旅程,探索人類大腦令人驚奇的工作機(jī)制,并研究如何克服這一系統(tǒng)局限來(lái)提高自己的學(xué)習(xí)和思考技能。
歡迎大家!
感謝選擇這本書(shū)。我們將共同經(jīng)歷一次有關(guān)認(rèn)知科學(xué)、神經(jīng)學(xué)、學(xué)習(xí)和行為理論的旅程。你將看到人類大腦令人驚奇的工作機(jī)制,并研究如何克服這一系統(tǒng)的局限來(lái)提高自己的學(xué)習(xí)和思考技能。
我們將開(kāi)始重構(gòu)你的“濕件”——對(duì)大腦進(jìn)行“重新設(shè)計(jì)”和“重新連線”,使你更高效地工作。不論你是程序員、管理者、“知識(shí)工人”、技術(shù)奇人還是思想家,或者你只是想讓你的大腦聰明一點(diǎn),這本書(shū)對(duì)你都會(huì)有所幫助。
我是一名程序員,所以我的例子和言論都離不開(kāi)軟件開(kāi)發(fā)領(lǐng)域。但是,如果你不是開(kāi)發(fā)人員,也不必?fù)?dān)心,實(shí)際上程序設(shè)計(jì)與使用神秘、深?yuàn)W的編程語(yǔ)言編寫(xiě)軟件沒(méi)有多大關(guān)系(盡管我們總是習(xí)慣性地認(rèn)為它們很相關(guān))。
程序設(shè)計(jì)其實(shí)就是解決問(wèn)題,它需要發(fā)明、創(chuàng)造和靈感。不論你從事什么職業(yè),可能都需要?jiǎng)?chuàng)造性地去解決問(wèn)題。然而,對(duì)于程序員來(lái)說(shuō),既要受到數(shù)字計(jì)算機(jī)系統(tǒng)的嚴(yán)格約束,又要展開(kāi)豐富而靈活的人類思考,這就會(huì)展示二者的強(qiáng)大力量,又會(huì)深深地暴露二者的缺陷。
無(wú)論你是一名程序員,還是一位心灰意冷的用戶,可能都曾認(rèn)為軟件開(kāi)發(fā)是人類可以想象和遇到的最艱難的工作。它的復(fù)雜性耗盡了我們的全部智慧,而一旦失敗則后果是可怕的,且往往極具新聞價(jià)值。我們?cè)?jīng)讓宇宙飛船偏離了軌道,撞向遙遠(yuǎn)的星球;讓昂貴的火箭爆炸,蒙受無(wú)法彌補(bǔ)的實(shí)驗(yàn)損失;給消費(fèi)者寄去索要零美元的催款信,搞得人家莫名其妙;時(shí)不時(shí)還讓航空旅客滯留在機(jī)場(chǎng)。
適才我們發(fā)現(xiàn):這完全是我們自己的錯(cuò)誤造成的。我們自身往往增加了程序設(shè)計(jì)的難度。隨著軟件行業(yè)的不斷發(fā)展,我們似乎失去了作為一名軟件開(kāi)發(fā)人員所必需的最基礎(chǔ)、最重要的技能。
不過(guò)好在,我們此時(shí)此地就能改正這個(gè)錯(cuò)誤。本書(shū)將告訴你如何去做。
過(guò)去40年中,程序員引入到程序中的缺陷的數(shù)量已經(jīng)基本保持不變。盡管程序設(shè)計(jì)語(yǔ)言、技術(shù)、項(xiàng)目方法論等都在不斷改進(jìn),但缺陷發(fā)生的頻率仍然保持在同一水平,沒(méi)能得到改善 。
也許這是因?yàn)槲覀円恢标P(guān)注著錯(cuò)誤的事情。盡管技術(shù)上有了很多顯著的改變,但有一樣?xùn)|西卻始終沒(méi)變:我們自己——作為開(kāi)發(fā)人員的人。
軟件并不是在集成開(kāi)發(fā)環(huán)境(IDE)或其他工具上設(shè)計(jì)出來(lái)的,它是在我們的大腦中想象和創(chuàng)造出來(lái)的。 軟件是在頭腦中創(chuàng)建的。
Software is created in your head. 思想和概念是需要在團(tuán)隊(duì)(也包括付錢讓我們開(kāi)發(fā)軟件的人)中分享和交流的。我們已經(jīng)在改進(jìn)基礎(chǔ)技術(shù)——程序設(shè)計(jì)語(yǔ)言、工具、方法上花費(fèi)了很多時(shí)間,當(dāng)然這也是十分必要的,但現(xiàn)在是我們更進(jìn)一步的時(shí)候了。
現(xiàn)在我們需要研究的真正難題是團(tuán)隊(duì)內(nèi)部和團(tuán)隊(duì)間的交流,甚至更困難的問(wèn)題是完全陳舊的思想。沒(méi)有任何項(xiàng)目是孤島,軟件不可能孤立地創(chuàng)建或者運(yùn)行。
Frederick Brooks在他的里程碑式的文章《沒(méi)有銀彈》[Bro86]中提出:“軟件產(chǎn)品處于應(yīng)用、用戶、規(guī)則和硬件 的合力之下。這些因素總是在不斷變化,迫使軟件產(chǎn)品也隨之改變!
Brooks的言論把我們推向了社會(huì)漩渦的中心?紤]到社會(huì)中各個(gè)相關(guān)團(tuán)體的復(fù)雜交互影響和社會(huì)的持續(xù)變化,在我看來(lái)當(dāng)前最重要的兩項(xiàng)技能就是:
溝通能力;
學(xué)習(xí)和思考能力。
軟件行業(yè)正在逐步提高溝通能力。特別是敏捷方法(見(jiàn)注解欄),強(qiáng)調(diào)了團(tuán)隊(duì)成員之間、最終客戶和開(kāi)發(fā)團(tuán)隊(duì)之間的溝通交流。類似《演說(shuō)之禪:職場(chǎng)必知的幻燈片秘技》[Rey08]這樣的大眾圖書(shū)突然熱賣,表明越來(lái)越多的人意識(shí)到簡(jiǎn)單、有效的溝通非常重要。這是個(gè)好的開(kāi)始。
不過(guò),提高學(xué)習(xí)和思考能力要更難一些。
程序員需要不斷地學(xué)習(xí)——不僅僅是學(xué)習(xí)新技術(shù),還包括應(yīng)用的問(wèn)題域、用戶社區(qū)的奇思妙想、同事的古怪習(xí)慣、行業(yè)的八卦新聞和項(xiàng)目演進(jìn)的重要特征,我們必須學(xué)習(xí)學(xué)習(xí)再學(xué)習(xí),持續(xù)不斷地學(xué)習(xí),然后把學(xué)習(xí)成果應(yīng)用到解決日常遇到的一切新舊問(wèn)題上。
也許,這些聽(tīng)起來(lái)都相當(dāng)容易,但學(xué)習(xí)能力、批判性的思考能力和創(chuàng)造力——所有這些擴(kuò)展思維的能力,都取決于你自己。這些東西沒(méi)人教得了,你必須自己學(xué)習(xí)。我們往往錯(cuò)誤地看待老師和學(xué)生的關(guān)系:不光是老師在教,學(xué)生也要學(xué)。學(xué)習(xí)完全取決于你自己。
我希望本書(shū)能夠幫你獲得又快又強(qiáng)的學(xué)習(xí)能力和更實(shí)用的思考能力。
什么是敏捷方法
“敏捷方法”這個(gè)詞最早出現(xiàn)在2001年2月的一次峰會(huì)上,與會(huì)的17個(gè)人都是軟件開(kāi)發(fā)行業(yè)領(lǐng)軍人物,他們創(chuàng)建了各種開(kāi)發(fā)方法,如極限編程、Scrum、Crystal,當(dāng)然也包括我們的注重實(shí)效的編程。
敏捷方法在很多重要的方面都與傳統(tǒng)的基于計(jì)劃的方法不同,最顯著的就是擺脫了死板的規(guī)則,丟棄了陳舊的日程表,注重實(shí)時(shí)的反饋。
我在本書(shū)中會(huì)經(jīng)常提到敏捷方法,因?yàn)楹芏嗝艚菟枷牒蛯?shí)踐都是與良好的認(rèn)知習(xí)慣相融合的。
Andy Hunt,敏捷開(kāi)發(fā)權(quán)威人士,敏捷宣言首倡者之一,著名IT圖書(shū)出版公司Pragmatic Programmers創(chuàng)始人。除本書(shū)外,他還與人合著有多本獲獎(jiǎng)圖書(shū),深受讀者歡迎,包括《高效程序員的45個(gè)習(xí)慣——敏捷開(kāi)發(fā)修煉之道》等。
第1章 緒論 1
1.1 再提“實(shí)用” 3
1.2 關(guān)注情境 4
1.3 所有人都關(guān)注這些技能 5
1.4 本書(shū)結(jié)構(gòu) 6
1.5 致謝 9
第2章 從新手到專家的歷程 11
2.1 新手與專家 12
2.2 德雷福斯模型的5個(gè)階段 14
2.3 現(xiàn)實(shí)中的德雷福斯模型:賽馬和賽羊 21
2.4 有效地使用德雷福斯模型 26
2.5 警惕工具陷阱 32
2.6 再一次考慮情境 34
2.7 日常的德雷福斯模型 35
第3章 認(rèn)識(shí)大腦 38
3.1 雙CPU模式 39
3.2 隨時(shí)(24×7)記錄想法 43
3.3 L型和R型的特征 46
3.4 R型的崛起 53
3.5 R型看森林,L型看樹(shù)木 57
3.6 DIY腦部手術(shù)和神經(jīng)可塑性 58
3.7 如何更上一層樓 60
第4章 利用右腦 61
4.1 啟動(dòng)感觀輸入 62
4.2 用右腦畫(huà)畫(huà) 63
4.3 促成R型到L型的轉(zhuǎn)換 67
4.4 收獲R型線索 77
4.5 收獲模式 85
4.6 正確理解 92
第5章 調(diào)試大腦 94
5.1 了解認(rèn)知偏見(jiàn) 95
5.2 認(rèn)清時(shí)代影響 103
5.3 了解個(gè)性傾向 111
5.4 找出硬件問(wèn)題 113
5.5 現(xiàn)在我不知道該思考什么 117
第6章 主動(dòng)學(xué)習(xí) 121
6.1 學(xué)習(xí)是什么……不是什么 121
6.2 瞄準(zhǔn)SMART目標(biāo) 124
6.3 建立一個(gè)務(wù)實(shí)的投資計(jì)劃 128
6.4 使用你的原生學(xué)習(xí)模式 132
6.5 一起工作,一起學(xué)習(xí) 137
6.6 使用增強(qiáng)的學(xué)習(xí)法 139
6.7 使用SQ3R法主動(dòng)閱讀 139
6.8 使用思維導(dǎo)圖 142
6.9 利用文檔的真正力量 148
6.10 以教代學(xué) 150
6.11 付諸實(shí)踐 151
第7章 積累經(jīng)驗(yàn) 152
7.1 為了學(xué)習(xí)而玩耍 152
7.2 利用現(xiàn)有知識(shí) 156
7.3 正確對(duì)待實(shí)踐中的失敗 157
7.4 了解內(nèi)在訣竅 160
7.5 壓力扼殺認(rèn)知 164
7.6 想象超越感觀 167
7.7 像專家一樣學(xué)習(xí) 171
第8章 控制注意力 173
8.1 提高注意力 174
8.2 通過(guò)分散注意力來(lái)集中注意力 179
8.3 管理知識(shí) 181
8.4 優(yōu)化當(dāng)前情境 187
8.5 積極地管理干擾 192
8.6 保持足夠大的情境 197
8.7 如何保持注意力 200
第9章 超越專家 202
9.1 有效的改變 202
9.2 明天上午做什么 204
9.3 超越專家 205
附錄A 圖片授權(quán) 208
附錄B 參考文獻(xiàn) 209
譯后記 216