提出問題的智慧

在黑客世界裡,當提出一個技術問題時,你能獲得怎樣的應答?這決定於於挖出解答的困難程度,一樣決定於於你提出問題的辦法。本指南旨在幫忙你增長發問技法,以取得你最想要的解答。

  首先你務必清楚,黑客們只特別喜愛困難而繁重的擔任的工作,還是能激發它們思惟的好問題。 如果不然,我們還來乾嗎?假如你有值當我們反反復復咀嚼玩味的好問題,我們自會對你感激涕零。好問題是激發鼓勵,是厚禮,可以增長我們的了解力,並且通例會顯露我們曾經從沒認識到還是深刻思考過的問題。對黑客而言,『問得好!』是衷心的大力贊美。


  盡管黑客們有鄙視簡單問題和不友好的惡名,有時候看起來仿佛好象我們對生手,對知識匱竭者懷有敵意,但實際上不是那樣子的。


  我們沒想到隱藏對這麼一點人的鄙視–它們不願深刻思考,還是在發問前不去完成它們應當做的事。這種人只會謀害時間–它們只願索要,從不支付,無緣無故耗費我們的時間,而我們本可以把時間用在更有趣兒的問題還是更值當應答的個人生命上。 我們稱這麼的人為『敗績者』(因為歷史端由,我們有時候把它拼作『lusers』)。


  我們在非常大程度上歸屬志願者,從不得空的生存中抽出時間來解惑解答疑問,並且時不時被提出問題漫過。所以我們無情的濾掉一點話題,尤其是遺棄那一些看起來象敗績者的家伙,以便更高效的利用時間來應答勝利者的問題。


  假如你感到我們過於驕慢的舉止神情讓你不順眼,讓你抱屈,無防推己及人想想。我們並沒有要求你向我們屈撓–事情的真實情況上,我們中的大部分數人最喜歡公平買賣商品然而了,只要你支付小小建力盡量來滿意最最低限度的要求,我們便會熱烈歡迎你參加到我們的文化中來。但讓我們幫忙那一些不願意幫忙自個兒的人是沒有 意義的。假如你不可以接納這種『不平等看待』,我們提議你花點錢找家經濟活動企業簽個技術支持協議得了,別向黑客請求給予幫忙。


  假如你表決向我們抱佛腳,當然不期望被視為敗績者,更不願變成敗績者中的一員。馬上獲得管用解答的最好辦法,就是象勝利者那樣子提出問題 —— 伶俐、自信、有解決問題的思考的線索,只是間或在特別指定的問題上需求取得一點兒幫忙。


 
= 提出問題之前 =


  在通電流通過郵、新聞組還是談天室提出技術問題前,查緝你有沒有做到:




1. 通讀手冊,試著自個兒找解答。
2. 在FAQ裡找解答(一份保護得好的FAQ可以應有盡有:)。
3. 在網上搜索(私人引薦google~~~)。
4. 向你身邊精於此道的朋友詢問。


  當你提問的時刻,首先要解釋明白在此之前你乾了些啥子;這將有助於建立你的形象:你不是一個妄圖坐享其成的討乞者,不願耗費另外的人的時間。假如提出問題者能從解答中學到物品,我們更樂於應答他的問題。


  周詳的深刻思考,准備好你的問題,不認真的發問只能獲得不認真的應答,還是根本得不到不論什麼解答。越表達出在征求幫忙前為解決問題支付的盡力盡量,你越能獲得本質性的幫忙。


  謹慎別問錯了問題。假如你的問題基於不正確的如果,平常的黑客(J. Random Hacker)通例會用無意義的字面兒詮釋來辦復你,心中想著『蠢問題…』,期望著你會從問題的應答(而非你意料得到的解答)中吸取教誨。


  決不要自以為夠資格獲得解答,你沒這種資格。畢竟你沒有作為這種服務付出不論什麼酬勞。你要自個兒去『掙』回一個解答,靠提出一個有涵養的,有趣兒的,有思惟激發鼓勵效用的問題–一個對社區的經驗有潛伏貢獻的問題,而不止只是不主動的從別人處索取知識–去掙到這個解答。


  另一方面,表明你願意在找解答的過程中做點啥子,是一個十分好的起頭。『誰能給點提醒?』、『我這個例子裡缺了啥子?』以及『我應當查緝啥子地方?』比『請把確切的過程貼出來』更容易獲得辦復。由於你顯得只要有人點撥准確的方向,你就有完成它的有經驗和誓願。



