通過心理學知識提高問題定位與解決能力(下)
前言
本文上篇主要介紹了解決問題的心理過程以及問題表征階段影響問題解決的一些心理因素,并分享了另外相關案例和指導意見。本文繼續介紹影響問題解決的其它心理因素。
影響問題解決的心理因素
自我監控技能
大膽假設,小心求證
––– 胡適
在設計好解題計劃后,問題解決者并不是簡單地執行解題計劃,而是要時刻自己監控自己對解題計劃的執行是否正確、解題計劃本身是否正確。這有點類似行車過程中,GPS導航軟件時刻檢查車輛當前的行車路線與之事先規劃的路線是否吻合。若不吻合,則導航軟件會提示車主車輛已偏離規劃的路線。。
問題解決者自我監控技能的強弱可能對問題解決的效果和效率產生決定性的影響。例如,解決某道數學題時,解題過程中需要計算出某事件出現的概率,然后再以此數據繼續解題。若經過很多步驟才算出這個事件的概率是1.02,通過自我監控則可以發現這個概率值的計算顯然是錯誤的。那么,應該重新計算這個概率值,而不是繼續執行其它解題步驟。相反,此時若未覺察到這個錯誤,繼續執行其它解題步驟,最終的答案很可能是錯的。
專家在解決問題過程傾向于更加頻繁地進行自我監控,并且其自我監控的效果比新手更好。專家在解決問題,尤其是一些難題,往往更加頻繁地提出各種假設,并通過邏輯推理和尋找數據證據對其進行檢驗,然后再根據檢驗的結果提出新的假設,再對這些新假設逐一驗證,通過這樣的自我監控逐步向解決方案靠近。就好比撥洋蔥皮,每撥一層皮,就離洋蔥核心更進了一步,最終解決問題。而新手在解決問題過程往往很難提出假設,即便提出假設,他可能不能清晰地意識到那僅僅是個假設,便在此基礎進行其它操作了。最后他們得到的所謂“結論”,可能通過簡單的邏輯推理就可以發現是錯誤、甚至是自相矛盾的。
筆者曾經遇到這樣的問題求助。求助人在寫一段服務端的Java代碼,用于獲取網頁表單中提交的某個字段的值。求助人傳達給我的信息是:網頁中確實存在服務端代碼中所要獲取值的字段,但是服務端代碼就是取不到該值,“原因”是瀏覽器并沒有把該字段的值提交到服務器。我問對方得出這個“結論”的證據是什么?他又回答不出來。顯然,他只是把“假設”和猜想一廂情愿地當作結論了。如果求助人在該問題的定位過程中做到了自我監控,他可能會問我如何去驗證客戶端某個字段是否被提交到了服務端,而不是問我這個問題如何解決。最后,通過簡單的Debug查看變量,發現瀏覽器事實上提交了服務端所要獲取值的字段,只不過服務端代碼中所用的字段名的大小寫弄錯了!
提高自我監控能力,不是能夠一蹴而就的事情。需要問題解決者清楚地明白“結論”和“假設”的區別。在問題解決過程中,任何中間結論的得出都必須經過邏輯推敲和相應的事實證據(數據)。另外,也可以對自己的解決問題過程進行反思:在問題解決后第一時間,自己問自己在問題解決過程中,自己犯了哪些錯誤,有沒有及時自己發現這些錯誤(而非求助于他人)。通過這樣的反思,問題解決者能夠跟好地理解自我監控的重要作用,有助于以后在問題解決過程中逐步加強自我監控。筆者有時在遇到一些問題定位的求助時,尤其是對方是新人時,往往會先問對方目前的結論和進展是什么。若發現對方的結論(或者中間結論)是錯誤的,我可能不直接指出,而是引導其思考,讓對方自己發現自己的錯誤。這種方法一定程度上也能提高問題解決者的自我監控能力。
短時記憶容量
根據記憶保存時間的長短,人腦的記憶可以分為短時記憶和長時記憶。前者類似于計算機的內存,其特點是記憶保持時間短(約為5秒到2分鐘),容量小。后者類似于磁盤,其特定是記憶保持時間長(永久保存)、容量大。人腦在解決問題過程中,需要將長時記憶中的內容提取到短時記憶中參與信息加工。而短時記憶的容量很小,它只能容納7±2個塊的信息。這個“塊”是一個相對的單位,一個英文字母可以算一塊,而一個英文單詞也可以算一塊。因此,適當增加“塊”的長度可以增加短時記憶的容量。例如,手機號碼”13612345678“按“136-1234-5678”這樣3塊來記憶比“136-12345678”這樣2塊來記憶要容易一些。
盡管如此,對于復雜問題的解決,或許減輕短時記憶的負擔比設法提高短時記憶容量要重要。畢竟人腦此時的主要任務是解決問題,而不是記憶。減輕短時記憶負擔可以使人腦集中力量到其它更加重要的活動上,如邏輯推理、提出假設和驗證假設。一種簡單可行的減輕短時記憶負擔的方法就在解決問題過程中打草稿。例如,將問題的已知條件、待確認的細節、問題解決過程中獲得的新知識、新經驗以及中間結論(它可以看作新的已知條件)都列在紙上,這樣既不增加短時記憶負擔,又便于綜合考慮。同時,也便于同他人就問題進行討論。
動機強度與情緒
相信大家都遇到過這樣的情形。解決問題時,尤其是遇到困難時,自己越是強烈地希望去解決它,問題解決越是沒有什么進展。相反,當我們適當地停下來,把注意力轉移到這個問題之外一段時間,回頭再重新繼續這個問題的解決。這個時候往往靈感閃現,有可能問題一下子就被解決了。這個過程中,其中一個影響問題解決的因素就叫做動機。動機簡單來講就是指心理動力。術語化的表述就是激發并維持個體活動的一種內在心理過程或內部動力。它與問題解決的效率呈一個倒U型關系,如圖3所示。
圖 3. 動機強度與問題解決效率的關系
可見,最有利于問題解決的動機強度是中等的(并非越高或者越低才是越好的),并且對于不同困難程度的問題,其所需的最佳動機強度也是不同的。困難的問題比起容易的問題,所需的最佳動機強度要低。這就說,面對難題,問題解決者適度調低動機強度,心里不要抱著過大的意愿要去解決它,反而有利于問題的解決。
情緒在問題解決過程可能起到積極的作用,也可能起到消極的作用。樂觀、平靜和積極的情緒有助于問題的解決,而緊張、惶恐、煩躁、壓抑等消極的情緒會阻礙問題的解決。不難發現,不少新手遇到問題時的第一反應是害怕和緊張,甚至于煩躁。而專家在面對問題甚至是難題時往往也從容不迫。在問題解決過程中,如果我們覺察到自己的情緒有些緊張和煩躁時,不妨先暫時停頓下,先調節好情緒再繼續問題的解決,這樣效率可能比一頭扎到問題中要高一些。
因此,團隊的直接主管在日常工作中也可以多關注組員在工作中表現出的動機強度和情緒狀態,并在必要的時候指導組員對它們進行調節,而不是一味地施加壓力和有意無意地制造緊張的氣氛。這點,和中國古代各種兵書所重視的士氣其實是一個道理。
自動化加工與直覺思維
熟練的打字員打字的時候無需思索要敲擊的字母位于鍵盤的哪個位置,熟練的汽車司機可以邊開車邊與人聊天。這些都是自動化加工的例子。當人們對解決問題的某些部分的操作已經達到充分熟練的程度,這些操作就形成了自動化加工。這有助于在解決問題時將個體有限的心理能量集中到整個問題中最難、最關鍵的部分。從而提高了問題的解決效率。自動化加工也有助于形成直覺思維。下面看一個筆者經歷過的直覺思維的例子。
筆者曾經遇到這樣的求助。對方稱其在遠程Debug一段Java代碼時遇到了一個奇怪的問題:有個變量的值始終賦不上去。我的直覺的反應是對方Debug時所看的代碼與遠程主機上運行的代碼不匹配導致該現象的。因此建議對方將遠程主機上的jar包下載下來反編譯相關class看看其代碼與本地代碼有何區別,以驗證我的想法。最后發現是欲進行賦值的變量其值來自另外一個class中定義的常量,
對方更改了該常量的值后僅僅將該變量所在class更新到遠程主機,而未將該常量所有引用類重新編譯后更新到遠程主機,從而在編譯器的作用下使得遠程主機上的class讀取到的仍然是該常量的先前值。
上述問題的解決關鍵的一步其實是靠直覺思維:直覺給了我們一個問題的解決方向,接著才是在這個方向的指引下去求證,最后解決問題。可見,直覺思維往往可以使我們快速得到問題的解決思路,從而提高問題解決效率。但問題是新手通常不具備直覺思維的能力。直覺思維需要在解決問題方面長期的練習和積累才能逐漸形成。另一方面,軟件開發人員在學習新技術新事物的過程中,需要注意理解和掌握基本概念和原理,并在日常工作中遇到問題時聯系這些概念和原理進行分析,這樣有助于問題解決,并通過一個個問題的解決逐步達到問題解決過程中能夠形成直覺思維的境界。
心理定勢
心理定勢指預先存在的心理狀態、習慣或態度。日常生活中我們提到的思維定勢就是心理定勢的一種。下面看一個實際的例子。
測試人員要對一個數據庫過期記錄刪除腳本的性能進行評估。測試該腳本時需要數量較大的數據庫表記錄(如30萬條)。對于這些記錄,有的測試人員仍然會采用提高負載測試工具給應用發送請求的方式由應用去生成數據庫記錄,因為他們經常接觸到數據庫記錄多數是這么生成的。而事實上,這些記錄完全可以由專門編寫的腳本(如存儲過程)去負責生成。這樣不僅方便具體控制記錄中的數據,也可以提高記錄生成的速度,便于反復測試。
可見,心理定勢使得我們在面對“新問題”時傾向于采用過去使用過的方法和方式,從而可能不利于問題的解決。這是心理定勢在問題解決中表現出來的消極作用。值得注意的是,心理定勢也能對問題解決起到積極的作用,其表現在于通過復用過去的經驗和方式方法可以減少問題解決所需的心理能量,有助于問題解決的自動化加工。
因此,問題解決過程中一方面我們可以借助心理定勢,以減少問題解決所需的心理能量,另一方面又要注意打破心理定勢,避免其束縛我們采取更優的問題解決方法。
當我們試圖沿用以前的方式方法去解決現有問題而無法解決時,不妨再仔細分析下當前問題與以前遇到的問題究竟還有什么不同之處,以前的方法是否仍然適用。或者說,問題解決的更高境界是面對一個問題時我們能夠敏銳地發現現有問題與以前問題的不同之處,從而在第一時間選擇與以往不同的、更為適用的方法。例如上面例子中,如果問題解決者能在第一時間意識到其目標是生成一批記錄,而這批記錄是如何生成的是一個與其目標無關的因素,那么他可能就會去想有什么方法比通過發請求給應用更高效。
人際關系
軟件開發畢竟是一個社會化的團隊活動,從這個角度來看,可以說個人在問題解決中所起的作用有時是非常有限的。良好的人際關系有助于個人在團隊中找到愿意協助其解決問題的人。而緊張的人際關系則使個人解決問題時能夠使用的資源變得非常有限。
觀點采擇
團隊開發中遇到的問題有時不是靠一個人的力量就能夠解決的。當個人在解決問題過程中需要求助他人的時候,就需要涉及與他人的溝通。溝通是否順暢會影響問題的解決效率。而溝通過程中當事人是否能夠站在對方的角度去理解和思考可能成為溝通效果、效率的瓶頸。
觀點采擇指采用他人的視角來理解他人的想法和感受的能力。心理學的研究認為觀點采擇這方面能力強的兒童能夠更好地理解同伴的需求,因而他們能夠更有效地和同伴進行溝通。如果拿實際的經驗來對比,我們不難發現這點在成年人(同事)之間也是適用的。
有心理學理論認為人的觀點采擇經歷從3歲到青春期(12-15歲)的發展已經到達了“深入”的程度。但是,筆者也經歷過不少個案,這些個案中的當事人在工作過程中與其他同事進行溝通時很難站在對方的角度去理解和思考對方的觀點和思路,因而降低了他們在問題解決過程中求助的效果、效率。
總結
本文介紹了問題解決的心理過程,并在此基礎上介紹了影響問題解決的心理因素。然后,以筆者實際經歷的例子為基礎通過比較專家與新手在問題解決過程中表現出的差異分享了提高軟件開發人員問題定位與解決能力的指導意見。需要指出的是,本文所給出的相關指導意見,也可將其看成其有助于我們形成心理定勢。因此,面對問題是我們一方面可以借鑒它們,另一方面要注意打破和超越它們。
參考資源
- 皮連生,《教育心理學》,第二版。
- Richard J. Gerrig,Philip G. Zimbardo,Psychology and life, 18th edition。
- 桑標 等譯,Jhon W Santrock著,《畢生發展》,第三版。
留言列表