程序員自學時的問題解決之道(會提問、會搜索)

編程自學過程中,不可能不遇到問題。

既然是自學,就沒有和老師探討的機會。

那麼,遇到問題之後,環境配不通,程序調不過,運行不正常,遇見這些惱人的問題的時候,該怎麼辦呢?

首先我要恭喜你,遇見問題,意味著你又有漲經驗的機會了,

每解決一個問題,你的經驗值就會上升幾百點,問題遇到的越多,知識提升的就越快。

碰到“問題”,要像碰到“帥哥美女”一樣,有一種興奮感就對了,那不是問題,那是你提高的臺階。


程序員自學時的問題解決之道(會提問、會搜索)

當遇到問題時,我一般要求學生做如下6步:

1:要仔細觀察錯誤的現象,不要隨便問人!

有不少同學的手非常快,在編譯一個程序的時候,報了一大堆的錯誤,掃了一眼之後就開始盯著代碼一行一行的找,看清什麼錯誤了嗎?沒有!有的時候安裝軟件出問題了,一個對話框彈出來說出錯了,馬上舉手問老師:“不得了了,出錯了,出錯了”。

“什麼錯誤?”“還沒看呢?”

這都是典型的不上心的方法,對於老師也是極其不尊重的表現。

在開發中,仔細觀察出錯信息,或者運行不正常的信息,是你要做的第一件事。讀清楚了,才能在以後的步驟中有的放矢,哭了半天,總要知道哭的是誰才成。

這裡又分三種情況:

A:錯誤信息讀懂了,那麼請進入2步:要仔細思考問題會出在哪些環節

B:沒讀懂,愣是一點沒看懂,進入第4步吧:baidu

C:讀了個半懂,有些眉目但是不太能確定,第2步和第4步結合著來。

2:要仔細思考問題會出在哪些環節(重要)

當你讀懂了一個問題之後,要好好的思考這個問題可能會在哪些環節上出錯。一輛汽車從總成線上下來,車門關不上!哪錯了?你怎麼查?當然是順著生產線一站一站的查下來。

程序也是一樣的,也是一系列語句完成後產生的結果。


程序員自學時的問題解決之道(會提問、會搜索)

寫一個網絡程序,總是發現服務器端打印不出接收的數據,有幾個環節會出錯?仔細分析這個現象的環節:

這幾個環節都有可能會出錯:

有可能客戶端根本就沒產生數據,有可能發送按鈕按下去後根本就沒發出去,或者發出去的不是你產生的東西,或者根本就沒連接網絡,或者發送出去服務器沒有接收到,或者接收到之前就打印了等等等等。

學著去這樣仔細的分析程序的環節和這些環節可能會產生的問題,你的經驗值定然會大幅度快速的提升,這樣做雖然會很累,但是一件事情如果做下來一點都不累的話,這個東西還有價值嗎?

但是,每個環節都可能出問題,怎麼才能知道哪裡出的問題?繼續往下讀。

3:如何定位錯誤(重要)分析清楚有哪些環節之後,下一步就是定位到底什麼環節出錯了。

定位有以下三種辦法:

A:簡單打印輸出,可以解決一些簡單問題。比如java的System.out.println(),比如js的alert()和console.log(),這種辦法常用,必須掌握。

B:Debug,通過調試查看程序運行細節,解決複雜問題。

C:刪掉一部分調試一部分,也就是去掉一部分的功能,做減法、做簡化,然後調試剩下的功能,JSP和JavaScript常用。

4:如果還不行,baidu吧

還查不出來?恭喜你,你遇到的錯誤是值得認真對待的錯誤,是會影響你學習生涯的錯誤,問一下google或者百度吧,照著下面的方法查查看。

程序員自學時的問題解決之道(會提問、會搜索)

一般來講,搜索引擎可以搜到各種知識點,我曾經跟同學們開玩笑說:“學會了怎麼google或者baidu,就沒必要跟老師學了,自己全都搞懂了,尚學堂是沒必要來的。”當然,這只是玩笑,培訓四個作用是自學無法滿足的:

A:系統化知識

B:真實項目鍛鍊經驗C:少走彎路,節省時間D:形成師生朋友圈

不知不覺開始做廣告了,請原諒,處其位謀其事,總得為尚學堂說點什麼:)言歸正傳,如何查搜索引擎?

先精後粗,首先先儘量精確的查找。比如一個錯誤,SocketException,你懷疑它是在connect()方法出的問題,那麼當然是選這樣的關鍵詞java connect SocketException

先中後英,本著以解決問題為主的想法,練習英文還是先放在一邊吧,首先應該在中文網頁中查詢,還不行的話,搜索英文的吧,最近的尚學堂課程中會帶大家閱讀英文的書籍。有很多東西就像一層窗戶紙,遠看灰濛濛怪唬人的,你壯著膽子一捅,它就破了。閱讀英文的書籍就是如此,不是想象中的那麼困難:)寧可在沙場上戰死,也不能被嚇死不是嗎?

信息篩選,搜索出來的結果不見得能夠完全匹配,建議大家多閱讀前幾頁的搜索結果,多打開幾個網頁看看,不過,我的經驗是超過3頁一般就沒意義了,所以超過3頁還沒有找到合適的答案,或許你應該調整一下關鍵詞,或者放粗整個搜索的結果了。

經常的進行知識難點的查詢,如果一個問題牽扯的面比較廣,就乾脆到網上搜索一些相關的專題,比如“java亂碼mysql”、“oracle創建用戶”等等,如果有必要,不要犯懶,動手寫一些小的測試程序,來弄明白知識點的細節,這也是漲知識的重要途徑。

5:什麼?還不行?那麼就BBS和QQ群吧

程序員自學時的問題解決之道(會提問、會搜索)

如果實在還不行,就到論壇或QQ群上面問一問高手吧。向別人提問是非常需要技巧的!

曾經有人問過我這樣的問題:“請問如何才能學好編程呢?”這個問題太泛泛了。

還有人給我一段代碼甚至jar包也發過來,然後說老師有個錯誤您幫我查查:(老師的時間也是寶貴的,沒辦法花大量時間去調試一個還不知道存不存在的錯誤!)

還有人在BBS上問這樣的問題:“是否有人能幫我完成一個完整聊天的程序?請幫我寫一個登陸模塊吧!”這個要求有些過分了,有人幫你做真是你的運氣,沒有人幫你才是正常反應。

向別人提問,首先確定你已經做了自己應該做的事,簡單說就是我前面列舉的1,2,3,4步你都做過了,然後再求助於人。不要沒有經過認真思考就草率的向別人提問,自己也不會有長足進步的。

最後,得到別人的回答,要懂得感恩。不需要去寫信感謝,不需要支付費用,不需要那些花言巧語,做到下面這一點就夠了:

當你逐步成為高手的時候,盡力回答別人提出的問題,有時間有精力的前提之下!

6:還解決不了?

天哪,是不是思路從根上就搞錯了?寫信給我,讓我也學習一下,共同進步吧!


分享到:


相關文章: