How-To-Ask-Questions-The-Smart-Way README

The project's README from github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way. As one markdown file: README.md.

提問的智慧

All Contributors

PRs Welcome

How To Ask Questions The Smart Way

Copyright © 2001, 2006, 2014 Eric S. Raymond, Rick Moen

本指南英文版版權為 Eric S. Raymond, Rick Moen 所有。

原文網址 (Translated from):http://www.catb.org/~esr/faqs/smart-questions.html

Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin, 2015-present by Ryan Wu

本中文指南是基於原文 3.10 版以及 2010 年由 Gasolin 所翻譯版本的最新翻譯;

協助指出翻譯問題,請發 issue,或直接發 pull pequest 給我。

本文另有:简体中文版

原文版本歷史

目錄

聲明

許多專案在他們的使用協助/說明網頁中連結了本指南,這麼做很好,我們也鼓勵大家都這麼做。但如果你是負責管理這個專案網頁的人,請在超連結附近的顯著位置上註明:

本指南不提供此專案的實際支援服務!

我們已經深刻領教到少了上述聲明所帶來的痛苦。因為少了這點聲明,我們不停地被一些白痴糾纏。這些白痴認為既然我們發布了這本指南,那麼我們就有責任解決世上所有的技術問題。

如果你是因為需要某些協助而正在閱讀這本指南,並且最後離開是因為發現從本指南作者們身上得不到直接的協助,那麼你就是我們所說的那些白痴之一。別問我們問題,我們只會忽略你。我們在這本指南中是教你如何從那些真正懂得你所遇到軟體或硬體問題的人取得協助,而99%的情況下那不會是我們。除非你確定本指南的作者之一剛好是你所遇到的問題領域的專家,否則請不要打擾我們,這樣大家都會開心一點。

簡介

在駭客的世界裡,你所提技術問題的解答的好壞, 很大程度上取決於你提問的方式與此問題的難度。本指南將教你如何正確的提問以獲得你滿意的答案。

現在開放原始碼(Open Source)軟體已經相當盛行,您通常可以從其他更有經驗的使用者那裡獲得與駭客一樣好的答案,這是件好事;和駭客相比,使用者們往往對那些新手常遇到的問題更寬容一些。儘管如此,以我們在此推薦的方式對待這些有經驗的使用者通常也是從他們那裡獲得有用答案的最有效方式。

首先你應該明白,駭客們喜愛有挑戰性的問題,或者能激發他們思維的好問題。如果我們並非如此,那我們也不會成為你想詢問的對象。如果你給了我們一個值得反覆咀嚼玩味的好問題,我們自會對你感激不盡。好問題是激勵,是厚禮。好問題可以提高我們的理解力,而且通常會暴露我們以前從沒意識到或者思考過的問題。對駭客而言,"好問題!"是誠摯的大力稱讚。

儘管如此,駭客們有著蔑視或傲慢面對簡單問題的壞名聲,這有時讓我們看起來對新手、無知者似乎較有敵意,但其實不是那樣的。

我們不諱言我們對那些不願思考、或者在發問前不做他們該做的事的人的蔑視。那些人是時間殺手──他們只想索取,從不付出,消耗我們可用在更有趣的問題或更值得回答的人身上的時間。我們稱這樣的人為 失敗者(loser) (由於歷史原因,我們有時把它拼作 lusers)。

我們意識到許多人只是想使用我們寫的軟體,他們對學習技術細節沒有興趣。對大多數人而言,電腦只是種工具,是種達到目的的手段而已。他們有自己的生活並且有更要緊的事要做。我們認可這點,也從不指望每個人都對這些讓我們著迷的技術問題感興趣。盡管如此,我們只為那些真正有興趣並願意積極參與問題解決的人調整回答問題的風格。這點不會變,也不該變:否則,我們就是在最擅長的事情上降低效率。

我們(在很大程度上)是自願的,從繁忙的生活中抽出時間來解答疑惑,而且時常被提問淹沒。所以我們無情的濾掉一些話題,特別是拋棄那些看起來像失敗者的傢伙,以便更高效的利用時間來回答贏家(溫拿)的問題。

