提問也是一門學問 - how to ask
對於技術開發者來說,stack overflow 這個網站一定不陌生,它是一個絕佳的技術問答環境,我遭遇過的開發問題有一半以上在這邊找得到相關討論。不過在 stack overflow 上面提問不是件隨便的事,一個不良的問題或回答會有相當高的機率被管理者刪除,在管理者的努力下,維護出了一個相當 “秩序” 的交流風氣,這個秩序造就了知識可以在最短的時間內抵達疑問者的眼前,十分美妙。
近期我在許多討論區看到初學的開發者湧入,這是件好事,但同時也引發了一些問與答的混亂,於是我有了疑問:stack overflow 是如何規範與建立起良好的問答風氣?事實上,在它的網站就有許多關於提問方式的宣導,我將其中的一些內容轉錄過來,藉機學習一下如何提問。
Stack overflow - tour
節錄 stack overflow 使用教學中的一段:Get answers to practical, detailed questions (取得實際、具體的問題之答案)
Focus on questions about an actual problem you have faced. Include details about what you have tried and exactly what you are trying to do.
專注於提出你實際面臨到的問題,它的細節應該包括你想達到的目的以及你所嘗試過的解法。
Not all questions work well in our format. Avoid questions that are primarily opinion-based, or that are likely to generate discussion rather than answers.
不是所有的問題都能在我們這提出。避免提出基於主觀 (opinion-based) 的問題,或者那些需要廣泛討論而不是精確答案的問題。
Don’t ask about… - Questions you haven’t tried to find an answer for (show your work!) - Product or service recommendations or comparisons - Requests for lists of things, polls, opinions, discussions, etc. - Anything not directly related to writing computer programs
別問這些:
- 你還未嘗試尋找答案的問題 (提問時展現你做過努力!)
- 產品或服務的建議或比較
- 尋求一整列事情、調查、建議或討論
- 無關於電腦程式的任何事情
stack overflow 是個追求一問一答的討論空間,所以在規範上避開了一些會引發大量且廣泛討論的問題。不過有兩個要點我覺得是問出一個好問題的基礎,“你想達到的目” 以及 “你所嘗試的” ,表達出這兩點可以在基礎上讓人知道該如何提供協助,畢竟一個不清晰的提問並不會吸引人深入了解,只是會讓人忽視。 我想特別舉出,提問前必須要先確實地找過答案,如果相似的問題不斷重複出現,會顯得伸手求援是理所當然的,進而快速消磨掉一個討論區的能量,稀釋掉深入的問題,降低討論的多樣性。以我的角度來說,參與到技術討論區之中的目的就是在問與答的過程中讓自己進步,如果具有新意的討論減少,參與意願是會下降的。
Stack overflow - How do I ask a good question?
另外這是位於 http://stackoverflow.com/help/how-to-ask 的文章《如何問一個好問題》的摘要重點:
- 持續研究問題,持續更新你所發現的新資訊,以及嘗試過但無效的解決方法。
- 描述問題簡潔有力,你得預想看見你提問的人很忙,不會花上太多時間閱讀。
- Tip - 先詳細描寫問題,最後在開頭補上簡潔的摘要。
- 先整理過你的問題,避免只是展示錯誤 (錯誤示範:複製貼上程式碼)。
- 留下適當的 Tag (關鍵字)。
- 貼出問題前,重新讀過自己的文字。
- 給予回應者相對的回饋、補充、新的測試結果等。
- Tip - 透過編輯文章,將新的回饋同步更新於問題之中。
後話
在 **How do I ask a good question **下方還有許多不錯的文章可以參考。 比如當你是在一個技術論壇發問時,你應該提到:所使用的語言、工具或套件的版本等。提供盡量單純的程式碼,或者寫出一段讓人可以專注於重點的文字,以及應該展現出對應的態度跟禮貌等許多內容。不只是為了提問,很多透過文字與他人交流的技巧都值得去學習。 總結上述一切的出發點,就是 想像你是嘗試回答這個問題的人,為閱讀者思考過的表達,更容易將內容傳達出去。