1. 程式人生 > >odoo學習必看-提問的智慧《How To Ask Questions The Smart Way》

odoo學習必看-提問的智慧《How To Ask Questions The Smart Way》

odoo學習必看-提問的智慧《How To Ask Questions The Smart Way》

轉自:https://www.sunpop.cn/how-ask-questions-smart-way/

人必自助而後人助之,而後天助之。出自《周易·繫辭上》

odoo和ERP,都是個持續學習的過程,多問是個良好的習慣,為人為己,你必須瞭解提問前的功課以及如何提問。

 

引言

在黑客[3]的世界裡,你所提技術問題的解答很大程度上取決於你提問的方式與此問題的難度,本文將教你如何提問才更有可能得到滿意的答覆。

開源程式的應用已經很廣,你通常可以從其他更有經驗的使用者而不是黑客那裡得到解答。這是好事,因為他們更能夠容忍一般的新手錯誤。但我們還建議你使用我們推薦的方法,像對待黑客那樣對待這些有經驗的使用者,這樣,你能最有效地得到問題的回答。

第一件需要明白的事:黑客喜歡艱鉅的任務和激發思考的好問題。否則,我們也不會寫這篇文章了。如果你有值得我們反覆咀嚼玩味的好問題,我們自會對你感激不盡。好問題是激勵和饋贈,幫助我們發展認知,揭示沒有注意的問題。對於黑客,提供「好問題」就是熱情而真誠的讚揚。

雖然如此,黑客在外卻有壞名聲:遇到簡單問題就表現出鄙視或傲慢的姿態。有時,我們看起來還會對新手和愚蠢的人有條件反射般的無禮,但事實並不如此。

我們只是毫無歉意地鄙視那些提問前不願思考、不做功課的人。這種人就象時間黑洞一樣,只知道索取,不願意付出,他們在浪費我們時間,而這些時間我們本可用於其它更有趣的問題或更值得回答的人身上。我們將這種人叫做 「loser」[4] (由於歷史原因,我們有時將「loser」拼寫為「lusers」[5])。

我們注意到很多人只是想使用我們寫的軟體,對學習技術細節沒有任何興趣。對他們而言,計算機只是種工具,是種達到目的的手段而已。他們有自己的生活,有更重要的事要做,我們承認這一點,也從不指望每個人都能對這些讓我們著迷的技術問題感興趣。所以,我們回答問題也有自己的選擇,僅僅迴應那些真正對問題有興趣並願意主動參與解決問題的人,這一點現在不變,以後不會變,也不該變,否則,我們就無法做好那些該做好的事情了。

我們(大多數)是自願者,從自己繁忙的生活中抽時間來回答問題,有時也會力不從心。因此,(請原諒)我們會毫不留情地過濾問題,特別是那些像是losers提的問題,這樣,我們就有更多的時間和精力去回答那些winner[6]的問題

如果你認為這種態度令人反感、以施惠者自居或傲慢自大,煩請檢查你的假設,我們並未要求你崇拜我們,事實上,假如你做了力所能及的努力,我們大多將非常樂意平等地與你交流,並歡迎你接納我們的文化。我們認為試圖去幫助那些不願自助的人是一件沒有效率和效果的事情。所以,我們寧願被稱作傲慢,也不去做愚蠢的事[7]。

所以,你無須擁有很高超技術也可以吸引我們的注意,前提是你必須表現出解決此問題的積極態度:熱切關注、深入分析、試圖努力查詢過解決此問題的方法,並且樂意主動參與到解決問題的組織,分享你的想法。如果你做不到使你與眾不同,我們建議你付費尋求他人幫助,而不是要求黑客提供無償的幫助。

如果你決定向我們求助,不想成為一名loser,或者不想被看成一個lose,我們有一個立竿見影的方法:(1)有技術含量地提問,(2)像是一個有智慧有自信和會思考的人那樣去提問,(3)暗示這個提問只是碰巧在特別情況出現的。

(歡迎你對本文進行指正,可以將建議發至[email protected][email protected]。請注意,本文不想成為一般的網路禮儀指南,同時,我也會拒絕迴應引自論壇並與此文不相關的建議。)

【本章註釋】

[3]本文不僅僅適用於黑客,而且適用於普通人。黑客的態度:解決問題,建設事物,崇尚自由和無私的雙向幫助。出自Eric S. Raymond的另一篇著名文章《How To Become A Hacker》

[4]在此,用直接「loser」更加合適,語意淺點譯做「失敗者」,語意深點譯做「廢柴」、「賤人」和「窩囊廢」。

[5]wikipedia的解釋:「lusers」為「loser」和「user」的混合詞,有貶義,指使人厭煩的,愚蠢的計算機操作員。

[6]指樂於分享,懂得專研和回報的人。

[7]人必自助而後人助之,而後天助之。出自《周易·繫辭上》

作者:陳素封
連結:https://www.jianshu.com/p/60dd8e9cd12f
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

提問前需要做的事情

在通過郵件、討論組、論壇或社群提問之前,請先嚐試做以下事情尋找答案:

  • 1. 使用論壇、知乎、百度知道、Quaro的搜尋功能;
  • 2. 善用google、百度或其他搜尋引擎在網路搜尋;
  • 3. 閱讀說明書或者使用手冊;
  • 4. 閱讀網站上「常見問題解答」(FAQ);
  • 5. 自己檢查或做試驗;
  • 6. 請教熟悉此問題的朋友;
  • 7. 如果你是程式設計師,嘗試閱讀原始碼。

提問時,請先表明你已做了上述事情,這將有助於改變你是懶又肥的寄生蟲形象,同時給別人一種你不會浪費別人時間的印象。提問時最好再總結一下你從中學到的東西 ,我們喜歡那些善於學習總結的人,也喜歡回答他們提出的問題。

運用搜索策略,比如利用Google搜尋時你遇到的各種提示(記得也搜尋一下Google groups),這樣很可能直接就找到了解決問題的文件或討論組的相關線索。即使沒有結果,在論壇或討論小組尋求幫助時提一句「我在Google中搜過下列句子,但沒有找到什麼有用的東西」也是件好事,至少它表明了搜尋引擎暫時還不能提供哪些幫助。另外,將搜尋關鍵詞與你的問題及可能的解決方案聯絡起來,還有助於引導其他有類似問題的人。

耐心一點,不要指望Google搜尋幾秒鐘就能解決一個複雜的問題。讀一下與產品或專案相關的常見問題解答。在向專家提問之前,先稍微放鬆一下,再深入地思考一下問題。相信我們,他們能從你的提問之中看得出你做了多少閱讀與思考的準備功課,如果你是有備而來,專家們很有可能會為你解答。如果你第一次搜尋沒有結果(或者結果太多),也不要丟擲一堆問題,專家們更喜歡有針對性的提問。