如果你厭惡我們的態度,高高在上,或過於傲慢,不妨也設身處地想想。我們並沒有要求你向我們屈服──事實上,我們大多數人非常樂意與你平等地交流,只要你付出小小努力來滿足基本要求,我們就會歡迎你加入我們的文化。但讓我們幫助那些不願意幫助自己的人是沒有效率的。無知沒有關係,但裝白痴就是不行。

所以,你不必在技術上很在行才能吸引我們的注意,但你必須表現出能引導你變得在行的特質──機敏、有想法、善於觀察、樂於主動參與解決問題。如果你做不到這些使你與眾不同的事情,我們建議你花點錢找家商業公司簽個技術支援服務契約,而不是要求駭客個人無償地幫助你。

如果你決定向我們求助,當然你也不希望被視為失敗者,更不願成為失敗者中的一員。能立刻得到快速並有效答案的最好方法,就是像贏家那樣提問──聰明、自信、有解決問題的思路,只是偶爾在特定的問題上需要獲得一點幫助。

(歡迎對本指南提出改進意見。你可以 email 你的建議至 [email protected] 或 [email protected]。然而請注意,本文並非網路禮節的通用指南,而我們通常會拒絕無助於在技術論壇得到有用答案的建議。)

在提問之前

在你準備要透過電子郵件、新聞群組或者聊天室提出技術問題前,請先做到以下事情:

  1. 嘗試在你準備提問的論壇的舊文章中搜尋答案。
  2. 嘗試上網搜尋來找到答案。
  3. 嘗試閱讀手冊來找到答案。
  4. 嘗試閱讀常見問題文件(FAQ)來找到答案。
  5. 嘗試自己檢查或試驗來找到答案
  6. 向你身邊的強者朋友打聽來找到答案。
  7. 如果你是程式開發者,請嘗試閱讀原始碼來找到答案

當你提出問題的時候,請先表明你已經做了上述的努力;這將有助於樹立你並不是一個不勞而獲且浪費別人的時間的提問者。如果你能一併表達在做了上述努力的過程中所學到的東西會更好,因為我們更樂於回答那些表現出能從答案中學習的人的問題。

運用某些策略,比如先用 Google 搜尋你所遇到的各種錯誤訊息(既搜尋 Google論壇,也搜尋網頁),這樣很可能直接就找到了能解決問題的文件或郵件列表線索。即使沒有結果,在郵件列表或新聞組尋求幫助時加上一句 我在 Google 中搜過下列句子但沒有找到什麼有用的東西 也是件好事,即使它只是表明了搜尋引擎不能提供哪些幫助。這麼做(加上搜尋過的字串)也讓遇到相似問題的其他人能被搜尋引擎引導到你的提問來。

別著急,不要指望幾秒鐘的 Google 搜尋就能解決一個複雜的問題。在向專家求助之前,再閱讀一下常見問題文件(FAQ)、放輕鬆、坐舒服一些,再花點時間思考一下這個問題。相信我們,他們能從你的提問看出你做了多少閱讀與思考,如果你是有備而來,將更有可能得到解答。不要將所有問題一股腦拋出,只因你的第一次搜尋沒有找到答案(或者找到太多答案)。

準備好你的問題,再將問題仔細的思考過一遍,因為草率的發問只能得到草率的回答,或者根本得不到任何答案。越是能表現出在尋求幫助前你為解決問題所付出的努力,你越有可能得到實質性的幫助。

小心別問錯了問題。如果你的問題基於錯誤的假設,某個普通駭客(J. Random Hacker)多半會一邊在心裏想著蠢問題…, 一邊用無意義的字面解釋來答覆你,希望著你會從問題的回答(而非你想得到的答案)中汲取教訓。

絕不要自以為夠格得到答案,你沒有;你並沒有。畢竟你沒有為這種服務支付任何報酬。你將會是自己去掙到一個答案,靠提出有內涵的、有趣的、有思維激勵作用的問題──一個有潛力能貢獻社群經驗的問題,而不僅僅是被動的從他人處索取知識。

另一方面,表明你願意在找答案的過程中做點什麼是一個非常好的開始。誰能給點提示?、我的這個例子裏缺了什麼?以及我應該檢查什麼地方比請把我需要的確切的過程貼出來更容易得到答覆。因為你表現出只要有人能指出一個正確方向,你就有完成它的能力和決心。