= 怎樣提出問題 =


– 小心挑選論壇
  謹慎挑選提出問題的場合。假如象下邊描寫的那樣子,你很有可能被疏忽掉還是被看作敗績者:




1. 在驢脣不對馬嘴的論壇貼出你的問題
2. 在研究討論高級技法的論壇貼掛十分初等的問題;與之相反亦然
3. 在非常多的不一樣新聞組交錯貼掛


– 用辭恰當,語法准確,拼音書寫沒有差錯
  我們從經驗中發覺,疏忽的寫文章者一般也是馬糊的深刻思考者(我敢打保票)。 應答毛手毛腳者的問題很不值當,我們寧可把時間耗在其他地方。


  准確的拼音書寫,標點符號和體積寫很關緊。
  更普通的說,假如你的提出問題寫得象個識字不多,你很可能被不重視。


  假如你在運用非民族標准語的論壇提出問題,你可以犯點拼音書寫和語法上的小錯–但決不可以在深刻思考開始工作虎(沒錯,我們能弄清兩者的作別)


– 運用涵義浩博,描寫正確的題目
  在郵件列表還是新聞組中,大約50字以內的正題題目是捕獲專家注意力 的金子機會。別用刺刺不休的『幫幫助』(更不要說『救命啊!!!!!』這 樣讓人厭惡的話)來耗費這個機緣。不要妄想用你的苦痛程度來打動我們, 別用空格接替問題的描寫,姑且有曲直常簡單不長的描寫。


  蠢問題: 救命啊!我的膝上機不可以正常顯露了!
  伶俐問題: XFree86 4.1下鼠標光標變型,Fooware MV1005的顯露芯片。


  假如你在奉復中提問,想的起來要改正內部實質意義題目,表明裡邊有一個問題。一個看起來象『Re:測試』還是『Re:新bug』的問題很難引動足夠看得起。額外,援用並刪減前文的內部實質意義,給新來的讀者留下線索。


– 非常准確描寫,信息量大



1. 小心明確的描寫癥狀。
2. 供給問題發生的背景(機器配備布置、操作系統、應用手續以及別的啥子)。
3. 解釋明白你在提出問題前是怎樣去研討和了解這個問題的。
4. 解釋明白你在提出問題前采取了啥子步驟去解決它。
5. 羅布近來做過啥子有可能有影響的硬件、軟件改變。


  盡力假想一個黑客會怎樣反詰你,在提出問題的時刻預先給他解答。


  Simon Tatham寫過一篇名為《怎麼樣管用的報告陳述Bug》的特別好短文。強力引薦你也讀一讀。


– 話不在多
  你需求供給非常准確管用的信息。這並不是要求你簡單的把成噸的出錯代碼還是數值絕對轉儲摘記到你的提出問題中。假如你有極大而復雜的測試條件,盡力把它剪裁得越小越好。


  這麼做的用法至少有三點。第1,表達出你為簡化問題支付了盡力盡量,這可以使你得 到應答的機緣增加;第二,簡化問題使你獲得有用解答的機緣增加;第三,在煉取 你的bug報告陳述的過程中,或許你自個兒就能找出問題存在的地方或作出更正。


– 只說癥狀,不說猜測
  奉告黑客們你覺得問題是怎樣引動的沒關系幫忙。(假如你的推斷這麼管用,還用向另外的人抱佛腳嗎?),因為這個要確信你元元本本奉告了它們問題的癥狀,不要加進你自個兒的了解和推論。讓黑客們來診斷吧。



