2015-03-29 11:53:07 +08:00

610 lines
60 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#提問的智慧
**How To Ask Questions The Smart Way**
Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen
本指南英文版版權為 Eric S. Raymond, Rick Moen 所有。
原文網址:[http://www.catb.org/~esr/faqs/smart-questions.html](http://www.catb.org/~esr/faqs/smart-questions.html)
Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin, 2015 by Ryan Wu
本中文指南是基於原文 3.10 版以及 2010 年由 [Gasolin](https://github.com/gasolin) 所翻譯版本的最新翻譯;
協助指出翻譯問題__請[發Issue](https://github.com/ryanhanwu/smartquestions/issues/new),或直接[發Pull Request](https://github.com/ryanhanwu/smartquestions/compare/)給我。__
本文另有简体中文版: [http://www.beiww.com/doc/oss/smart-questions.html](http://www.beiww.com/doc/oss/smart-questions.html)
## [原文版本歷史](https://github.com/ryanhanwu/smartquestions/blob/master/history.md)
##目錄
* [聲明](https://github.com/ryanhanwu/smartquestions#聲明)
* [簡介](https://github.com/ryanhanwu/smartquestions#簡介)
* [在提問之前](https://github.com/ryanhanwu/smartquestions#在提問之前)
* [如何提問](https://github.com/ryanhanwu/smartquestions#如何提問)
* [慎選提問的論壇](https://github.com/ryanhanwu/smartquestions#慎選提問的論壇)
* [新手網站或IRC回應最快](https://github.com/ryanhanwu/smartquestions#新手網站或IRC回應最快)
* [第二步,使用專案郵件列表](https://github.com/ryanhanwu/smartquestions#第二步,使用專案郵件列表)
* [使用有意義且描述明確的標題](https://github.com/ryanhanwu/smartquestions#使用有意義且描述明確的標題)
* [使問題容易回覆](https://github.com/ryanhanwu/smartquestions#使問題容易回覆)
* [用辭貼切,語法正確,拼寫無誤](https://github.com/ryanhanwu/smartquestions#用辭貼切,語法正確,拼寫無誤)
* [使用易於讀取且標準的文件格式發送問題](https://github.com/ryanhanwu/smartquestions#使用易於讀取且標準的文件格式發送問題)
* [準確描述問題並言之有物](https://github.com/ryanhanwu/smartquestions#準確描述問題並言之有物)
* [話不在多而在精](https://github.com/ryanhanwu/smartquestions#話不在多而在精)
* [別動輒聲稱找到Bug](https://github.com/ryanhanwu/smartquestions#別動輒聲稱找到Bug)
* [低聲下氣前還是要先做功課](https://github.com/ryanhanwu/smartquestions#低聲下氣前還是要先做功課)
* [描述問題症狀而非猜測](https://github.com/ryanhanwu/smartquestions#描述問題症狀而非猜測)
* [按發生時間先後列出問題症狀](https://github.com/ryanhanwu/smartquestions#按發生時間先後列出問題症狀)
* [描述目標而不是過程](https://github.com/ryanhanwu/smartquestions#描述目標而不是過程)
* [別要求使用私人電郵回覆](https://github.com/ryanhanwu/smartquestions#別要求使用私人電郵回覆)
* [提問應清楚明確](https://github.com/ryanhanwu/smartquestions#提問應清楚明確)
* [當詢問有關程式碼的問題時](https://github.com/ryanhanwu/smartquestions#當詢問有關程式碼的問題時)
* [別把自己家庭作業的問題貼上來](https://github.com/ryanhanwu/smartquestions#別把自己家庭作業的問題貼上來)
* [去除無意義的疑問](https://github.com/ryanhanwu/smartquestions#去除無意義的疑問)
* [不要把問題標記為"急",即使對你而言確實如此](https://github.com/ryanhanwu/smartquestions#不要把問題標記為"急",即使對你而言確實如此)
* [有禮貌絕沒有害處,而且有時是有益的](https://github.com/ryanhanwu/smartquestions#有禮貌絕沒有害處,而且有時是有益的)
* [問題解決後,加個簡短說明](https://github.com/ryanhanwu/smartquestions#問題解決後,加個簡短說明)
* [如何解讀答案](https://github.com/ryanhanwu/smartquestions#如何解讀答案)
* [RTFM和STFW如何知道你已完全搞砸](https://github.com/ryanhanwu/smartquestions#RTFM和STFW如何知道你已完全搞砸)
* [如果還是搞不懂](https://github.com/ryanhanwu/smartquestions#如果還是搞不懂)
* [應對粗魯的回應](https://github.com/ryanhanwu/smartquestions#應對粗魯的回應)
* [如何避免扮演失敗者](https://github.com/ryanhanwu/smartquestions#如何避免扮演失敗者)
* [提問的禁忌](https://github.com/ryanhanwu/smartquestions#提問的禁忌)
* [問題清單](https://github.com/ryanhanwu/smartquestions#問題清單)
* [蠢問題範例](https://github.com/ryanhanwu/smartquestions#蠢問題範例)
* [好問題,壞問題](https://github.com/ryanhanwu/smartquestions#好問題,壞問題)
* [如果得不到回答](https://github.com/ryanhanwu/smartquestions#如果得不到回答)
* [如何更好地回答問題](https://github.com/ryanhanwu/smartquestions#如何更好地回答問題)
* [相關資源](https://github.com/ryanhanwu/smartquestions#相關資源)
* [鳴謝](https://github.com/ryanhanwu/smartquestions#鳴謝)
##聲明
許多專案在他們的使用協助/說明網頁中連結了本指南,這麼做很好,我們也鼓勵大家都這麼做。但如果你是負責管理這個專案網頁的人,請在超連結附近的顯著位置上註明:
__本指南不提供此專案的實際支援服務__
我們已經深刻領教到少了上述聲明所帶來的痛苦。因為少了這點聲明,我們不停地被一些白痴糾纏。這些白痴認為既然我們發布了這本指南,那麼我們就有責任解決世上所有的技術問題。
如果你是因為需要某些協助而正在閱讀這本指南並且最後離開是因為發現從本指南作者們身上得不到直接的協助那麼你就是我們所說的那些白痴之一。別問我們問題我們只會忽略你。我們在這本指南中是教你如何從那些真正懂得你所遇到軟體或硬體問題的人取得協助而99%的情況下那不會是我們。除非你確定本指南的作者之一剛好是你所遇到的問題領域的專家,否則請不要打擾我們,這樣大家都會開心一點。
##簡介
在[黑客](http://www.catb.org/~esr/faqs/hacker-howto.html)的世界裡,當你拋出一個技術問題時,最終是否能得到有用的回答,往往取決於你所提問和追問的方式。本指南將教你如何正確的提問以獲得你滿意的答案。
不只是黑客現在開放原始碼Open Source軟體已經相當盛行你常常也可以由其他有經驗的使用者身上得到好答案這是件**_好事_**;使用者比起黑客來,往往對那些新手常遇到的問題更寬容一些。然而,將有經驗的使用者視為黑客,並採用本指南所提的方法與他們溝通,同樣也是能從他們身上得到滿意回答的最有效方式。
首先你應該明白,黑客們喜愛有挑戰性的問題,或者能激發我們思維的好問題。如果我們並非如此,那我們也不會成為你想詢問的對象。如果你給了我們一個值得反覆咀嚼玩味的好問題,我們自會對你感激不盡。好問題是激勵,是厚禮。好問題可以提高我們的理解力,而且通常會暴露我們以前從沒意識到或者思考過的問題。對黑客而言,"好問題!"是誠摯的大力稱讚。
儘管如此,黑客們有著蔑視或傲慢面對簡單問題的壞名聲,這有時讓我們看起來對新手、無知者似乎較有敵意,但其實不是那樣的。
我們不諱言我們對那些不願思考、或者在發問前不做他們該做的事的人的蔑視。那些人是時間殺手 - 他們只想索取,從不付出,消耗我們可用在更有趣的問題或更值得回答的人身上的時間。我們稱這樣的人為 ```失敗者(魯蛇)``` (由於歷史原因,我們有時把它拼作 ```lusers```)。
我們意識到許多人只是想使用我們寫的軟體,他們對學習技術細節沒有興趣。對大多數人而言,電腦只是種工具,是種達到目的的手段而已。他們有自己的生活並且有更要緊的事要做。我們了解這點,也從不指望每個人都對這些讓我們著迷的技術問題感興趣。儘管如此,我們回答問題的風格是指向那些真正對此有興趣並願意主動參與解決問題的人,這一點不會變,也不該變。如果連這都變了,我們就是在降低做自己最擅長的事情上的效率。
我們(在很大程度上)是自願的,從繁忙的生活中抽出時間來解答疑惑,而且時常被提問淹沒。所以我們無情的濾掉一些話題,特別是拋棄那些看起來像失敗者的傢伙,以便更高效的利用時間來回答```贏家(溫拿)```的問題。
如果你厭惡我們的態度,高高在上,或過於傲慢,不妨也設身處地想想。我們並沒有要求你向我們屈服 -- 事實上,我們大多數人非常樂意與你平等地交流,只要你付出小小努力來滿足基本要求,我們就會歡迎你加入我們的文化。但讓我們幫助那些不願意幫助自己的人是沒有效率的。無知沒有關係,但裝白痴就是不行。
所以,你不必在技術上很在行才能吸引我們的注意,但你必須表現出能引導你變得在行的特質 -- 機敏、有想法、善於觀察、樂於主動參與解決問題。如果你做不到這些使你與眾不同的事情,我們建議你花點錢找家商業公司簽個技術支援服務合同,而不是要求黑客個人無償地幫助你。
如果你決定向我們求助,當然你也不希望被視為失敗者,更不願成為失敗者中的一員。能立刻得到快速並有效答案的最好方法,就是像贏家那樣提問 -- 聰明、自信、有解決問題的思路,只是偶爾在特定的問題上需要獲得一點幫助。
(歡迎對本指南提出改進意見。你可以 email 你的建議至 [esr@thyrsus.com](esr@thyrsus.com) 或 [respond-auto@linuxmafia.com](respond-auto@linuxmafia.com)。然而請注意,本文並非[網路禮節](http://www.ietf.org/rfc/rfc1855.txt)的通用指南,而我們通常會拒絕無助於在技術論壇得到有用答案的建議。)
##在提問之前
在你準備要通過電子郵件、新聞群組或者聊天室提出技術問題前,請先做到以下事情:
1. 嘗試在你準備提問的論壇的舊文章中搜索答案。
1. 嘗試上網搜索以找到答案。
1. 嘗試閱讀手冊以找到答案。
1. 嘗試閱讀常見問題文件FAQ以找到答案。
1. 嘗試自己檢查或試驗以找到答案
1. 向你身邊的強者朋友打聽以找到答案。
1. 如果你是程式開發者,請嘗試閱讀原始碼以找到答案
當你提出問題的時候,請先表明你已經做了上述的努力;這將有助於樹立你並不是一個不勞而獲且浪費別人的時間的提問者。如果你能一併表達在做了上述努力的過程中所**_學到_**的東西會更好,因為我們更樂於回答那些表現出能從答案中學習的人的問題。
運用某些策略比如先用Google搜索你所遇到的各種錯誤訊息既搜索[Google論壇](http://groups.google.com/),也搜索網頁),這樣很可能直接就找到了能解決問題的文件或郵件列表線索。即使沒有結果,在郵件列表或新聞組尋求幫助時加上一句 ```我在Google中搜過下列句子但沒有找到什麼有用的東西``` 也是件好事,即使它只是表明了搜索引擎不能提供哪些幫助。這麼做(加上搜尋過的字串)也讓遇到相似問題的其他人能被搜尋引擎引導到你的提問來。
別著急不要指望幾秒鐘的Google搜尋就能解決一個複雜的問題。在向專家求助之前再閱讀一下常見問題FAQ文件、放輕鬆、坐舒服一些再花點時間思考一下這個問題。相信我們他們能從你的提問看出你做了多少閱讀與思考如果你是有備而來將更有可能得到解答。不要將所有問題一股腦拋出只因你的第一次搜索沒有找到答案或者找到太多答案
準備好你的問題,再將問題仔細的思考過一遍,因為草率的發問只能得到草率的回答,或者根本得不到任何答案。越是能表現出在尋求幫助前你為解決問題所付出的努力,你越有可能得到實質性的幫助。
小心別問錯了問題。如果你的問題基於錯誤的假設某個普通黑客J. Random Hacker多半會一邊在心裏想著```蠢問題…``` 一邊用無意義的字面解釋來答覆你,希望著你會從問題的回答(而非你想得到的答案)中汲取教訓。
絕不要自以為**_夠格_**得到答案,你沒有;你並沒有。畢竟你沒有為這種服務支付任何報酬。你將會是自己去**_掙到_**一個答案,靠提出有內涵的、有趣的、有思維激勵作用的問題 --一個有潛力能貢獻社群經驗的問題,而不僅僅是被動的從他人處索取知識。
另一方面,表明你願意在找答案的過程中做點什麼是一個非常好的開端。```誰能給點提示?```、```我的這個例子裏缺了什麼?```以及```我應該檢查什麼地方```比```請把我需要的確切的過程貼出來```更容易得到答復。因為你表現出只要有人能指個正確方向,你就有完成它的能力和決心。
## 當你提問時
###慎選提問的論壇
小心選擇你要提問的場合。如果你做了下述的事情,你很可能被忽略掉或者被看作失敗者:
* 在與主題不合的論壇上貼出你的問題
* 在探討進階技術問題的論壇張貼非常初級的問題;反之亦然
* 在太多的不同新聞群組上重複轉貼同樣的問題cross-post
* 向既非熟人也沒有義務解決你問題的人發送私人電郵
黑客會除掉那些搞錯場合的問題,以保護他們溝通的管道不被無關的東西淹沒。你不會想讓這種事發生在自己身上的。
因此第一步是找到對的論壇。一樣地Google和其它搜尋引擎還是你的朋友用它們來找到與你遭遇到困難的軟硬體問題最相關的網站。通常那兒都有常見問題FAQ、郵件列表及相關說明文件的連結。如果你的努力包括閱讀FAQ都沒有結果網站上也許還有報告臭蟲的流程或連結如果是這樣連過去看看。
向陌生的人或論壇發送郵件極有可能是最冒險的事了。舉例來說,別假設一個題供豐富內容的網頁的作者會想充當你的免費顧問。不要對你的問題是否會受到歡迎做太樂觀的估計──如果你不確定,那就向別處發送,或者壓根別發。
在選擇論壇、新聞組或郵件列表時別太相信名字先看看FAQ或者許可書以明確你的問題是否切題。發文前先翻翻已有的話題這樣可以讓你感受一下那裡行事的方式。事實上事先在新聞組或郵件列表的歷史記錄中搜尋與你問題相關的關鍵詞是個極好的主意也許這樣就找到答案了。即使沒有也能幫助你歸納出更好的問題。
別像機關槍似的一次性"掃射"所有的幫助渠道,這就像大喊大叫一樣會使人不快。要一個一個地來。
搞清楚你的主题最典型的錯誤之一是在某種致力於跨平台可移植的語言、庫或工具的論壇中提關於Unix或Windows操作系統程序接口的問題。如果你不明白為什麼這是大錯最好在搞清楚這之間差異之前什麼也別問。
一般來說,在仔細挑選的公共論壇中提問,會比在私有論壇中提同樣的問題更容易得到有用的回答。有幾個理由可以支持這點,一是看潛在的回覆者有多少,二是看論壇的參與者有多少。黑客更願意回答那些能幫助到更多人的問題。
可以理解的是,老練的黑客和一些熱門軟體的作者正在接受過多的錯發訊息。就像那根最後壓垮駱駝背的稻草一樣,你的加入也有可能使情況走向極端── 已經好幾次了,一些熱門軟體的作者從自己軟體的支援中抽身出來,因為伴隨而來湧入其私人郵箱的無用郵件變得無法忍受。
### 新手網站或IRC回應最快
你當地的使用者群組或者你所用的Linux發行版本也許正在宣傳他們的網頁論壇或IRC頻道並提供新手幫助在一些非英語國家新手論壇很可能還是郵件列表 這些地方是開始提問的好去處特別是當你覺得遇到的也許只是相對簡單或者很普通的問題時。經過宣傳的IRC頻道是公開歡迎提問的地方通常可以即時得到回應。
事實上,如果程式出的問題只發生在某 Linux 發行版提供的版本(這很常見),最好先去該發行版的論壇或郵件列表中提問,再到程式本身的論壇或郵件列表提問。(否則)該項目的黑客可能僅僅回复"用我們提供的版本"。
在任何論壇發文以前,先確認一下有沒有搜尋功能。如果有,就試著搜尋一下問題的幾個關鍵詞,也許這會有幫助。如果在此之前你已做過全面的網頁搜尋(你應該這樣去做),還是再搜尋一下論壇,搜尋引擎有可能沒來得及索引此論壇的全部內容。
通過論壇或 IRC 頻道來提供使用者支援服務有增長的趨勢,電子郵件則更多地為專案開發者間的交流而保留。所以最好先在論壇或 IRC 中尋求與該專案相關的協助。
### 第二步,使用專案郵件列表
當某個專案提供開發者郵件列表時,要向列表而不是其中的個別成員提問,即使你確信他能最好地回答你的問題。查一查專案的文件和首頁,找到專案的郵件列表並使用它。有幾個很好的理由支持我們採用這種辦法:
* 任何向個別開發者提出的足夠好的問題,也將對整個專案群組有益。反之,如果你認為自己的問題對整個專案群組來說太愚蠢, 這也不能成為騷擾個別開發者的理由。
* 向列表提問可以分散開發者的負擔,個別開發者(尤其是專案領導人)也許太忙以至於沒法回答你的問題。
* 大多數郵件列表都會被保存,那些被保存的內容將被搜尋引擎索引。如果你向列表提問並得到解答,將來其它人可以通過網頁搜尋找到你的問題和答案,也就不用再次發問了。
* 如果某些問題經常被問到,開發者可以利用此資訊來改進說明文件或軟體本身,以使其更清楚。如果只是私下提問,就沒有人能看到最常見問題的完整場景。
如果一個項目既有"使用者" 也有"開發者"(或"黑客")郵件列表或論壇,而你又不會動到那些原始碼,那麼就向"使用者"列表或論壇提問。不要假設自己會在開發者列表中受到歡迎,那些人多半會將你的提問視為干擾他們開發的噪音。
然而,如果你確信你的問題很特別,而且在"使用者" 列表或論壇中幾天都沒有回覆,可以試試前往"開發者"列表或論壇發問。建議你在張貼前最好先暗暗地觀察幾天以了解那裡的行事方式(事實上這是參與任何私有或半私有列表的好主意)
如果你找不到一個專案的郵件列表,而只能查到專案維護者的電子郵件地址,儘管向他發信。即使是在這種情況下,也別假設(專案)郵件列表不存在。在你的電子郵件中,請陳述你已經試過但沒有找到合適的郵件列表,也提及你不反對將自己的郵件轉發給他人(許多人認為,即使沒什麼秘密,私人電子郵件也不應該被公開。通過允許將你的電子郵件轉發他人,你給了相應人員處置你郵件的選擇)。
### 使用有意義且描述明確的標題
在郵件列表、新聞群組或論壇中大約50字以內的標題是抓住資深專家注意力的黃金時機。別用喋喋不休的"幫幫忙"、"跪求"、"急"(更別說"救命啊! "這樣讓人反感的話,用這種標題會被條件反射式地忽略)來浪費這個機會。不要妄想用你的痛苦程度來打動我們,相反,要在這點空間中使用最簡明扼要的描述方式來提出問題。
使用主題的好慣例是"目標──偏差"(式的描述),許多技術支持組織就是這樣做的。在"目標"部分指明是哪一個或哪一組東西有問題,在"偏差"部分則描述與期望的行為不一致的地方。
蠢問題:救命啊!我的筆電不能正常顯示了!
聰明問題X.org 6.8.1的滑鼠游標會變形,某牌顯示卡 MV1005 晶片組。更聰明X.org 6.8.1的滑鼠游標,在 某牌顯示卡 MV1005 晶片組環境下 - 會變形
編寫"目標──偏差"式描述的過程有助於你組織對問題的細緻思考。是什麼被影響了? 僅僅是滑鼠游標或者還有其它圖形只在X.org的X版中出現或只是出現在6.8.1版中? 是針對某牌顯示卡晶片組或者只是其中的MV1005型號 一個黑客只需描一眼就能夠立即明白什麼是你遇到的問題,什麼是你自己的問題。
總而言之,請想像一下你正在一個只顯示標題的文件索引中查尋。讓你的標題更好地反映問題,可使下一個搜索類似問題的人能夠在文件中直接就找到答案的線索,而不用再次提問相同的問題。
如果你想在話題回覆中提出問題,記得要修改內容標題,以表明你是在問一個問題, 一個看起來像"Re: 測試" 或者"Re: 新bug"的問題很難引起足夠重視。另外,引用並刪減前文的內容,給新來的讀者留下線索。
對於問題列表不要直接點擊回覆按鈕來開始一個全新的話題Thread這將限縮你的觀眾。因為有些郵件閱讀程序比如mutt允許使用者按話題排序並通過折疊話題來隱藏消息這樣做的人永遠看不到你發的消息。
僅僅改變主題還不夠。mutt和其它一些郵件閱讀程式還會檢查郵件標題以外的其它信息以便為其指定話題。所以寧可發一個全新的郵件。
在網頁論壇上,因為話題與特定的線索緊密結合,並且通常在話題外就看不到裡面的內容,因此好的提問方式略有不同,通過回覆提問,而非改變標題是可接受的。不是所有論壇都允許在回覆中出現分離的主題,而且這樣做了基本上沒有人會去看。不過,通過回覆提問,這本身就是令人懷疑的做法,因為它們只會被正在查看該話題的人讀到。所以,除非你只想在該話題當前活躍的人群中提問,不然還是另起爐灶比較好。
### 使問題容易回覆
以"請向……回复"來結束問題多半會使你得不到回答。如果你覺得花幾秒鐘在郵件客戶端設置一下回复地址都麻煩,我們也覺得花幾秒鐘考慮你的問題更麻煩。如果你的郵件程式不支持這樣做,換個好點的;如果是作業系統不支持這種郵件程式,也換個好點的。
在論壇,要求通過電子郵件回覆是非常無禮的, 除非你確信回覆的信息也許是敏感的(而且有人會為了某些未知的原因,只讓你而不是整個論壇知道答案)。如果你只是想在有人回覆線索時得到電子郵件提醒,可以要求網頁論壇發送給你。幾乎所有論壇都支持諸如"追蹤此話題"、"有回覆發送郵件提醒"等功能。
### 用辭貼切,語法正確,拼寫無誤
我們從經驗中發現,粗心的寫作者通常也是馬虎的思考者(我敢打包票)。回答粗心大意者的問題很不值得,我們寧願把時間耗在別處。
正確的拼寫,標點符號和大小寫很重要。一般來說,如果你覺得這樣做很麻煩,不想在乎這些,那我們也可以覺得麻煩,不在乎你的提問。花點額外的精力斟酌一下字句,用不著太僵硬與正式──事實上,黑客文化很看重能準確地使用非正式、俚語和幽默的語句。但它必須很準確,而且有跡象表明你是在思考和關注問題。
正確地拼寫、使用標點和大小寫,不要將"its"混淆為"it's""loose"搞成"lose"或者將"discrete"弄成"discreet"。不要全部用大寫這會被視為無禮的大聲嚷嚷全部小寫也好不到哪去因為不易閱讀。Alan Cox[注著名黑客Linux內核的重要參與者]也許可以這樣做,但你不行。)
一般而言,如果你寫得像是個[小白]http://zh.wikipedia.org/zh-tw/小白),那多半得不到理睬。也不要使用即時通訊中的簡寫或[火星文]http://zh.wikipedia.org/zh-tw/火星文),如將"的"簡化為"ㄉ"會使你看起來像一個為了少打幾個鍵而省字的小白。更糟的是,如果像個小孩似地鬼畫符那絕對是在找死,可以肯定沒人會理你(或者最多是給你一大堆指責與挖苦)。
如果在使用非母語的論壇提問,**你可以犯點拼寫和語法上的小錯,但決不能在思考上馬虎**(沒錯,我們能弄清兩者的分別)。同時,除非你知道回覆者使用的語言,否則請使用英語書寫。繁忙的黑客一般會直接刪除用他們看不懂語言寫的消息。在網路上英語是通用語言,用英語書寫可以將你的問題在尚未被閱讀就被直接刪除的可能性降到最低。
### 使用易於讀取且標準的文件格式發送問題
如果你人為地將問題搞得難以閱讀,它多半會被忽略,人們更願讀易懂的問題,所以:
* 使用純文本而不是HTML [關閉HTML]http://expita.com/nomime.html並不難
* 使用MIME附件通常沒有問題前提是真正有內容譬如附帶的原始碼或patch而不僅僅是郵件程式生成的模板譬如只是消息內容的拷貝
* 不要發送整段只是單行句子但多次折回的郵件這使得回复部分內容非常困難。設想你的讀者是在80個字符寬的終端機上閱讀郵件最好設置你的行折回點小於80字。
* 但是,也不要用任何固定列折回資料(譬如日誌檔案拷貝或會話記錄)。檔案應該原樣包含,使回复者確信他們看到的是與你看到的一樣的東西。
* 在英語論壇中,不要使用'Quoted-Printable' MIME編碼發送消息。這種編碼對於張貼非ASCII語言可能是必須的但很多郵件程式並不支援這種編碼。當它們分斷時那些文本中四處散佈的"=20"符號既難看也分散注意力,甚至有可能破壞內容的語意。
* 永遠不要指望黑客們閱讀使用封閉的專用格式編寫的文檔諸如微軟公司的Word或Excel文件等。大多數黑客對此的反應就像有人將還在冒熱氣的豬糞倒在你門口時你的反應一樣。即使他們能夠處理他們也很厭惡這麼做。
* 如果你從使用Windows的電腦發送電子郵件關閉微軟愚蠢的"聰明引用"功能,以免在你的郵件中到處散佈垃圾字符。
* 在論壇,勿濫用"表情符號"和"HTML"功能(當它們提供時)。一兩個表情符號通常沒有問題,但花哨的彩色文本傾向於使人認為你是個無能之輩。過濫地使用表情符號、色彩和字體會使你看來像個傻笑的小姑娘。這通常不是個好主意,除非你只是對性而不是有用的回覆更有興趣。
如果你使用圖形用戶界面的郵件程式如微軟公司的Outlook或者其它類似的注意它們的預設配置不一定滿足這些要求。大多數這類程式有基於選單的"查看原始碼"命令,用它來檢查發送文件夾中的消息,以確保發送的是沒有多餘雜質的純文本文件。
### 準確描述問題並言之有物
* 仔細、清楚地描述問題的症狀。
* 描述問題發生的環境(機器配置、作業系統、應用程式以及別的什麼),提供銷售商的發行版和版本號(如:"Fedora Core 4"、"Slackware 9.1"等)。
* 描述在提問前你是怎樣去研究和理解這個問題的。
* 描述在提問前為確定問題而採取的診斷步驟。
* 描述最近做過什麼可能有影響的硬體、軟體變更。
* 儘量想像一個黑客會怎樣反問你,在提問的時候預先給他答案。
Simon Tatham寫過一篇名為《[如何有效的報告Bug]http://go2.wordpress.com/?id=725X1342&site=mmdays.wordpress.com&url=http%3A%2F%2Fwww.chiark.greenend.org.uk%2F~sgtatham%2Fbugs-cn.html&sref=http%3A%2F%2Fmmdays.wordpress.com%2F2007%2F09%2F25%2Fquestion%2F》的出色文章。強力推薦你也讀一讀。
### 話不在多而在精
你需要提供精確有內容的資訊。這並不是要求你簡單的把成噸的出錯代碼或者資料完全轉錄到你的提問中。如果你有龐大而複雜的測試樣例能重現程式當掉的情境,儘量將它剪裁得越小越好。這樣做的用處至少有三點。
第一,表現出你為簡化問題付出了努力,這可以使你得到回答的機會增加;
第二,簡化問題使你更有可能得到有用的答案;
第三在提煉你的bug報告的過程中很可能你自己就找到了解決方法或權宜之計
### 別動輒聲稱找到Bug
當你在使用軟體中遇到問題除非你非常、非常的有根據不要動輒聲稱找到了Bug。提示除非你能提供解決問題的源代碼補丁或者對前一版本的回歸測試表現出不正確的行為否則你都多半不夠完全確信。對於網頁和文件也如此如果你聲稱發現了文件的"Bug",你應該能提供相應位置的替代文件。
請記得,還有許多其它使用者未經歷你遇到的問題,否則你在閱讀文件或搜尋網頁時就應該發現了(你在報怨前已經做了這些,是吧?)。這也意味著很有可能是你弄錯了而不是軟體本身有問題。
編寫軟體的人總是非常辛苦地使它盡可能完美。如果你聲稱找到了Bug也就置疑了他們的能力即使你是對的也有可能會使其中的部分人感到不快。此外在主題中嚷嚷"Bug"也是特別不禮貌的。
提問時,即使你私下非常確信已經發現一個真正的臭蟲,最好寫得像是你做錯了什麼。如果真的有臭蟲,你會在回復中看到這點。這樣做的話,如果真有蟲子,維護者就會向你道歉,這總比你搞砸了然後欠別人一個道歉要強。
### 低聲下氣前還是要先做功課
有些人明白他們不應該粗魯或傲慢地行事並要求得到答覆,但他們退到相反的低聲下氣的極端:"我知道我只是個可憐的新手,一個失敗者,但... ..."。這既使人困擾,也沒有用,當伴隨著對實際問題含糊的描述時還特別令人反感。
別用原始靈長類動物的把戲來浪費你我的時間,相對地,盡可能清楚地描述背景情況和你的問題。這比低聲下氣更好地擺正了你的位置。
有時網頁論壇會設有專為初學者提問的版面,如果你真的認為遇到了初淺的問題,到那去就是了,但一樣別那麼低聲下氣。
### 描述問題症狀而非猜測
告訴黑客們你認為問題是怎樣引起的沒什麼幫助。(如果你的推斷如此有效,還用向別人求助嗎?), 因此要確信你原原本本告訴了他們問題的症狀,而不是你的解釋和理論。讓黑客們來診斷吧。如果你認為陳述自己的猜測很重要,清楚地說明這只是你的猜測,並描述為什麼它們不起作用。
蠢問題: 我在編譯內核時接連遇到SIG11錯誤我懷疑某條飛線搭在主板的走線上了這種情況應該怎樣檢查最好
聰明問題: 我組裝的電腦K6/233 CPUFIC-PA2007主機板+威盛 Apollo VP2晶片組256MB Corsair PC133 SDRAM 在編譯內核時從開機20分鐘以後就頻頻產生SIG11錯誤但是在頭20分鐘內從沒發生過相同的問題。重新啟動也沒有用但是關機一晚上就又能工作20分鐘。所有記憶體都換過了沒有效果。相關部分的典型編譯記錄如下…。
由於以上這點許多人似乎難以掌握,這裡有句話可以提醒你:"所有的診斷專家都來自密蘇里州。" 美國國務院的官方座右銘則是:"讓我看看"出自國會議員威勒德。範迪弗在1899年時的講話"我來自一個出產玉米,棉花,牛蒡和民主黨人的國家,滔滔雄辯既不能說服我,也不會讓我滿意。我來自密蘇里州,你必須讓我看看。" 針對診斷者而言,這並不是懷疑,而只是一種真實而有用的需求,以便讓他們看到的是與你看到的原始證據盡可能一致的東西,而不是你的猜測與總結。所以,展示給我們看吧。
### 按發生時間先後列出問題症狀
問題發生前的一系列操作往往就是對找出問題最有幫助的線索。因此你的說明裡應該包含你的操作步驟以及機器和軟體的反應直到問題產生。在命令行處理的情況下提供一段操作記錄如運行腳本工具所生成的並引用相關的若干行如20行記錄會非常有幫助。
如果當掉的程式有診斷選項(如-V的詳述開關試著選擇這些能在記錄中增加除錯資訊的選項。記住"多"不等於"好"。試著選取適當的除錯級別以便提供有用的信息而不是將閱讀者淹沒在垃圾中。
如果你的說明很長(如超過四個段落),在開頭簡述問題,接下來再按時間順序詳述會有所幫助。這樣黑客們在讀你的記錄時就知道該注意哪些內容了。
### 描述目標而不是過程
如果你想弄清楚如何做某事而不是報告一個Bug在開頭就描述你的目標然後才陳述重現你所遇到問題的特定步驟。
經常尋求技術幫助的人在心中有個更高層次的目標,而他們在自以為能達到目標的特定道路上被卡住了,然後跑來問該怎麼走,但沒有意識到這條路本身就有問題。結果要費很大的勁才能通過。
蠢問題我怎樣才能讓某圖形程式的顏色選擇器中取得十六進制的的RGB值
聰明問題:我正試著用自己選定數值的顏色替換一幅圖片的色表,我現在知道的唯一方法是編輯每個表槽, 但卻無法讓某圖形程序的顏色拾取器取得十六進制的的RGB值。
第二種提法是聰明的,你可能能得到建議採用更合適的工具以完成任務的回覆。
### 別要求使用私人電郵回覆
黑客們認為問題的解決過程應該公開,透明,此過程中如果更有經驗的人注意到不完整或者不當之處,最初的回覆才能夠,也應該被糾正。同時,作為幫助者也能因為能力和學識被其它同行看到而得到某種回報。
當你要求私下回覆時,此過程和回報都被中止。別這樣做,讓回覆者來決定是否私下回答──如果他真這麼做了,通常是因為他認為問題編寫太差或者太膚淺,以至於對其它人毫無意義。
對這條規則存在一條有限的例外,如果你確信提問可能會引來大量雷同的回覆時,那麼"向我發電郵,我將為論壇歸納這些回覆"將是神奇的句子。試著將郵件列表或新聞組從洪水般雷同的回覆中解救出來是非常有禮貌的──但你必須信守諾言。
### 提問應清楚明確
漫無邊際的提問近乎無休無止的時間黑洞。最有可能給你有用答案的人通常也正是最忙的人(他們忙是因為要親自完成大部分工作)。這樣的人對無節制的時間黑洞相當敏感,所以他們也傾向於討厭那些漫無邊際的提問。
如果你明確表述需要回答者做什麼如提供建議發送一段程式碼檢查你的patch或是別的就最有可能得到有用的答案。因為這會定出一個時間和精力的上限便於回答者能集中精力來幫你這麼做很有效。
要理解專家們所處的世界,請把專業技能想像為充裕的資源,而回覆的時間則是很珍稀的資源。你暗中要求他們奉獻的時間越少,你越有可能從這些真正懂行而且真正很忙的專家那裡得到解答。
所以,限定一下你的問題,以使專家辨識你的問題並回答時所需要付出的時間減到最少,這技巧對你取得答案相當有幫助–這技巧通常和簡化問題有所區別。因此,問"我想更好的理解X可否指點一下哪有好一點說明"通常比問"你能解釋一下X嗎"更好。如果你的程式碼不能運作,通常請別人看看哪裡有問題,比要求別人替你改正要明智得多。
### 當詢問有關程式碼的問題時
別要求他人給你有問題的代碼除錯而不提示一下應該從何入手。張貼幾百行的代碼,然後說一聲:"它不能運行"會讓你得不到理睬。只貼幾十行代碼,然後說一句:"在第七行以後,本應該顯示 的,但實際出現的是鍵"比較有可能讓你得到回應。
最有效描述程式問題的方式是提供最精簡的Bug展示測試用例。什麼是最精簡的測試示例? 那是問題的速寫;一小段程式片段剛好展示出程式不正常的行為,而不包含其他分散注意力的內容。怎麼製作最精簡的測試示例?如果你知道哪一行或哪一段程式碼會造成產生問題的行為,複製下來並加入充足的程式碼以重現這個示例 (例如,足以讓這段程式碼能被編譯/直譯/被應用程式處理)。如果你無法將問題縮減到一段特定的區塊,複製並開始移除不影響產生問題行為的程式碼。測試示例越小越好(查看話不在多而在精一節).
通常要得到一段相當精簡的測試示例並不太容易, 但永遠先做這樣的嘗試是種好習慣。這種方式可以幫助你了解如何自行解決這個問題 — 而且即使你的嘗試不成功,黑客們也會欣然看到你在嘗試取得答案的過程中付出了努力。這可以讓他們更願意與你合作。
如果你只是想讓別人幫忙審一下代碼,在信的開頭就要說出來,並且一定要提到你認為哪一部分特別需要關注以及為什麼。
### 別把自己家庭作業的問題貼上來
黑客們總是善於分辨哪些問題應該由你自己解決;因為我們中的大多數都曾自己解決這類問題。同樣,這些問題得由你來搞定,你會從中學到東西。你可以要求給點提示,但別要求得到完整的解決方案。
如果你懷疑自己碰到了一個家庭作業式的問題,但仍然無法解決, 試試在使用者群組,論壇或(作為最後一招)在專案的"使用者"郵件列表或論壇中提問。儘管黑客們會看出來,但一些有經驗的使用者也許仍會給你提示。
### 去除無意義的疑問
避免用無意義的話結束提問,例如"有人能幫我嗎?"或者"有答案嗎?"。
首先:如果你對問題的描述不很合適,這樣問更是畫蛇添足。
其次:由於這樣問是畫蛇添足,黑客們會很厭煩你–而且通常會用邏輯上正確,但毫無意義的回答來表示他們的蔑視, 例如:"沒錯,有人能幫你"或者"不,沒答案"。
一般來說,避免提"是或否"類型的問題,除非你想得到"[是或否]http://homepages.tesco.net/~J.deBoynePollard/FGA/questions-with-yes-or-no-answers.html"類型的回答。
### 不要把問題標記為"急",即使對你而言確實如此
這是你的問題,而不是我們的。宣稱"緊急"(或"線上等")極有可能事與願違:大多數黑客會直接刪除這種消息,他們認為這是無禮和自私地企圖得到即時與特殊的關照。
有半個例外的情況是,如果你是在一些知名度很高,會使黑客們激動的地方使用程式,也許值得這樣去做。在這種情況下,如果你有期限壓力,也很有禮貌地提到這點,人們也許會有足夠的興趣快一點回答。
當然,這是非常冒險的,因為黑客們對什麼是令人激動的標準多半與你的不同。譬如從國際空間站這樣張貼沒有問題,但代表感覺良好的慈善或政治原因這樣做幾乎肯定不行。事實上,張貼諸如"緊急:幫我救救這個毛絨絨的小海豹!"肯定會被黑客迴避或光火,即使他們認為毛絨絨的小海豹很重要。
如果你覺得這點很不可思議,最好再把剩下的內容多讀幾遍,直到你弄懂了再發任何文章也不遲。
### 有禮貌絕沒有害處,而且有時是有益的
彬彬有禮,多用"請"和"謝謝你的關注",或"謝謝你的關照"。讓大家都知道你對他們花費時間義務提供幫助心存感激。
坦率地講,這一點沒有語法正確,文字清晰,準確,有內容和避免使用專用格式重要(同時也不能替代它們)。黑客們一般寧可讀有點唐突但技術鮮明的臭蟲報告,而不是那種有禮但含糊的報告。(如果這點讓你不解,記住我們是按問題能教我們什麼來評價問題的價值的)
然而,如果你有一串的問題待解決,客氣一點肯定會增加你得到有用回應的機會。
(我們注意到,自從本指南發佈後,從資深黑客處得到的唯一嚴重缺陷反饋,就是對預先道謝這一條。一些黑客覺得"先謝了"的言外之意是事後就不用再感謝任何人的暗示。我們的建議是要麼先說"先謝了",事後再對回复者表示感謝, 要么換種方式表達,譬如用"謝謝你的關注"或"謝謝你的關照"。)
### 問題解決後,加個簡短說明
問題解決後,向所有幫助過你的人發個說明,讓他們知道問題是怎樣解決的,並再一次向他們表示感謝。如果問題在新聞組或者郵件列表中引起了廣泛關注,應該在那裏貼一個補充說明比較恰當。
最理想的方式是向最初提問的話題回覆此消息,並在標題中包含"已解決""已搞定"或其它同等含義的明顯標記。在人來人往的郵件列表裡,一個看見線索"問題 X"號和"問題的X -已解決"的潛在回覆者就明白不用再浪費時間了(除非他個人覺得"問題 X"的有趣),因此可以利用此時間去解決其它問題。
補充說明不必很長或是很深入;簡單的一句"你好原來是網線出了問題謝謝大家Bill"比什麼也不說要強。事實上,除非結論真的很有技術含量,否則簡短可愛的小結比長篇學術論文更好。說明問題是怎樣解決的,但大可不必將解決問題的過程複述一遍。
對於有深度的問題,張貼除錯記錄的摘要是有幫助的。描述問題的最終狀態,說明是什麼解決了問題,在此之後才指明可以避免的彎路。應避免的彎路部分應放在正確的解決方案和其它總結材料之後,而不要將此訊息搞成偵探推理小說。列出那些幫助過你的名字,那樣你會交到朋友的。
除了有禮貌和有內涵以外,這種類型的補充也有助於他人在郵件列表/新聞群組/論壇中搜索到真正解決你問題的方案,讓他們也從中受益。
至少,這種補充有助於讓每位參與協助的人因問題的解決而從中產生一種滿足感。如果你自己不是技術專家或者黑客,那就相信我們,這種感覺對於那些你向他們求助的導師或者專家而言,是非常重要的。問題久拖未決會讓人灰心;黑客們渴望看到問題被解決。好人有好報,滿足他們的渴望,你會在下次提問時嘗到甜頭。
思考一下怎樣才能避免他人將來也遇到類似的問題要求自己編一份文件或常見問題的patch是否有幫助。如果是的話就將patch發給維護者。
在黑客中,這種良好的後繼行動實際上比傳統的禮節更為重要,也是你如何透過善待他人而贏得聲譽的方式。這是筆非常有價值的財富。
## 如何解讀答案
### RTFM和STFW如何知道你已完全搞砸
有一個古老而神聖的傳統:如果你收到"RTFM Read The Fxxking Manual"的回應,回答者認為你應該去讀讀該死的手冊。當然,基本上他是對的,你應該去讀一讀。
RTFM有一個年輕的親戚。如果你收到"STFW Search The Fxxking Web"的回應,回答者認為你應該已經到該死的網路上搜索過了。那人多半也是對的,去搜尋一下吧。(更溫和一點的說法是"[Google是你的朋友]http://lmgtfy.com/"
在論壇,你也可能被要求去爬爬論壇的舊文。事實上,有人甚至可能熱心地為你提供以前解決此問題的線索。但不要依賴這種關照,提問前應該先搜索一下舊文。
通常,用這兩句之一回答你的人會給你一份包含你需要內容的手冊或者一個網址,而且他們打這些字的時候正在閱讀著。這些答復意味著回答者認為
1. **你需要的資訊非常容易獲得**
1. **你自己去搜索這些資訊比灌給你能讓你學到更多**
別為這個而不爽;**依照黑客的標準,他已經表示了對你一定程度的關注,而沒有對你的要求視而不見**。你應該對他祖母般的慈祥表示感謝。
### 如果還是搞不懂
如果你看不懂回應別立刻要求對方解釋。像你以前試著自己解決問題時那樣利用手冊FAQ網路身邊的高手先試著去搞懂他的回應。如果你真的需要對方解釋記得表現出你已經從中學到了點什麼。
比方說,如果我回答你:"看來似乎是zentry被擋住了你應該先清除它。",然後,這是一個很糟的後續問題回應:"zentry是什麼" 聰明的問法應該是這樣:"哦~~~我看過說明了但是只有-z和-p兩個參數中提到了zentry而且還都沒有清楚的解釋:<你是指這兩個中的哪一個嗎還是我看漏了什麼"~~
### 應對粗魯的回應
很多黑客圈子中看似無禮的行為並不是存心冒犯相反它是直接了當一針見血式的交流風格這種風格更關注解決問題而不是使別人感覺舒服而卻模模糊糊
如果你覺得被冒犯了試著平靜地反應如果有人真的做了出格的事郵件列表新聞群組或論壇中的前輩多半會招呼他如果這沒有發生而你卻發火了那麼你發火對象的言語可能在黑客社區中看起來是正常的而你將被視為有錯的一方這將傷害到你獲取信息或幫助的機會
另一方面你偶而真的會碰到無禮和無聊的言行與上述相反對真正的冒犯者狠狠地打擊用犀利的語言將其駁得體無完膚都是可以接受的然而在行事之前一定要非常非常的有根據糾正無禮的言論與開始一場毫無意義的口水戰僅一線之隔黑客們自己莽撞地越線的情況並不鮮見如果你是新手或外來者避開這種莽撞的機會並不高如果你想得到的是信息而不是消磨時光這時最好不要把手放在鍵盤上以免冒險
有些人斷言很多黑客都有輕度的自閉症或阿斯伯格綜合症缺少用於潤滑人類社會"正常"交往所需的神經這既可能是真也可能是假的如果你自己不是黑客興許你認為我們腦袋有問題還能幫助你應付我們的古怪行為只管這麼幹好了我們不在乎我們喜歡我們現在這個樣子並且一般都對病號標記有站得住腳的懷疑。)
在下一節我們會談到另一個問題當你行為不當時所會受到的"冒犯"。
## 如何避免扮演失敗者
在黑客社區的論壇中有那麼幾次你可能會搞砸──以本指南所描述到的或類似的方式而你會在公開場合中被告知你是如何搞砸的也許攻擊的言語中還會帶點夾七夾八的顏色
這種事發生以後你能做的最糟糕的事莫過於哀嚎你的遭遇宣稱被口頭攻擊要求道歉高聲尖叫憋悶氣威脅訴諸法律向其雇主報怨忘了關馬桶蓋等等相反地你該這麼做
**熬過去,這很正常。事實上,它是有益健康且合理的。**
社區的標準不會自行維持它們是通過參與者積極而公開地執行來維持的不要哭嚎所有的批評都應該通過私下的郵件傳送這不是事情運作的方式當有人評論你的一個說法有誤或者提出不同看法時堅持聲稱受到個人攻擊也毫無益處這些都是失敗者的態度
也有其它的黑客論壇受過高禮節要求的誤導禁止參與者張貼任何對別人帖子挑毛病的消息並聲稱"如果你不想幫助用戶就閉嘴。" 結果造成有想法的參與者紛紛離開這麼做只會使它們淪為毫無意義的嘮叨與無用的技術論壇
誇張的講法是你要的是"友善"以上述方式還是有用兩個裡面挑一個
記著當黑客說你搞砸了並且無論多麼刺耳地告訴你別再這樣做時他正在為關心你和他的社區而行動對他而言不理你並將你從他的生活中濾除要容易得多如果你無法做到感謝至少要表現地有點尊嚴別大聲哀嚎也別因為自己是個有戲劇性超級敏感的靈魂和自以為有資格的新來者就指望別人像對待脆弱的洋娃娃那樣對你
有時候即使你沒有搞砸或者只是在他的想像中你搞砸了有些人也會無緣無故地攻擊你本人在這種情況下抱怨倒是真的會把問題搞砸
這些來找麻煩的人要麼是毫無辦法但自以為是專家的不中用傢伙要么就是測試你是否真會搞砸的心理專家其它讀者要麼不理睬要麼用自己的方式對付他們這些來找麻煩的人在給他們自己找麻煩這點你不用操心
也別讓自己捲入口水戰最好不要理睬大多數的口水戰──當然是在你核實它們只是口水戰而並未指出你有搞砸的地方而且沒有巧妙地將問題真正的答案藏於其後這也是有可能的)。
## 提問的禁忌
以下是幾個經典蠢問題以及黑客在拒絕回答時心中所想的
### 問題清單
問題我能在哪找到X程式或X資源
問題我怎樣用X做Y
問題如何配置我的shell提示
問題我可以用Bass-o-matic文件轉換工具將AcmeCorp檔案轉換為TeX格式嗎
問題我的程式/配置/SQL申明沒有用
問題我的Windows電腦有問題你能幫我嗎
問題我的程式不會動了我認為系統工具X有問題
問題我在安裝Linux或者X時有問題你能幫我嗎
問題我怎麼才能破解root帳號/竊取OP特權/讀別人的郵件呢
### 蠢問題範例
問題我能在哪找到X程式或X資源
回答就在我找到它的地方啊蠢貨搜索引擎的那一頭天哪難道還有人不會用Google嗎
---
問題我怎樣用X做Y
回答如果你想解決的是Y提問時別給出可能並不恰當的方法這種問題說明提問者不但對X完全無知也對要解決的Y問題糊塗還被特定形勢禁錮了思維等他們把問題搞清楚了再說
---
問題如何配置我的shell提示
回答如果你有足夠的智慧提這個問題你也該有足夠的智慧去RTFM然後自己去找出來
---
問題我可以用Bass-o-matic文件轉換工具將AcmeCorp檔案轉換為TeX格式嗎
回答試試就知道了如果你試過你既知道了答案又不用浪費我的時間了
---
問題我的程式配置SQL申明沒有用
回答這不算是問題吧我對找出你的真正問題沒興趣如果要我問你二十個問題才找得出來的話我有更有意思的事要做呢
在看到這類問題的時候我的反應通常不外如下三種
1. 你還有什麼要補充的嗎
1. 真糟糕希望你能搞定
1. 這跟我有什麼鳥相關
---
問題我的Windows電腦有問題你能幫我嗎
回答能啊扔掉萎軟的垃圾換個像Linux或BSD的開放原始碼作業系統吧...
注意如果程式有官方的Windows版或者與Windows有交互如Samba你可以問與Windows相關的問題 只是別對問題是由Windows作業系統而不是程式本身造成的回复感到驚訝 因為Windows一般來說太差這種說法一般都成立
---
問題我的程式不會動了我認為系統工具X有問題
回答你完全有可能是第一個注意到被成千上萬用戶反复使用的系統呼叫與函式庫檔案有明顯缺陷的人更有可能的是你完全沒有根據不同凡響的說法需要不同凡響的證據當你這樣聲稱時你必須有清楚而詳盡的缺陷說明文件作後盾
---
問題我在安裝Linux或者X時有問題你能幫我嗎
回答不能我只有親自在你的電腦上動手才能找到毛病還是去找你當地的Linux使用者群組尋求手把手的指導吧你能在這兒找到用戶組的清單)。
注意如果安裝問題與某Linux的發行版有關在針對它的郵件列表論壇或本地使用者群組中提問也許是恰當的此時應描述問題的準確細節在此之前先用"的Linux"和所有被懷疑的硬體[作關鍵詞]仔細搜索
---
問題我怎麼才能破解root帳號/竊取OP特權/讀別人的郵件呢
回答想要這樣做說明你是個卑鄙小人想找個黑客幫你說明你是個白癡
---
## 好問題,壞問題
最後我將透過舉一些例子來說明怎樣聰明的提問同一個問題的兩種問法被放在一起一種是愚蠢的另一種才是明智的
---
蠢問題我可以在哪兒找到關於Foonly Flurbamatic的資料
這種問法無非想得到"STFW"這樣的回答
聰明問題我用Google搜索過"Foonly Flurbamatic 2600"但是沒找到有用的結果誰知道上哪兒去找對這種設備編程的資料
這個問題已經STFW過了看起來他真的遇到了麻煩
---
蠢問題我從foo項目找來的源碼沒法編譯它怎麼這麼爛
他覺得都是別人的錯這個傲慢自大的傢伙
聰明問題foo專案代碼在Nulix 6.2版下無法編譯通過我讀過了FAQ但裏面沒有提到跟Nulix有關的問題這是我編譯過程的記錄我有什麼做的不對的地方嗎
提問者已經指明了編譯環境也讀過了FAQ還列出了錯誤並且他沒有把問題的責任推到別人頭上這個傢伙值得留意
---
蠢問題我的主板有問題了誰來幫我
某黑客對這類問題的回答通常是"好的還要幫你拍拍背和換尿布嗎"然後按下刪除鍵
聰明問題我在S2464主機板上試過了XY和Z但沒什麼作用我又試了AB和C請注意當我嘗試C時的奇怪現象顯然邊帶傳輸中出現了收縮但結果出人意料通常在Athlon多處理器主機板上引起邊帶洩漏的通常原因是什麼有誰知道接下來我該做些什麼測試才能找出問題
這個傢伙從另一個角度來看值得去回答他他表現出了解決問題的能力而不是坐等天上掉答案
---
在最後一個問題中注意"告訴我答案""給我啟示指出我還應該做什麼診斷工作"之間微妙而又重要的區別
事實上後一個問題源自於2001年8月在Linux內核郵件列表上的一個真實的提問Eric就是那個提出問題的人我在Tyan S2464主板上觀察到了這種無法解釋的鎖定現象列表成員們提供了解決這一問題的重要資訊
通過我的提問方法我給了別人可以咀嚼玩味的東西我設法讓人們很容易參與並且被吸引進來我顯示了自己具備和他們同等的能力並邀請他們與我共同探討通過告訴他們我所走過的彎路以避免他們再浪費時間我也表明了對他們寶貴時間的尊重
事後當我向每個人表示感謝並且讚賞這次良好的討論經歷的時候 一個Linux內核郵件列表的成員表示他覺得我的問題得到解決並非由於我是這個列表中的"名人"而是因為我用了正確的方式來提問黑客從某種角度來說是擁有豐富知識但缺乏人情味的傢伙我相信他是對的如果我像個乞討者那樣提問不論我是誰一定會惹惱某些人或者被他們忽視他建議我記下這件事這直接導致了本指南的出現
##如果得不到回答
如果仍得不到回答請不要以為我們覺得無法幫助你有時只是看到你問題的人不知道答案罷了沒有回應不代表你被忽視雖然不可否認這種差別很難區分
總的說來簡單的重複張貼問題是個很糟的想法這將被視為無意義的喧鬧耐心一點知道你問題答案的人可能生活在不同的時區有可能正在睡覺也有可能你的問題一開始就沒有組織好
你可以通過其他渠道獲得幫助這些渠道通常更適合初學者的需要
有許多網上的以及本地的用戶組由狂熱的軟體愛好者即使他們可能從沒親自寫過任何軟體組成通常人們組建這樣的團體來互相幫助並幫助新手
另外你可以向很多商業公司尋求幫助不論公司大還是小Red Hat 和LinuxCare 就是兩個最常見的例子)。別為要付費才能獲得幫助而感到沮喪 畢竟假使你的汽車發動機汽缸密封圈爆掉了完全可能如此你還得把它送到修車鋪並且為維修付費就算軟體沒花費你一分錢你也不能強求技術支援總是免費的
對大眾化的軟體像是Linux之類而言每個開發者至少會對應到上萬名使用者根本不可能由一個人來處理來自上萬名使用者的求助電話要知道即使你要為這些協助付費和你所購買的同類軟體相比你所付出的也是微不足道的通常封閉原始碼軟體的技術支援費用比開放原始碼軟體的要高得多且內容也沒那麼豐富)。
## 如何更好地回答問題
態度和善一點問題帶來的壓力常使人顯得無禮或愚蠢其實並不是這樣
對初犯者私下回覆對那些坦誠犯錯之人沒有必要當眾羞辱一個真正的新手也許連怎麼搜索或在哪找常見問題都不知道
如果你不確定一定要說出來一個聽起來權威的錯誤回覆比沒有還要糟別因為聽起來像個專家很好玩就給別人亂指路要謙虛和誠實給提問者與同行都樹個好榜樣
如果幫不了忙也別妨礙他不要在具體步驟上開玩笑那樣也許會毀了使用者的安裝──有些可憐的呆瓜會把它當成真的指令
試探性的反問以引出更多的細節如果你做得好提問者可以學到點東西──你也可以試試將很差的問題轉變成好問題別忘了我們都曾是新手
儘管對那些懶蟲報怨一聲RTFM是正當的指出文件的位置即使只是建議做個Google關鍵詞搜索會更好
如果你決定回答就請給出好的答案當別人正在用錯誤的工具或方法時別建議笨拙的權宜之計應推薦更好的工具重新組織問題
幫助你的社群從中學習當回覆一個好問題時問問自己"如何修改相關文件或常見問題文件以免再次解答同樣的問題"接著再向文件維護者發一份patch
如果你是在研究一番後才做出的回答展現你的技巧而不是直接端出結果畢竟"授人以魚不如授人以漁"。
## 相關資源
如果需要個人電腦Unix系統和網路如何工作的基礎知識參閱[Unix系統和網路基本原理]http://en.tldp.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/)。
當你發布軟體或patch時試著按[軟體發布實踐]http://en.tldp.org/HOWTO/Software-Release-Practice-HOWTO/index.html操作
## 鳴謝
Evelyn Mitchel貢獻了一些愚蠢問題例子並啟發了編寫"如何更好地回答問題"這一節 Mikhail Ramendik貢獻了一些特別有價值的建議和改進