當你提問時

慎選提問的論壇

小心選擇你要提問的場合。如果你做了下述的事情,你很可能被忽略掉或者被看作失敗者:

駭客會剔除掉那些搞錯場合的問題,以保護他們溝通的管道不被無關的東西淹沒。你不會想讓這種事發生在自己身上的。

因此,第一步是找到對的論壇。再說一次,Google 和其它搜尋引擎還是你最好的朋友,用它們來找到與你遭遇到困難的軟硬體問題最相關的網站。通常在那裡都有常見問題(FAQ)、郵件列表及相關說明文件的連結。如果你的努力(包括閱讀 FAQ)都沒有結果,網站上也許還有回報臭蟲(Bug-reporting)的流程或連結,如果是這樣,連過去看看。

向陌生的人或論壇發送郵件最可能是風險最大的事情。舉例來說,別假設一個提供豐富內容的網頁的作者會想充當你的免費顧問。不要對你的問題是否會受到歡迎做太樂觀的估計──如果你不確定,那就向別處發送,或者根本別發。

在選擇論壇、新聞群組或郵件列表時,別太相信名字,先看看 FAQ 或者許可書以弄清楚你的問題是否切題。發文前先翻翻已有的話題,這樣可以讓你感受一下那裡的文化。事實上,事先在新聞組或郵件列表的歷史記錄中搜尋與你問題相關的關鍵詞是個極好的主意,也許這樣就找到答案了。即使沒有,也能幫助你歸納出更好的問題。

別像機關槍似的一次"掃射"所有的幫助管道,這就像大喊大叫一樣會使人不愉快。要一個一個地來。

搞清楚你的主題!最典型的錯誤之一是在某種致力於跨平台可移植的語言、套件或工具的論壇中提關於 Unix 或 Windows 作業系統程式設計介面的問題。如果你不明白為什麼這是大錯,最好在搞清楚這之間差異之前什麼也別問。

一般來說,在仔細挑選的公共論壇中提問,會比在私有論壇中提同樣的問題更容易得到有用的回答。有幾個理由可以支持這點,一是看潛在的回覆者有多少,二是看觀眾有多少。駭客較願意回答那些能幫助到許多人的問題。

可以理解的是,老練的駭客和一些熱門軟體的作者正在接受過多的錯發訊息。就像那根最後壓垮駱駝背的稻草一樣,你的加入也有可能使情況走向極端──已經好幾次了,一些熱門軟體的作者從自己軟體的支援中抽身出來,因為伴隨而來湧入其私人信箱的無用郵件變得無法忍受。

Stack Overflow

搜尋,然後 才在 Stack Exchange 發問。

近年來,Stack Exchange community 社群已經成為回答技術及其他問題的主要管道,尤其是那些開放原始碼的專案。

因為 Google 索引是即時的,在看 Stack Exchange 之前先在 Google 搜尋。有很高的機率某人已經問了一個類似的問題,而且 Stack Exchange 網站們往往會是搜尋結果中最前面幾個。如果你在 Google 上沒有找到任何答案,你再到特定相關主題的網站去找。用標籤(Tag)搜尋能讓你更縮小你的搜尋結果。

如果你還是找不到任何對你的問題有用的內容,請把你的問題發在與它最相關的網站上。提問的時候請善用格式化工具,尤其註意為代碼添加格式,並且添加相關的標籤(特別是編程語言、操作系統或庫/包的名稱)。當有人要求你提供更多相關信息時,請編輯你的貼子來補充它們[譯註:而不是發一個回帖或回答! ]。如果你覺得一個答案對你有幫助,點擊向上的箭頭來為它投票;如果一個答案提供了問題的正確解決方案,點擊投票按鈕下方的對勾來將它標記為正解。

Stack Exchange 已經成長到超過一百個網站,以下是最常用的幾個站:

網站和IRC論壇

在地的使用者群組(user group),或者你所用的 Linux 發行版本也許正在宣傳他們的網頁論壇或 IRC 頻道,並提供新手幫助(在一些非英語國家,新手論壇很可能還是郵件列表), 這些地方是開始提問的好首選,特別是當你覺得遇到的也許只是相對簡單或者很普通的問題時。有廣告贊助的 IRC 頻道是公開歡迎提問的地方,通常可以即時得到回應。

