什麼是問題?1. 上下文 -- 和問題相關的場景,指一組已經是明確已知的,關於問題的條件的描述。
2. 目標 -- 指關於構成問題的結論的明確的描述。
3. 障礙 -- 指問題的正確解決方法不是顯而易見的,必須通過一定的思維活動,才能找到答案。
良好的定義問題是解決問題的關鍵步驟。
定義問題就是鑑別期望和現狀的差異。有如下幾個關鍵點:
1. 首要的是,收集整理關於現狀的可信的資訊,而不要假設已經擁有完備的可信資訊;
2. 不暗示傾向於某種原因或者解決方法;
3. 只陳述現狀和期望的狀態;
4. 在解決問題的過程中,問題的定義可能(有必要)會不斷的改進或者轉換形式。
源文件
心態靜心:在定位問題之前,最好先安靜下來,摒除雜念。放下自己的身份(專案經理、開發人員),以解決當前系統的問題為中心。靜心之後,將問題現象在腦中過一遍,弄清問題。
問題解決者不輕信,不盲從
絕不因為一句「應該是對的」「大概沒有變化」而拋棄乙個懷疑的點。
大局觀:不要盡早的陷入細節
實際上,在整個問題定位和解決的過程中,都應該盡量在頭腦中對整個系統的映像以及當前位置保持清晰的認知。這樣有助於前後、上下聯絡,在更高更廣闊的空間中發現問題。
預判斷,然後驗證:盡量將日誌、除錯、httpfox等都用作驗證問題的工具——首先對問題的原因做預判斷(猜測),然後確定該原因會導致什麼現象,然後驗證該現象(日誌等)。預判斷比驗證更應被關注。
當很難預判斷問題位置時,可以採用排除法:每次排除系統範圍的一半左右,逐步將包圍圈縮小到問題原因本身。應注意:排除的過程中,同樣要注意驗證排除的是否正確,即:排除、驗證、排除、驗證……
關注日誌
很多問題解決過程中其實開啟日誌檔案就能馬上得到結論,但是開發人員寧可自己猜也不願意動手開啟日誌。
另外也暴露了我們系統日誌沒有為開發人員提供足夠的資訊支援用以解決問題,後面的設計中要把異常設計作為乙個重要部分。
充分利用工具,能得到事實就不猜測
比如:httpfox
等工具能將
請求錄下來,我們不需要猜測;還有
windows
事件日誌,效能計數器,
windbg
等等工具可用
通過差異找到問題的原因
很多問題的解決可以不依賴開發態的除錯,比如通過比較當前版本和上一版本的區別,比較產品和產品之間的差別就能通過差異來定位問題。
解決掉乙個問題不是終結
之前往往滿足於乙個能夠解決眼前問題的答案;這是遠遠不夠的,乙個問題的出現暴露出我們系統的缺陷,這是乙個線索,需要避免同樣的問題的出現
乙個問題的出現我們要追究到問題的本質,例如前段時間sso登陸失敗和驗證碼本地使用失敗,本質上都是由於配置檔案中指定了
cookie
的域。
解決問題 心態 原則 方法
什麼是問題?1.上下文 和問題相關的場景,指一組已經是明確已知的,關於問題的條件的描述。2.目標 指關於構成問題的結論的明確的描述。3.障礙 指問題的正確解決方法不是顯而易見的,必須通過一定的思維活動,才能找到答案。良好的定義問題是解決問題的關鍵步驟。定義問題就是鑑別期望和現狀的差異。有如下幾個關鍵...
解決問題的方法
有些問題從自己所在的世界裡,是找不到答案的。每個文化都有其博大精深的地方,但不可能解決所有的問題。在同乙個狹小的思維中,無法找到答案,無法解決困惑。剛愎自用 驕傲自滿的後果,就是愚昧。所以,無論何時,去接觸新的世界,去接觸原先不以為然的世界,去接觸原先沒接觸過卻自認為感覺不爽的世界,去接觸原先認為不...
php解決問題的方法
這個話題老生長談了,在面試中必然考核的能力中,我個人認為解決問題能力是排第一位的,比學習能力優先順序更高。解決問題的能力既能看出程式設計師的思維能力,應變能力,探索能力等,又可以看出他的經驗。如果解決問題能力不佳是無法通過面試的。這裡舉個例子,假如我執行了乙個php的指令碼,如php test.ph...