認真地思考,準備好你的問題。草率的提問只能得到草率的回答,甚至得不到回答。在提問時,你越是表現出在此前做過思考與努力去解決自己的問題,你越有可能得到真正的幫助。

注意別提問錯誤的問題。如果提問基於錯誤的假設,某黑客多半會一邊想「這真是一個愚蠢的問題」,一邊按將錯就錯地敷衍你,並且希望這個結果能夠給你一個教訓:如果提問的方式不對,你就得不到正確的答案。

永遠不要假設你有資格得到解答。你沒有這種資格,畢竟你沒有為此服務付費。如果你能夠提出有內容、有趣和激勵思考的問題,你將通過自己的努力「掙到」答案,因為這種提問能夠向社群貢獻經驗,而不僅僅是消極無止境地索取。

另一方面,展現你的能力,並且表明你樂意參與解決問題,這是個很好的開始。「有沒有人能指個方向?」,「我這還差點什麼?」,「我應該查哪個網站?」,通常要比「請給出我可以用的解決方案」更容易得到回覆,因為你的行為表明一種積極的態度:只要有人能為我指明方向,我就會很樂意自己走完剩下的路。

 

提問時

認真選擇論壇

謹慎地要選擇提問的地方,如果你做了下述事情,多半會被忽視或被看成loser:

  • 1. 張貼與論壇主題無關的問題;
  • 2. 在面向高階技術問題的論壇上張貼初級的問題,反之亦然;
  • 3. 在不同的論壇或討論小組同時張貼同一個問題;
  • 4. 向非熟人或沒有義務解決你問題的人傳送私人問題郵件。

為防止論壇被灌水,黑客們(論壇管理員)會刪掉那些與論壇及主題無關的問題,你不想自己的問題被刪掉吧。

因此,第一步是找到正確的提問論壇。谷歌和其它搜尋引擎是你好幫手,當你遇到問題時,它們可以幫你搜索到與問題最相關的網站或者論壇。那裡通常都會有「常見問題解答」(FAQ)、討論組及文件的連結。如果你的努力(包括閱讀 FAQ)都沒有結果,這些討論組就是你最後能取得幫助的地方。這些網站通常會有報告bug(錯誤)的地方或連結,你可以嘗試通過這個方式按照指示反饋資訊。

冒昧地向陌生人傳送郵件或在不熟悉的論壇發表主題是一件比較「冒險」的事情。你不要天真地以為一個經驗豐富的網站架構師會給你提供免費解答,也不要以為你的問題會在論壇中引起巨大反響,除非你很確定這一點,否則還是傳送去其他地方去吧,或者最好就別發了。

在選擇論壇和討論組時,不要被他們的名字迷惑了,先看看FAQ或者版規以明確你的問題是否切合這個論壇的風格。發帖之前先翻翻已有的帖子,感受一下論壇的討論氛圍。事實上,善用論壇的搜尋功能將會給帶來極大的便利,或者這樣你就更容易找到答案,即使沒有,這也可以讓你更好地表述出你的問題。

不要像機關槍似的一次性「掃射」所有的幫助通道,這樣的行為像潑婦罵街一樣令人抓狂,要有重點地一步一步來。

要搞清楚你提問的主題是什麼!最典型的錯誤就是跑去蘋果的論壇問關於Unix或Windows的問題,如果你不明白,最好在搞清楚概念,否則什麼也別問。

一般來說,在公共論壇中提問比在封閉論壇中提問更容易得到有用的回答。選擇依據:一是評估潛在的回覆數較多,二是估算論壇的活躍度較高,相比之下,黑客更喜歡回答那些能啟發多數人的問題。

同時,你可以理解,一些經驗豐富的黑客和流行軟體的作者正在承受過多的非議,因為湧入其私人郵箱的垃圾郵件變得越來越多,他們實在無法忍受,同時,你的加入有可能使情況更加惡劣,就像那根最後壓垮駱駝背的稻草一樣,所以,一些流行軟體的作者正陸續停止對軟體的更新和支援。

 

通過新手論壇和線上客服可獲得最快的回覆

本地發行商會為宣傳新產品會專門為新手設定論壇或線上客服(IRC)[8],這些地方是提問的好地方,特別是當你覺得遇到的是很普通的問題時。通過專門的線上客服或者公開新手提問專區,一般可以得到實時的回覆。

事實上,如果出問題的程式來自某發行版(這很常見),最好先去該發行版的論壇中提問,再到程式本身的專案論壇中提問,否則該專案的黑客可能僅僅回覆「嘗試用我們的程式碼」來搪塞你。

在任何論壇發帖之前,先看看有沒有搜尋功能。如果有,就試著用問題的幾個關鍵詞搜尋一下,這會給你帶來幫助。如果在此之前你已做過全面的網頁搜尋(你應該這樣去做),還是應該再搜尋一下論壇,搜尋引擎有可能還沒建立此論壇的內容索引[9]。

目前,通過論壇或線上客服為使用者提供幫助已經成為一種趨勢,電子郵件交流方式則更多地為專案開發者保留。所以,新手一般建議在通過論壇或線上客服尋求與該專案相關的幫助。

【本章註釋】

[8]「IRC」全程為Internet Relay Chat,即時聊天工具,在國內常見的是掛在網頁內的QQ客服。

[9]也有部分論壇會遮蔽來自搜尋引擎的爬蟲,所以有時候還得在論壇中搜索。

 

使用專案組的論壇

當某個專案組設立有開發者論壇[10]時,要向論壇而不是其中的個人成員提問,即使你確信他能為你提供最好的回答。檢視一下專案的說明檔案和主頁,找到論壇地址並註冊使用。採用這種辦法有幾個很好的理由:

  • 1. 如果向個人開發者提的問題足夠好,他的回答也將對整個專案組有益。相反,如果你認為自己的問題對整個專案組來說太白痴,這也不能成為騷擾個人開發者的理由。
  • 2. 向論壇提問可以分散開發者們的負擔,個人開發者(尤其是專案領導)也可能太忙,以至於沒法回答你的問題。
  • 3. 大多數論壇記錄都會存檔,那些存檔將會被搜尋引擎索引,如果你向論壇遞交的提問得到解答,將來其他人可以通過網頁搜尋找到你的問題和答案,那麼他們就不用再次提問了。
  • 4. 如果某些問題經常被問到,開發者可以利用此資訊改進說明檔案或軟體本身,以使其更清晰明白。如果只是私下提問,就沒有人能知道最常見問題是什麼,也無法建立一個常見問題解答手冊。