事實上,如果程式出的問題只發生在特定 Linux 發行版提供的版本(這很常見),最好先去該發行版的論壇或郵件列表中提問,再到程式本身的論壇或郵件列表提問。(否則)該項目的駭客可能僅僅回覆 "用我們的版本"。

在任何論壇發文以前,先確認一下有沒有搜尋功能。如果有,就試著搜尋一下問題的幾個關鍵詞,也許這會有幫助。如果在此之前你已做過通用的網頁搜尋(你也該這樣做),還是再搜尋一下論壇,搜尋引擎有可能沒來得及索引此論壇的全部內容。

透過論壇或 IRC 頻道來提供使用者支援服務有增長的趨勢,電子郵件則大多為專案開發者間的交流而保留。所以最好先在論壇或 IRC 中尋求與該專案相關的協助。

第二步,使用專案郵件列表

當某個專案提供開發者郵件列表時,要向列表而不是其中的個別成員提問,即使你確信他能最好地回答你的問題。查一查專案的文件和首頁,找到專案的郵件列表並使用它。有幾個很好的理由支持我們採用這種辦法:

如果一個項目既有"使用者" 也有"開發者"(或"駭客")郵件列表或論壇,而你又不會動到那些原始碼,那麼就向"使用者"列表或論壇提問。不要假設自己會在開發者列表中受到歡迎,那些人多半會將你的提問視為干擾他們開發的噪音。

然而,如果你確信你的問題很特別,而且在"使用者" 列表或論壇中幾天都沒有回覆,可以試試前往"開發者"列表或論壇發問。建議你在張貼前最好先暗地裡觀察幾天以了解那裡的行事方式(事實上這是參與任何私有或半私有列表的好主意)

如果你找不到一個專案的郵件列表,而只能查到專案維護者的電子信箱地址,儘管向他發信。即使是在這種情況�

How-To-Ask-Questions-The-Smart-Way (ryanhanwu/How-To-Ask-Questions-The-Smart-Way)

Searching Database…

What is this?A Traditional Chinese (繁體中文) translation of Eric S. Raymond and Rick Moen's classic essay 'How To Ask Questions The Smart Way', which teaches programmers how to phrase technical questions so experienced hackers will actually want to answer them.
Is this an original essay or a translation of something else?It is a translation, not original work: based on ESR/Rick Moen's English version 3.10, originally translated by Gasolin in 2010 and updated/maintained by Ryan Wu since 2015. A Simplified Chinese edition is also linked from the repo.
What is the guide's actual advice before posting a question?Before asking anywhere, it tells you to search forum archives, search the web, read the manual, read the FAQ, experiment yourself, ask a knowledgeable friend, and (for developers) read the source code - and to mention in your post which of these you already tried.
Will the authors of this guide personally answer my tech support question?No - the README explicitly warns that the guide itself provides no support for any project; readers who email the maintainers expecting help are ignored.
Who should read this?Anyone posting technical questions in forums, mailing lists, Stack Exchange sites or IRC who wants useful answers from open-source developers and hackers, plus experienced users who want a reference to point newbies to.
What are the main topics covered in the table of contents?Sections include choosing the right forum, using Stack Overflow/Stack Exchange correctly, project mailing list etiquette, how to write a clear subject line and well-formatted question, how to interpret answers, handling rude responses, and a list of questions not to ask.
Where does the guide say you should actually post your question?It recommends searching Google first, then trying Stack Exchange sites (Stack Overflow for code, Super User for general computer questions, Server Fault for sysadmin topics), local user-group forums or IRC channels, and finally a project's public mailing list rather than emailing an individual developer.
Is there a Simplified Chinese version of this guide?Yes, the README links to a separate Simplified Chinese (简体中文) translation alongside this Traditional Chinese one.
Why does the guide warn against emailing maintainers privately?Because a question useful enough to ask one developer is useful to the whole project, and public mailing lists get archived and indexed by search engines so future askers with the same problem can find the answer without re-asking.
Creator
ryanhanwu
Size
0.4 MB
Stars
35.9K
Updated
CommitJan 01
Age
11y
Commits · 90 Days