初學者怎麼去提問?要注意提問的方法

【首先感謝“提問的藝術”帶來的靈感】
文/Sε√ēη(KuGames) 

此博客作廢!全部轉到http://blog.csdn.net/KuGames


每次在逛論壇看貼吧玩知道的時候,總能看到很多人提問題的方法千奇百怪。我就一直很想寫個文章來表態一下,提問也是一門學問!初學者怎麼去提問?要注意提問的方法!要懂得提問的藝術!寫下這篇文章旨在幫助你更快地解決問題,讓你獲取你想要的答案。當提出一個技術問題時,你能得到怎樣的回答?這取決於挖出答案的難度, 同樣取決於你提問的方法。本文旨在幫助你提高發問的技巧,以獲取你最想要的答案。

第一點,也是最重要的一點!別問應該自己解決的問題!
就是自己的問題自己先嚐試解決!不要遇到什麼問題就馬上問!

在提問之前,你可以先嚐試從以下途徑裏尋找答案:   
1.查閱使用說明書(例如假設你是VS用戶,可以通過MSDN),試着自己尋找答案。如果找不到再選擇問別人,如果自己解決了也會對這個問題更有印象,下次再遇到的時候也許你就能馬上想起解決方案了。  
2.在FAQ(即"常見問題解答")或幫助文件裏找答案   
3.在網上搜索,注意關鍵字的選擇,不要盲目把一整段代碼或錯誤直接就拷貝到搜索引擎裏,要有針對性
4.向你身邊精於此道的朋友求解。
當然有些人就是礙於面子不肯向認識的朋友詢問。也懶於自己動手去尋找答案,於是自己還沒有思考的情況下就直接發帖求助了。
舉個簡單的例子,我曾看過這樣的一個問題“代碼運行不了,請大俠幫我查查”
其他代碼省略,例子只需要這一句:
int main()
{
   xxxxx;
)

你看到錯在哪了嗎?

提問者問這個代碼哪出錯了,我真想不明白,就算你沒發現main函數結尾是')'而不是'}',那麼編譯器錯誤提示總該有吧!!!你看了編譯器的提示信息了嗎?你發張帖子的時間早就夠你把')'改成'}'改一百遍了!
首先,我就極力反感這種一點都不獨立思考的人!當你提出問題的時候,首先要說明在此之前你做了些什麼。這也能幫你樹立你的形象:你不是一個妄圖不勞而獲的乞討者,不願浪費別人的時間。如果提問者能從答案中學到東西,我們更樂於回答你的問題。

第二點,這是問題最嚴重的一點!
有些人,二話不說,帖子一上來,直接貼一個幾百上千行的代碼。等一大堆代碼貼完後,就直接附上一句“代碼錯誤,請各位大俠大哥幫我查查”等等。。。
代碼出錯很正常,沒有錯誤,就不會進步!可是遇到這種情況,作爲一個合格的程序員,我們首先要做的不是求助,而是去查錯,怎麼查?
你先根據編譯器提示的錯誤,以及在哪錯了,然後再到相應位置檢查代碼,如果實在找不出,你起碼知道大概哪一塊錯了吧?你總有自己的一點想法和理解吧?你總要描述一下你想幹嘛然後實現不了吧?
就像你去看病,到了醫院,醫生問你怎麼了,你說不舒服,他問你哪不舒服,你也不說,直接讓他來一個全身大檢查。你是閒着沒事,想燒錢燒時間嗎?

所以,在你實在無法通過編譯器找出問題原因的時候,請你要做好周全的思考。準備好你的問題,做好描述和分析,以及鎖定某一小塊的出錯點,代碼要工整,注意縮進和註釋,要有好的代碼習慣。草率的發問只能得到草率的回答,甚至根本得不到任何答案。越表現出在尋求幫助前爲解決問題付出的努力,你越能得到實質性的幫助。  
另一方面,表明你願意在找答案的過程中做點什麼,是一個非常好的開端。“誰能給點提示?”、“我這個例子裏缺了什麼?”以及“我應該檢查什麼地方?”比“請把確切的過程貼出來”更容易得到答覆。因爲你顯得只要有人指點正確的方向,你就有完成它的能力和決心。

第三點,問題的題目一定要先寫清楚,相信大家也見過下面的幾種提問方式:
    ①.C++初學者的求助。。。
    ②.請各位大俠幫幫忙啊
    ③.搞不懂啊,求解釋。。。
    ④.一個簡單的C++問題
    ⑤.本人菜鳥一個,想求助各位大蝦!