蠢問題: 我在內核編譯中一再碰到SIG11不正確,我置疑某條飛線搭在主板的走線上了,這種事情狀況應當怎樣查緝最好?
伶俐問題: 我自制的一套K6/233系統,主板是FIC-PA2007 (VIA Apollo VP2芯片組),256MB Corsair PC133 SDRAM,在內核編譯中頻頻萌生SIG11不正確,從開機20分鍾往後就有這種事情狀況,開機 前20分鍾內從沒發生過。重啟也沒有用,不過關機一晚上就又能辦公20分鍾。全部 內存都換過了,沒管用果。有關局部的典型編譯記錄如下所述…。


– 按照規定的時間間順著次序列出癥狀
  對找出問題最有利的線索,往往就是問題發活著的時候的一系列操作,因為這個,你的解釋明白 應當裡面含有操作步驟,以及電腦的反響,一直到問題萌生。


  假如你的解釋明白很長(超過四個段落),在開頭簡述問題會有所幫忙,接下來按照規定的時間間順著次序詳述。這麼黑客們就曉得該在你的解釋明白中找啥子。


– 清楚你想問啥子
  不著邊際的提出問題接近於無休無止的時間坍縮星。最能給你有用解答的人也正是最忙的人(它們忙是由於要親身完成大多辦公)。這麼的人對無節制的時間坍縮星不太受涼,因為這個也可謂它們對不著邊際的提出問題半大受涼。


  假如你明確述說需求應答者做啥子(供給提議,送出一段代碼,查緝你的補丁或是別的),就最可能獲得有用的解答。這會定出一個時間和精神力的最大限度,易於應答者集中精神力來幫你,這很湊效。要了解資深專家們生存的世界,要把專業技能假想為寬裕的資源,而奉復的時間則是匱竭的資源。解決你的問題需求的時間越少,越能從沒空的資深專家口中掏出解答。


  因為這個,優化問題的結構,盡力減損資深專家們解決它所需求的時間,會有非常大的幫忙–這一般和簡化問題有所差別。因為這個,問『我想更好的了解X,能給點提醒嗎?』一般比問『你能詮釋一下子X嗎?』更好。假如你的代碼不可以辦公,問問它有啥子地方錯誤,比要求另外的人替你改正要懂事理得多。


– 別問應當自個兒解決的問題
  黑客們老是特長辯白哪一些問題應當由你自個兒解決;由於我們中的大部分數都曾自個兒解決這類問題。一樣,這些個問題得由你來擺平,你會從其中學到物品。你可以要求給點提醒,但別要求獲得完整的解決方案。


– 去除無意義的疑問
  別用無意義的話終了提出問題,例如『有人能幫我嗎?』還是『有解答嗎?』。 首先:假如你對問題的描寫不很合宜,這麼問更是多此一舉。其次:因為這 樣問是多此一舉,黑客們會很厭倦你–並且通例會用思維規律上准確的應答來表 示它們的鄙視,例如:『沒錯,有人能幫你』還是『不,沒解答』。


– 謙虛恭謹絕沒有壞處,並且常幫大忙
彬  彬有禮,多用『請』和『先道個謝了』。讓大家都曉得你對它們消耗的錢時間義務供給幫忙心存衷心感謝。不過,假如你有眾多問題沒有辦法解決,禮貌將會增加你獲得有用解答的機緣。


  (我們注意到,自打本指南宣布後,從資深黑客處獲得的惟一嚴重欠缺反饋,就是對預先稱謝這一條。一點黑客感到『先謝了』的言外之意是過後就不會再拜謝不論什麼人了。我們的提議是:都稱謝。)


