摘要提問在學(xué)習(xí)中占據(jù)著重要的位置,很多人對知識(shí)好奇,卻收效甚少,原因他們是尚未掌握正確提問的方法,因此,我嘗試修改《提問的智慧》,發(fā)布出來。原作者是Eric S. Raymond,這篇文章在黑客界擁有很高的地位,指引無數(shù)黑客前進(jìn),希望對你有用。 作者:Eric Steven Raymond:《How To Ask Questions The Smart Way》 版本:3.9 修改時(shí)間:2013年4月13日 翻譯:王剛(yafrank at 126 dot com) 翻譯時(shí)間:2010年9月28日 王剛翻譯版本 修改注釋:陳錦輝(cnfeat at Gmail dot com) 修改注釋時(shí)間:2014年5月15日 注釋版本:3.9 為何要做一個(gè)修改注釋版?試圖做出一個(gè)容易閱讀,方便理解,與時(shí)俱進(jìn),可以執(zhí)行的提問執(zhí)行方案。 1、原翻譯為2010年,新版2013年,時(shí)隔2年有余,原作有變; 2、尊重原作的復(fù)制及引用協(xié)議[1]; 3、原翻譯很好,檢查中發(fā)現(xiàn)有些語句不順,語意不準(zhǔn),或者已不符合現(xiàn)在語言規(guī)范,參照王剛老師的版本進(jìn)行修改; 4、附上自己的看法和注解,更加適合現(xiàn)在閱讀使用。 5、每當(dāng)有人來向我提問,我可以將他指引到這篇文章,可以減少很多的不必要的麻煩。 【本章注釋】 [1]復(fù)制協(xié)議中注明了應(yīng)用該文時(shí)不可復(fù)制部分或者部分引用,只能全文轉(zhuǎn)載。 You may not make or redistribute static copies (whether print or online) without my express permission. However, I don't like having old, stale versions of my content floating around on other peoples' sites. These rules are mainly designed to try to ensure that when some third party sees my name on a document, the content reflects all my updates to it. 譯文 譯文: 印尼語、 巴西葡萄牙語、 漢語、 捷克語、 丹麥語、 荷蘭語、 愛沙尼亞語、 芬蘭語、 法語、 喬治亞語、 德語、 希臘語、 希伯來語、 匈牙利語、 意大利語、 日語、 蒙古語、 波蘭語、 葡萄牙語、 羅馬尼亞語、 俄語、 塞爾維亞語、 西班牙語、 瑞典語、 泰語、 土耳其語。 如果你想復(fù)制、鏡像、翻譯或引用本文,請參閱我的 復(fù)制協(xié)議[2]。 【本章注釋】 [2]這份復(fù)制協(xié)議類似于版權(quán)聲明,這份聲明主要說明了以下四點(diǎn):(1)你們可以復(fù)制此文,可以添加本站鏈接;(2)但是轉(zhuǎn)載需注明出處,原版本經(jīng)常更新(已更新11次),轉(zhuǎn)載版本不會(huì)更新;(3)不可以部分引用,或拼接此文;(4)翻譯要注明出處,并且注明翻譯時(shí)間和翻譯版本。 免責(zé)聲明許多的項(xiàng)目單位都在在他們的網(wǎng)站附加了幫助的鏈接,這正是我們想要的。但按照現(xiàn)實(shí)情況,如果你是該網(wǎng)站項(xiàng)目負(fù)責(zé)人,請?jiān)阪溄痈浇@著位置注明:我們不提供該項(xiàng)目的服務(wù)支持! 我們已經(jīng)領(lǐng)教了沒有此說明帶來的痛苦,我們將不停地被一些白癡們糾纏,他們認(rèn)為既然我們發(fā)布了幫助鏈接,那么我們就有責(zé)任解決世上所有的技術(shù)問題。 如果你是因?yàn)樾枰獛椭陂喿x本文,還想著直接從作者那取得幫助(答案),然后揮一揮衣袖轉(zhuǎn)身離開,那么你就不幸成了我們所說的白癡之一。別向我們提問,我們不會(huì)理你的。我們只是在這教你「如何從那些真正懂得問題答案的人那里取得幫助」的方法。不過,在99.9%的時(shí)間里我們不會(huì)是那些百事通。除非你非常地確定本文的作者是你的問題專家,否則請不要打擾,這樣大家都更開心一點(diǎn)。 引言在黑客[3]的世界里,你所提技術(shù)問題的解答很大程度上取決于你提問的方式與此問題的難度,本文將教你如何提問才更有可能得到滿意的答復(fù)。 開源程序的應(yīng)用已經(jīng)很廣,你通常可以從其他更有經(jīng)驗(yàn)的用戶而不是黑客那里得到解答。這是好事,因?yàn)樗麄兏軌蛉萑桃话愕男率皱e(cuò)誤。但我們還建議你使用我們推薦的方法,像對待黑客那樣對待這些有經(jīng)驗(yàn)的用戶,這樣,你能最有效地得到問題的回答。 第一件需要明白的事:黑客喜歡艱巨的任務(wù)和激發(fā)思考的好問題。否則,我們也不會(huì)寫這篇文章了。如果你有值得我們反復(fù)咀嚼玩味的好問題,我們自會(huì)對你感激不盡。好問題是激勵(lì)和饋贈(zèng),幫助我們發(fā)展認(rèn)知,揭示沒有注意的問題。對于黑客,提供「好問題」就是熱情而真誠的贊揚(yáng)。 雖然如此,黑客在外卻有壞名聲:遇到簡單問題就表現(xiàn)出鄙視或傲慢的姿態(tài)。有時(shí),我們看起來還會(huì)對新手和愚蠢的人有條件反射般的無禮,但事實(shí)并不如此。 我們只是毫無歉意地鄙視那些提問前不愿思考、不做功課的人。這種人就象時(shí)間黑洞一樣,只知道索取,不愿意付出,他們在浪費(fèi)我們時(shí)間,而這些時(shí)間我們本可用于其它更有趣的問題或更值得回答的人身上。我們將這種人叫做 「loser」[4] (由于歷史原因,我們有時(shí)將「loser」拼寫為「lusers」[5])。 我們注意到很多人只是想使用我們寫的軟件,對學(xué)習(xí)技術(shù)細(xì)節(jié)沒有任何興趣。對他們而言,計(jì)算機(jī)只是種工具,是種達(dá)到目的的手段而已。他們有自己的生活,有更重要的事要做,我們承認(rèn)這一點(diǎn),也從不指望每個(gè)人都能對這些讓我們著迷的技術(shù)問題感興趣。所以,我們回答問題也有自己的選擇,僅僅回應(yīng)那些真正對問題有興趣并愿意主動(dòng)參與解決問題的人,這一點(diǎn)現(xiàn)在不變,以后不會(huì)變,也不該變,否則,我們就無法做好那些該做好的事情了。 我們(大多數(shù))是自愿者,從自己繁忙的生活中抽時(shí)間來回答問題,有時(shí)也會(huì)力不從心。因此,(請?jiān)彛┪覀儠?huì)毫不留情地過濾問題,特別是那些像是losers提的問題,這樣,我們就有更多的時(shí)間和精力去回答那些winner[6]的問題 如果你認(rèn)為這種態(tài)度令人反感、以施惠者自居或傲慢自大,煩請檢查你的假設(shè),我們并未要求你崇拜我們,事實(shí)上,假如你做了力所能及的努力,我們大多將非常樂意平等地與你交流,并歡迎你接納我們的文化。我們認(rèn)為試圖去幫助那些不愿自助的人是一件沒有效率和效果的事情。所以,我們寧愿被稱作傲慢,也不去做愚蠢的事[7]。 所以,你無須擁有很高超技術(shù)也可以吸引我們的注意,前提是你必須表現(xiàn)出解決此問題的積極態(tài)度:熱切關(guān)注、深入分析、試圖努力查找過解決此問題的方法,并且樂意主動(dòng)參與到解決問題的組織,分享你的想法。如果你做不到使你與眾不同,我們建議你付費(fèi)尋求他人幫助,而不是要求黑客提供無償?shù)膸椭?/p> 如果你決定向我們求助,不想成為一名loser,或者不想被看成一個(gè)lose,我們有一個(gè)立竿見影的方法:(1)有技術(shù)含量地提問,(2)像是一個(gè)有智慧有自信和會(huì)思考的人那樣去提問,(3)暗示這個(gè)提問只是碰巧在特別情況出現(xiàn)的。 (歡迎你對本文進(jìn)行指正,可以將建議發(fā)至esr@thyrsus.com或respond-auto@linuxmafia.com。請注意,本文不想成為一般的網(wǎng)絡(luò)禮儀指南,同時(shí),我也會(huì)拒絕回應(yīng)引自論壇并與此文不相關(guān)的建議。) 【本章注釋】 [3]本文不僅僅適用于黑客,而且適用于普通人。黑客的態(tài)度:解決問題,建設(shè)事物,崇尚自由和無私的雙向幫助。出自Eric S. Raymond的另一篇著名文章《How To Become A Hacker》 [4]在此,用直接「loser」更加合適,語意淺點(diǎn)譯做「失敗者」,語意深點(diǎn)譯做「廢柴」、「賤人」和「窩囊廢」。 [5]wikipedia的解釋:「lusers」為「loser」和「user」的混合詞,有貶義,指使人厭煩的,愚蠢的計(jì)算機(jī)操作員。 [6]指樂于分享,懂得專研和回報(bào)的人。 [7]人必自助而后人助之,而后天助之。出自《周易·系辭上》 提問前需要做的事情在通過郵件、討論組、論壇或社區(qū)提問之前,請先嘗試做以下事情尋找答案: 1、使用論壇、知乎、百度知道、Quora的搜索功能; 2、善用google、百度或其他搜索引擎在網(wǎng)絡(luò)搜尋; 3、閱讀說明書或者使用手冊; 4、閱讀網(wǎng)站上「常見問題解答」(FAQ); 5、自己檢查或做試驗(yàn); 6、請教熟悉此問題的朋友; 7、如果你是程序員,嘗試閱讀源代碼。 提問時(shí),請先表明你已做了上述事情,這將有助于改變你是懶又肥的寄生蟲形象,同時(shí)給別人一種你不會(huì)浪費(fèi)別人時(shí)間的印象。提問時(shí)最好再總結(jié)一下你從中學(xué)到的東西 ,我們喜歡那些善于學(xué)習(xí)總結(jié)的人,也喜歡回答他們提出的問題。 運(yùn)用搜索策略,比如利用Google搜索時(shí)你遇到的各種提示(記得也搜索一下Google groups),這樣很可能直接就找到了解決問題的文檔或討論組的相關(guān)線索。即使沒有結(jié)果,在論壇或討論小組尋求幫助時(shí)提一句「我在Google中搜過下列句子,但沒有找到什么有用的東西」也是件好事,至少它表明了搜索引擎暫時(shí)還不能提供哪些幫助。另外,將搜索關(guān)鍵詞與你的問題及可能的解決方案聯(lián)系起來,還有助于引導(dǎo)其他有類似問題的人。 耐心一點(diǎn),不要指望Google搜索幾秒鐘就能解決一個(gè)復(fù)雜的問題。讀一下與產(chǎn)品或項(xiàng)目相關(guān)的常見問題解答。在向?qū)<姨釂栔?,先稍微放松一下,再深入地思考一下問題。相信我們,他們能從你的提問之中看得出你做了多少閱讀與思考的準(zhǔn)備功課,如果你是有備而來,專家們很有可能會(huì)為你解答。如果你第一次搜索沒有結(jié)果(或者結(jié)果太多),也不要拋出一堆問題,專家們更喜歡有針對性的提問。 認(rèn)真地思考,準(zhǔn)備好你的問題。草率的提問只能得到草率的回答,甚至得不到回答。在提問時(shí),你越是表現(xiàn)出在此前做過思考與努力去解決自己的問題,你越有可能得到真正的幫助。 注意別提問錯(cuò)誤的問題。如果提問基于錯(cuò)誤的假設(shè),某黑客多半會(huì)一邊想「這真是一個(gè)愚蠢的問題」,一邊按將錯(cuò)就錯(cuò)地敷衍你,并且希望這個(gè)結(jié)果能夠給你一個(gè)教訓(xùn):如果提問的方式不對,你就得不到正確的答案。 永遠(yuǎn)不要假設(shè)你有資格得到解答。你沒有這種資格,畢竟你沒有為此服務(wù)付費(fèi)。如果你能夠提出有內(nèi)容、有趣和激勵(lì)思考的問題,你將通過自己的努力「掙到」答案,因?yàn)檫@種提問能夠向社區(qū)貢獻(xiàn)經(jīng)驗(yàn),而不僅僅是消極無止境地索取。 另一方面,展現(xiàn)你的能力,并且表明你樂意參與解決問題,這是個(gè)很好的開始。「有沒有人能指個(gè)方向?」,「我這還差點(diǎn)什么?」,「我應(yīng)該查哪個(gè)網(wǎng)站?」,通常要比「請給出我可以用的解決方案」更容易得到回復(fù),因?yàn)槟愕男袨楸砻饕环N積極的態(tài)度:只要有人能為我指明方向,我就會(huì)很樂意自己走完剩下的路。 提問時(shí)認(rèn)真選擇論壇謹(jǐn)慎地要選擇提問的地方,如果你做了下述事情,多半會(huì)被忽視或被看成loser: 1、張貼與論壇主題無關(guān)的問題; 2、在面向高級技術(shù)問題的論壇上張貼初級的問題,反之亦然; 3、在不同的論壇或討論小組同時(shí)張貼同一個(gè)問題; 4、向非熟人或沒有義務(wù)解決你問題的人發(fā)送私人問題郵件。 為防止論壇被灌水,黑客們(論壇管理員)會(huì)刪掉那些與論壇及主題無關(guān)的問題,你不想自己的問題被刪掉吧。 因此,第一步是找到正確的提問論壇。谷歌和其它搜索引擎是你好幫手,當(dāng)你遇到問題時(shí),它們可以幫你搜索到與問題最相關(guān)的網(wǎng)站或者論壇。那里通常都會(huì)有「常見問題解答」(FAQ)、討論組及文檔的鏈接。如果你的努力(包括閱讀 FAQ)都沒有結(jié)果,這些討論組就是你最后能取得幫助的地方。這些網(wǎng)站通常會(huì)有報(bào)告bug(錯(cuò)誤)的地方或鏈接,你可以嘗試通過這個(gè)方式按照指示反饋信息。 冒昧地向陌生人發(fā)送郵件或在不熟悉的論壇發(fā)表主題是一件比較「冒險(xiǎn)」的事情。你不要天真地以為一個(gè)經(jīng)驗(yàn)豐富的網(wǎng)站架構(gòu)師會(huì)給你提供免費(fèi)解答,也不要以為你的問題會(huì)在論壇中引起巨大反響,除非你很確定這一點(diǎn),否則還是發(fā)送去其他地方去吧,或者最好就別發(fā)了。 在選擇論壇和討論組時(shí),不要被他們的名字迷惑了,先看看FAQ或者版規(guī)以明確你的問題是否切合這個(gè)論壇的風(fēng)格。發(fā)帖之前先翻翻已有的帖子,感受一下論壇的討論氛圍。事實(shí)上,善用論壇的搜索功能將會(huì)給帶來極大的便利,或者這樣你就更容易找到答案,即使沒有,這也可以讓你更好地表述出你的問題。 不要像機(jī)關(guān)槍似的一次性「掃射」所有的幫助通道,這樣的行為像潑婦罵街一樣令人抓狂,要有重點(diǎn)地一步一步來。 要搞清楚你提問的主題是什么!最典型的錯(cuò)誤就是跑去蘋果的論壇問關(guān)于Unix或Windows的問題,如果你不明白,最好在搞清楚概念,否則什么也別問。 一般來說,在公共論壇中提問比在封閉論壇中提問更容易得到有用的回答。選擇依據(jù):一是評估潛在的回復(fù)數(shù)較多,二是估算論壇的活躍度較高,相比之下,黑客更喜歡回答那些能啟發(fā)多數(shù)人的問題。 同時(shí),你可以理解,一些經(jīng)驗(yàn)豐富的黑客和流行軟件的作者正在承受過多的非議,因?yàn)橛咳肫渌饺肃]箱的垃圾郵件變得越來越多,他們實(shí)在無法忍受,同時(shí),你的加入有可能使情況更加惡劣,就像那根最后壓垮駱駝背的稻草一樣,所以,一些流行軟件的作者正陸續(xù)停止對軟件的更新和支持。 通過新手論壇和在線客服可獲得最快的回復(fù)本地發(fā)行商會(huì)為宣傳新產(chǎn)品會(huì)專門為新手設(shè)置論壇或在線客服(IRC)[8],這些地方是提問的好地方,特別是當(dāng)你覺得遇到的是很普通的問題時(shí)。通過專門的在線客服或者公開新手提問專區(qū),一般可以得到實(shí)時(shí)的回復(fù)。 事實(shí)上,如果出問題的程序來自某發(fā)行版(這很常見),最好先去該發(fā)行版的論壇中提問,再到程序本身的項(xiàng)目論壇中提問,否則該項(xiàng)目的黑客可能僅僅回復(fù)「嘗試用我們的代碼」來搪塞你。 在任何論壇發(fā)帖之前,先看看有沒有搜索功能。如果有,就試著用問題的幾個(gè)關(guān)鍵詞搜索一下,這會(huì)給你帶來幫助。如果在此之前你已做過全面的網(wǎng)頁搜索(你應(yīng)該這樣去做),還是應(yīng)該再搜索一下論壇,搜索引擎有可能還沒建立此論壇的內(nèi)容索引[9]。 目前,通過論壇或在線客服為用戶提供幫助已經(jīng)成為一種趨勢,電子郵件交流方式則更多地為項(xiàng)目開發(fā)者保留。所以,新手一般建議在通過論壇或在線客服尋求與該項(xiàng)目相關(guān)的幫助。 【本章注釋】 [8]「IRC」全程為Internet Relay Chat,即時(shí)聊天工具,在國內(nèi)常見的是掛在網(wǎng)頁內(nèi)的QQ客服。 [9]也有部分論壇會(huì)屏蔽來自搜索引擎的爬蟲,所以有時(shí)候還得在論壇中搜索。 使用項(xiàng)目組的論壇當(dāng)某個(gè)項(xiàng)目組設(shè)立有開發(fā)者論壇[10]時(shí),要向論壇而不是其中的個(gè)人成員提問,即使你確信他能為你提供最好的回答。查看一下項(xiàng)目的說明文件和主頁,找到論壇地址并注冊使用。采用這種辦法有幾個(gè)很好的理由: 1、如果向個(gè)人開發(fā)者提的問題足夠好,他的回答也將對整個(gè)項(xiàng)目組有益。相反,如果你認(rèn)為自己的問題對整個(gè)項(xiàng)目組來說太白癡,這也不能成為騷擾個(gè)人開發(fā)者的理由。 2、向論壇提問可以分散開發(fā)者們的負(fù)擔(dān),個(gè)人開發(fā)者(尤其是項(xiàng)目領(lǐng)導(dǎo))也可能太忙,以至于沒法回答你的問題。 3、大多數(shù)論壇記錄都會(huì)存檔,那些存檔將會(huì)被搜索引擎索引,如果你向論壇遞交的提問得到解答,將來其他人可以通過網(wǎng)頁搜索找到你的問題和答案,那么他們就不用再次提問了。 4、如果某些問題經(jīng)常被問到,開發(fā)者可以利用此信息改進(jìn)說明文件或軟件本身,以使其更清晰明白。如果只是私下提問,就沒有人能知道最常見問題是什么,也無法建立一個(gè)常見問題解答手冊。 如果一個(gè)項(xiàng)目論壇中既有「用戶」 也有「開發(fā)者」(或 「黑客」,而你又不鉆研那些高深代碼,那就向「用戶」組論壇提問。不要以為自己會(huì)在「開發(fā)者」論壇中會(huì)受到歡迎,那些人只會(huì)認(rèn)為你是一個(gè)在裝逼的傻逼。 然而,如果你確信你的問題十分特殊,在「用戶」組論壇中提問了好幾天都沒有回復(fù),可以嘗試在「開發(fā)者」論壇提問。建議你在發(fā)帖前最好先潛水一陣以了解那的行事風(fēng)格(事實(shí)上這是參與任何私有或半私有論壇的好主意)。 如果你找不到一個(gè)項(xiàng)目組的論壇,只能查到項(xiàng)目維護(hù)者的郵箱地址,可以向其發(fā)送郵件。但即便在這種情況下,也不要以為這個(gè)論壇是不存在的。在電子郵件中你可以陳述你試圖尋找這個(gè)論壇的事實(shí),告訴維護(hù)者也可以轉(zhuǎn)發(fā)該郵件到相關(guān)的人員手中(許多人認(rèn)為,即使沒什么秘密,私人電子郵件也不應(yīng)該被公開。通過允許將你的電子郵件轉(zhuǎn)發(fā)他人,你給了相應(yīng)人員處置你郵件的選擇)。 【本章注釋】 [10]原文為郵件列表,郵件列表是論壇的初始形態(tài),以前的論壇是以郵件名稱作為聯(lián)系ID交流,所以,在此篇文章中,郵件列表可視作論壇。 使用含義豐富,描述準(zhǔn)確的標(biāo)題 請?jiān)谡搲杏梦迨畟€(gè)或更少的字來描述你的主題,這是你吸引專家專家注意力的黃金法則, 精練的標(biāo)題是你吸引專家注意的黃金機(jī)會(huì),別喋喋不休地用諸如「幫幫我」的標(biāo)題,這種主題只會(huì)被條件反射式地刪掉,浪費(fèi)掉一次提問的機(jī)會(huì)。不要試圖用你深深的痛苦來打動(dòng)我們,相反,要在討論空間中使用簡明扼要語句來描述問題。 撰寫主題的規(guī)則是「對象──偏差」式的描述,許多技術(shù)支持組織就是這樣做的。「對象」部分需要指明是哪一個(gè)或哪一組項(xiàng)目有問題,「偏差」部分則描述與期望的行為不一致的地方。 愚蠢的問題描述:救命啊!我的筆記本播放不了視頻! 明智的問題描述:X.org 6.8.1 鼠標(biāo)光標(biāo)出現(xiàn)偏差,MV1005型號的某顯卡芯片組 更明智的問題描述:使用 MV1005 型號的某顯卡芯片組在 X.org 6.8.1 的鼠標(biāo)光標(biāo)出現(xiàn)偏差 撰寫「對象──偏差」式的主題描述有助于引發(fā)你對問題的細(xì)致思考:是什么導(dǎo)致了這個(gè)問題?僅僅是鼠標(biāo)光標(biāo)出問題或者還有其它原因?只在X.org中出現(xiàn)抑或是在6.8.1的版本中?是針對某顯卡芯片組還是或者只是其中的 MV1005 型號?一個(gè)黑客只需瞄一眼就能夠立即知道你遇到的什么問題和解決方案。 為了方便索引查找,你需要正確地用標(biāo)題來描述你的問題,以便下一個(gè)搜索類似主題的人能夠迅速定位到你的答案中來,無須再發(fā)帖提問。 如果你想在回復(fù)中提問,請修改主題名稱,以注明你是在問一個(gè)問題,例如「Re: 測試」或者「Re: 新bug反饋」這樣的信息就不能引起足夠的注意,同時(shí),請注意刪除與新主題無關(guān)的引用內(nèi)容。 對于論壇消息,請不要直接點(diǎn)擊回復(fù)(按鈕)來開始一個(gè)全新的主題索引,這將限制主題的參與者。例如有些論壇允許隱藏消息,如果你這樣做的話,別人就永遠(yuǎn)看不到你發(fā)的消息了。 有時(shí)候,僅僅改變標(biāo)題還不夠。其他的一些論壇還會(huì)檢查你論壇主題的其他信息,以便為其提供索引,所以這時(shí)候?qū)幙芍匦掳l(fā)一新帖。 成熟的論壇有一套完善的討論規(guī)則,參與者發(fā)送的信息與特定的主題緊密結(jié)合,所以通過回復(fù)來提問也未嘗不可。但并不是所有論壇都允許在回復(fù)中出現(xiàn)分支的主題,這樣做的結(jié)果就是基本上沒有人會(huì)去看[11],而且通過回復(fù)來繼續(xù)提問是一種成效較低的做法,因?yàn)樗鼈冎粫?huì)被正在查看該主題的人看到。所以,除非你只想向當(dāng)前活躍的人群中提問,否則還是另發(fā)新帖比較好。 【本章注釋】 [10]論壇中經(jīng)常會(huì)出現(xiàn)灌水或者是版聊的情況,一大群人一個(gè)主題下你談你的我談我的,原主題容易就會(huì)被沖散。 讓回答來得更簡便一點(diǎn)用「請將回答發(fā)送到……」這樣的方式來提問會(huì)使你的問題得不到回答。如果你覺得花幾秒鐘在郵件客戶端設(shè)置一下回復(fù)地址都嫌麻煩,我們也懶得花幾秒鐘去考慮你的問題。如果你的郵件客戶端程序不支持設(shè)置,請換一個(gè);如果你的操作系統(tǒng)不支持這種郵件客戶端程序,也請換一個(gè)。 實(shí)際上,在論壇中,要求回答者通過電子郵件回復(fù)你的提問是粗暴無禮的,除非你確定他回復(fù)的比較敏感或涉及隱私的(現(xiàn)在的論壇也可以設(shè)置「私人可見」的回復(fù))。如果你只是想在有人回復(fù)主題時(shí)得到電子郵件提醒,可以要求論壇發(fā)送。幾乎所有論壇都支持諸如「留意本主題」、「有回復(fù)發(fā)送郵件」等功能[12]。 【本章注釋】 [12]實(shí)際上,目前中國的論壇已很少使用郵件通知回復(fù),只有少數(shù)索取資料的主題要求留些郵箱發(fā)送而已,大部分的論壇已采用消息提醒的方式來顯示回復(fù)。 用字義清晰、語法標(biāo)準(zhǔn)、拼寫正確的語句撰寫問題 經(jīng)驗(yàn)告訴我們,粗心草率的人通常也會(huì)粗心草率地思考與編程?;卮疬@些粗心草率者的提問沒有什么好處,我們寧可將時(shí)間花在其他地方。 清楚、正確地表達(dá)你的問題非常重要。如果你嫌斟字酌句麻煩,那我們也懶得回復(fù)。所以,請稍微花一點(diǎn)點(diǎn)時(shí)間組織語言,也用不著太正式和死板──事實(shí)上,黑客文化提倡使用非正式詞句、網(wǎng)絡(luò)語言和幽默的語句,同時(shí)注意在遣詞造句的過程中體現(xiàn)文字的準(zhǔn)確性和你思考問題的積極性。 正確地拼寫、使用標(biāo)點(diǎn)和大小寫,不要將「its」混淆為「it's」,「loose」搞成「lose」或者將「discrete」弄成 「discreet」。不要全部用大寫,這會(huì)被視為粗魯無禮的大聲嚷嚷 (全部小寫也好不到哪去,因?yàn)椴灰组喿x。Alan Cox[13]也許可以這樣做,但你不行。) 一般來說,如果你像個(gè)半文盲般來提問,你多半會(huì)被無視。也不要使用短信中的簡寫,如將「you」簡化為「u」,這會(huì)讓你看起來像偷懶的傻逼。更有甚者像個(gè)小孩似地用火星文來提問,那就絕對是在找死,真的是喊破喉嚨也沒有人來理你(或者會(huì)有人在圍觀,并給你一大堆指責(zé)與挖苦)。 如果你在非母語(中文)的論壇提問,你可以犯點(diǎn)拼寫和語法上的小錯(cuò),但決不能在思考上懶惰(沒錯(cuò),我們能看得出其中的差別)。同時(shí),除非你知道回復(fù)者們使用的語言,否則請使用英語書寫。如果你用黑客看不懂的語言發(fā)送提問,繁忙的黑客一般會(huì)直接無視并立即除。英語是互聯(lián)網(wǎng)上的通用語言,用英語書寫可以避免你的問題被直接無視。 如果你要用英文作為第二語言來提問,你可以使用以下的語句來進(jìn)行說明,降低回答者對你語言使用的不適感: 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 內(nèi)核的重要參與者 使用易于讀取且標(biāo)準(zhǔn)的文件格式發(fā)送問題 本章閱讀提示[14]。 如果你將問題搞得復(fù)制難以閱讀,它多半會(huì)被忽略,人們更愿讀易懂的問題,所以: 1、使用純文本而不是HTML格式; 2、發(fā)送郵件時(shí)如有附件,記得添加附件,同時(shí)記得檢查附件內(nèi)容是否能正常打開; 3、不要發(fā)送整段的文字,嘗試將文字按主題分段; 4、發(fā)送數(shù)據(jù)時(shí)應(yīng)該發(fā)送原始數(shù)據(jù),讓回復(fù)者看到的東西與你看到的一樣; 5、很多郵件程序并不支持「Quoted-Printable」MIME編碼,所以謹(jǐn)慎使用; 6、不要指望黑客們閱讀封閉格式的文檔,諸如微軟公司的Word或Excel文件等。大多數(shù)黑客討厭這種文件格式。即使他們能夠處理,也很厭惡這么做; 7、如果你用Windows操作系統(tǒng)發(fā)送電子郵件,關(guān)閉微軟的「引用」功能,以免在你的郵件中出現(xiàn)亂碼; 8、切勿在在論壇勿濫用「表情符號」和「HTML」功能。使用一兩個(gè)表情符號還可以,但使用過多的花哨彩色文本會(huì)使人認(rèn)為你無法表達(dá)出你的意思。過濫地使用表情符號、色彩和字體會(huì)讓看起來更傻逼; 如果你是使用圖形界面的郵件客戶端程序(如騰訊的Foxmail、微軟公司的Outlook),注意它們的默認(rèn)配置不一定滿足以上的這些要求。不過大多數(shù)這類程序有「查看源碼」的命令,可以用它來檢查發(fā)件箱的消息,確保發(fā)送的是沒有亂碼的純文本文件。 【本章注釋】 [14]在本章中作者使用大量的計(jì)算機(jī)術(shù)語,我已盡量簡化處理,同時(shí),我認(rèn)為以上的方法并不適合大多數(shù)的提問者,所以我在此總結(jié)一下適合普通用戶的文件格式: 1、Txt:直接粘貼,方便閱讀; 2、 Pdf:文件規(guī)范,推薦使用; 3、Doc:使用廣泛,打開方便; 4、Md:Markdown文本,未來趨勢。 郵件送發(fā)建議使用網(wǎng)頁端,郵件客戶端推薦使用Outlook2013或Foxmail 7。 準(zhǔn)確簡練地描述問題 問題的描述應(yīng)該包含以下內(nèi)容: 1、清晰的細(xì)節(jié); 2、問題發(fā)生的環(huán)境(主機(jī)品牌、操作系統(tǒng)、應(yīng)用程序,任何相關(guān)的),提供銷售商的發(fā)行版和版本號(如:「Fedora Core 7」、「Slackware 9.1」等); 3、提問前做過的調(diào)查研究及對其的理解; 4、提問前為確定問題而采取的診斷步驟; 5、最近對計(jì)算機(jī)或軟件配置的任何相關(guān)改變; 6、如果可能,提供在可控環(huán)境下重現(xiàn)問題的方法; 做大的努力預(yù)測黑客會(huì)提到的問題,并提前備好答案。 如果你認(rèn)為是代碼有問題,在可控環(huán)境下重現(xiàn)問題,并向黑客提供報(bào)告,這個(gè)的方法尤其重要。當(dāng)你這么做時(shí),你大有可能獲得及時(shí)而有效的回復(fù)。 西蒙.泰瑟姆(Simon Tatham)曾寫過一篇《如何有效報(bào)告bug》的文章,我強(qiáng)烈推薦各位閱讀。 話不在多,精煉最好你應(yīng)該精煉且簡要地描述問題,簡單地將堆砌代碼或羅列數(shù)據(jù)是沒有用的。如果你有一個(gè)體積龐大且復(fù)雜的測試樣本,嘗試將其裁剪,越小越好。 至少有三個(gè)理由支持以上這點(diǎn)。第一,讓別人看到你在努力簡化問題的過程,這會(huì)使你更有可能得到回復(fù)。第二,簡化的問題更容易得到回復(fù)。第三,在簡化的過程中,你有可能自己就找到了解決辦法。 別急于宣稱找到bug當(dāng)你在一個(gè)軟件中遇到問題時(shí),除非你非常、非常的有根據(jù),否則不要?jiǎng)虞m聲稱找到了bug。提示:除非你能提供解決問題的源代碼補(bǔ)丁,或者在前一版本的回歸測試收集了足夠的證據(jù),否則你都不能夠完全確信。對于網(wǎng)頁和文檔也如此,如果你聲稱發(fā)現(xiàn)了文檔的「bug」,你應(yīng)該提供可以替代的解決方案。 記住,還有許多用戶并未經(jīng)歷你遇到的問題,否則你在閱讀文檔或搜索網(wǎng)頁時(shí)早應(yīng)該發(fā)現(xiàn)了(疑問:你在報(bào)怨前已經(jīng)搜索過了,是吧?)。這也意味著很有可能是你弄錯(cuò)了,而不是軟件本身有問題。 編寫軟件的人總會(huì)非常努力地優(yōu)化修正這個(gè)軟件。所以,如果你聲稱找到了bug,這是對他們能力的質(zhì)疑,即使你是對的,也有可能會(huì)使某些人人感到不爽。此外,在標(biāo)題中尋找「bug」也是相當(dāng)不厚道的行為。 即使你私下已經(jīng)非常確信發(fā)現(xiàn)一個(gè)真正的bug,你在提交問題時(shí)最好也寫得像是你做錯(cuò)了什么。這樣,如果是真有bug,你會(huì)在回復(fù)中獲知,同時(shí),維護(hù)者會(huì)向你道歉,這總比你無心破壞而欠下一個(gè)道歉要好。 跪求也不能解決問題有些人明白不應(yīng)該采用粗魯或傲慢的方式提問并要求得到答復(fù),所以他們走了另一個(gè)極端,轉(zhuǎn)而低聲下氣地哀求:「我知道我只是個(gè)可憐的菜鳥,一個(gè)loser,但……」。這種對實(shí)際問題含糊的描述特別令人反感,不但困擾,也沒有用。 別用低級靈長類動(dòng)物的老辦法浪費(fèi)時(shí)間,相反,盡可能清楚地描述背景情況和你的問題,這比擺出卑賤態(tài)度更有用,同時(shí)這也是對自己的重新定位。 有的論壇專門設(shè)置了新手提問區(qū),如果你真的認(rèn)為遇到了新手該遇到的問題,直接到那去提問就好,別再跪求了。 描述癥狀,不做猜測向黑客陳述你的猜測是沒有用的(如果你的診斷理論真的那么有用,你還會(huì)向別人求助嗎?)。所以,你只需要告訴他們問題的原始狀態(tài),而不是你的解釋和理論,讓他們來解釋和診斷。如果你真的認(rèn)為自己的猜測很重要,那么你就應(yīng)該清楚地說明這只是你的猜測,并解釋為什么不起作用。 愚蠢的提問:我在編譯內(nèi)核時(shí)接連遇到SIG11錯(cuò)誤,懷疑主板上的某根電路絲斷了,找到它們的最好辦法是什么? 明智的提問:我組裝的電腦(K6/233 CPU、FIC-PA2007 主板[威盛 Apollo VP2 芯片組]、Corsair PC133 SDRAM 256Mb 內(nèi)存)最近在開機(jī)20分鐘左右、做內(nèi)核編譯時(shí)頻繁地報(bào)錯(cuò),提示SIG11 ,但在頭20分鐘內(nèi)從不出問題。重啟動(dòng)不會(huì)復(fù)位時(shí)鐘,但會(huì)整夜關(guān)機(jī)。更換所有內(nèi)存未解決問題,相關(guān)的典型編譯會(huì)話日志附后。 鑒于不是每個(gè)人都不能做到明智的提問,所以這里有一句話可以給到你啟示:「所有的診斷專家都來自密蘇里州」。美國國務(wù)院的官方座右銘則是「讓我看看」(Show me)[15],對回復(fù)者而言,這并不是質(zhì)疑,而只是一種真實(shí)而有用的需求,以便讓他們看到與你看到一樣的原始證據(jù),目睹盡可能一致的東西,而不是你的片面的猜測與總結(jié)。(所以)讓我們看看(Show me)。 【本章注釋】 [15]「讓我看看」出自國會(huì)議員威勒德.D.范迪弗[Willard D. Vandiver]在1899年時(shí)的講話:「我來自一個(gè)出產(chǎn)玉米、棉花、牛蒡和民主黨人的國家,滔滔雄辯既不能說服我,也不會(huì)讓我滿意。我來自密蘇里州,你必須讓我看看。」大意是我不相信別人的描述,我只相信我眼前的事實(shí)。 按時(shí)間順序描述問題癥狀解決問題最有效的線索就是問題之前發(fā)生的情況。所以,在問題描述匯中應(yīng)準(zhǔn)確地記錄你、電腦和軟件在崩潰前的情況。在命令行處理的情況下,對話日志(如運(yùn)行腳本工具生成的)的記錄會(huì)非常有幫助。 如果崩潰的程序有診斷選項(xiàng),試著選擇能在能生成排錯(cuò)日志的選項(xiàng)。記住,「多」不等于「好」。試著選取適當(dāng)?shù)呐佩e(cuò)級別,以便提供有用的信息。 如果你的問題記錄很長(如超過四段),在開頭簡述問題,隨后按時(shí)間先后描述詳細(xì)過程也許更有用。這樣黑客在閱讀你的記錄時(shí)就知道該注意哪些內(nèi)容了。 描述目標(biāo)而不是過程如果你想知道如何做某事(而不是報(bào)告一個(gè)bug),你需要在開頭就表明你的目標(biāo),然后再陳述你遇到問題。 經(jīng)常出現(xiàn)這種一種情況:尋求技術(shù)幫助的人在腦中里有個(gè)更高層次的目標(biāo),他們自以為按自己的路走能達(dá)成目的,但在中途卻被卡住了,又跑來問該怎么走,他們從來沒有意識(shí)到這條路本身有問題,所以他們往往更折騰才能達(dá)成目的 愚蠢的提問:我怎樣才能讓某圖形程序的顏色拾取器取得十六進(jìn)制的RGB值? 明智的提問:我正試著用自己選定數(shù)值的顏色替換一幅圖片的色表,我現(xiàn)在知道的唯一方法是編輯每個(gè)表槽,但卻無法讓某圖形程序的顏色拾取器取得十六進(jìn)制的RGB值。 第二種提法是明智的,它會(huì)獲得更合適的回答:建議采用更合適的工具來完成任務(wù)。 不要請求私下回復(fù)黑客們認(rèn)為問題的解決過程應(yīng)該公開、透明,這樣就會(huì)有更多的人參與到此問題的解決,如果有知識(shí)淵博,經(jīng)驗(yàn)更豐富的人發(fā)現(xiàn)了這個(gè)問題,他們就會(huì)留意到回答中不完整或不準(zhǔn)確的地方,那么原來的回答就會(huì)被糾正修復(fù)。同時(shí),這些人的能力和學(xué)識(shí)也會(huì)被其他同行看到而得到賞識(shí)。 而當(dāng)你要求私下回復(fù)時(shí),以上的糾正過程就會(huì)被中止,所以,不要請求私下回復(fù),要讓回復(fù)者來決定是否私下回復(fù)。實(shí)際上,如果他真的私下回復(fù)你了,通常是因?yàn)樗J(rèn)為問題太差或者太膚淺,自己給出的答案對其它人也毫無意義,那就發(fā)給你吧。 這條規(guī)則也有一個(gè)例外,如果你確定該提問可能會(huì)帶來大量雷同的回復(fù)時(shí),那么你可以主動(dòng)表示:「請向我發(fā)電子郵件,我將為論壇統(tǒng)一歸納這些回復(fù)」。你這個(gè)舉動(dòng)是非常值得贊揚(yáng)的,因?yàn)槟銓⒄搲瘡暮樗憷淄幕貜?fù)中解救出來。最后,最重要的一點(diǎn),你必須言出必行。 精準(zhǔn)地提問 漫無邊際的問題通常被視為時(shí)間黑洞,回答這些問題需要付出更多的時(shí)間和精力,只有最忙的人才會(huì)給你最有用答案,但這些人對于時(shí)間黑洞極其敏感,所以他們比較討厭那些漫無邊際的問題。 如果你明確指認(rèn)了讓回復(fù)者做的事(如指點(diǎn)方向、發(fā)送代碼、檢查補(bǔ)丁或其它),你更有可能得到有用的回復(fù)。(因?yàn)椋┻@樣可以讓他們集中精力去解決問題,并間接地設(shè)定了他們?yōu)閹椭阈枰ㄙM(fèi)的時(shí)間和精力上限,這是很好的做法。 如果你想要向?qū)<姨釂枺憧梢赃@樣設(shè)想:你去到一個(gè)金庫,可是你只有一點(diǎn)點(diǎn)的時(shí)間。專家就像金庫,如果你想在盡可能短的時(shí)間來換取更多的價(jià)值,你就要向他們提出一個(gè)精準(zhǔn)的問題。 所以,為了讓專家能夠用盡量少的時(shí)間來回答你的問題,你最好限定問題的范圍。限定問題范圍與簡化問題是不一樣的。舉個(gè)例,「請問可否指點(diǎn)一下哪有好一點(diǎn)關(guān)于X的解釋?」通常就要比「請解釋一下X」來得明智。再譬如,如果你的代碼運(yùn)行不了,「請別人看看哪有問題」就比「叫他們幫你改正」更加明智。 如何提問關(guān)于代碼的問題不要直接要求別人給你修正代碼,而應(yīng)該提問如何入手解決這個(gè)問題,如果你一上來就一段幾百行的代碼,說你這里有bug提示出錯(cuò),你能幫我找出來嗎?這樣的請求只會(huì)被直接無視,而如果你精簡代碼,明確地描述問題:在第七行以后,本應(yīng)該顯示,但實(shí)際出現(xiàn)的是,如何處理?這樣就大大提高問題被回答的幾率。 最精確描述代碼問題的方法是提供一個(gè)能展現(xiàn)問題的最小測試樣本。什么是最小測試樣本?它是可以集中展現(xiàn)問題,只需要能夠剛好重現(xiàn)問題的代碼即可。如何生成一個(gè)最小測試樣本?如果你知道哪一行或哪一段代碼會(huì)產(chǎn)生問題,將其復(fù)制并提供剛好夠用的外圍支撐代碼以構(gòu)成一個(gè)完整的樣本(夠用是指源碼剛好能被編譯器、解釋器或任何處理它的程序所接受)。如果你不能將問題縮小到特定的段落,復(fù)制源代碼并去除那些與問題無關(guān)的代碼段。你能提供的最小測試樣例本越小越好(參見《濃縮精華》這一章節(jié) )。 用最小測試樣本去測試bug也并不是萬能的,但這畢竟是一個(gè)很好的嘗試,這有助于幫助你獨(dú)立去解決問題,即使你找不到,黑客們也喜歡看到曾經(jīng)你努力過,這將使他們跟你合作去解決這個(gè)問題。 如果你只是想讓別人幫忙審核一下代碼,在最開頭就要說出來,并且一定要提到你認(rèn)為哪一部分特別需要關(guān)注以及為什么。 不要提問「家庭作業(yè)式」的問題黑客們擅長發(fā)現(xiàn)「家庭作業(yè)式」[16]的問題。家庭作業(yè)要求獨(dú)立完成,因?yàn)檫@是你該做的,這樣你才能從中學(xué)到東西,遇到困惑的時(shí)候可以要去給一點(diǎn)提示,但是千萬不要要求給出完整的答案。 如果你懷疑自己碰到了一個(gè)「家庭作業(yè)式」的問題,自己嘗試過但仍然無法解決,可以試試在用戶組、論壇或(作為最后一招)中提問。在那里,黑客們會(huì)留意到你的問題,一些老用戶也許會(huì)給你提示。 【本章注釋】 [16]「家庭作業(yè)式」的問題:在學(xué)習(xí)者眼中的復(fù)雜問題,在專家眼中的簡單問題,基礎(chǔ)式問題。 刪除無意義的疑問有的人喜歡在求助信息的末尾加上「有人能幫我嗎?」或者「有沒有答案?」這一類無意義的提問,應(yīng)該在提問中盡量刪除這些廢話,理由如下:第一,如果問題本身描述的不完整,這些附加的東西就是廢話。第二,因?yàn)樗鼈兲釂柕姆绞讲粚?,黑客們?huì)認(rèn)為這些東西很煩,很有可能就會(huì)用邏輯上無誤回復(fù)來敷衍你,諸如「是的,你可以得到幫助」和「不好意思,沒有人能幫你」。 一般來說,避免提「是或非」問題,除非你想得到「是或非」回答。 不要把問題標(biāo)記為「緊急」,即使你真的很緊急「緊急」只是你的「緊急」,跟我們無關(guān)。同時(shí),這些動(dòng)輒「緊急」的提問往往欲速而不達(dá),而且多數(shù)會(huì)被黑客們刪掉,因?yàn)樗麄冋J(rèn)為這是一種自私與魯莽的提問方式:企圖通過文字的簡單修飾來引起別人注意而獲得特殊的關(guān)照。 當(dāng)然也有例外,如果你在知名度很高使用某些程序出現(xiàn)問題,你的提問很有可能讓黑客們興奮,在這種情況下,如果你有時(shí)間壓力,并且很有禮貌地提出請求,黑客們會(huì)有興趣盡快地回復(fù)你。 不過需要注意的一點(diǎn)是:這樣提問是非常冒險(xiǎn)的,因?yàn)楹诳团d奮的標(biāo)準(zhǔn)和你的不同。譬如發(fā)個(gè)主題關(guān)于「國際空間站」帖子就可以得到關(guān)注,但是如果轉(zhuǎn)發(fā)關(guān)于慈善或政治的帖子就幾乎沒人理你。再如「緊急:幫我救救這個(gè)毛絨絨的小海豹!」這樣帖子在專業(yè)技術(shù)論壇讓黑客看到了肯定會(huì)相當(dāng)抓狂,即使他們認(rèn)為拯救毛絨絨的小海豹很重要。 如果你覺得以上的解釋難以理解,把剩下的內(nèi)容多讀幾遍,直到弄懂了再發(fā)帖也不遲。 謙遜沒害,而且有益禮貌一點(diǎn),使用「請」和「謝謝你的關(guān)注」或者「謝謝你的幫助」,讓別人明白你的真誠,讓他們覺得這樣無償?shù)膸椭闶侵档玫摹?/p> 坦白講,對黑客而言,在提問中使用正確的語法、清晰的文字、準(zhǔn)確的內(nèi)容,標(biāo)準(zhǔn)的格式遠(yuǎn)比使用禮節(jié)重要。黑客們一般寧可看文字鋒利直白但技術(shù)鮮明的bug報(bào)告,也不要看那種彬彬有禮有禮但內(nèi)容空洞含糊其辭的報(bào)告。(如果你不明黑客們?yōu)槭裁聪矚g這樣,那么你就要明白:黑客評價(jià)一個(gè)提問價(jià)值的標(biāo)準(zhǔn)在于這個(gè)問題能給他帶來什么樣的成長。) 然而,如果你已經(jīng)清楚地描述了一個(gè)問題,客氣禮貌一點(diǎn)肯定會(huì)增加你得到回復(fù)的機(jī)會(huì)。 (本文曾受到一些老黑客的指責(zé),這也是本文的唯一受指責(zé)的地方,所以我們必須指出,我們曾經(jīng)推薦使用「提前謝了」的感謝方式,這種感謝方式在一些黑客看來有一種事后不用再感謝任何人暗示和過河拆橋的味道,所以,我們現(xiàn)在的建議是:一、先說「提前謝了」,事后再表示對回復(fù)者的感謝;二、換一種表達(dá)方式,譬如用「謝謝你的關(guān)注」或「謝謝你的幫助」等。) 問題解決后,追加簡短說明在問題解決后向所有幫助過的人回復(fù)一條信息,讓他們知道問題是如何解決的并再次感謝。如果問題在論壇中受到廣泛關(guān)注,在那里追加此信息比較恰當(dāng)。 最理想的方式是向最初提問的主題中回復(fù)此消息,并在主題中注明「已解決」、「已搞定」或其它同等含義的字樣[17]。這樣,在信息快速流動(dòng)的論壇中,一個(gè)注明「已解決」或「已搞定」的主題就會(huì)讓別人節(jié)省很多時(shí)間,回復(fù)者不用再點(diǎn)進(jìn)去重復(fù)回復(fù)(除非他覺得這個(gè)問題值得再商榷),因此他就可以用這些時(shí)間去解決其他問題。 追加的信息無須太冗廠繁復(fù),一句簡單的「你好,問題已解決,是網(wǎng)線壞了!謝謝大家──比爾」就比什么都沒有要好。事實(shí)上,除非解決問題的過程很復(fù)雜,需要用得很高深的技術(shù),否則就用一條簡短親切的總結(jié)來回復(fù)就好了,總結(jié)中說明用了什么方法,解決了什么問題,無需將整個(gè)解決問題的過程給寫下來。 對于有深度的問題,建議給出一份完整解決該問題的方案,方案包括:問題的最終狀態(tài)、用了什么方法、列出具體的步驟和和易出錯(cuò)的地方,這樣才可以給到后來者一個(gè)完整的指引,注意不要將此方案搞成什么偵探推理小說。最后列出那些幫助過你的人的名字,那樣你有可能會(huì)交到朋友。 這種后續(xù)的跟進(jìn)信息不僅是禮貌的回復(fù),而且是內(nèi)容的分享,因?yàn)檫@些后續(xù)的解決方案會(huì)幫助其他有同樣問題的人,他們會(huì)在論壇中找到你的解決方案,并因此受益。 最后,此類后續(xù)的信息跟進(jìn)還讓每位參與協(xié)助的人因問題的解決而產(chǎn)生一種滿足感。如果你自己不是技術(shù)專家或黑客,相信我們,這種感覺對于你尋求幫助的老手和專家是非常重要的。問題的不了了之總會(huì)令人沮喪,但黑客們有強(qiáng)迫癥,總渴望它們被解決,你的后續(xù)跟進(jìn)就像是為他們消滅了一個(gè)眼中釘,并因此獲得了一定的信譽(yù)的威望,這對你的下次提問非常有幫助。 考慮到將來也會(huì)有人面臨類似的問題,如何避免重蹈覆轍呢?你可以自己寫一篇文章或者對FAQ進(jìn)行補(bǔ)充,然后發(fā)給項(xiàng)目的維護(hù)者。 在黑客交流的過程中,這種良好的后續(xù)跟蹤行為比傳統(tǒng)的禮貌更重要,這也是你善待他人贏得聲譽(yù)的方式,這是非常有價(jià)值的經(jīng)驗(yàn)和財(cái)富。 【本章注釋】 [17]在國內(nèi)論壇,問題解決之后,可以主動(dòng)修改論壇主題,添加上「已解決」字樣,然后通知版主做出處理。 如何解讀回答RTFM[18]和STFW[19]:你為什么不去試一試? 有一個(gè)古老而神圣的慣例:如果你收到RTFM的回復(fù),你就應(yīng)該去「Read The Fucking Manual」,他說得對,去讀一下吧。 「Read The Fucking Manual」(RTFM)有個(gè)年輕點(diǎn)的親戚,如果你收到「Search The Fucking Web」(STFW)的回復(fù),你也應(yīng)該去「Search The Fucking Web」,他說得也對,去搜一下吧。(更溫和一點(diǎn)的說法是「善用Google」) 在論壇,你也可能被要求去搜索論壇的存檔記錄。事實(shí)上,有人甚至可能熱心到為你提供以前解決此問題的線索。但千萬不要依賴這種幫助,你應(yīng)該在提問前搜索一下存檔。 通常的情況是,要求你主動(dòng)去搜索的人已經(jīng)打開了能解決你問題的手冊或網(wǎng)頁,他那時(shí)可能是一邊在看屏幕一邊敲著鍵盤回復(fù)「RTFM」或「STFW」,這些回復(fù)意味著:第一,你要的信息很容易找到。第二,自己動(dòng)手,豐衣足食。 這不是一種是鄙視,按黑客的標(biāo)準(zhǔn),回復(fù)者沒有不理你,反而在耐心地回復(fù)你,這是對你提問的尊敬,你應(yīng)該感謝他還像一個(gè)老奶奶一樣嘮嘮叨叨地回復(fù)你。 【本章注釋】 [18]RTFM,是一個(gè)英文縮寫,意思是:「去讀那些他媽的手冊」(Read The Fucking Manual),這句話通常用在回復(fù)那些只要查閱文件就可以解決,拿出來提問只是浪費(fèi)別人時(shí)間的問題. [19]STFW:Search The Fucking Web,去搜那些他媽的網(wǎng)站,語意同RTFM。 如果還不明白……如果你看不懂回答,不要馬上發(fā)帖要求別人進(jìn)行解釋說明,你應(yīng)該回過頭去看看你提問時(shí)候試用過的工具(如手冊、FAQ、網(wǎng)頁、行業(yè)內(nèi)朋友等),如果檢查過后,你發(fā)現(xiàn)還是需要解釋說明,你就要將已學(xué)的東西展現(xiàn)出來。 譬如,我告訴你:「看起來像是輸入項(xiàng)有問題,你需要清除它」,接著是個(gè)不好的回帖示范:「什么是輸入項(xiàng)?」(因?yàn)槟銢]有主動(dòng)在搜索引擎中搜查什么是輸入項(xiàng))。而以下就是一個(gè)很好的跟帖:「是的,我讀了手冊,某某輸入項(xiàng)只在 -z 和 -p 開關(guān)中被提到,但都沒有涉及到如何清除它們,你指的是哪一個(gè)還是我弄錯(cuò)了什么?」 對待無禮很多黑客圈子中看似無禮的行為并不是存心冒犯。相反,它是直接了當(dāng)、一針見血式的交流風(fēng)格,這種風(fēng)格對于更關(guān)注解決問題而不是使別人感覺舒服。 如果你覺得被冒犯了,試著平靜地對待。如果有人真的做了過分的事,論壇中的老前輩會(huì)教訓(xùn)他。如果這些沒有發(fā)生而你卻惱火了,那么這些致使你惱火的言語可能在黑客社區(qū)中看來是正常的,而你將被視為有錯(cuò)的一方,這會(huì)讓你喪失進(jìn)一步獲得信息或幫助的機(jī)會(huì)。 另一方面,如果你真的偶然地遇到了無禮和無聊的沖撞,你就要對真正的冒犯者予以狠狠的反擊了,用犀利的語言將其駁得體無完膚都是可以接受的,然而,在行事之前一定要有非??隙ǖ淖C據(jù)。因?yàn)榧m正無禮的言論與一場毫無意義的口水戰(zhàn)僅一線之隔,黑客們自己莽撞地越線的情況也屢見不鮮。新手可能難免中槍。但如果你想得到的是信息和幫助,就不要浪費(fèi)時(shí)間參與到口水戰(zhàn)之中。 (有些人斷言很多黑客都有輕度的自閉癥或阿斯伯格綜合癥[20],缺少用于潤滑人類社會(huì)「正?!股缃凰璧娜四X回路。這既可能是真也可能是假。如果你不是黑客,也許你會(huì)認(rèn)為我們腦袋有問題,以為還能幫助我們糾正那些古怪行為。如果你真的以為這么做會(huì)有效,你就只管這么做好了,我們不在乎。我們就喜歡現(xiàn)在這個(gè)樣子,因我們會(huì)對那些所謂的「診斷」擁有正常的科學(xué)的健康的懷疑精神。 在下一節(jié),我們會(huì)談到另一個(gè)主題,當(dāng)你犯錯(cuò)遭受到的指責(zé)該怎么辦。 【本章注釋】 20、阿斯伯格綜合癥,是一種泛自閉癥障礙,其重要特征是社交困難,伴隨著興趣狹隘及重復(fù)特定行為,但相較于其他泛自閉癥障礙,仍相對保有語言及認(rèn)知發(fā)展。 不要像loser那樣去行事常在河邊走,哪有不濕鞋。在黑客論壇混,總有有犯錯(cuò)的時(shí)候,你的錯(cuò)誤會(huì)被別人長篇大論的公開地揭露,或許在言語之中還會(huì)透露著鄙視和得意。 事后你能做的最壞的事莫過于哀怨你的遭遇、四處哭喊著被人誹謗、要求道歉、竭斯底里的呼喊、忍隱不做聲、威脅訴諸法律、向他公司投訴、忘了關(guān)馬桶蓋等等,但實(shí)際上,以下的的幾件事才是你應(yīng)該去做的: 就讓它這樣過去,這是一件很正常的事情。事實(shí)上,這樣的被人指出錯(cuò)誤也沒什么大不了,對自己反而是好事。 論壇社區(qū)的規(guī)則不會(huì)自行運(yùn)轉(zhuǎn),它們是只能通過參與者通過積極公開的方式來執(zhí)行維持。不要哭訴著要求將所有的批評和指責(zé)通過私下的郵件傳達(dá),這不是行之有效的運(yùn)作方式,當(dāng)有人在評論你的一個(gè)說法有誤或者提出不同看法時(shí),你堅(jiān)持聲稱受到人身攻擊,這也是沒用的,這也是loser對待事情的態(tài)度。 也有一些黑客論壇愚蠢地執(zhí)行過「高禮節(jié)要求」的規(guī)則,禁止參與者公開發(fā)表任何對別人觀點(diǎn)挑錯(cuò)的文章,并發(fā)出「如果你不想幫助用戶就閉嘴」的言論,結(jié)果造成大批有思想的參與者逃離此論壇,這個(gè)論壇就變成了一個(gè)毫無意義,絮絮叨叨,沒有價(jià)值的技術(shù)論壇。 是要夸張的不切實(shí)際的「友好」還是坦誠直白的「實(shí)用」?你自己挑一個(gè)吧。 記著:當(dāng)黑客說你犯錯(cuò)了,并且(無論說得多么尖銳地)告訴你別再這樣做時(shí),這表明他在為關(guān)心你和這個(gè)社區(qū)。對他而言,無視并拉黑要容易得多,如果你無法做到感謝,至少要有點(diǎn)自尊,別大聲哀怨,別以一個(gè)敏感而莽撞的新手自居,更別指望別人能像對待一個(gè)波大無腦的女人一樣去撫慰你。 有時(shí)候,即使你沒有犯錯(cuò)(或者只是別人的臆想),有些人也會(huì)以莫須有的名義來指責(zé)你。在這種情況下,你的報(bào)怨倒是真的會(huì)把事情弄得更糟。 這些無事生非的人其實(shí)也沒有多大的能耐,不是在吹牛逼的專家,就是一天到晚在唱反調(diào)的心理預(yù)測專家??傆凶x者有能力分辨,并想辦法去對付他們,這些人在玩火自焚,你就不用操心了。 如果你在網(wǎng)絡(luò)上不得不要面對一場爭論,你得首先去確認(rèn)一下自己是否犯錯(cuò),如果你沒有犯錯(cuò),那么你就可以斷定這是一場無聊的口水戰(zhàn),不要將自己卷入口水戰(zhàn)之中,也最好不要理睬其他與你無關(guān)的口水戰(zhàn),因?yàn)檫@樣爭論不會(huì)有一個(gè)明確的結(jié)果。 三思而后問下面是些典型的愚蠢問題和黑客不回答它們的原因和想法。 問:1、我到哪可以找到某程序或X資源? 問:2、我怎樣用X做Y? 問:3、如何配置我的shell提示? 問:4、我可以用Bass-o-matic文件轉(zhuǎn)換工具將AcmeCorp文檔轉(zhuǎn)為TeX格式嗎? 問:5、我的{程序、配置、SQL 語句}不運(yùn)行了。 問:6、我的Windows系統(tǒng)出問題了,你能幫個(gè)忙嗎? 問:7、我的程序運(yùn)行不了,我認(rèn)為是系統(tǒng)工具X有問題。 問:8、我在安裝Linux或X是遇到困難,你能幫個(gè)忙嗎? 問:9、我如何才能破解超級用戶口令/盜取操作員的特權(quán)/查看某人的電子郵件? 問:1、我到哪可以找到某程序或X資源? 答: 在我找到的地方啊,笨蛋!──你就不會(huì)在網(wǎng)頁找么,真抓狂,難道還有人不知道如何使用Google嗎? 問:2、我怎樣用X做Y? 答:如果你想得出Y的結(jié)果,那么請不要在想得出Y的結(jié)果前提供X的方法,這樣的問題表明提問者不但對X完全無知,也對Y了解不深,這個(gè)問題還表明提問者已經(jīng)被某種思維定勢禁錮住了,最好讓他們將問題整理好再來提問。 問:3、如何配置我的shell提示? 答:如果你有足夠的智慧提這個(gè)問題,你也該有足夠的智慧去「Read The Fucking Manual」(RTFM),然后自己去找出來。 問:4、我可以用Bass-o-matic文件轉(zhuǎn)換工具將AcmeCorp文檔轉(zhuǎn)為TeX格式嗎? 答: 試試就知道了。如果你試過,你既知道答案,又不用浪費(fèi)我的時(shí)間。 問:5、我的{程序、配置、SQL 語句}不運(yùn)行了。 答: 這不是一個(gè)問題,我也沒有興趣去猜你有什么問題──我有更要緊的事要做??吹竭@種東西,我的反應(yīng)一般如下: 你還有什么補(bǔ)充嗎? oh,太可惜了,希望你能搞定。 這跟我有什么關(guān)系? 問:6、我的Window系統(tǒng)出問題了,你能幫個(gè)忙嗎? 答:可以,將Windows系統(tǒng)給卸了,裝個(gè)開源操作系統(tǒng),例如Linux或BSD[21]。 注意:你可以問與Windows系統(tǒng)相關(guān)的問題,前提是這個(gè)程序有Windows的官方版,不是我對Windows系統(tǒng)有偏見,而是Windows系統(tǒng)與大部分的軟件存在兼容問題,而實(shí)際上Windows系統(tǒng)實(shí)在很差。 問:7、我的程序運(yùn)行不了,我認(rèn)為是系統(tǒng)工具X有問題。 答:這個(gè)程序被成千上萬用戶反復(fù)使用,你有可能是第一個(gè)提出這個(gè)程序有缺陷的人,不過你得要拿出具體的證明,最后有一份詳細(xì)清晰的缺陷說明。 問:8、我在安裝Linux或X是遇到困難,你能幫個(gè)忙嗎? 答:不好意思,我?guī)筒涣四?,我需要親手操作你的電腦才能幫你排錯(cuò),去向當(dāng)?shù)氐腖inux論壇尋求幫助吧。 注意:如果安裝問題與某Linux發(fā)行版有關(guān),請首先在論壇中提問。同時(shí),應(yīng)準(zhǔn)確描述問題的細(xì)節(jié)。在此之前,先用 「linux」和所有被懷疑出問題的硬件 [作關(guān)鍵詞] 仔細(xì)搜索。 問:9、我如何才能破解超級用戶口令/盜取操作員的特權(quán)/查看某人的電子郵件? 答:想做這種事情說明你是個(gè)人品惡劣的家伙,想讓黑客教你做這種事情說明你是個(gè)傻逼。 【本章注釋】 21、這個(gè)回答可以視為一句吐槽,也可以視為一個(gè)建議,畢竟大多數(shù)黑客都是使用開源系統(tǒng)的。 好問題與壞問題最后,我將通過舉例來演示提問的智慧。同樣的問題兩種提法,一種愚蠢,另一種明智。 愚蠢:我在哪能找到關(guān)于Foonly Flurbamatic設(shè)備的東西? 這個(gè)問題在請求一個(gè)「Search The Fucking Web」(STFW) 式的回復(fù)。 明智:我用谷歌搜索過「Foonly Flurbamatic 2600」,但沒有找到什么有用的信息,有誰知道在哪能找到這種設(shè)備的編程信息嗎? 這個(gè)人已經(jīng)搜索過網(wǎng)絡(luò)了,而且聽起來他可能真的遇到了問題。 愚蠢:我不能編譯某項(xiàng)目的源代碼,它為什么這么爛? 提問者預(yù)提了一個(gè)假設(shè):是別人搞砸了,太狂妄自大了。 明智:某項(xiàng)目的源代碼不能在某Linux 6.2版下編譯。我讀了常見問題文檔,但其中沒有與某Linux相關(guān)的內(nèi)容。這是編譯時(shí)的記錄,我做錯(cuò)了什么嗎? 提問者已經(jīng)指明了運(yùn)行環(huán)境,讀了常見問題文檔(FAQ),列出了錯(cuò)誤,也沒有假設(shè)問題是別人的過錯(cuò),值得留意一下。 愚蠢:我的主板有問題,誰能幫我? 某黑客管理員對此的反應(yīng)可能是:「是的,還需要幫你拍背和換尿布嗎?」,然后是敲下刪除鍵。 明智:我在S2464主板上試過X、Y和Z方法,當(dāng)它們都失敗后,又試了A、B和C方法。注意我試C時(shí)的奇怪癥狀,顯然某某東西正在做某某事情,這并不是正常的現(xiàn)象。通常在Athlon MP主板上導(dǎo)致某某事情的原因是什么?有誰知道我還能再嘗試什么方法以確定問題? 相反地,這個(gè)人的問題看來值得回答。他或她展現(xiàn)了解決問題的能力而不是坐等天上掉餡餅。 在最后那個(gè)問題中,注意「給我一個(gè)答案」與「請幫我看看我還能再做點(diǎn)什么測試以得到啟發(fā)」之間細(xì)微但重要的差別。 事實(shí)上,最后那個(gè)問題基本上源于2001年8月Linux內(nèi)核郵件列表(lkml)上的真實(shí)事件,是我(Eric)當(dāng)時(shí)提了那個(gè)問題,我發(fā)現(xiàn)Tyan S2462主板有神秘的死機(jī)現(xiàn)象,郵件列表成員給我提供了解決此問題的關(guān)鍵信息。 通過這種提問方式,我給了別人可以深思玩味的東西。我設(shè)法使之對參與者既輕松又有吸引力,也表明了對同行能力的尊敬并邀請他們與我一起協(xié)商。通過告訴他們我已經(jīng)走過的彎路,我還表明了對他們寶貴時(shí)間的尊重。 事后,當(dāng)我感謝大家并評論這次良好的經(jīng)歷時(shí),一個(gè)Linux內(nèi)核郵件列表的成員談到,他認(rèn)為我得到答案并不是因?yàn)槲业拿謷煸诹斜砩希皇且驗(yàn)槲艺_的提問方式。 黑客們在某種層面上貌似是非常冷漠無情的精英分子。我想在這事上他是對的,如果我表現(xiàn)得像個(gè)不勞而獲的寄生蟲,不管我是誰都會(huì)被忽略或斥責(zé)。他建議將整個(gè)事件作為對其它人提問的指導(dǎo),這直接導(dǎo)致了本文的編寫。 如果得不到回答如果得不到回答,請不要認(rèn)為我們不想幫你,有時(shí)的確是因?yàn)楸粏柕降男〗M成員不知道答案。沒有回復(fù)不等于不被無視,當(dāng)然,必須承認(rèn)從外部很難看出兩者的差別。 一般而言,不要在再重復(fù)發(fā)表這個(gè)問題,這會(huì)被視為毫無意義的騷擾。耐心一點(diǎn),知道你問題答案的人可能生活在不同的時(shí)區(qū),有可能正在睡覺,也有可能你的問題一開始就沒有組織好。 還有其它信息源可以尋求幫助,例如一些面向新手的資源區(qū)。 有許多在線與本地的用戶組織,雖然他們自己不編寫任何軟件,但是他們對軟件很忠誠熱心。這些用戶組通常因互助和幫助新手而形成。 還有眾多大小商業(yè)公司提供簽約支持服務(wù)(紅帽與SpikeSource是兩家最出名的,還有許多其它的)。別因?yàn)橐饵c(diǎn)錢才有支持就感到沮喪!畢竟,如果你車子的汽缸墊燒壞了,你還是得花錢找個(gè)修理店把它弄好。同理,即使軟件沒花你一分錢,你總不能指望他的服務(wù)支持都是免費(fèi)的。 象Linux這樣流行的軟件,每個(gè)開發(fā)版至少有一萬個(gè)以上的用戶,一個(gè)人不可能應(yīng)付這么多用戶的服務(wù)要求。即使你必須付費(fèi)才能得到支持,也比你還得額外花錢買軟件要少得多(封閉源代碼軟件的服務(wù)支持與開源軟件相比通常還要貴一點(diǎn),也要差一點(diǎn))。 如何更好地回答態(tài)度和善一點(diǎn)。問題帶來的壓力常使人顯得無禮或愚蠢,即使你平時(shí)不是這樣的。 對初犯錯(cuò)者私下回復(fù)。對那些無心犯錯(cuò)之人也沒有必要當(dāng)眾羞辱,一個(gè)真正的新手也許連怎么搜索或者連FAQ在哪都不知道。 如果你對某樣事物不確定,一定要說出來! 一個(gè)聽起來權(quán)威的錯(cuò)誤回復(fù)比沒有還要糟,別因?yàn)槁犉饋硐髠€(gè)專家好玩就給別人亂指路。要謙虛和誠實(shí),給提問者與同行都樹個(gè)好榜樣。 如果你幫不了忙,也不要幫倒忙。不要在具體步驟上開玩笑,有些可憐的新手會(huì)把它當(dāng)成真的指令,那樣也許會(huì)毀了用戶的安裝進(jìn)程。 探索性的疑問可以引出更多的細(xì)節(jié)。如果你問題問得好,你也可以學(xué)到點(diǎn)東西。試試將很差的問題轉(zhuǎn)變成好問題,別忘了我們曾經(jīng)都是新手。 盡管對那些懶人敷衍一句「Read The Fucking Manual」(RTFM)是正當(dāng)?shù)?,但是指出文檔的位置(或者給出一個(gè)搜索關(guān)鍵詞)會(huì)更好 如果你決定回答一個(gè)問題,請盡可能詳盡地提供一個(gè)好答案。當(dāng)別人正在用錯(cuò)誤的工具或方法時(shí),別給出一個(gè)權(quán)宜之計(jì),應(yīng)推薦一個(gè)更好的工具,重新組織這個(gè)問題。 提供一個(gè)可操作的回答建議!如果回答者已經(jīng)詳細(xì)地研究過問題,并且已經(jīng)測試過X、 Y, Z, A、B、和C方法,均沒有得出一個(gè)滿意的結(jié)果,這表明簡單地回復(fù)「請嘗試X或者Y方法」或提供一個(gè)鏈接是沒有用的,你要給出一個(gè)可操作的詳細(xì)的操作步驟。 讓你所在的社區(qū)或論壇也從學(xué)習(xí)中獲益。當(dāng)回復(fù)一個(gè)好問題時(shí),問問自己「如何修改相關(guān)文件或FAQ文檔以免再次解答同樣的問題?」,接著再向社區(qū)或論壇維護(hù)者發(fā)一份補(bǔ)充說明。 如果你的答案是在研究一番后得出的,請展現(xiàn)你的解題技巧而不是直接端出結(jié)果,畢竟「授人以魚,不如授人以漁」。 相關(guān)資源如果需要個(gè)人電腦、Unix和互聯(lián)網(wǎng)如何工作的基礎(chǔ)知識(shí),參閱Unix和互聯(lián)網(wǎng)工作的基本原理。 當(dāng)你發(fā)布軟件或補(bǔ)丁,試著按軟件發(fā)布實(shí)踐手冊操作。 鳴謝Evelyn Mitchell貢獻(xiàn)了一些愚蠢問題例子并啟發(fā)了我編寫「如何更好地回答問題」這一章節(jié) Mikhail Ramendik貢獻(xiàn)了一些特別有價(jià)值的建議和改進(jìn)意見。 附:知乎對「如何提問題?」的答案總結(jié)1、認(rèn)真:認(rèn)真對待你的提問,就像你希望別人認(rèn)真回答你的問題一樣。 2、先搜索:確保你提了一個(gè)新問題,而不是別人問過的重復(fù)問題(解決辦法:提問之前先搜索)。 3、具體:讓你的問題處于具體的環(huán)境中,避免大而空洞、需要具體情況來分析、或別人難以讀懂的問題。 4、解決辦法:將問題闡述清楚,盡可能將問題的「補(bǔ)充說明」寫清楚。 5、書寫:正確地使用標(biāo)點(diǎn)符號和英文大小寫,沒有錯(cuò)別字。 6、添加話題:給問題添加合適的相關(guān)話題。 7、邀請回答:使用右側(cè)的「站內(nèi)邀請」,邀請專業(yè)的人來回答。 8、在問題中避免出現(xiàn)絕對性詞匯。很多問題你認(rèn)為是這樣但事實(shí)并不如此。eg. 為什么畫的畫畫得再像也一眼能看出來不是照的相? 9、避免在問題中加上自己對答案非專業(yè)或非正確的猜想。 我們?nèi)裟芨咨频厮褜べY料,實(shí)在已經(jīng)改變世界。 |
|