還有很多很多,我就不一一舉例了。說了這些並不是要針對誰,只是舉例分析我們常見的一些提問的癥結。
大家看了這些後有何感想?這些題目給我的感覺就是敷衍人,你說連題目都沒明確表達出自己想說什麼,還談如何提問?
如果你以以上類似情況問問題,只能讓我們感覺你對回答問題者的不尊重!互相學習,也順便互相交個朋友,我希望大家都能互相尊重,珍惜大家的時間,這樣問題也能圓滿解決,何樂而不爲呢? 
使用含義豐富,描述準確的標題。大約50字以內的主題標題是抓住資深專家注意力的黃金時機。別用喋喋不休的“幫幫忙”(更別說“救命啊!”這樣讓人反感的話)來浪費機會。不要妄想用你的痛苦程度來打動我們,別用空格代替問題的描述,哪怕是極其簡短的描述。
大家再看看下面的幾個問題:
    ①.堆和自由存儲區有什麼區別?
    ②.關於指針和引用的問題,請幫幫忙!
    ③.提個小問題,有關MFC下多線程的
    ④.如何將輸出對齊
    ⑤.關於內存泄露的問題求助!謝謝各位幫忙!
這幾個首先就把大概問題給表述出來了。也許有人會問,“都不知道錯在哪,怎麼寫得出大概的問題?”但是,你可以把你代碼的目的描述出來,這也是好的。就比如第④個。而第⑤個不光寫出了問題大概,還附帶“謝謝各位幫忙”,簡簡單單一句話,卻體現了提問者對回答者的尊重與感激。

如果你有很多問題無法解決,禮貌將會增加你得到有用答案的機會。   
問題解決後,加個簡短說明並記得感謝提供幫助的朋友。  
問題解決後,要跟帖說明,讓他們知道問題是怎樣解決的,並再一次向他們表示感謝。如果問題在帖吧引起了廣泛關注,應該在那裏貼一個補充說明。補充說明不必很長或是很深入,簡單的一句“原來是××出了問題!謝謝大家!尤其是××××,感謝你們耐心的回答!”比什麼也不說要強。事實上,除非結論真的很有技術含量,否則簡短可愛的小結比長篇學術論文更好。說明問題是怎樣解決的,但大可不必將解決問題的過程複述一遍。這種補充有助於所有提供過幫助的人從中得到滿足感。這種感覺對於那些你向他們求助的導師或者專家而言,是非常重要的。問題久拖未決會讓人灰心;好人有好報,滿足他們的渴望,你會在下次貼出新問題時嚐到甜頭。

第四點,口氣過於囂張,問題讓人無語。
不知道大家有沒有被下面這種問題雷倒過,不是大家不想幫你,是你的問題沒法讓大家回答。
比如:
    ①.求MFC教程和教材
       需要代碼,還要詳細註解!可以發送到我郵箱×××
       我用的是VS2008,所以請用2008版的教材給我!謝謝!
       題目就這麼簡簡單單幾句話。
       估計這樣提問的口氣,就沒有幾個人願意回答了,你是在提問還是在提要求,大蝦們還要爲你服務不成?
    ②.c++新人求助啊,大一作業
       …………(問題描述)…………
       一直以來,大家都說了,不要問作業,不幫你們是對你們負責。你應該自己完成,遇到問題再來詢問!
    ③.還有就是喊着編譯器報錯,然後一沒給代碼,二沒給截圖,怎麼回答?

以上三個問題也基本反映了提問的一些問題,不要問作業,問問題的語氣不要求你有多柔和,但也不能反客爲主,並且作爲提問者,題目首先得讓大家弄懂。

最後,就是那些被討論爛了的話題,比如麼學好C++?學C++看哪些書好?學哪門語言好?這類問題個人覺得沒有太多必要討論,當然問了也無傷大雅。偶爾討論交流還可以,但是希望提問者對於這類問題自己百度谷歌,因爲這種問題永遠沒有一個正確的答案,也永遠沒有討論結束的一天!

最後總結下:對於提問問題,首先要百度,谷歌,可以在網上查到的,就先去查,如果查到了還無法解決,再去提問;其次,提問時,要注意上面我說的幾點問題 。

相信提問時注意了這三個問題,一般問題都可以圓滿解決的。


轉到我自己的貼吧去了,歡迎去:http://tieba.baidu.com/kugames

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章