– 問題目解釋題決後,加個簡單不長解釋明白
  問題目解釋題決後,向全部利過你的人發個解釋明白,讓它們曉得問題是怎樣解決的,並再一次向它們表達拜謝。假如問題在新聞組還是郵件列表中引動了廣泛關心注視,應當在那邊貼一個補給解釋明白。補給解釋明白不需要很長或是很深化;簡單的一句『你好,原來是網線出了問題!謝謝大家–Bill』比啥子也不說好強。事情的真實情況上,錯非論斷實在很有技術含量,否則簡單不長令人喜愛的小結比長篇學術論文更好。解釋明白問題是怎樣解決的,但大可不需要將解決問題的過程復述一遍。除開表達禮貌和反饋信息之外,這種補給有助於別人在郵件列表/新聞組/論壇中搜索對你有過幫忙的完整解決方案,這有可能對它們也很有用。最終(至少?),這種補給有助於全部供給過幫忙的人從其中獲得滿意感。假如你自個兒不是老手還是黑客,那就信任我們,這種感受對於那一些你向它們抱佛腳的導師還是資深專家而言,是十分關緊的。問題久拖未決會讓人灰心;黑客們迫切地盼望看見問題被解決。好人有好報,滿意它們的迫切地盼望,你會在下次貼出新問題時嘗到甜頭兒。


– 仍然不懂
  假如你不是很了解釋回答案,別馬上要求對方詮釋。象你曾經試著自個兒解決問題時那樣子(利用手冊,FAQ,網絡,身邊的聖手),去了解它。假如你實在需求對方詮釋,想的起來表達出你已經學到達點啥子。比喻說,假如我應答你:『看來仿佛好象是zEntry被阻梗了;你應當先掃除淨盡它。』,而後:一個很糟的後續問題:『zEntry是啥子?』 伶俐的問法應當是這麼:『哦~~~我看過幫忙了不過只有-z和-p兩個參變量中提到達zEntry並且還都沒有明白的詮釋:<你是指這兩個中的哪個嗎?仍然我看漏了啥子?』



= 三思然後問 =


以下是幾個經典蠢問題,以及黑客在不接受應答時的心裡所想:



問題:我能在哪找到X手續?
問題:我的手續/配備布置/SQL鄭重說明沒有用
問題:我的Windows有問題,你能幫我嗎?
問題:我在安裝Linux(還是X)時有問題,你能幫我嗎?
問題:我怎麼能力破解root帳號/偷竊OP特別的權利/讀另外的人的郵件呢?


提出問題:我能在哪找到X手續?
應答:就在我找到它的地方啊蠢貨–搜索引擎網站的那一頭。天吶!還有人不會用Google嗎?


提出問題:我的手續(配備布置、SQL鄭重說明)沒有用
應答:這不總算問題吧,我對找出你的真正問題沒興致–假如要我問你二十個問題纔找得出來的話–我有更趣味的事要做呢。


在看見這類問題的時刻,我的反響一般不外乎如下所述三種:



1. 你還有啥子要補給的嗎?
2. 真糟糕,期望你能擺平。
3. 這跟我有啥子鳥有關?


提出問題:我的Windows有問題,你能幫我嗎?
應答:能啊,拋棄萎軟的垃圾,換Linux吧。


提出問題:我在安裝Linux(還是X)時有問題,你能幫我嗎?
應答:不可以,我只有親身在你的電腦上動手能力找到毛病。仍然去找你當地的Linux用戶組征求手把兒的引導吧(你能在這兒找到用戶組的詳細登記單)。


提出問題:我怎麼能力破解root帳號/偷竊OP特別的權利/讀另外的人的郵件呢?
應答:想要這麼做,解釋明白你是個齷齪小人;想找個黑客幫你,解釋明白你是個憨子!



= 好問題,壞問題 =


  最終,我舉一點例子來解釋明白,怎樣伶俐的提出問題;同一個問題的兩種問法被放在一塊兒,一種是愚笨的,另一種纔是懂事理的。


蠢問題:我可以在哪裡找到關於Foonly Flurbamatic的資料?
// 這種問法不過意料得到『STFW』這麼的應答。


伶俐問題:我用Google搜索過『Foonly Flurbamatic 2600』,不過撲空有用的最後結果。誰曉得上哪裡去找對這種設施編程的資料?
// 這個問題已經STFW過了,看起來他實在碰到了麻煩。


蠢問題:我從FOO項目找來的源碼沒法編譯。它怎麼這樣爛?
// 他感到都是另外的人的錯,這個驕慢自大的家伙


