《程序開發(fā)心理學(xué)》讀書筆記
《程序開發(fā)心理學(xué)》主要為我們介紹了程序開發(fā)的過程以及設(shè)計(jì)過程中的思維方式!冻绦蜷_發(fā)心理學(xué)》讀書筆記是小編想跟大家分享的,歡迎大家瀏覽。
作為一本與計(jì)算機(jī)有關(guān)的圖書,在1971年初次出版之后,能夠經(jīng)過45年仍然保持活力,不能不說它是一本神奇的書。“本書開創(chuàng)了一個(gè)新的領(lǐng)域,即將程序開發(fā)作為一種人類行為來看待,而不僅僅是與硬件、軟件相關(guān)。”
45年來,雖然計(jì)算機(jī)軟硬件技術(shù)在飛速地更新?lián)Q代,但人類作為程序開發(fā)的主體,人類的心理狀態(tài)和行為模式與45年前并沒有太大的不同。因此本書作者溫伯格先生45年前的諸多真知灼見如今依然適用。又由于20年前出版銀年紀(jì)念版的時(shí)候,作者沒有直接修改原書,而是在保持原貌的基礎(chǔ)上增加評注,讓我們可以更真切地看到在開始的25年間,軟硬件技術(shù)進(jìn)步和管理知識積累給程序開發(fā)的各方面帶來的或多或少的影響。
我猜有兩類人大概會喜歡這本書:
第一類是有一些開發(fā)經(jīng)歷,喜歡觀察、思考并愿意嘗試改善開發(fā)過程的程序員;
第二類是程序員出身轉(zhuǎn)而從事開發(fā)管理工作,同樣喜歡觀察、思考并愿意不斷嘗試對開發(fā)過程做出改善的技術(shù)主管。
此外,我非常希望其他管理層的主管們也能來讀一讀這本書,對軟件開發(fā)的過程及組織能夠有更多的了解,不過書里吐槽管理層的地方有點(diǎn)兒多,只怕他們就算勉強(qiáng)來讀了也不見得喜歡。
另外在序言中,溫伯格先生提醒讀者:
讀者的責(zé)任是要根據(jù)自己的經(jīng)驗(yàn)與需求,對書中的所有觀點(diǎn)進(jìn)行權(quán)衡取舍。... ... 我不希望讀者在閱讀過程中貿(mào)然接受某種觀點(diǎn),因?yàn)檫@種讀書的態(tài)度正是我們應(yīng)該努力戒除的。本書中提供的素材只是讀者在自己思想形成的過程中需要消化、吸收的食物,而不應(yīng)該是個(gè)人思想的簡單替代品。
這個(gè)要求其實(shí)適用于讀任何書。
本書從 1、作為人類行為的程序開發(fā);2、作為社會行為的程序開發(fā);3、作為個(gè)人行為的程序開發(fā);4、程序開發(fā)工具 四個(gè)方面進(jìn)行了闡述。
第一篇
作為人類行為的程序開發(fā)
本篇前兩章閱讀程序和優(yōu)秀程序的要素嘗試將程序開發(fā)看成一項(xiàng)以人為主體的行為加以研究,并論述了進(jìn)行這種研究的可行性和必要性,第三章如何研究程序設(shè)計(jì)則從人類行為學(xué)和心理學(xué)研究方法的角度進(jìn)一步討論了對程序開發(fā)進(jìn)行研究的可行性。
(作為一名程序員,閱讀本書的樂趣與收獲更多來自溫伯格先生隨意揮灑的各種經(jīng)驗(yàn)之談。每章結(jié)尾的小結(jié)、思考題和本章評注,也是值得多花費(fèi)些時(shí)間和精力的部分。)
第一章 閱讀程序
程序被編寫成什么樣子,取決于眾多的因素。有的是由于計(jì)算機(jī)的局限,有的是由于程序語言的局限,有的是由于程序員的局限,有的是因?yàn)闅v史的偶然,而有的則可能是因?yàn)橐?guī)范。
思考題:
請主管回答
如果你是一線主管,你是否有能力閱讀你手下的程序員所編寫的程序?或者,就閱讀程序的能力而言,你是否與“老一輩”的計(jì)算機(jī)和語言一同落伍了?如果你有這個(gè)能力,你真的會去閱讀程序嗎?如果此前你不閱讀程序,為什么現(xiàn)在不嘗試一下,看看會發(fā)現(xiàn)什么?
如果你是高層主管,你手下的一線主管們是否有能力閱讀他們手下的程序員所編寫的程序?你能肯定嗎?向程序員了解一下,然后重新回答這個(gè)問題。然后查明一線主管是否真的閱讀程序,即使他們有這個(gè)能力。我們的調(diào)查顯示,由于各種原因,九成的一線主管不閱讀程序。你是否認(rèn)為,如果不經(jīng)常閱讀程序員的程序,一線主管能知道程序員的能力如何,工作是否出色嗎?
請程序員回答
你上次閱讀別人的代碼是在什么時(shí)候?為什么經(jīng)過了這么長的時(shí)間?最近一次有人閱讀你的程序并且與你討論,是在什么時(shí)候?這個(gè)人是你的主管嗎?
到程序庫或者向你的好友借一份程序。試著分析并找出其中各段代碼存在的原因,看看是否屬于本文中介紹的某種情況。通過這個(gè)練習(xí),你有什么收獲?
找出你至少一個(gè)月之前親自編寫的一個(gè)程序,參照第2題的方式進(jìn)行分析。從這個(gè)練習(xí)中,你又有什么收獲?
除了回答問題,我們還能從思考題中看到什么呢?哪些作者提出的問題經(jīng)過這四十多年已經(jīng)被很好的解決了?哪些問題目前仍然繼續(xù)存在呢?哪些問題在良好管理的團(tuán)隊(duì)里已經(jīng)不再是問題,而在管理不善的團(tuán)隊(duì)中仍然存在呢?
本章評注:
在軟件維護(hù)的過程中被閱讀得最多的代碼,往往并非是最好的代碼。也許正因?yàn)槿绱,這部分代碼才最需要維護(hù)。對于根本區(qū)分不出代碼優(yōu)劣的那些用戶來說,閱讀程序的確不會有什么幫助。25年來,這些問題始終沒有改變。
但是,開發(fā)人員把他們的工作提交給別人審閱,或者希望通過審閱他人的工作來提高水平時(shí),為什么會如此之難呢?令人奇怪的是,高明的程序員善于通過排演和審查過程來發(fā)現(xiàn)有價(jià)值的東西,而那些自以為是的人卻不是這樣。正因?yàn)槿绱,和司空見慣的情況一樣,高手越來越出色,差勁的越差。
45年之后,情況依舊。
第二章 優(yōu)秀程序的要素
那些叫囂著要追求效率的管理者,正是那些在得知修改代碼的沉重代價(jià)后,為此而傷透腦筋的人。相反,那些過于強(qiáng)調(diào)程序的通用性和易于修改性的主管們,在發(fā)現(xiàn)自己的程序運(yùn)行起來又慢又費(fèi)空間時(shí),往往又會變得怨天尤人。對于這些問題,我們必須保持一種成熟的心態(tài)——要知道,無論是心理學(xué)還是魔法,都無法幫助我們同時(shí)實(shí)現(xiàn)這兩個(gè)相互矛盾的目標(biāo)。通常我們必須在二者之間做取舍。
在溫伯格先生寫作本書的45年前,效率主要指程序在計(jì)算機(jī)中的運(yùn)行效率,在硬件性能已經(jīng)翻天覆地的今天,把“效率”這個(gè)詞理解為軟件的開發(fā)效率,這段話同樣成立。
作為一個(gè)好程序,必須具備哪些要素呢?我們必須考察到不同程序各自的優(yōu)點(diǎn),同時(shí)還要兼顧其所在的環(huán)境。其中一些重要的因素有:
該程序是否符合功能要求?或置更確切地說,它在多大程度上滿足功能要求?
該程序的開發(fā)是否按照計(jì)劃完成?根據(jù)一些特定的方法,我們能夠預(yù)測出的項(xiàng)目計(jì)劃可能的偏差幅度會有多大?
當(dāng)條件改變時(shí),該程序是否可能修改?修改的成本有多大?
程序的效率如何?這里的效率是指什么?為了補(bǔ)償某一個(gè)方面的低效率,我們是否會犧牲另一方面的高效率?
思考題:
請主管回答:
你根據(jù)什么標(biāo)準(zhǔn)來確定應(yīng)該獎(jiǎng)勵(lì)哪個(gè)程序員?在你的標(biāo)準(zhǔn)中,是否存在互相矛盾的現(xiàn)象(比如,強(qiáng)調(diào)程序的效率,同時(shí)又要求程序具有通用性)?你會很明確地告訴程序員,自己希望在他們的程序中找到什么嗎?或者說,你是否只是告訴他們,你希望程序很快、很小、整潔、易于修改、錯(cuò)誤很少,并且能在一周內(nèi)完成?
在你的公司中,制定開發(fā)進(jìn)度表的重要程度如何?你是否認(rèn)為“失之毫厘、謬以千里”?或者你是否認(rèn)為,在獎(jiǎng)勵(lì)程序員時(shí)應(yīng)該更加看重穩(wěn)定性,而不是偶然的一次歪打正著?即使一個(gè)計(jì)劃不可靠,只要它是完成進(jìn)度的唯一希望(盡管可能根本無法完成該程序),程序員還是會采用它——你知道這是為什么嗎?
請程序員回答:
在開始進(jìn)行某個(gè)項(xiàng)目時(shí),你的腦子里是否已經(jīng)有了一些明確的準(zhǔn)則?在確立這些準(zhǔn)則時(shí),你根據(jù)的是不是自己對于重要性的認(rèn)識?或者,是依照上級主管的看法?在項(xiàng)目的進(jìn)行過程中,這些準(zhǔn)則有無更改?或者,你是否有某種辦法,來確保其不被動(dòng)搖?
在編寫程序時(shí),你曾經(jīng)有多少次想到過它在未來可能被別人修改?反過來,在修改別人的程序時(shí),你又曾經(jīng)咒罵過幾回?
你是否曾經(jīng)因?yàn)樽非?quot;性能"而延誤了工作進(jìn)度?反過來,是否曾經(jīng)因?yàn)橐谝?guī)定時(shí)間完成,而沒有做到盡善盡美?
第三章 如何研究程序設(shè)計(jì)
最優(yōu)秀的程序員同時(shí)也是那些最善于自省的。如果他們發(fā)現(xiàn)做錯(cuò)了什么,他們會對導(dǎo)致這個(gè)結(jié)果的思維過程(或物理過程)進(jìn)行檢討,然后,他們會采取一些相應(yīng)的措施,對這個(gè)過程進(jìn)行調(diào)整。這種被稱為“根源分析”的方法,正是人們希望從我這里獲得的,同時(shí)也是我希望讓更多企業(yè)掌握的——然而不幸的是,這種方法還沒有得到很多人的青睞。更多的人仍然喜歡使用“過失追究分析”的方法,這種方法的效果恰恰相反,它會誘導(dǎo)人們把引發(fā)問題的根源隱藏起來。
管理心理學(xué)中的一條基本原則:關(guān)注下屬工作的主管,將會取得更好的成績。
許多主管都希望他們手下的程序員像一個(gè)個(gè)代碼模塊似的工作,那些曾經(jīng)做過程序員的主管們更是如此。這些主管認(rèn)為,每個(gè)部下猶如一個(gè)小黑盒,只要輸入要求,工作結(jié)果就會源源不斷地輸出;根本無需任何觀察,更不用說相互之間的交流溝通了。很多負(fù)責(zé)軟件開發(fā)的主管,就是不愿意與下屬并肩工作——這里最主要的原因就是,他們從未接受過任何有關(guān)的培訓(xùn),以至于他們根本不了解具體工作應(yīng)該如何著手。
第二篇
作為社會行為的程序開發(fā)
本篇主要從社會行為角度對程序開發(fā)進(jìn)行研究,溫伯格先生把程序員集體分成三種類型:程序開發(fā)組、程序開發(fā)團(tuán)隊(duì)和程序開發(fā)項(xiàng)目,并用三章的篇幅來依次討論。
我理解,這里的程序開發(fā)組指的是一種自發(fā)形成的帶有互助性質(zhì)的最小型的松散組織,它有可能跟正式的組織結(jié)構(gòu)重合(最理想狀態(tài),可以極大提高整個(gè)組織的開發(fā)效率和產(chǎn)品質(zhì)量),但更多情況下會是一種非正式的結(jié)構(gòu)。小組成員有可能是同事或者前同事、也可能是技術(shù)討論組中正在進(jìn)行類似的開發(fā)工作的網(wǎng)友,而后一種情況也有可能通過換工作轉(zhuǎn)變成前一種情況。成員們樂于把工作和學(xué)習(xí)中碰到的問題拿出來互相討論,互相幫助查找問題,取長補(bǔ)短,相互學(xué)習(xí),共同進(jìn)步。技術(shù)主管應(yīng)該致力于把自己領(lǐng)導(dǎo)的團(tuán)隊(duì)變成一個(gè)這樣的開發(fā)組。
程序開發(fā)團(tuán)隊(duì)則是一個(gè)正式的組織結(jié)構(gòu),程序員們被組織到一起來完成一項(xiàng)必須多人協(xié)作才能完成的任務(wù)。
程序開發(fā)項(xiàng)目是進(jìn)一步擴(kuò)大的組織,它由多個(gè)團(tuán)隊(duì)組成,一起完成一項(xiàng)復(fù)雜的、可分割的大型項(xiàng)目。隨著組織的`擴(kuò)大,程序開發(fā)項(xiàng)目主管會遇到更多的組織管理問題,甚至一些社會性問題。
第四章 程序開發(fā)組
為提高開發(fā)的效率與質(zhì)量,程序員需要避免唯我獨(dú)尊式的心理,克服認(rèn)知失調(diào)。溫伯格先生提出了“無私式程序開發(fā)”。
馮·諾伊曼很早就意識到,他在檢查自己工作方面,確實(shí)能力不夠,他也許是能夠認(rèn)識到這一點(diǎn)的第一位程序員。那些與他相識的人們回憶說,馮·諾伊曼總是跟別人講自己是多么蹩腳的程序員,并且不厭其煩地請別人閱讀他的程序,期望發(fā)現(xiàn)其中的錯(cuò)誤與紕漏之處。然而在今天人們的心目中,馮·諾伊曼一定是位無與倫比的計(jì)算天才——他渾身上下每個(gè)毛孔都應(yīng)該是完美無缺的。當(dāng)然,馮·諾伊曼的天才絲毫不容懷疑。然而他對自己作為一個(gè)人所具有的缺陷非常清楚,他的這種自知之明,也使他遠(yuǎn)遠(yuǎn)超過當(dāng)今的一般程序員。
關(guān)于團(tuán)隊(duì)集體在軟件開發(fā)過程中的價(jià)值,還有個(gè)別人仍然沒有認(rèn)識到;蛘咭苍S他們確實(shí)認(rèn)識到了,但是受制于其對個(gè)人職位的患得患失,他們的做法總是南轅北轍,F(xiàn)在對軟件開發(fā)主管們的考評,很大程度上仍然是根據(jù)其已有的成果多少,而不是看其是否有能力建立能夠創(chuàng)造出更多成果的團(tuán)隊(duì),或是看他們的成果質(zhì)量。在這樣的壓力下,主管們就會極盡其能事,編造種種相互矛盾的甜言蜜語去哄騙其屬下,以期得到更多成果——當(dāng)然,這些成果大多是短期的。他們的一些下屬也可能領(lǐng)悟出這個(gè)游戲的原理,于是也會效仿這種伎倆,去欺騙他們的下屬······,這樣一直下去,直到他們也成為這樣的主管。這種主管根本不屑于去建立團(tuán)隊(duì),也開發(fā)不出什么高質(zhì)量的成果,而只會再帶出更多像他一樣的下屬——有朝一日這些人又將成為下一代被這樣誤導(dǎo)的主管。
第五章 程序開發(fā)團(tuán)隊(duì)
無論具體情況如何,程序開發(fā)團(tuán)隊(duì)的規(guī)模和組成似乎都符合這樣一條基本的規(guī)律——如果希望通過最小的代價(jià)獲得最佳的開發(fā)效果,你必須找到盡可能出色的程序員,并且給他們以盡可能長的時(shí)間,這樣你需要的程序員數(shù)量也將最少。反之,如果你希望工作能盡可能快地完成,或者雇用盡量少的經(jīng)驗(yàn)豐富的程序員,那么開發(fā)成本與不確定性都會隨之增加。
在程序開發(fā)的過程中,開發(fā)團(tuán)隊(duì)中各成員的地位,通常在很大程度上取決于其他人對其個(gè)人能力的了解程度。如果程序能夠(在團(tuán)隊(duì)中自由)流通,供程序員們相互評判、指正,那么“精英們”就能夠更快地脫穎而出。
為了實(shí)現(xiàn)在集體目標(biāo)上真正的意見一致,最好的辦法莫過于讓開發(fā)組自己來確定其目標(biāo)。首先,在目標(biāo)制定時(shí)廣泛參與,可以確保目標(biāo)能夠被大家充分理解。另外,這個(gè)過程使集體中的每個(gè)成員可以有機(jī)會對共同的目標(biāo)做出公開的承諾,而——也許是因?yàn)檎J(rèn)知失調(diào)的作用——這種公開的承諾已被證明可以提高目標(biāo)的可接受性。這種參與和其他因素不相干,但是參與本身卻似乎是一項(xiàng)重要的因素,它能夠決定各個(gè)成員是否真的接受了開發(fā)團(tuán)隊(duì)的任務(wù)目標(biāo),并提高開發(fā)效率。
而最大的危險(xiǎn)則來自于主管,由于他們都是經(jīng)過程序開發(fā)中的層層選拔才得以出頭的,所以這些人總是希望在手下成員看到問題之前,就已經(jīng)把每一個(gè)細(xì)枝末節(jié)都詳細(xì)地定義好了。再沒有其他做法能夠更挫傷成員的積極性了,它只能使成員覺得自己不過是“編碼器”而已。
就社會科學(xué)家對“領(lǐng)導(dǎo)能力”一詞的使用而言,其含義應(yīng)該是“對他人的影響能力”。程序員一般會更加注重創(chuàng)造性的工作及專業(yè)能力,在他們所從事的工作范圍內(nèi),他們會對些被自己認(rèn)定為很出色的人更加器重。這樣,與那些世界級的口若懸河的推銷商們相比,作為一名語調(diào)溫和的程序開發(fā)奇才,將可以更加輕松地對程序員們進(jìn)行領(lǐng)導(dǎo)(或影響)。當(dāng)一名根本沒有編過程序的領(lǐng)導(dǎo)者被指定負(fù)責(zé)某個(gè)開發(fā)團(tuán)隊(duì)時(shí),除非該領(lǐng)導(dǎo)者明確地或者含蓄地承認(rèn)自己在技術(shù)問題上的能力欠缺,否則注定會有麻煩發(fā)生。即便是那些曾經(jīng)當(dāng)過程序員的人,只要他后來有相當(dāng)長的時(shí)間脫離了這個(gè)行當(dāng),如果他依然企圖去與團(tuán)隊(duì)中的其他成員在程序開發(fā)才能方面一比高低,那么情況簡直就糟糕透頂了。對于那些公開承認(rèn)自己在程序開發(fā)方面經(jīng)驗(yàn)欠缺的人,他的團(tuán)隊(duì)成員還有可能會尊重他,但是如果有人企圖掩蓋自己在這些方面的無知,那么等到他遲早露餡的時(shí)候,就會招致程序員們的無情嘲弄。
目光短淺、難以依賴的團(tuán)隊(duì)領(lǐng)導(dǎo)者可能會認(rèn)為博得管理層歡心的最好方法,就是無論他們要求什么都滿口答應(yīng)。但是最后,管理層需要的不只是諾言,而更重要的是恪守諾言,只有在團(tuán)隊(duì)的領(lǐng)導(dǎo)者有能力使整個(gè)團(tuán)隊(duì)都接受這個(gè)諾言,并且以此作為集體的目標(biāo),諾言才有可能兌現(xiàn)。
團(tuán)隊(duì)的領(lǐng)導(dǎo)者需要學(xué)習(xí)的東西包括:
無論主管們怎樣地強(qiáng)調(diào)諾言,他們真正關(guān)心的只是結(jié)果。
如果希望得到的結(jié)果與在整個(gè)團(tuán)隊(duì)的參與下所確定的工作目標(biāo)一致,那么這一目標(biāo)就會非常容易地實(shí)現(xiàn)。
領(lǐng)導(dǎo)能力方面的一個(gè)悖論非常簡單:只有隨時(shí)準(zhǔn)備下臺的領(lǐng)導(dǎo)者,才有可能獲得成功。
將影響到一個(gè)團(tuán)隊(duì)的生命期及其績效的因素包括:
各成員的特長與不足。
目標(biāo)設(shè)定的方式。
待開發(fā)的程序的結(jié)構(gòu)。
由外界強(qiáng)加的領(lǐng)導(dǎo)管理結(jié)構(gòu)。
某些成員的性別,以及其他成員對待這種性別的態(tài)度。
團(tuán)隊(duì)與其周圍環(huán)境中其他部分之間的溝通聯(lián)系。
團(tuán)隊(duì)領(lǐng)導(dǎo)人在技術(shù)方面的能力與欠缺。
第六章 程序開發(fā)項(xiàng)目
如果項(xiàng)目主管希望穩(wěn)定地推進(jìn)自己的項(xiàng)目,他就必須嚴(yán)格遵守這樣一條簡單的格言:
如果某個(gè)程序員是不可或缺的,那么還是越快請他走人越好。
關(guān)于績效評價(jià),溫伯格先生舉了一個(gè)逐層匯報(bào)系統(tǒng)的例子。
有一個(gè)眾所周知的心理學(xué)原理:如果要使學(xué)習(xí)的速度最快,必須向主體及時(shí)地反饋其表現(xiàn)之好或之壞到了什么地步。但是也許不為人所知的一點(diǎn)是如果人們感到他們的績效正在受人考評,同時(shí)又不能充分了解別人到底如何評價(jià)自己的工作,那么他們就會通過不斷變化的方法來試探這個(gè)評價(jià)系統(tǒng)。在像這樣的報(bào)告系統(tǒng)之中,如果在提供了輸人數(shù)據(jù)之后,處于底層的人們沒法獲得相應(yīng)的評價(jià)反饋,那么他們就會隨心所欲地改變自己輸人的數(shù)據(jù),然后觀察可能產(chǎn)生的不同效果——以期得到一些反饋,哪怕評價(jià)的結(jié)果很不理想。
第三篇
作為個(gè)人行為的程序開發(fā)
在探討了程序開發(fā)中人類作為主體的共性問題之后,本篇開始討論具體程序員的個(gè)體偏差。我感覺這部分沒有前面兩篇精彩,尤其是與性格理論相關(guān)部分,溫伯格先生在評注中也表示,如果要在25年后重寫這本書的話,這一部分將是改動(dòng)最多的。
在談到業(yè)余程序員與專業(yè)程序員時(shí),溫伯格先生說:
如果希望確定一名程序員的工作是否出色,我們就必須看看,他是不是按照恰當(dāng)?shù)募墑e來處理這個(gè)問題。有些人可以憑借其才氣與個(gè)性,成為一名出色的業(yè)余程序員,但是從專業(yè)程序員的標(biāo)準(zhǔn)來看,這種才氣與個(gè)性往往正是極不合適的。重要的是根據(jù)手頭待解決的問題來調(diào)整自己工作方式的能力,而一旦缺乏這種能力,任何人都絕對不適合做一名專業(yè)程序員。
程序員工作績效的差異,在很大程度上取決于其對完成任務(wù)目標(biāo)的不同理解。
除了智力以外,程序開發(fā)的成功(或者失敗)還取決于其他的很多因素。我確實(shí)曾經(jīng)發(fā)現(xiàn),有些人貌似駑鈍,卻可以寫出高質(zhì)量的、很有用的代碼;而另外一些人雖然看起來更顯聰穎,卻從沒寫出過任何有用的代碼。簡而言之,今天的我依然堅(jiān)持自己經(jīng)過了25年時(shí)間考驗(yàn)的立場:“·····較之智力因素,人格因素、工作習(xí)慣及培訓(xùn)等方面的因素要與此更為相關(guān)。這些因素與智力因素不同,它們都可以通過后天經(jīng)驗(yàn)發(fā)生改變。因此,選拔程序員的問題就轉(zhuǎn)化成為培養(yǎng)程序員的問題。"
我所謂的“培養(yǎng)程序員”,并不是強(qiáng)行要求他們按照某種“最佳”模式進(jìn)行思考。我在自己的博士學(xué)位論文中曾清楚地指出問題求解的模式是因人而異的。所以,如果有什么力量強(qiáng)制某個(gè)程序員按照另一個(gè)人的模式進(jìn)行思考,那么就必將削弱該程序員解決問題的能力。因此,最大的挑戰(zhàn)并不在于創(chuàng)造性思維本身,而是創(chuàng)造性的交流,用可以為(各有其獨(dú)特思維方式的)其他人所接受的方式重新表述我們自己的思想。
對照自己前些日子的工作,創(chuàng)造性交流是我目前十分欠缺的。
主管們所犯的一個(gè)錯(cuò)誤就是,他們總是假設(shè)工作績效差的原因是由于缺乏積極性。于是,他們會企圖借助一點(diǎn)“外部驅(qū)動(dòng)力”來彌補(bǔ)“內(nèi)在驅(qū)動(dòng)力”的不足。而在這種時(shí)候,其實(shí)程序員所承擔(dān)的外部壓力往往已經(jīng)夠大了,而并非不夠。
關(guān)于積極性,最廣為人知、也最廣為人接受的一項(xiàng)研究成果就是:如果適當(dāng)?shù)卦黾?ldquo;驅(qū)動(dòng)力”,那么在開始階段確實(shí)可以提高工作績效;但是一旦超過一定的極限之后,繼續(xù)增加這種“驅(qū)動(dòng)力”只會很快地令工作績效降為0。在復(fù)雜的任務(wù)中,更容易看到這種工作績效急速下降的現(xiàn)象,這正是它對程序開發(fā)如此重要的原因所在。比方說,過于努力地去查找錯(cuò)誤,與根本不去查找同樣壞,至還要更壞。實(shí)際上,往往要等到程序員已經(jīng)決定放棄從而不再承受壓力之后,許多程序錯(cuò)誤才能被排除掉。給程序員施加高壓,以期他們能夠很快地排除某個(gè)程序錯(cuò)誤,這種做法已經(jīng)被證明是最差的策略——盡管截至目前,這仍然是最常采用的策略。
為了激勵(lì)程序員,就可以授予他們金錢之處的獎(jiǎng)賞——比如說,對他的工作質(zhì)量給予更多地關(guān)心,或者讓他負(fù)責(zé)一點(diǎn)規(guī)劃工作。需要提醒你的是:這并不只是要為公司節(jié)省經(jīng)費(fèi),而是為了更有效地激勵(lì)他們。
也許正是由于管理人員反復(fù)不斷地催促盡快“完成”任務(wù),所以經(jīng)常出現(xiàn)的情況就是:一旦程序被認(rèn)為是“可以工作的”,程序員馬上就宣告其大功告成——其實(shí)這往往是一種誤解。但是作為程序員,只要希望學(xué)習(xí),那么你就必須一邊頂住來自管理層的壓力,一邊花時(shí)間對自己的成功進(jìn)行總結(jié)。而對于管理人員來說,一個(gè)好的做法就是:每當(dāng)程序員宣稱自己的項(xiàng)目已經(jīng)“大功告成”時(shí),給他一天的時(shí)間放松一下——這并不是一種獎(jiǎng)賞,而是為了讓程序員加深對該項(xiàng)目的理解。
第四篇 程序開發(fā)工具
本篇中溫伯格先生花了很多篇幅討論語言問題。我對此不感興趣,因此略過。
第五篇 結(jié)語
結(jié)語的最后一段我很喜歡,摘錄于此:
我們正站在一個(gè)新時(shí)代的邊緣,正是由于蘊(yùn)藏于計(jì)算機(jī)之中、遲早要發(fā)生的革命,這個(gè)時(shí)代才有可能到來。站在這個(gè)邊緣,我們有兩個(gè)可以選擇的力向——邁人自由的黃金時(shí)代,抑或是倒退回專制的黑暗年代——無論你如何選擇,這個(gè)世界中任何已知的事物都將被人類征服。也許任何個(gè)人的努力對最終的結(jié)果都不會有什么影響,但是我們絕對不應(yīng)該放棄嘗試,因?yàn)榉駝t其后果必然是回到專制。這本書就是我反抗專制、反抗人奴役人、反抗被自己的無知所奴役的一次努力。但愿專制的力量不會利用這本書,但是毫無疑問,專制的力量確實(shí)會借鑒這本書。既然在這方面的希望破滅了,那么我只能希冀,處于杠桿另一端的正義力量能夠從本書中獲得更大的幫助。
【《程序開發(fā)心理學(xué)》讀書筆記】相關(guān)文章:
程序開發(fā)員簡歷封面模板09-22
程序開發(fā)個(gè)人簡歷范文09-07
《拖延心理學(xué)》讀書筆記感觸09-18
Android手機(jī)開發(fā)程序員求職簡歷模板05-17
博克《拖延心理學(xué)》讀書筆記11-23
兒童教育心理學(xué)讀書筆記02-02
內(nèi)資房地產(chǎn)開發(fā)公司的設(shè)立程序06-17