你真的準備好提問了嗎
你真的準備好提問了嗎
請停止問那些弱智的問題 !!!
聲明簡介你真的準備好了嗎?在你提問之前提問前你必須需要知道的事情在你提問時幼兒園的小朋友都知道要有禮貌低聲下氣不能代替你的功課去掉無意義的提問句慎選提問的途徑學(xué)會描述問題避免 xy-problem避免大而空的問題學(xué)會什么時候貼圖學(xué)會什么時候要圈出重點學(xué)會什么時候貼文字什么是弱智一樣的提問別動輒聲稱找到 Bug描述問題癥狀而非你的猜測描述目標而不是過程清楚明確的表達你的問題以及需求詢問有關(guān)代碼的問題時問題解決后問題解決后,加個簡短的補充說明總結(jié)問題如何解讀答案RTFM 和 STFW:如何知道你已完全搞砸了如果還是搞不懂不該問的問題好問題與蠢問題如果得不到回答如何更好地回答問題附錄使用易于讀取且標準的文件格式發(fā)送問題
聲明
本文是在 《Stop Ask Questions The Stupid Ways》 和 《How To Ask Questions The Smart Way》基礎(chǔ)上寫的,將兩個合在了一起,并刪了了大量的陳述以保證簡潔,同時加了一些個人參考,原文的鏈接將在文章中提供
《Stop Ask Questions The Stupid Ways》
Github 中文翻譯地址 https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways/blob/master/README.md
《How To Ask Questions The Smart Way》
Copyright ? 2001,2006,2014 Eric S. Raymond, Rick Moen
本指南英文版版權(quán)為 Eric S. Raymond, Rick Moen 所有。
原文網(wǎng)址:http://www.catb.org/~esr/faqs/smart-questions.html
Github 中文翻譯地址 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way
Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin, 2015 by Ryan Wu
簡介
當你拋出一個技術(shù)問題時,最終是否能得到有用的回答,往往取決于你所提問和追問的方式。本指南將教你如何正確的提問以獲得你滿意的答案。
首先你應(yīng)該明白,人們喜愛有挑戰(zhàn)性的問題,或者能激發(fā)他們思維的好問題。如果我們并非如此,那我們也不會成為你想詢問的對象。如果你給了我們一個值得反復(fù)咀嚼玩味的好問題,我們自會對你感激不盡。好問題是激勵,是厚禮。好問題可以提高我們的理解力,而且通常會暴露我們以前從沒意識到或者思考過的問題。對人們而言,"好問題!"是誠摯的大力稱贊。
盡管如此,人們有著蔑視或傲慢面對簡單問題的壞習(xí)慣,這有時讓我們看起來對新手、無知者似乎較有敵意,但其實不是那樣的。
我們不諱言我們對那些不愿思考、或者在發(fā)問前不做他們該做的事的人的蔑視。那些人是時間殺手 —— 他們只想索取,從不付出,消耗我們可用在更有趣的問題或更值得回答的人身上的時間。我們稱這樣的人為 失敗者 (由于歷史原因,我們有時把它拼作 lusers)。
我們了解這點,也從不指望每個人都對這些讓我們著迷的技術(shù)問題感興趣。盡管如此,我們回答問題的風格是指向那些真正對此有興趣并愿意主動參與解決問題的人,這一點不會變,也不該變。如果連這都變了,我們就是在降低做自己最擅長的事情上的效率。
我們(在很大程度上)是自愿的,從繁忙的生活中抽出時間來解答疑惑,而且時常被提問淹沒。所以我們無情的濾掉一些話題,特別是拋棄那些看起來像失敗者的家伙,以便更高效的利用時間來回答贏家(winner)的問題。
如果你厭惡我們的態(tài)度,高高在上,或過于傲慢,不妨也設(shè)身處地想想。我們并沒有要求你向我們屈服 —— 事實上,我們大多數(shù)人非常樂意與你平等地交流,只要你付出小小努力來滿足基本要求,我們就會歡迎你加入我們的討論。但讓我們幫助那些不愿意幫助自己的人是沒有效率的。無知沒有關(guān)系,但裝白癡就是不行。
所以,你不必在技術(shù)上很在行才能吸引的注意,但你必須表現(xiàn)出能引導(dǎo)你變得在行的特質(zhì) —— 機敏、有想法、善于觀察、樂于主動參與解決問題。如果你做不到這些使你與眾不同的事情,我們建議你花點錢找家商業(yè)公司簽個技術(shù)支持服務(wù)合同(或者培訓(xùn)),而不是要求其他個人無償?shù)貛椭恪?/p>
如果你決定向我們求助,當然你也不希望被視為失敗者,更不愿成為失敗者中的一員。能立刻得到快速并有效答案的最好方法,就是像贏家那樣提問 —— 聰明、自信、有解決問題的思路,只是偶爾在特定的問題上需要獲得一點幫助。
本文以《How To Ask Questions The Smart Way》的內(nèi)容為主線,在其中穿插一些其他建議和工作中遇到的一些示例,主要通過在提問之前、當你提問時、得到答案后、反思總結(jié)等章節(jié)來描述一次提問的整個過程,希望你能從獲取到幫助。
你真的準備好了嗎?
| 什么鬼? | 咋回事? | 怎么辦? | 救命?。?! | 求求你了??! |
|---|---|---|---|---|
| 自己 google | 自己 google | 自己 google | 自己 google 了嗎 | 不是叫你 google 了嗎 |
Stop Ask Questions The Stupid Ways在你提問之前
在你準備要通過電子郵件、新聞群組或者聊天室提出技術(shù)問題前,請先做到以下事情:
1.?嘗試在你準備提問的論壇的舊文章中搜索答案。
2.?嘗試上網(wǎng)搜索以找到答案。
3.?嘗試閱讀手冊以找到答案。
4.?嘗試閱讀常見問題文件(FAQ)以找到答案。
5.?嘗試自己檢查或試驗以找到答案。
6.?向你身邊的強者朋友打聽以找到答案。
7.?如果你是程序開發(fā)者,請嘗試閱讀源代碼以找到答案。
當你提出問題的時候,請先表明你已經(jīng)做了上述的努力;這將有助于樹立你并不是一個不勞而獲且浪費別人的時間的提問者。如果你能一并表達在做了上述努力的過程中所學(xué)到的東西會更好,因為我們更樂于回答那些表現(xiàn)出能從答案中學(xué)習(xí)的人的問題。
運用某些策略,比如先用 Google 搜索你所遇到的各種錯誤信息(搜索 Google 論壇和網(wǎng)頁),這樣很可能直接就找到了能解決問題的文件或郵件列表線索。即使沒有結(jié)果,在郵件列表或新聞組尋求幫助時加上一句 我在 Google 中搜過下列句子但沒有找到什么有用的東西 也是件好事,即使它只是表明了搜索引擎不能提供哪些幫助。這么做(加上搜索過的字串)也讓遇到相似問題的其他人能被搜索引擎引導(dǎo)到你的提問來。
別著急,不要指望幾秒鐘的 Google 搜索就能解決一個復(fù)雜的問題。在向?qū)<仪笾?,再閱讀一下常見問題文件(FAQ)、放輕松、坐舒服一些,再花點時間思考一下這個問題。相信我們,他們能從你的提問看出你做了多少閱讀與思考,如果你是有備而來,將更有可能得到解答。不要將所有問題一股腦拋出,只因你的第一次搜索沒有找到答案(或者找到太多答案)。
準備好你的問題,再將問題仔細的思考過一遍,因為草率的發(fā)問只能得到草率的回答,或者根本得不到任何答案。越是能表現(xiàn)出在尋求幫助前你為解決問題所付出的努力,你越有可能得到實質(zhì)性的幫助。
小心別問錯了問題。如果你的問題基于錯誤的假設(shè),某個人多半會一邊在心里想著蠢問題…, 一邊用無意義的字面解釋來答復(fù)你,希望著你會從問題的回答(而非你想得到的答案)中汲取教訓(xùn)。
絕不要自以為夠格得到答案,你沒有;你并沒有。畢竟你沒有為這種服務(wù)支付任何報酬。你將會是自己去掙到一個答案,靠提出有內(nèi)涵的、有趣的、有思維激勵作用的問題 —— 一個有潛力能貢獻社區(qū)經(jīng)驗的問題,而不僅僅是被動的從他人處索取知識。
另一方面,表明你愿意在找答案的過程中做點什么是一個非常好的開端。誰能給點提示?、我的這個例子里缺了什么?以及我應(yīng)該檢查什么地方比請把我需要的確切的過程貼出來更容易得到答復(fù)。因為你表現(xiàn)出只要有人能指個正確方向,你就有完成它的能力和決心。
提問前你必須需要知道的事情
要知道,
Free的正確翻譯是自由,而非 `免費`。要知道,愿意回答問題的人,都是 可愛 的人。
要知道,向幫助你的人
付費是一個高尚的行為。即使回答你的人不是為了錢。要知道,
花錢買時間是一個常識。如果你不能認同,要么你錢包窮,要么你思想窮。要知道,給對方發(fā)工資的不是你或者你老板。
要知道,提問的時候你才是 孫子,幫助你的人是 大爺。
要知道,不回答你的問題對其他人沒有任何損失。
要知道,
準確描述一件事情是一項基本生存技能。要學(xué)會如何提問要知道,
搜索是一項基本生存技能,學(xué)不會用 Google 的話,你可能真的不適合你所從事的行業(yè)。要知道,
英文是一項基本生存技能,不認識英文的話,你可能真的不適合你所從事的行業(yè)。
在你提問時
幼兒園的小朋友都知道要有禮貌
請問
??...問題描述...
謝謝
彬彬有禮,多用請和謝謝您的關(guān)注,或謝謝你的關(guān)照。讓大家都知道你對他們花時間免費提供幫助心存感激。
如果你有一串的問題待解決,客氣一點肯定會增加你得到有用回應(yīng)的機會。
低聲下氣不能代替你的功課
有些人明白他們不該粗魯或傲慢的提問并要求得到答復(fù),但他們選擇另一個極端 —— 低聲下氣:我知道我只是個可悲的新手,一個擼瑟,但...。這既使人困擾,也沒有用,尤其是伴隨著與實際問題含糊不清的描述時更令人反感。
別用原始靈長類動物的把戲來浪費你我的時間。取而代之的是,盡可能清楚地描述背景條件和你的問題情況。這比低聲下氣更好地定位了你的位置。
有時網(wǎng)頁論壇會設(shè)有專為新手提問的版面,如果你真的認為遇到了初學(xué)者的問題,到那去就是了,但一樣別那么低聲下氣。
去掉無意義的提問句
避免用無意義的話結(jié)束提問,例如有人能幫我嗎?或者這有答案嗎?。
首先:如果你對問題的描述不是很好,這樣問更是畫蛇添足。
其次:由于這樣問是畫蛇添足,人們會很厭煩你 —— 而且通常會用邏輯上正確,但毫無意義的回答來表示他們的蔑視, 例如:沒錯,有人能幫你或者不,沒答案。
一般來說,避免用 是或否、對或錯、有或沒有類型的問句,除非你想得到是或否類型的回答。
慎選提問的途徑
小心選擇你要提問的場合。如果你做了下述的事情,你很可能被忽略掉:
在與主題不合的論壇上貼出你的問題。
在探討進階技術(shù)問題的論壇張貼非常初級的問題;反之亦然。
在太多的不同新聞群組上重復(fù)轉(zhuǎn)貼同樣的問題(cross-post)。
向既非熟人也沒有義務(wù)解決你問題的人發(fā)送私人電郵。
注意:不要在一個進階技術(shù)群問非常初級的問題,否則他們只會回你看文檔去或者搜索去。比如你在 Netty 應(yīng)用群問 Java 基礎(chǔ)語法問題
學(xué)會描述問題
向別人提問的時候,要學(xué)會正確的描述問題。
使用有意義且描述明確的標題
用清晰、正確、精準且語法正確的語句
使用易于讀取且標準的文件格式發(fā)送問題(這個換位思考一下,把你想做信息接收者,重新審視你的格式是否易讀)
按發(fā)生時間先后列出問題癥狀(某些問題會在運行一定的時間間隔發(fā)生)
精確地描述問題并言之有物
別用喋喋不休的
幫幫忙、跪求、急(更別說救命?。。。?!這樣讓人反感的話,用這種標題會被條件反射式地忽略)來浪費這個機會。
把對方當成你的老板,你在給他做報告。要用最精煉的文字和圖片,向?qū)Ψ疥U述明白一個事情的來龍去脈。
仔細、清楚地描述你的問題或 Bug 的癥狀。
描述問題發(fā)生的環(huán)境(機器配置、操作系統(tǒng)、應(yīng)用程序、以及相關(guān)的信息),提供經(jīng)銷商的發(fā)行版和版本號(如:
Fedora Core 4、Slackware 9.1等)。描述在提問前你是怎樣去研究和理解這個問題的。
描述在提問前為確定問題而采取的診斷步驟。
描述最近做過什么可能相關(guān)的硬件或軟件變更。
盡可能的提供一個可以
重現(xiàn)這個問題的可控環(huán)境的方法。
盡量去揣測你的老板會怎樣反問你,在你提問之前預(yù)先將老板們可能遇到的問題回答一遍。
要知道,你不是我追的妹子,我沒有時間來猜你想要什么。
記住,給別人的條件越多,你的問題解決越快。因為這不是解密游戲。
請問一個關(guān)于
什么的問題。我想要達到
什么樣效果,但是我這樣做出現(xiàn)了什么樣的問題。報錯日志是
這樣的。(要學(xué)會畫關(guān)鍵字)我嘗試過
什么方法來解決。我嘗試搜索過了
什么關(guān)鍵字,在里面找到了這些 URL的回答,嘗試了還是沒有解決問題。我用的是
什么操作系統(tǒng),版本號是多少。我用的是
什么軟件,版本號是多少。謝謝
千萬別認為只有別人幫助你之后才需要說
謝謝。蠢問題:救命?。∥业墓P記本電腦不能正常顯示了!
聰明問題:X.org 6.8.1 的鼠標光標會變形,某牌顯卡 MV1005 芯片組。
更聰明問題:X.org 6.8.1 的鼠標光標,在某牌顯卡 MV1005 芯片組環(huán)境下 - 會變形。
避免 xy-problem
參考地址: http://xyproblem.info/
XY Problem 表示
提問者想要解決 原問題 X ,且覺得解決了 引申問題 Y 就能解決 X 問題
提問者對外提出了解決 Y 的的請求
回答者幫助提問者解決 Y 問題。(浪費了回答者和提問者雙方的時間)
然而, 最終 Y 問題可能并不是 X 問題的一個合適的解決方法
因此, 提問者要避免創(chuàng)造這樣的修羅場, 需要學(xué)會在問題之初就準確描述自己的根本問題。
避免大而空的問題
問題越大越空越?jīng)]有人會回答問題,避免提出讓人尷尬的問題。
群里有人會 Java 嗎?你這能成功勸退所有的想幫你的人群里有人會 MyBatis 嗎?雖然問題小了,但是還會勸退所有人有大佬在嗎?我有個問題?這樣問,你覺得會有人回答你嗎
不要在問問題之前,先提出一個假大空的問題,問題描述的越具體,嘗試回答的人越多。
學(xué)會什么時候貼圖
對方發(fā)來一大屏幕文本代碼,這個還找個屁問題呀
學(xué)會什么時候要圈出重點
千萬不要認為別人的頻率和你是同步的,然后像這樣扔出一張圖一個表情就了事了。
在工作中, 你@的人可能會多問一句什么情況。但是在 IM 聊天群里面,就沒有這么好運氣了。
img如下很難嗎?
@xxx,我這邊訪問不了 git 倉庫。
環(huán)境是:?環(huán)境是什么。
img學(xué)會什么時候貼文字
對于一些需用接收者根據(jù)某些條件才能復(fù)現(xiàn)的問題,不僅要提供截圖,還需要提供文字的必要的參數(shù)之類。
比如你在前后端聯(lián)調(diào)的過程中,只給了后端一個截圖,那后端怎么根據(jù)截圖中的參數(shù)復(fù)現(xiàn)一次呢?這種情況必須再提供文字版的參數(shù)、域名等必要的參數(shù)。
image-20210828111152263什么是弱智一樣的提問
img別動輒聲稱找到 Bug
當你在使用軟件中遇到問題,除非你非常、非常的有根據(jù),不要動輒聲稱找到了 Bug。提示:除非你能提供解決問題的源代碼補丁,或者提供回歸測試來表明前一版本中行為不正確,否則你都多半不夠完全確信。這同樣適用在網(wǎng)頁和文件,如果你(聲稱)發(fā)現(xiàn)了文件的Bug,你應(yīng)該能提供相應(yīng)位置的修正或替代文件。
請記得,還有許多其它使用者沒遇到你發(fā)現(xiàn)的問題,否則你在閱讀文件或搜索網(wǎng)頁時就應(yīng)該發(fā)現(xiàn)了(你在抱怨前已經(jīng)做了這些,是吧?)。這也意味著很有可能是你弄錯了而不是軟件本身有問題。
編寫軟件的人總是非常辛苦地使它盡可能完美。如果你聲稱找到了 Bug,也就是在質(zhì)疑他們的能力,即使你是對的,也有可能會冒犯到其中某部分人。當你在標題中嚷嚷著有Bug時,這尤其嚴重。
提問時,即使你私下非常確信已經(jīng)發(fā)現(xiàn)一個真正的 Bug,最好寫得像是你做錯了什么。如果真的有 Bug,你會在回復(fù)中看到這點。這樣做的話,如果真有 Bug,維護者就會向你道歉,這總比你惹惱別人然后欠別人一個道歉要好一點。
描述問題癥狀而非你的猜測
告訴黑客們你認為問題是怎樣造成的并沒什么幫助。(如果你的推斷如此有效,還用向別人求助嗎?),因此要確信你原原本本告訴了他們問題的癥狀,而不是你的解釋和理論;讓黑客們來推測和診斷。如果你認為陳述自己的猜測很重要,清楚地說明這只是你的猜測,并描述為什么它們不起作用。
蠢問題
我在編譯內(nèi)核時接連遇到 SIG11 錯誤,
我懷疑某條飛線搭在主板的走線上了,這種情況應(yīng)該怎樣檢查最好?
聰明問題
我的組裝電腦是 FIC-PA2007 主機板搭載 AMD K6/233 CPU(威盛 Apollo VP2 芯片組),
256MB Corsair PC133 SDRAM 內(nèi)存,在編譯內(nèi)核時,從開機 20 分鐘以后就頻頻產(chǎn)生 SIG11 錯誤,
但是在頭 20 分鐘內(nèi)從沒發(fā)生過相同的問題。重新啟動也沒有用,但是關(guān)機一晚上就又能工作 20 分鐘。
所有內(nèi)存都換過了,沒有效果。相關(guān)部分的標準編譯記錄如下…。
由于以上這點似乎讓許多人覺得難以配合,這里有句話可以提醒你:所有的診斷專家都來自密蘇里州。 美國國務(wù)院的官方座右銘則是:讓我看看(出自國會議員 Willard D. Vandiver 在 1899 年時的講話:我來自一個出產(chǎn)玉米,棉花,牛蒡和民主黨人的國家,滔滔雄辯既不能說服我,也不會讓我滿意。我來自密蘇里州,你必須讓我看看。) 針對診斷者而言,這并不是一種懷疑,而只是一種真實而有用的需求,以便讓他們看到的是與你看到的原始證據(jù)盡可能一致的東西,而不是你的猜測與歸納的結(jié)論。所以,大方的展示給我們看吧!
描述目標而不是過程
如果你想弄清楚如何做某事(而不是報告一個 Bug),在開頭就描述你的目標,然后才陳述重現(xiàn)你所卡住的特定步驟。
經(jīng)常尋求技術(shù)幫助的人在心中有個更高層次的目標,而他們在自以為能達到目標的特定道路上被卡住了,然后跑來問該怎么走,但沒有意識到這條路本身就有問題。結(jié)果要費很大的勁才能搞定。
蠢問題
我怎樣才能從某繪圖程序的顏色選擇器中取得十六進制的的 RGB 值?
聰明問題
我正試著用替換一幅圖片的色碼(color table)成自己選定的色碼,我現(xiàn)在知道的唯一方法是編輯每個色碼區(qū)塊(table slot),
但卻無法從某繪圖程序的顏色選擇器取得十六進制的的 RGB 值。
第二種提問法比較聰明,你可能得到像是建議采用另一個更合適的工具的回復(fù)。
清楚明確的表達你的問題以及需求
漫無邊際的提問是近乎無休無止的時間黑洞。最有可能給你有用答案的人通常也正是最忙的人(他們忙是因為要親自完成大部分工作)。這樣的人對無節(jié)制的時間黑洞相當厭惡,所以他們也傾向于厭惡那些漫無邊際的提問。
如果你明確表述需要回答者做什么(如提供指點、發(fā)送一段代碼、檢查你的補丁、或是其他等等),就最有可能得到有用的答案。因為這會定出一個時間和精力的上限,便于回答者能集中精力來幫你。這么做很棒。
要理解專家們所處的世界,請把專業(yè)技能想像為充裕的資源,而回復(fù)的時間則是稀缺的資源。你要求他們奉獻的時間越少,你越有可能從真正專業(yè)而且很忙的專家那里得到解答。
所以,界定一下你的問題,使專家花在辨識你的問題和回答所需要付出的時間減到最少,這技巧對你有用答案相當有幫助 —— 但這技巧通常和簡化問題有所區(qū)別。因此,問我想更好的理解 X,可否指點一下哪有好一點說明?通常比問你能解釋一下 X 嗎?更好。如果你的代碼不能運作,通常請別人看看哪里有問題,比要求別人替你改正要明智得多。
詢問有關(guān)代碼的問題時
別要求他人幫你調(diào)試有問題的代碼,不提示一下應(yīng)該從何入手。張貼幾百行的代碼,然后說一聲:它不能工作會讓你完全被忽略。只貼幾十行代碼,然后說一句:在第七行以后,我期待它顯示 <x>,但實際出現(xiàn)的是 <y>比較有可能讓你得到回應(yīng)。
最有效描述程序問題的方法是提供最精簡的 Bug 展示測試用例(bug-demonstrating test case)。什么是最精簡的測試用例?那是問題的縮影;一小個程序片段能剛好展示出程序的異常行為,而不包含其他令人分散注意力的內(nèi)容。怎么制作最精簡的測試用例?如果你知道哪一行或哪一段代碼會造成異常的行為,復(fù)制下來并加入足夠重現(xiàn)這個狀況的代碼(例如,足以讓這段代碼能被編譯/直譯/被應(yīng)用程序處理)。如果你無法將問題縮減到一個特定區(qū)塊,就復(fù)制一份代碼并移除不影響產(chǎn)生問題行為的部分??傊?,測試用例越小越好。
一般而言,要得到一段相當精簡的測試用例并不太容易,但永遠先嘗試這樣做的是種好習(xí)慣。這種方式可以幫助你了解如何自行解決這個問題 —— 而且即使你的嘗試不成功,黑客們也會看到你在嘗試取得答案的過程中付出了努力,這可以讓他們更愿意與你合作。
如果你只是想讓別人幫忙審查(Review)一下代碼,在信的開頭就要說出來,并且一定要提到你認為哪一部分特別需要關(guān)注以及為什么。
問題解決后
問題解決后,加個簡短的補充說明
問題解決后,向所有幫助過你的人發(fā)個說明,讓他們知道問題是怎樣解決的,并再一次向他們表示感謝。如果問題在新聞組或者郵件列表中引起了廣泛關(guān)注,應(yīng)該在那里貼一個說明比較恰當。
最理想的方式是向最初提問的話題回復(fù)此消息,并在標題中包含已修正,已解決或其它同等含義的明顯標記。在人來人往的郵件列表里,一個看見討論串問題 X和問題 X - 已解決的潛在回復(fù)者就明白不用再浪費時間了(除非他個人覺得問題 X的有趣),因此可以利用此時間去解決其它問題。
補充說明不必很長或是很深入;簡單的一句你好,原來是網(wǎng)線出了問題!謝謝大家 – Bill比什么也不說要來的好。事實上,除非結(jié)論真的很有技術(shù)含量,否則簡短可愛的小結(jié)比長篇大論更好。說明問題是怎樣解決的,但大可不必將解決問題的過程復(fù)述一遍。
對于有深度的問題,張貼調(diào)試記錄的摘要是有幫助的。描述問題的最終狀態(tài),說明是什么解決了問題,在此之后才指明可以避免的盲點。避免盲點的部分應(yīng)放在正確的解決方案和其它總結(jié)材料之后,而不要將此信息搞成偵探推理小說。列出那些幫助過你的名字,會讓你交到更多朋友。
除了有禮貌和有內(nèi)涵以外,這種類型的補充也有助于他人在郵件列表/新聞群組/論壇中搜索到真正解決你問題的方案,讓他們也從中受益。
至少,這種補充有助于讓每位參與協(xié)助的人因問題的解決而從中得到滿足感。如果你自己不是技術(shù)專家或者黑客,那就相信我們,這種感覺對于那些你向他們求助的大師或者專家而言,是非常重要的。問題懸而未決會讓人灰心;黑客們渴望看到問題被解決。好人有好報,滿足他們的渴望,你會在下次提問時嘗到甜頭。
思考一下怎樣才能避免他人將來也遇到類似的問題,自問寫一份文件或加個常見問題(FAQ)會不會有幫助。如果是的話就將它們發(fā)給維護者。
在黑客中,這種良好的后繼行動實際上比傳統(tǒng)的禮節(jié)更為重要,也是你如何透過善待他人而贏得聲譽的方式,這是非常有價值的資產(chǎn)。
總結(jié)問題
吾日三省吾身
嘗試去總結(jié)反省這次描述問題和尋求答案之中的不足,并嘗試去改變
這個問題是我第一次問嗎?(反復(fù)被同一個問題難度說明本身就沒有進步)
提出問題是不是被要求去看文檔了嗎?(如果是,是因為我沒看文檔,還是漏看了,還是文檔不清楚,還是自身水平無法理解文檔)
提出問題是不是被要求去Google了嗎?(如果是,是因為我沒搜索,還是沒搜索到,那其他人是怎么搜索到的)
提出問題后被要求再次描述問題了嗎?(是自己描述問題的不清楚,還是其他原因,下次能不能提前處理下)
是否在被逼問再次描述問題時,自己已經(jīng)知道解決思路了?(如果是,那下次是不是自己可以多深入的去描述問題)
為了解決這個問題我嘗試了什么方法,解答者用了什么方法?(從中找到區(qū)別)
嘗試總結(jié)問題:
去嘗試總結(jié)問題和答案,看看是不是有固定的模式,不要嘗試用腦子去記憶答案,腦子是記不住的,嘗試去其他方法記錄,比如筆記、博客之類的。總結(jié)的方案很多,可以去往往找怎么總結(jié)。
如何解讀答案
RTFM 和 STFW:如何知道你已完全搞砸了
有一個古老而神圣的傳統(tǒng):如果你收到RTFM (Read The Fucking Manual)的回應(yīng),回答者認為你應(yīng)該去讀他媽的手冊。當然,基本上他是對的,你應(yīng)該去讀一讀。
RTFM 有一個年輕的親戚。如果你收到STFW(Search The Fucking Web)的回應(yīng),回答者認為你應(yīng)該到他媽的網(wǎng)上搜索。那人多半也是對的,去搜索一下吧。(更溫和一點的說法是 Google 是你的朋友!)
在論壇,你也可能被要求去爬爬論壇的舊文。事實上,有人甚至可能熱心地為你提供以前解決此問題的討論串。但不要依賴這種關(guān)照,提問前應(yīng)該先搜索一下舊文。
通常,用這兩句之一回答你的人會給你一份包含你需要內(nèi)容的手冊或者一個網(wǎng)址,而且他們打這些字的時候也正在讀著。這些答復(fù)意味著回答者認為
你需要的信息非常容易獲得;
你自己去搜索這些信息比灌給你,能讓你學(xué)到更多。
你不應(yīng)該因此不爽;依照黑客的標準,他已經(jīng)表示了對你一定程度的關(guān)注,而沒有對你的要求視而不見。你應(yīng)該對他祖母般的慈祥表示感謝。
如果還是搞不懂
如果你看不懂回應(yīng),別立刻要求對方解釋。像你以前試著自己解決問題時那樣(利用手冊,F(xiàn)AQ,網(wǎng)絡(luò),身邊的高手),先試著去搞懂他的回應(yīng)。如果你真的需要對方解釋,記得表現(xiàn)出你已經(jīng)從中學(xué)到了點什么。
比方說,如果我回答你:看來似乎是 zentry 卡住了;你應(yīng)該先清除它。,然后,這是一個很糟的后續(xù)問題回應(yīng):zentry 是什么? 好的問法應(yīng)該是這樣:哦~~~我看過說明了但是只有 -z 和 -p 兩個參數(shù)中提到了 zentries,而且還都沒有清楚的解釋如何清除它。你是指這兩個中的哪一個嗎?還是我看漏了什么?
不該問的問題
以下是幾個經(jīng)典蠢問題,以及黑客沒回答時心中所想的:
問題:我能在哪找到 X 程序或 X 資源?
問題:我怎樣用 X 做 Y?
問題:如何設(shè)定我的 shell 提示?
問題:我可以用 Bass-o-matic 文件轉(zhuǎn)換工具將 AcmeCorp 文件轉(zhuǎn)換為 TeX 格式嗎?
問題:我的程序/設(shè)定/SQL 語句沒有用
問題:我的 Windows 電腦有問題,你能幫我嗎?
問題:我的程序不會動了,我認為系統(tǒng)工具 X 有問題
問題:我在安裝 Linux(或者 X )時有問題,你能幫我嗎?
問題:我怎么才能破解 root 帳號/竊取 OP 特權(quán)/讀別人的郵件呢?
問題:我能在哪找到 X 程序或 X 資源?
回答:就在我找到它的地方啊,白癡 —— 搜索引擎的那一頭。天哪!難道還有人不會用 Google 嗎?
問題:我怎樣用 X 做 Y?
回答:如果你想解決的是 Y ,提問時別給出可能并不恰當?shù)姆椒?。這種問題說明提問者不但對 X 完全無知,也對 Y 要解決的問題糊涂,還被特定形勢禁錮了思維。最好忽略這種人,等他們把問題搞清楚了再說。
問題:如何設(shè)定我的 shell 提示??
回答:如果你有足夠的智慧提這個問題,你也該有足夠的智慧去 RTFM,然后自己去找出來。
問題:我可以用 Bass-o-matic 文件轉(zhuǎn)換工具將 AcmeCorp 文件轉(zhuǎn)換為 TeX 格式嗎?
回答:試試看就知道了。如果你試過,你既知道了答案,就不用浪費我的時間了。
問題:我的{程序/設(shè)定/SQL 語句}不工作
回答:這不算是問題吧,我對要我問你二十個問題才找得出你真正問題的問題沒興趣 —— 我有更有意思的事要做呢。在看到這類問題的時候,我的反應(yīng)通常不外如下三種
你還有什么要補充的嗎?
真糟糕,希望你能搞定。
這關(guān)我屁事?
問題:我的 Windows 電腦有問題,你能幫我嗎?
回答:能啊,扔掉微軟的垃圾,換個像 Linux 或 BSD 的開源操作系統(tǒng)吧。
注意:如果程序有官方版 Windows 或者與 Windows 有互動(如 Samba),你可以問與 Windows 相關(guān)的問題, 只是別對問題是由 Windows 操作系統(tǒng)而不是程序本身造成的回復(fù)感到驚訝, 因為 Windows 一般來說實在太爛,這種說法通常都是對的。
問題:我的程序不會動了,我認為系統(tǒng)工具 X 有問題
回答:你完全有可能是第一個注意到被成千上萬用戶反復(fù)使用的系統(tǒng)調(diào)用與函數(shù)庫文件有明顯缺陷的人,更有可能的是你完全沒有根據(jù)。不同凡響的說法需要不同凡響的證據(jù),當你這樣聲稱時,你必須有清楚而詳盡的缺陷說明文件作后盾。
問題:我在安裝 Linux(或者 X )時有問題,你能幫我嗎?
回答:不能,我只有親自在你的電腦上動手才能找到毛病。還是去找你當?shù)氐?Linux 使用群組者尋求實際的指導(dǎo)吧(你能在這兒找到使用者群組的清單)。
注意:如果安裝問題與某 Linux 的發(fā)行版有關(guān),在它的郵件列表、論壇或本地使用者群組中提問也許是恰當?shù)?。此時,應(yīng)描述問題的準確細節(jié)。在此之前,先用 Linux 和所有被懷疑的硬件作關(guān)鍵詞仔細搜索。
問題:我怎么才能破解 root 帳號/竊取 OP 特權(quán)/讀別人的郵件呢?
回答:想要這樣做,說明了你是個卑鄙小人;想找個黑客幫你,說明你是個白癡!
好問題與蠢問題
最后,我將透過舉一些例子,來說明怎樣聰明的提問;同一個問題的兩種問法被放在一起,一種是愚蠢的,另一種才是明智的。
蠢問題:
我可以在哪兒找到關(guān)于 Foonly Flurbamatic 的資料?
這種問法無非想得到 STFW 這樣的回答。
聰明問題:
我用 Google 搜索過 "Foonly Flurbamatic 2600",但是沒找到有用的結(jié)果。誰知道上哪兒去找對這種設(shè)備編程的資料?
這個問題已經(jīng) STFW 過了,看起來他真的遇到了麻煩。
蠢問題:
我從 foo 項目找來的源碼沒法編譯。它怎么這么爛?
他覺得都是別人的錯,這個傲慢自大的提問者。
聰明問題:
foo 項目代碼在 Nulix 6.2 版下無法編譯通過。我讀過了 FAQ,但里面沒有提到跟 Nulix 有關(guān)的問題。這是我編譯過程的記錄,我有什么做的不對的地方嗎?
提問者已經(jīng)指明了環(huán)境,也讀過了 FAQ,還列出了錯誤,并且他沒有把問題的責任推到別人頭上,他的問題值得被關(guān)注。
蠢問題:
我的主機板有問題了,誰來幫我?
某黑客對這類問題的回答通常是:好的,還要幫你拍拍背和換尿布嗎?,然后按下刪除鍵。
聰明問題:
我在 S2464 主機板上試過了 X 、 Y 和 Z ,但沒什么作用,我又試了 A 、 B 和 C 。請注意當我嘗試 C 時的奇怪現(xiàn)象。顯然 florbish 正在 grommicking,但結(jié)果出人意料。通常在 Athlon MP 主機板上引起 grommicking 的原因是什么?有誰知道接下來我該做些什么測試才能找出問題?
這個家伙,從另一個角度來看,值得去回答他。他表現(xiàn)出了解決問題的能力,而不是坐等天上掉答案。
在最后一個問題中,注意告訴我答案和給我啟示,指出我還應(yīng)該做什么診斷工作之間微妙而又重要的區(qū)別。
事實上,后一個問題源自于 2001 年 8 月在 Linux 內(nèi)核郵件列表(lkml)上的一個真實的提問。我(Eric)就是那個提出問題的人。我在 Tyan S2464 主板上觀察到了這種無法解釋的鎖定現(xiàn)象,列表成員們提供了解決這一問題的重要信息。
通過我的提問方法,我給了別人可以咀嚼玩味的東西;我設(shè)法讓人們很容易參與并且被吸引進來。我顯示了自己具備和他們同等的能力,并邀請他們與我共同探討。通過告訴他們我所走過的彎路,以避免他們再浪費時間,我也表明了對他們寶貴時間的尊重。
事后,當我向每個人表示感謝,并且贊賞這次良好的討論經(jīng)歷的時候, 一個 Linux 內(nèi)核郵件列表的成員表示,他覺得我的問題得到解決并非由于我是這個列表中的名人,而是因為我用了正確的方式來提問。
黑客從某種角度來說是擁有豐富知識但缺乏人情味的家伙;我相信他是對的,如果我像個乞討者那樣提問,不論我是誰,一定會惹惱某些人或者被他們忽視。他建議我記下這件事,這直接導(dǎo)致了本指南的出現(xiàn)。
如果得不到回答
如果仍得不到回答,請不要以為我們覺得無法幫助你。有時只是看到你問題的人不知道答案罷了。沒有回應(yīng)不代表你被忽視,雖然不可否認這種差別很難區(qū)分。
總的來說,簡單的重復(fù)張貼問題是個很糟的點子。這將被視為無意義的喧鬧。有點耐心,知道你問題答案的人可能生活在不同的時區(qū),可能正在睡覺,也有可能你的問題一開始就沒有組織好。
你可以通過其他渠道獲得幫助,這些渠道通常更適合初學(xué)者的需要。
有許多網(wǎng)上的以及本地的使用者群組,由熱情的軟件愛好者(即使他們可能從沒親自寫過任何軟件)組成。通常人們組建這樣的團體來互相幫助并幫助新手。
另外,你可以向很多商業(yè)公司尋求幫助,不論公司大還是小。別為要付費才能獲得幫助而感到沮喪!畢竟,假使你的汽車發(fā)動機汽缸密封圈爆掉了 —— 完全可能如此 —— 你還得把它送到修車鋪,并且為維修付費。就算軟件沒花費你一分錢,你也不能強求技術(shù)支持總是免費的。
對像是 Linux 這種大眾化的軟件,每個開發(fā)者至少會對應(yīng)到上萬名使用者。根本不可能由一個人來處理來自上萬名使用者的求助電話。要知道,即使你要為這些協(xié)助付費,和你所購買的同類軟件相比,你所付出的也是微不足道的(通常封閉源代碼軟件的技術(shù)支持費用比開源軟件的要高得多,且內(nèi)容也沒那么豐富)。
如何更好地回答問題
態(tài)度和善一點。問題帶來的壓力常使人顯得無禮或愚蠢,其實并不是這樣。
對初犯者私下回復(fù)。對那些坦誠犯錯之人沒有必要當眾羞辱,一個真正的新手也許連怎么搜索或在哪找常見問題都不知道。
如果你不確定,一定要說出來!一個聽起來權(quán)威的錯誤回復(fù)比沒有還要糟,別因為聽起來像個專家很好玩,就給別人亂指路。要謙虛和誠實,給提問者與同行都樹個好榜樣。
如果幫不了忙,也別妨礙他。不要在實際步驟上開玩笑,那樣也許會毀了使用者的設(shè)置 —— 有些可憐的呆瓜會把它當成真的指令。
試探性的反問以引出更多的細節(jié)。如果你做得好,提問者可以學(xué)到點東西 —— 你也可以。試試將蠢問題轉(zhuǎn)變成好問題,別忘了我們都曾是新手。
盡管對那些懶蟲抱怨一聲 RTFM 是正當?shù)?,能指出文件的位置(即使只是建議個 Google 搜索關(guān)鍵詞)會更好。
如果你決定回答,就請給出好的答案。當別人正在用錯誤的工具或方法時別建議笨拙的權(quán)宜之計(workaround),應(yīng)推薦更好的工具,重新界定問題。
正面的回答問題!如果這個提問者已經(jīng)很深入的研究而且也表明已經(jīng)試過 X 、 Y 、 Z 、 A 、 B 、 C 但沒得到結(jié)果,回答 試試看 A 或是 B 或者 試試 X 、 Y 、 Z 、 A 、 B 、 C 并附上一個鏈接一點用都沒有。
幫助你的社區(qū)從問題中學(xué)習(xí)。當回復(fù)一個好問題時,問問自己如何修改相關(guān)文件或常見問題文件以免再次解答同樣的問題?,接著再向文件維護者發(fā)一份補丁。
如果你是在研究一番后才做出的回答,展現(xiàn)你的技巧而不是直接端出結(jié)果。畢竟授人以魚不如授人以漁。
附錄
使用易于讀取且標準的文件格式發(fā)送問題
如果你人為地將問題搞得難以閱讀,它多半會被忽略,人們更愿讀易懂的問題,所以:
使用純文字而不是 HTML (關(guān)閉 HTML 并不難)。
使用 MIME 附件通常是可以的,前提是真正有內(nèi)容(譬如附帶的源代碼或 patch),而不僅僅是郵件程序生成的模板(譬如只是信件內(nèi)容的拷貝)。
不要發(fā)送一段文字只是一行句子但自動換行后會變成多行的郵件(這使得回復(fù)部分內(nèi)容非常困難)。設(shè)想你的讀者是在 80 個字符寬的終端機上閱讀郵件,最好設(shè)置你的換行分割點小于 80 字。
但是,對一些特殊的文件不要設(shè)置固定寬度(譬如日志文件拷貝或會話記錄)。數(shù)據(jù)應(yīng)該原樣包含,讓回復(fù)者有信心他們看到的是和你看到的一樣的東西。
在英語論壇中,不要使用
Quoted-PrintableMIME 編碼發(fā)送消息。這種編碼對于張貼非 ASCII 語言可能是必須的,但很多郵件程序并不支持這種編碼。當它們處理換行時,那些文本中四處散布的=20符號既難看也分散注意力,甚至有可能破壞內(nèi)容的語意。絕對,永遠不要指望黑客們閱讀使用封閉格式編寫的文檔,像微軟公司的 Word 或 Excel 文件等。大多數(shù)黑客對此的反應(yīng)就像有人將還在冒熱氣的豬糞倒在你家門口時你的反應(yīng)一樣。即便他們能夠處理,他們也很厭惡這么做。
如果你從使用 Windows 的電腦發(fā)送電子郵件,關(guān)閉微軟愚蠢的
智能引號功能 (從[選項] > [校訂] > [自動校正選項],勾選掉智能引號單選框),以免在你的郵件中到處散布垃圾字符。在論壇,勿濫用
表情符號和HTML功能(當它們提供時)。一兩個表情符號通常沒有問題,但花哨的彩色文本傾向于使人認為你是個無能之輩。過濫地使用表情符號、色彩和字體會使你看來像個傻笑的小姑娘。這通常不是個好主意,除非你只是對性而不是對答案感興趣。
如果你使用圖形用戶界面的郵件程序(如微軟公司的 Outlook 或者其它類似的),注意它們的默認設(shè)置不一定滿足這些要求。大多數(shù)這類程序有基于選單的查看源代碼命令,用它來檢查發(fā)送文件夾中的郵件,以確保發(fā)送的是純文本文件同時沒有一些奇怪的字符。