如果一個專案論壇中既有「使用者」 也有「開發者」(或 「黑客」,而你又不鑽研那些高深程式碼,那就向「使用者」組論壇提問。不要以為自己會在「開發者」論壇中會受到歡迎,那些人只會認為你是一個在裝逼的傻逼。

然而,如果你確信你的問題十分特殊,在「使用者」組論壇中提問了好幾天都沒有回覆,可以嘗試在「開發者」論壇提問。建議你在發帖前最好先潛水一陣以瞭解那的行事風格(事實上這是參與任何私有或半私有論壇的好主意)。

如果你找不到一個專案組的論壇,只能查到專案維護者的郵箱地址,可以向其傳送郵件。但即便在這種情況下,也不要以為這個論壇是不存在的。在電子郵件中你可以陳述你試圖尋找這個論壇的事實,告訴維護者也可以轉發該郵件到相關的人員手中(許多人認為,即使沒什麼祕密,私人電子郵件也不應該被公開。通過允許將你的電子郵件轉發他人,你給了相應人員處置你郵件的選擇)。

【本章註釋】

[10]原文為郵件列表,郵件列表是論壇的初始形態,以前的論壇是以郵件名稱作為聯絡ID交流,所以,在此篇文章中,郵件列表可視作論壇。

 

使用含義豐富,描述準確的標題

請在論壇中用五十個或更少的字來描述你的主題,這是你吸引專家專家注意力的黃金法則,

精練的標題是你吸引專家注意的黃金機會,別喋喋不休地用諸如「幫幫我」的標題,這種主題只會被條件反射式地刪掉,浪費掉一次提問的機會。不要試圖用你深深的痛苦來打動我們,相反,要在討論空間中使用簡明扼要語句來描述問題。

撰寫主題的規則是「物件──偏差」式的描述,許多技術支援組織就是這樣做的。「物件」部分需要指明是哪一個或哪一組專案有問題,「偏差」部分則描述與期望的行為不一致的地方。

愚蠢的問題描述:救命啊!我的筆記本播放不了視訊!

明智的問題描述:X.org 6.8.1 滑鼠光標出現偏差,MV1005型號的某顯示卡晶片組

更明智的問題描述:使用 MV1005 型號的某顯示卡晶片組在 X.org 6.8.1 的滑鼠光標出現偏差

撰寫「物件──偏差」式的主題描述有助於引發你對問題的細緻思考:是什麼導致了這個問題?僅僅是滑鼠光標出問題或者還有其它原因?只在X.org中出現抑或是在6.8.1的版本中?是針對某顯示卡晶片組還是或者只是其中的 MV1005 型號?一個黑客只需瞄一眼就能夠立即知道你遇到的什麼問題和解決方案。

為了方便索引查詢,你需要正確地用標題來描述你的問題,以便下一個搜尋類似主題的人能夠迅速定位到你的答案中來,無須再發帖提問。

如果你想在回覆中提問,請修改主題名稱,以註明你是在問一個問題,例如「Re: 測試」或者「Re: 新bug反饋」這樣的資訊就不能引起足夠的注意,同時,請注意刪除與新主題無關的引用內容。

對於論壇訊息,請不要直接點選回覆(按鈕)來開始一個全新的主題索引,這將限制主題的參與者。例如有些論壇允許隱藏訊息,如果你這樣做的話,別人就永遠看不到你發的訊息了。

有時候,僅僅改變標題還不夠。其他的一些論壇還會檢查你論壇主題的其他資訊,以便為其提供索引,所以這時候寧可重新發一新帖。

成熟的論壇有一套完善的討論規則,參與者傳送的資訊與特定的主題緊密結合,所以通過回覆來提問也未嘗不可。但並不是所有論壇都允許在回覆中出現分支的主題,這樣做的結果就是基本上沒有人會去看[11],而且通過回覆來繼續提問是一種成效較低的做法,因為它們只會被正在檢視該主題的人看到。所以,除非你只想向當前活躍的人群中提問,否則還是另發新帖比較好。

【本章註釋】

[10]論壇中經常會出現灌水或者是版聊的情況,一大群人一個主題下你談你的我談我的,原主題容易就會被衝散。

 

讓回答來得更簡便一點

用「請將回答傳送到……」這樣的方式來提問會使你的問題得不到回答。如果你覺得花幾秒鐘在郵件客戶端設定一下回復地址都嫌麻煩,我們也懶得花幾秒鐘去考慮你的問題。如果你的郵件客戶端程式不支援設定,請換一個;如果你的作業系統不支援這種郵件客戶端程式,也請換一個。

實際上,在論壇中,要求回答者通過電子郵件回覆你的提問是粗暴無禮的,除非你確定他回覆的比較敏感或涉及隱私的(現在的論壇也可以設定「私人可見」的回覆)。如果你只是想在有人回覆主題時得到電子郵件提醒,可以要求論壇傳送。幾乎所有論壇都支援諸如「留意本主題」、「有回覆傳送郵件」等功能[12]。

【本章註釋】

[12]實際上,目前中國的論壇已很少使用郵件通知回覆,只有少數索取資料的主題要求留些郵箱傳送而已,大部分的論壇已採用訊息提醒的方式來顯示回覆。

 

用字義清晰、語法標準、拼寫正確的語句撰寫問題

經驗告訴我們,粗心草率的人通常也會粗心草率地思考與程式設計。回答這些粗心草率者的提問沒有什麼好處,我們寧可將時間花在其他地方。

清楚、正確地表達你的問題非常重要。如果你嫌斟字酌句麻煩,那我們也懶得回覆。所以,請稍微花一點點時間組織語言,也用不著太正式和死板──事實上,黑客文化提倡使用非正式詞句、網路語言和幽默的語句,同時注意在遣詞造句的過程中體現文字的準確性和你思考問題的積極性。

正確地拼寫、使用標點和大小寫,不要將「its」混淆為「it's」,「loose」搞成「lose」或者將「discrete」弄成 「discreet」。不要全部用大寫,這會被視為粗魯無禮的大聲嚷嚷 (全部小寫也好不到哪去,因為不易閱讀。Alan Cox[13]也許可以這樣做,但你不行。)

一般來說,如果你像個半文盲般來提問,你多半會被無視。也不要使用簡訊中的簡寫,如將「you」簡化為「u」,這會讓你看起來像偷懶的傻逼。更有甚者像個小孩似地用火星文來提問,那就絕對是在找死,真的是喊破喉嚨也沒有人來理你(或者會有人在圍觀,並給你一大堆指責與挖苦)。

如果你在非母語(中文)的論壇提問,你可以犯點拼寫和語法上的小錯,但決不能在思考上懶惰(沒錯,我們能看得出其中的差別)。同時,除非你知道回覆者們使用的語言,否則請使用英語書寫。如果你用黑客看不懂的語言傳送提問,繁忙的黑客一般會直接無視並立即除。英語是網際網路上的通用語言,用英語書寫可以避免你的問題被直接無視。

如果你要用英文作為第二語言來提問,你可以使用以下的語句來進行說明,降低迴答者對你語言使用的不適感:

  • 1. English is not my native language; please excuse typing errors.
  • 2. If you speak $LANGUAGE, please email/PM me; I may need assistance translating my question.
  • 3. I am familiar with the technical terms, but some slang expressions and idioms are difficult for me.
  • 4. I've posted my question in $LANGUAGE and English. I'll be glad to translate responses, if you only use one or the other.

【本章註釋】

[13]Alan Cox:著名黑客,Linux 核心的重要參與者

 

使用易於讀取且標準的檔案格式傳送問題

本章閱讀提示[14]。

如果你將問題搞得複製難以閱讀,它多半會被忽略,人們更願讀易懂的問題,所以:

  • 1. 使用純文字而不是HTML格式;
  • 2. 傳送郵件時如有附件,記得新增附件,同時記得檢查附件內容是否能正常開啟;
  • 3. 不要傳送整段的文字,嘗試將文字按主題分段;
  • 4. 傳送資料時應該傳送原始資料,讓回覆者看到的東西與你看到的一樣;
  • 5. 很多郵件程式並不支援「Quoted-Printable」MIME編碼,所以謹慎使用;
  • 6. 不要指望黑客們閱讀封閉格式的文件,諸如微軟公司的Word或Excel檔案等。大多數黑客討厭這種檔案格式。即使他們能夠處理,也很厭惡這麼做;
  • 7. 如果你用Windows作業系統傳送電子郵件,關閉微軟的「引用」功能,以免在你的郵件中出現亂碼;
  • 8. 切勿在在論壇勿濫用「表情符號」和「HTML」功能。使用一兩個表情符號還可以,但使用過多的花哨彩色文字會使人認為你無法表達出你的意思。過濫地使用表情符號、色彩和字型會讓看起來更傻逼;

如果你是使用圖形介面的郵件客戶端程式(如騰訊的Foxmail、微軟公司的Outlook),注意它們的預設配置不一定滿足以上的這些要求。不過大多數這類程式有「檢視原始碼」的命令,可以用它來檢查發件箱的訊息,確保傳送的是沒有亂碼的純文字檔案。

【本章註釋】

[14]在本章中作者使用大量的計算機術語,我已儘量簡化處理,同時,我認為以上的方法並不適合大多數的提問者,所以我在此總結一下適合普通使用者的檔案格式:

  • 1. Txt:直接貼上,方便閱讀;
  • 2. Pdf:檔案規範,推薦使用;
  • 3. Doc:使用廣泛,開啟方便;
  • 4. Md:Markdown文字,未來趨勢。

郵件送發建議使用網頁端,郵件客戶端推薦使用Outlook2013或Foxmail 7。

 

準確簡練地描述問題

問題的描述應該包含以下內容:

  • 1. 清晰的細節;
  • 2. 問題發生的環境(主機品牌、作業系統、應用程式,任何相關的),提供銷售商的發行版和版本號(如:「Fedora Core 7」、「Slackware 9.1」等);
  • 3. 提問前做過的調查研究及對其的理解;
  • 4. 提問前為確定問題而採取的診斷步驟;
  • 5. 最近對計算機或軟體配置的任何相關改變;
  • 6. 如果可能,提供在可控環境下重現問題的方法;

做大的努力預測黑客會提到的問題,並提前備好答案。

如果你認為是程式碼有問題,在可控環境下重現問題,並向黑客提供報告,這個的方法尤其重要。當你這麼做時,你大有可能獲得及時而有效的回覆。

西蒙.泰瑟姆(Simon Tatham)曾寫過一篇《如何有效報告bug》的文章,我強烈推薦各位閱讀。

 

話不在多,精煉最好

你應該精煉且簡要地描述問題,簡單地將堆砌程式碼或羅列資料是沒有用的。如果你有一個體積龐大且複雜的測試樣本,嘗試將其裁剪,越小越好。

至少有三個理由支援以上這點。第一,讓別人看到你在努力簡化問題的過程,這會使你更有可能得到回覆。第二,簡化的問題更容易得到回覆。第三,在簡化的過程中,你有可能自己就找到了解決辦法。

 

別急於宣稱找到bug

當你在一個軟體中遇到問題時,除非你非常、非常的有根據,否則不要動輒聲稱找到了bug。提示:除非你能提供解決問題的原始碼補丁,或者在前一版本的迴歸測試收集了足夠的證據,否則你都不能夠完全確信。對於網頁和文件也如此,如果你聲稱發現了文件的「bug」,你應該提供可以替代的解決方案。

記住,還有許多使用者並未經歷你遇到的問題,否則你在閱讀文件或搜尋網頁時早應該發現了(疑問:你在報怨前已經搜尋過了,是吧?)。這也意味著很有可能是你弄錯了,而不是軟體本身有問題。

編寫軟體的人總會非常努力地優化修正這個軟體。所以,如果你聲稱找到了bug,這是對他們能力的質疑,即使你是對的,也有可能會使某些人人感到不爽。此外,在標題中尋找「bug」也是相當不厚道的行為。

即使你私下已經非常確信發現一個真正的bug,你在提交問題時最好也寫得像是你做錯了什麼。這樣,如果是真有bug,你會在回覆中獲知,同時,維護者會向你道歉,這總比你無心破壞而欠下一個道歉要好。

 

跪求也不能解決問題

有些人明白不應該採用粗魯或傲慢的方式提問並要求得到答覆,所以他們走了另一個極端,轉而低聲下氣地哀求:「我知道我只是個可憐的菜鳥,一個loser,但……」。這種對實際問題含糊的描述特別令人反感,不但困擾,也沒有用。

別用低階靈長類動物的老辦法浪費時間,相反,儘可能清楚地描述背景情況和你的問題,這比擺出卑賤態度更有用,同時這也是對自己的重新定位。

有的論壇專門設定了新手提問區,如果你真的認為遇到了新手該遇到的問題,直接到那去提問就好,別再跪求了。

 

描述症狀,不做猜測

向黑客陳述你的猜測是沒有用的(如果你的診斷理論真的那麼有用,你還會向別人求助嗎?)。所以,你只需要告訴他們問題的原始狀態,而不是你的解釋和理論,讓他們來解釋和診斷。如果你真的認為自己的猜測很重要,那麼你就應該清楚地說明這只是你的猜測,並解釋為什麼不起作用。

愚蠢的提問:我在編譯核心時接連遇到SIG11錯誤,懷疑主機板上的某根電路絲斷了,找到它們的最好辦法是什麼?

明智的提問:我組裝的電腦(K6/233 CPU、FIC-PA2007 主機板[威盛 Apollo VP2 晶片組]、Corsair PC133 SDRAM 256Mb 記憶體)最近在開機20分鐘左右、做核心編譯時頻繁地報錯,提示SIG11 ,但在頭20分鐘內從不出問題。重啟動不會復位時鐘,但會整夜關機。更換所有記憶體未解決問題,相關的典型編譯會話日誌附後。

鑑於不是每個人都不能做到明智的提問,所以這裡有一句話可以給到你啟示:「所有的診斷專家都來自密蘇里州」。美國國務院的官方座右銘則是「讓我看看」(Show me)[15],對回覆者而言,這並不是質疑,而只是一種真實而有用的需求,以便讓他們看到與你看到一樣的原始證據,目睹儘可能一致的東西,而不是你的片面的猜測與總結。(所以)讓我們看看(Show me)。

【本章註釋】

[15]「讓我看看」出自國會議員威勒德.D.範迪弗[Willard D. Vandiver]在1899年時的講話:「我來自一個出產玉米、棉花、牛蒡和民主黨人的國家,滔滔雄辯既不能說服我,也不會讓我滿意。我來自密蘇里州,你必須讓我看看。」大意是我不相信別人的描述,我只相信我眼前的事實。

 

按時間順序描述問題症狀

解決問題最有效的線索就是問題之前發生的情況。所以,在問題描述匯中應準確地記錄你、電腦和軟體在崩潰前的情況。在命令列處理的情況下,對話日誌(如執行指令碼工具生成的)的記錄會非常有幫助。

如果崩潰的程式有診斷選項,試著選擇能在能生成排錯日誌的選項。記住,「多」不等於「好」。試著選取適當的排錯級別,以便提供有用的資訊。

如果你的問題記錄很長(如超過四段),在開頭簡述問題,隨後按時間先後描述詳細過程也許更有用。這樣黑客在閱讀你的記錄時就知道該注意哪些內容了。

 

描述目標而不是過程

如果你想知道如何做某事(而不是報告一個bug),你需要在開頭就表明你的目標,然後再陳述你遇到問題。

經常出現這種一種情況:尋求技術幫助的人在腦中裡有個更高層次的目標,他們自以為按自己的路走能達成目的,但在中途卻被卡住了,又跑來問該怎麼走,他們從來沒有意識到這條路本身有問題,所以他們往往更折騰才能達成目的

愚蠢的提問:我怎樣才能讓某圖形程式的顏色拾取器取得十六進位制的RGB值?

明智的提問:我正試著用自己選定數值的顏色替換一幅圖片的色表,我現在知道的唯一方法是編輯每個表槽,但卻無法讓某圖形程式的顏色拾取器取得十六進位制的RGB值。

第二種提法是明智的,它會獲得更合適的回答:建議採用更合適的工具來完成任務。

 

不要請求私下回復

黑客們認為問題的解決過程應該公開、透明,這樣就會有更多的人蔘與到此問題的解決,如果有知識淵博,經驗更豐富的人發現了這個問題,他們就會留意到回答中不完整或不準確的地方,那麼原來的回答就會被糾正修復。同時,這些人的能力和學識也會被其他同行看到而得到賞識。

而當你要求私下回復時,以上的糾正過程就會被中止,所以,不要請求私下回復,要讓回覆者來決定是否私下回復。實際上,如果他真的私下回復你了,通常是因為他認為問題太差或者太膚淺,自己給出的答案對其它人也毫無意義,那就發給你吧。

這條規則也有一個例外,如果你確定該提問可能會帶來大量雷同的回覆時,那麼你可以主動表示:「請向我發電子郵件,我將為論壇統一歸納這些回覆」。你這個舉動是非常值得讚揚的,因為你將論壇從洪水般雷同的回覆中解救出來。最後,最重要的一點,你必須言出必行。

 

精準地提問

漫無邊際的問題通常被視為時間黑洞,回答這些問題需要付出更多的時間和精力,只有最忙的人才會給你最有用答案,但這些人對於時間黑洞極其敏感,所以他們比較討厭那些漫無邊際的問題。

如果你明確指認了讓回覆者做的事(如指點方向、傳送程式碼、檢查補丁或其它),你更有可能得到有用的回覆。(因為)這樣可以讓他們集中精力去解決問題,並間接地設定了他們為幫助你需要花費的時間和精力上限,這是很好的做法。

如果你想要向專家提問,你可以這樣設想:你去到一個金庫,可是你只有一點點的時間。專家就像金庫,如果你想在儘可能短的時間來換取更多的價值,你就要向他們提出一個精準的問題。

所以,為了讓專家能夠用盡量少的時間來回答你的問題,你最好限定問題的範圍。限定問題範圍與簡化問題是不一樣的。舉個例,「請問可否指點一下哪有好一點關於X的解釋?」通常就要比「請解釋一下X」來得明智。再譬如,如果你的程式碼執行不了,「請別人看看哪有問題」就比「叫他們幫你改正」更加明智。

 

如何提問關於程式碼的問題

不要直接要求別人給你修正程式碼,而應該提問如何入手解決這個問題,如果你一上來就一段幾百行的程式碼,說你這裡有bug提示出錯,你能幫我找出來嗎?這樣的請求只會被直接無視,而如果你精簡程式碼,明確地描述問題:在第七行以後,本應該顯示,但實際出現的是,如何處理?這樣就大大提高問題被回答的機率。

最精確描述程式碼問題的方法是提供一個能展現問題的最小測試樣本。什麼是最小測試樣本?它是可以集中展現問題,只需要能夠剛好重現問題的程式碼即可。如何生成一個最小測試樣本?如果你知道哪一行或哪一段程式碼會產生問題,將其複製並提供剛好夠用的外圍支撐程式碼以構成一個完整的樣本(夠用是指原始碼剛好能被編譯器、直譯器或任何處理它的程式所接受)。如果你不能將問題縮小到特定的段落,複製原始碼並去除那些與問題無關的程式碼段。你能提供的最小測試樣例本越小越好(參見《濃縮精華》這一章節 )。

用最小測試樣本去測試bug也並不是萬能的,但這畢竟是一個很好的嘗試,這有助於幫助你獨立去解決問題,即使你找不到,黑客們也喜歡看到曾經你努力過,這將使他們跟你合作去解決這個問題。

如果你只是想讓別人幫忙稽核一下程式碼,在最開頭就要說出來,並且一定要提到你認為哪一部分特別需要關注以及為什麼。

 

不要提問「家庭作業式」的問題

黑客們擅長髮現「家庭作業式」[16]的問題。家庭作業要求獨立完成,因為這是你該做的,這樣你才能從中學到東西,遇到困惑的時候可以要去給一點提示,但是千萬不要要求給出完整的答案。

如果你懷疑自己碰到了一個「家庭作業式」的問題,自己嘗試過但仍然無法解決,可以試試在使用者組、論壇或(作為最後一招)中提問。在那裡,黑客們會留意到你的問題,一些老使用者也許會給你提示。

【本章註釋】

[16]「家庭作業式」的問題:在學習者眼中的複雜問題,在專家眼中的簡單問題,基礎式問題。

 

刪除無意義的疑問

有的人喜歡在求助資訊的末尾加上「有人能幫我嗎?」或者「有沒有答案?」這一類無意義的提問,應該在提問中儘量刪除這些廢話,理由如下:第一,如果問題本身描述的不完整,這些附加的東西就是廢話。第二,因為它們提問的方式不對,黑客們會認為這些東西很煩,很有可能就會用邏輯上無誤回覆來敷衍你,諸如「是的,你可以得到幫助」和「不好意思,沒有人能幫你」。

一般來說,避擴音「是或非」問題,除非你想得到「是或非」回答。

 

不要把問題標記為「緊急」,即使你真的很緊急

「緊急」只是你的「緊急」,跟我們無關。同時,這些動輒「緊急」的提問往往欲速而不達,而且多數會被黑客們刪掉,因為他們認為這是一種自私與魯莽的提問方式:企圖通過文字的簡單修飾來引起別人注意而獲得特殊的關照。

當然也有例外,如果你在知名度很高使用某些程式出現問題,你的提問很有可能讓黑客們興奮,在這種情況下,如果你有時間壓力,並且很有禮貌地提出請求,黑客們會有興趣儘快地回覆你。

不過需要注意的一點是:這樣提問是非常冒險的,因為黑客興奮的標準和你的不同。譬如發個主題關於「國際空間站」帖子就可以得到關注,但是如果轉發關於慈善或政治的帖子就幾乎沒人理你。再如「緊急:幫我救救這個毛絨絨的小海豹!」這樣帖子在專業技術論壇讓黑客看到了肯定會相當抓狂,即使他們認為拯救毛絨絨的小海豹很重要。

如果你覺得以上的解釋難以理解,把剩下的內容多讀幾遍,直到弄懂了再發帖也不遲。

 

謙遜沒害,而且有益

禮貌一點,使用「請」和「謝謝你的關注」或者「謝謝你的幫助」,讓別人明白你的真誠,讓他們覺得這樣無償的幫助你是值得的。

坦白講,對黑客而言,在提問中使用正確的語法、清晰的文字、準確的內容,標準的格式遠比使用禮節重要。黑客們一般寧可看文字鋒利直白但技術鮮明的bug報告,也不要看那種彬彬有禮有禮但內容空洞含糊其辭的報告。(如果你不明黑客們為什麼喜歡這樣,那麼你就要明白:黑客評價一個提問價值的標準在於這個問題能給他帶來什麼樣的成長。)

然而,如果你已經清楚地描述了一個問題,客氣禮貌一點肯定會增加你得到回覆的機會。

(本文曾受到一些老黑客的指責,這也是本文的唯一受指責的地方,所以我們必須指出,我們曾經推薦使用「提前謝了」的感謝方式,這種感謝方式在一些黑客看來有一種事後不用再感謝任何人暗示和過河拆橋的味道,所以,我們現在的建議是:一、先說「提前謝了」,事後再表示對回覆者的感謝;二、換一種表達方式,譬如用「謝謝你的關注」或「謝謝你的幫助」等。)

 

問題解決後,追加簡短說明

在問題解決後向所有幫助過的人回覆一條資訊,讓他們知道問題是如何解決的並再次感謝。如果問題在論壇中受到廣泛關注,在那裡追加此資訊比較恰當。

最理想的方式是向最初提問的主題中回覆此訊息,並在主題中註明「已解決」、「已搞定」或其它同等含義的字樣[17]。這樣,在資訊快速流動的論壇中,一個註明「已解決」或「已搞定」的主題就會讓別人節省很多時間,回覆者不用再點進去重複回覆(除非他覺得這個問題值得再商榷),因此他就可以用這些時間去解決其他問題。

追加的資訊無須太冗廠繁複,一句簡單的「你好,問題已解決,是網線壞了!謝謝大家──比爾」就比什麼都沒有要好。事實上,除非解決問題的過程很複雜,需要用得很高深的技術,否則就用一條簡短親切的總結來回復就好了,總結中說明用了什麼方法,解決了什麼問題,無需將整個解決問題的過程給寫下來。

對於有深度的問題,建議給出一份完整解決該問題的方案,方案包括:問題的最終狀態、用了什麼方法、列出具體的步驟和和易出錯的地方,這樣才可以給到後來者一個完整的指引,注意不要將此方案搞成什麼偵探推理小說。最後列出那些幫助過你的人的名字,那樣你有可能會交到朋友。

這種後續的跟進資訊不僅是禮貌的回覆,而且是內容的分享,因為這些後續的解決方案會幫助其他有同樣問題的人,他們會在論壇中找到你的解決方案,並因此受益。

最後,此類後續的資訊跟進還讓每位參與協助的人因問題的解決而產生一種滿足感。如果你自己不是技術專家或黑客,相信我們,這種感覺對於你尋求幫助的老手和專家是非常重要的。問題的不了了之總會令人沮喪,但黑客們有強迫症,總渴望它們被解決,你的後續跟進就像是為他們消滅了一個眼中釘,並因此獲得了一定的信譽的威望,這對你的下次提問非常有幫助。

考慮到將來也會有人面臨類似的問題,如何避免重蹈覆轍呢?你可以自己寫一篇文章或者對FAQ進行補充,然後發給專案的維護者。

在黑客交流的過程中,這種良好的後續跟蹤行為比傳統的禮貌更重要,這也是你善待他人贏得聲譽的方式,這是非常有價值的經驗和財富。

【本章註釋】

[17]在國內論壇,問題解決之後,可以主動修改論壇主題,新增上「已解決」字樣,然後通知版主做出處理。

 

如何解讀回答

RTFM[18]和STFW[19]:你為什麼不去試一試?

有一個古老而神聖的慣例:如果你收到RTFM的回覆,你就應該去「Read The Fucking Manual」,他說得對,去讀一下吧。

「Read The Fucking Manual」(RTFM)有個年輕點的親戚,如果你收到「Search The Fucking Web」(STFW)的回覆,你也應該去「Search The Fucking Web」,他說得也對,去搜一下吧。(更溫和一點的說法是「善用Google」)

在論壇,你也可能被要求去搜索論壇的存檔記錄。事實上,有人甚至可能熱心到為你提供以前解決此問題的線索。但千萬不要依賴這種幫助,你應該在提問前搜尋一下存檔。

通常的情況是,要求你主動去搜索的人已經打開了能解決你問題的手冊或網頁,他那時可能是一邊在看螢幕一邊敲著鍵盤迴復「RTFM」或「STFW」,這些回覆意味著:第一,你要的資訊很容易找到。第二,自己動手,豐衣足食。

這不是一種是鄙視,按黑客的標準,回覆者沒有不理你,反而在耐心地回覆你,這是對你提問的尊敬,你應該感謝他還像一個老奶奶一樣嘮嘮叨叨地回覆你。

【本章註釋】

[18]RTFM,是一個英文縮寫,意思是:「去讀那些他媽的手冊」(Read The Fucking Manual),這句話通常用在回覆那些只要查閱檔案就可以解決,拿出來提問只是浪費別人時間的問題.

[19]STFW:Search The Fucking Web,去搜那些他媽的網站,語意同RTFM。

 

如果還不明白……

如果你看不懂回答,不要馬上發帖要求別人進行解釋說明,你應該回過頭去看看你提問時候試用過的工具(如手冊、FAQ、網頁、行業內朋友等),如果檢查過後,你發現還是需要解釋說明,你就要將已學的東西展現出來。

譬如,我告訴你:「看起來像是輸入項有問題,你需要清除它」,接著是個不好的回帖示範:「什麼是輸入項?」(因為你沒有主動在搜尋引擎中搜查什麼是輸入項)。而以下就是一個很好的跟帖:「是的,我讀了手冊,某某輸入項只在 -z 和 -p 開關中被提到,但都沒有涉及到如何清除它們,你指的是哪一個還是我弄錯了什麼?」

 

對待無禮

很多黑客圈子中看似無禮的行為並不是存心冒犯。相反,它是直接了當、一針見血式的交流風格,這種風格對於更關注解決問題而不是使別人感覺舒服。

如果你覺得被冒犯了,試著平靜地對待。如果有人真的做了過分的事,論壇中的老前輩會教訓他。如果這些沒有發生而你卻惱火了,那麼這些致使你惱火的言語可能在黑客社群中看來是正常的,而你將被視為有錯的一方,這會讓你喪失進一步獲得資訊或幫助的機會。

另一方面,如果你真的偶然地遇到了無禮和無聊的衝撞,你就要對真正的冒犯者予以狠狠的反擊了,用犀利的語言將其駁得體無完膚都是可以接受的,然而,在行事之前一定要有非常肯定的證據。因為糾正無禮的言論與一場毫無意義的口水戰僅一線之隔,黑客們自己莽撞地越線的情況也屢見不鮮。新手可能難免中槍。但如果你想得到的是資訊和幫助,就不要浪費時間參與到口水戰之中。

(有些人斷言很多黑客都有輕度的自閉症或阿斯伯格綜合症[20],缺少用於潤滑人類社會「正常」社交所需的人腦回路。這既可能是真也可能是假。如果你不是黑客,也許你會認為我們腦袋有問題,以為還能幫助我們糾正那些古怪行為。如果你真的以為這麼做會有效,你就只管這麼做好了,我們不在乎。我們就喜歡現在這個樣子,因我們會對那些所謂的「診斷」擁有正常的科學的健康的懷疑精神。

在下一節,我們會談到另一個主題,當你犯錯遭受到的指責該怎麼辦。

【本章註釋】

20、阿斯伯格綜合症,是一種泛自閉症障礙,其重要特徵是社交困難,伴隨著興趣狹隘及重複特定行為,但相較於其他泛自閉症障礙,仍相對保有語言及認知發展。

 

不要像loser那樣去行事

常在河邊走,哪有不溼鞋。在黑客論壇混,總有有犯錯的時候,你的錯誤會被別人長篇大論的公開地揭露,或許在言語之中還會透露著鄙視和得意。

事後你能做的最壞的事莫過於哀怨你的遭遇、四處哭喊著被人誹謗、要求道歉、竭斯底裡的呼喊、忍隱不做聲、威脅訴諸法律、向他公司投訴、忘了關馬桶蓋等等,但實際上,以下的的幾件事才是你應該去做的:

就讓它這樣過去,這是一件很正常的事情。事實上,這樣的被人指出錯誤也沒什麼大不了,對自己反而是好事。

論壇社群的規則不會自行運轉,它們是隻能通過參與者通過積極公開的方式來執行維持。不要哭訴著要求將所有的批評和指責通過私下的郵件傳達,這不是行之有效的運作方式,當有人在評論你的一個說法有誤或者提出不同看法時,你堅持聲稱受到人身攻擊,這也是沒用的,這也是loser對待事情的態度。

也有一些黑客論壇愚蠢地執行過「高禮節要求」的規則,禁止參與者公開發表任何對別人觀點挑錯的文章,併發出「如果你不想幫助使用者就閉嘴」的言論,結果造成大批有思想的參與者逃離此論壇,這個論壇就變成了一個毫無意義,絮絮叨叨,沒有價值的技術論壇。

是要誇張的不切實際的「友好」還是坦誠直白的「實用」?你自己挑一個吧。

記著:當黑客說你犯錯了,並且(無論說得多麼尖銳地)告訴你別再這樣做時,這表明他在為關心你和這個社群。對他而言,無視並拉黑要容易得多,如果你無法做到感謝,至少要有點自尊,別大聲哀怨,別以一個敏感而莽撞的新手自居,更別指望別人能像對待一個波大無腦的女人一樣去撫慰你。

有時候,即使你沒有犯錯(或者只是別人的臆想),有些人也會以莫須有的名義來指責你。在這種情況下,你的報怨倒是真的會把事情弄得更糟。

這些無事生非的人其實也沒有多大的能耐,不是在吹牛逼的專家,就是一天到晚在唱反調的心理預測專家。總有讀者有能力分辨,並想辦法去對付他們,這些人在玩火自焚,你就不用操心了。

如果你在網路上不得不要面對一場爭論,你得首先去確認一下自己是否犯錯,如果你沒有犯錯,那麼你就可以斷定這是一場無聊的口水戰,不要將自己捲入口水戰之中,也最好不要理睬其他與你無關的口水戰,因為這樣爭論不會有一個明確的結果。

 

三思而後問

下面是些典型的愚蠢問題和黑客不回答它們的原因和想法。

  • 問:1、我到哪可以找到某程式或X資源?
  • 問:2、我怎樣用X做Y?
  • 問:3、如何配置我的shell提示?
  • 問:4、我可以用Bass-o-matic檔案轉換工具將AcmeCorp文件轉為TeX格式嗎?
  • 問:5、我的{程式、配置、SQL 語句}不運行了。
  • 問:6、我的Windows系統出問題了,你能幫個忙嗎?
  • 問:7、我的程式執行不了,我認為是系統工具X有問題。
  • 問:8、我在安裝Linux或X是遇到困難,你能幫個忙嗎?
  • 問:9、我如何才能破解超級使用者口令/盜取操作員的特權/檢視某人的電子郵件?

問:1、我到哪可以找到某程式或X資源?

答: 在我找到的地方啊,笨蛋!──你就不會在網頁找麼,真抓狂,難道還有人不知道如何使用Google嗎?

問:2、我怎樣用X做Y?

答:如果你想得出Y的結果,那麼請不要在想得出Y的結果前提供X的方法,這樣的問題表明提問者不但對X完全無知,也對Y瞭解不深,這個問題還表明提問者已經被某種思維定勢禁錮住了,最好讓他們將問題整理好再來提問。

問:3、如何配置我的shell提示?

答:如果你有足夠的智慧提這個問題,你也該有足夠的智慧去「Read The Fucking Manual」(RTFM),然後自己去找出來。

問:4、我可以用Bass-o-matic檔案轉換工具將AcmeCorp文件轉為TeX格式嗎?

答: 試試就知道了。如果你試過,你既知道答案,又不用浪費我的時間。

問:5、我的{程式、配置、SQL 語句}不運行了。

答: 這不是一個問題,我也沒有興趣去猜你有什麼問題──我有更要緊的事要做。看到這種東西,我的反應一般如下:

  • 你還有什麼補充嗎?
  • oh,太可惜了,希望你能搞定。
  • 這跟我有什麼關係?

問:6、我的Window系統出問題了,你能幫個忙嗎?

答:可以,將Windows系統給卸了,裝個開源作業系統,例如Linux或BSD[21]。

注意:你可以問與Windows系統相關的問題,前提是這個程式有Windows的官方版,不是我對Windows系統有偏見,而是Windows系統與大部分的軟體存在相容問題,而實際上Windows系統實在很差。

問:7、我的程式執行不了,我認為是系統工具X有問題。

答:這個程式被成千上萬使用者反覆使用,你有可能是第一個提出這個程式有缺陷的人,不過你得要拿出具體的證明,最後有一份詳細清晰的缺陷說明。

問:8、我在安裝Linux或X是遇到困難,你能幫個忙嗎?

答:不好意思,我幫不了你,我需要親手操作你的電腦才能幫你排錯,去向當地的Linux論壇尋求幫助吧。

注意:如果安裝問題與某Linux發行版有關,請首先在論壇中提問。同時,應準確描述問題的細節。在此之前,先用 「linux」和所有被懷疑出問題的硬體 [作關鍵詞] 仔細搜尋。

問:9、我如何才能破解超級使用者口令/盜取操作員的特權/檢視某人的電子郵件?

答:想做這種事情說明你是個人品惡劣的傢伙,想讓黑客教你做這種事情說明你是個傻逼。

【本章註釋】

21、這個回答可以視為一句吐槽,也可以視為一個建議,畢竟大多數黑客都是使用開源系統的。

 

好問題與壞問題

最後,我將通過舉例來演示提問的智慧。同樣的問題兩種提法,一種愚蠢,另一種明智。

愚蠢:我在哪能找到關於Foonly Flurbamatic裝置的東西?

這個問題在請求一個「Search The Fucking Web」(STFW) 式的回覆。

明智:我用谷歌搜尋過「Foonly Flurbamatic 2600」,但沒有找到什麼有用的資訊,有誰知道在哪能找到這種裝置的程式設計資訊嗎?

這個人已經搜尋過網路了,而且聽起來他可能真的遇到了問題。

愚蠢:我不能編譯某專案的原始碼,它為什麼這麼爛?

提問者預提了一個假設:是別人搞砸了,太狂妄自大了。

明智:某專案的原始碼不能在某Linux 6.2版下編譯。我讀了常見問題文件,但其中沒有與某Linux相關的內容。這是編譯時的記錄,我做錯了什麼嗎?

提問者已經指明瞭執行環境,讀了常見問題文件(FAQ),列出了錯誤,也沒有假設問題是別人的過錯,值得留意一下。

愚蠢:我的主機板有問題,誰能幫我?

某黑客管理員對此的反應可能是:「是的,還需要幫你拍背和換尿布嗎?」,然後是敲下刪除鍵。

明智:我在S2464主機板上試過X、Y和Z方法,當它們都失敗後,又試了A、B和C方法。注意我試C時的奇怪症狀,顯然某某東西正在做某某事情,這並不是正常的現象。通常在Athlon MP主機板上導致某某事情的原因是什麼?有誰知道我還能再嘗試什麼方法以確定問題?

相反地,這個人的問題看來值得回答。他或她展現瞭解決問題的能力而不是坐等天上掉餡餅。

在最後那個問題中,注意「給我一個答案」與「請幫我看看我還能再做點什麼測試以得到啟發」之間細微但重要的差別。

事實上,最後那個問題基本上源於2001年8月Linux核心郵件列表(lkml)上的真實事件,是我(Eric)當時提了那個問題,我發現Tyan S2462主機板有神祕的宕機現象,郵件列表成員給我提供瞭解決此問題的關鍵資訊。

通過這種提問方式,我給了別人可以深思玩味的東西。我設法使之對參與者既輕鬆又有吸引力,也表明了對同行能力的尊敬並邀請他們與我一起協商。通過告訴他們我已經走過的彎路,我還表明了對他們寶貴時間的尊重。

事後,當我感謝大家並評論這次良好的經歷時,一個Linux核心郵件列表的成員談到,他認為我得到答案並不是因為我的名字掛在列表上,而只是因為我正確的提問方式。

黑客們在某種層面上貌似是非常冷漠無情的精英分子。我想在這事上他是對的,如果我表現得像個不勞而獲的寄生蟲,不管我是誰都會被忽略或斥責。他建議將整個事件作為對其它人提問的指導,這直接導致了本文的編寫。

 

如果得不到回答

如果得不到回答,請不要認為我們不想幫你,有時的確是因為被問到的小組成員不知道答案。沒有回覆不等於不被無視,當然,必須承認從外部很難看出兩者的差別。

一般而言,不要在再重複發表這個問題,這會被視為毫無意義的騷擾。耐心一點,知道你問題答案的人可能生活在不同的時區,有可能正在睡覺,也有可能你的問題一開始就沒有組織好。

還有其它資訊源可以尋求幫助,例如一些面向新手的資源區。

有許多線上與本地的使用者組織,雖然他們自己不編寫任何軟體,但是他們對軟體很忠誠熱心。這些使用者組通常因互助和幫助新手而形成。

還有眾多大小商業公司提供簽約支援服務(紅帽與SpikeSource是兩家最出名的,還有許多其它的)。別因為要付點錢才有支援就感到沮喪!畢竟,如果你車子的汽缸墊燒壞了,你還是得花錢找個修理店把它弄好。同理,即使軟體沒花你一分錢,你總不能指望他的服務支援都是免費的。

象Linux這樣流行的軟體,每個開發版至少有一萬個以上的使用者,一個人不可能應付這麼多使用者的服務要求。即使你必須付費才能得到支援,也比你還得額外花錢買軟體要少得多(封閉原始碼軟體的服務支援與開源軟體相比通常還要貴一點,也要差一點)。

 

如何更好地回答

態度和善一點。問題帶來的壓力常使人顯得無禮或愚蠢,即使你平時不是這樣的。

對初犯錯者私下回復。對那些無心犯錯之人也沒有必要當眾羞辱,一個真正的新手也許連怎麼搜尋或者連FAQ在哪都不知道。

如果你對某樣事物不確定,一定要說出來! 一個聽起來權威的錯誤回覆比沒有還要糟,別因為聽起來象個專家好玩就給別人亂指路。要