程序員應該如何去請教別人問題

歡迎持續關注閱讀,一起學習,共同交流(有興趣加 477819525君羊)。


在程序員世界裏,當提出一個技術問題時,你能得到怎樣的回答?這取決於挖出答案的難度,同樣取決於你提問的方法。本文意義在於幫助你提高發問技巧,以獲取你最想要的答案。


我們不想掩飾對這樣一些人的蔑視--他們不願思考,或者在發問前不去完成他們應該做的事。這種人只會謀殺時間--他們只願索取,從不付出,無端消耗我們的時間,而我們本可以把時間用在更有趣的問題或者更值得回答的人身上。我們稱這樣的人爲“失敗者”(由於歷史原因,我們有時把它拼作“lusers”)。
  我們在很大程度上屬於志願者,從繁忙的生活中抽出時間來解惑答疑,而且時常被提問淹沒。所以我們無情的濾掉一些話題,特別是拋棄那些看起來象失敗者的傢伙,以便更高效的利用時間來回答勝利者的問題。


========
 提問之前
========


 當你提出問題的時候,首先要說明在此之前你幹了些什麼;這將有助於樹立你的形象:你不是一個妄圖不勞而獲的乞討者,不願浪費別人的時間。如果提問者能從答案中學到東西,我們更樂於回答他的問題。

  周全的思考,準備好你的問題,草率的發問只能得到草率的回答,或者根本得不到任何答案。越表現出在尋求幫助前爲解決問題付出的努力,你越能得到實質性的幫助。

  小心別問錯了問題。如果你的問題基於錯誤的假設,普通程序員通常會用無意義的字面解釋來答覆你,心裏想着“蠢問題...”,希望着你會從問題的回答(而非你想得到的答案)中汲取教訓。

  決不要自以爲夠資格得到答案,你沒這種資格。畢竟你沒有爲這種服務支付任何報酬。你要自己去“掙”回一個答案,靠提出一個有內涵的,有趣的,有思維激勵作用的問題,而不僅僅是被動的從他人處索要知識--去掙到這個答案。

  另一方面,表明你願意在找答案的過程中做點什麼,是一個非常好的開端。
  “誰能給點提示?”、“我這個例子裏缺了什麼?”以及“我應該檢查什麼地方?”比“請把確切的過程貼出來”更容易得到答覆。因爲你顯得只要有人指點正確的方向,你就有完成它的能力和決心。


==========
明白你想問什麼
==========

  漫無邊際的提問近乎無休無止的時間黑洞。最能給你有用答案的人也正是最忙的人(他們忙是因爲要親自完成大部分工作)。這樣的人對無節制的時間黑洞不太感冒,因此也可以說他們對漫無邊際的提問不大感冒。

  如果你明確表述需要回答者做什麼(提供建議,發送一段代碼,檢查你的補丁或是別的),就最有可能得到有用的答案。這會定出一個時間和精力的上限, 便於回答者集中精力來幫你,這很湊效。

  要理解專家們生活的世界,要把專業技能想象爲充裕的資源,而回復的時間則是貧乏的資源。解決你的問題需要的時間越少,越能從忙碌的專家口中掏出答案。

  因此,優化問題的結構,儘量減少專家們解決它所需要的時間,會有很大的幫助--這通常和簡化問題有所區別。因此,問“我想更好的理解X,

  能給點提示嗎?”通常比問“你能解釋一下X嗎?”更好。如果你的代碼不能工作,問問它有什麼地方不對,比要求別人替你修改要明智得多。



================
別問應該自己解決的問題
================

  大牛總是善於分辨哪些問題應該由你自己解決;因爲我們中的大多數都曾自己解決這類問題。同樣,這些問題得由你來搞定,你會從中學到東西。

  你可以要求給點提示,但別要求得到完整的解決方案。

==============
去除無意義的疑問
==============

  別用無意義的話結束提問,例如“有人能幫我嗎?”或者“有答案嗎?”。

  首先:如果你對問題的描述不很合適,這樣問更是畫蛇添足。其次:由於這樣問是畫蛇添足,大牛們會很厭煩你--而且通常會用邏輯上正確的回答來表 示他們的蔑視,例如:“沒錯,有人能幫你”或者“不,沒答案 ”。

======================
謙遜絕沒有害處,而且常幫大忙 x
======================

  彬彬有禮,多用“請”和“先道個謝了”。讓大家都知道你對他們花費時間提供幫助心存感激。

  然而,如果你有很多問題無法解決,禮貌將會增加你得到有用答案的機會。

  (注意到,從資深程序員處得到的唯一嚴重缺陷反饋,就是對預先道謝這一條。一些程序員覺得“先謝了”的言外之意是過後就不會再感謝任何人了。我們的建議是:都道謝。)

==================
問題解決後,加個簡短說明
==================

  問題解決後,向所有幫助過你的人發個說明,讓他們知道問題是怎樣解決 的,並再一次向他們表示感謝。如果問題在談論區域內引起了 廣泛關注,應該在那裏貼一個補充說明。

  補充說明不必很長或是很深入;簡單的一句“你好,原來是網線出了問題!謝謝大家--Bill”比什麼也不說要強。事實上,除非結論真的很有技術含量,否則簡短可愛的小結比長篇學術論文更好。說明問題是怎樣解決的,但大可不必將解決問題的過程複述一遍。

  最後(至少?),這種補充有助於所有提供過幫助的人從中得到滿足感。

  如果你自己不是老手,那就相信我們,這種感覺對於那些你向他們求助的導師或者專家而言,是非常重要的。問題久拖未決會讓人灰心;大牛們渴望看到問題被解決。好人有好報,滿足他們的渴望,你會在下次貼出新問題時嚐到甜頭。


==========
三思而後問
==========

  以下是幾個經典蠢問題,以及大牛在拒絕回答時的心中所想:

  問題:我能在哪找到X程序?

  問題:我的程序/配置/SQL申明沒有用

  問題:我的Windows有問題,你能幫我嗎?

  問題:我在安裝Linux(或者X)時有問題,你能幫我嗎?

  問題:我怎麼才能破解root帳號/竊取OP特權/讀別人的郵件呢?

  提問:我能在哪找到X程序?

  回答:就在我找到它的地方啊蠢貨--搜索引擎的那一頭。天吶!

  還有人不會用Google嗎?

  提問:我的程序(配置、SQL申明)沒有用

  回答:這不算是問題吧,我對找出你的真正問題沒興趣--如果要

  我問你二十個問題才找得出來的話--我有更有意思的事要做呢。

  在看到這類問題的時候,我的反應通常不外如下三種:

  1. 你還有什麼要補充的嗎?

  2. 真糟糕,希望你能搞定。

  3. 這跟我有什麼鳥相關?

  提問:我的Windows有問題,你能幫我嗎?

  回答:能啊,扔掉萎軟的垃圾,換Linux吧。

  提問:我在安裝Linux(或者X)時有問題,你能幫我嗎?

  回答:不能,我只有親自在你的電腦上動手才能找到毛病。

  還是去找你當地的Linux用戶組尋求手把手的指導吧(你能在這兒找到用戶組的清單)。

  提問:我怎麼才能破解root帳號/竊取OP特權/讀別人的郵件呢?

  回答:想要這樣做,說明你是個卑鄙小人;想找個黑客幫你,說明你是個白癡!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章