伶俐問題:FOO項目代碼在Nulix 6.2版下沒有辦法編譯經過。我讀過了FAQ,但裡邊沒有提到跟Nulix相關的問題。這是我編譯過程的記錄,我有啥子做得錯誤的地方嗎?
// 他講清楚背景,也讀過了FAQ,還指清楚不正確,況且他沒有把問題的責任推到另外的人頭上,這個家伙值當留意。


蠢問題:我的主板有問題了,誰來幫我?
// 平常的黑客對這類問題的應答一般是:『好的,還要幫你拍拍背和換屎布嗎?』 ,而後按下刪去鍵。


伶俐問題:我在S2464主板上試過了X、Y和Z,但沒關系效用,我又試了A、B和C。請注意當我試驗C時的奇怪現象。顯然邊帶傳道輸送中顯露出來了收縮,但最後結果出人意表。在多處置器主板上引動邊帶泄露的一般端由是啥子?誰有好意思接下來我該做些啥子測試能力找出問題?
// 這個家伙,從另一個角度來看,值當去應答他。他表達出理解決問題的有經驗,而不是坐待天空掉解答。


  在最終一個問題中,注意『奉告我解答』和『給我啟發,指出我還應當做啥子診斷辦公』之間微妙而又關緊的差別。事情的真實情況上,後一個問題源自於2001年八月在Linux內核郵件列表上的一個真實的提出問題。我(Eric)就是那一個提問的人。我在Tyan S2464主板上仔細查看到達這種沒有辦法詮釋的鎖定現象,列表人員們供給理解決那一問題的關緊信息。


  經過我的提出問題辦法,我給了大家值當玩味的物品;我讓許多人很容易參加況且被吸引進來。我顯露了自個兒具有和它們同樣的有經驗,邀請它們與我並肩研究討論。我奉告它們我所走過的彎路,以防止它們再浪消耗時間間,這是一種對別人時間價值的尊重。後來,當我向每私人表達拜謝,況且贊揚這套手續(指郵件列表中的商議 –譯者注)運作得十分特別好的時刻,一個Linux內核郵件列(lkml)人員表達,問題獲得解決並非因為我是這個列表中的『著名人物』,而是由於我用了准確的形式來提出問題。我們黑客從某種角度來說是領有浩博知識但匱缺人情調的家伙;我信任他是對的,假如我象個討乞者那樣子提出問題,無論我是誰,一定會觸怒某些人還是被它們不重視。他提議我記下這件事,給編著這個指南的人一點引導。



= 找不到解答怎麼辦 =


  假如仍得不到解答,請不要以為我們感到沒有辦法幫忙你。有時候只是看見你問題的人不曉得解答而已。沒有回答不代表你被不重視,固然不可以不承認這種區別很難區別。


  總的說來,簡單的重復貼掛問題是個很糟的想法。這將被視為無意義的喧騰。


  你可以經過其他渠道取得幫忙,這些個渠道一般更適應剛開始學者的需求。有很多網上的以及本地的用戶組,由狂熱的軟件喜好者(縱然它們有可能從沒親身寫過不論什麼軟件)組成。一般許多人組建這麼的組織來互助並幫忙生手。


  額外,你可以向眾多經濟活動企業征求幫忙,無論企業大仍然小(Red Hat 和LinuxCare 就是兩個最常見的例子)。別為要付費能力取得幫忙而覺得懊喪!畢竟,設使你的交通工具引擎發動機汽缸嚴密封閉圈爆掉了–絕對有可能這麼–你還得把它送到修車鋪,況且為維修付費。就算軟件沒消耗的錢你一分錢,你也不可以硬要求技術支持老是不收費的。


  對大眾化的軟件,有如Linux什麼的而言,每個研發者至少會有上萬名用戶。根本沒可能由獨自一個人來處置來自上萬名用戶的抱佛腳電話。要曉得,縱然你要為幫忙付費,同你務必購買同類軟件相形,你所支付的也是不值一提的(一般閉合源代碼軟件的技術支持花銷比開放源代碼軟件要高得多,且內部實質意義也不那末浩博)。