教你正確的提問姿勢

編程學習過程中以及工作中,常常會遇到困難,這時候除了自己想辦法解決,更快的方法就是向身邊的人提問尋求答案。

我收到過一些知乎私信詢問的,更多的是在QQ群或者微信群里被提問。發現編程的新手往往也是提問的新手,有時候真的是被搞得很無語。雖然每天會回答很多問題,但是有些問題真的是一點都不想答。

所以編程小白同學不妨在提問之前看看下面幾個條守則:

遇到問題首先要查一下谷歌前三頁

大多數編程的問題都可以通過谷歌獲得答案,比如官方的文檔,或者某人的博客。如果搜中文找不到答案,可以試試英文。

如果英文不好,就用有道翻譯在線翻譯_有道,翻譯之後再查找。

如果不會用谷歌,請用百度搜索一下怎麼上谷歌

正確的提問內容

在Google Code社區提問的時候,會自動生成一個模板:

What steps will reproduce the problem? n該問題的重現步驟是什麼?n1. n2. n3. nnWhat is the expected output? What do you see instead? n你期待的結果是什麼?實際看到的又是什麼?nnnWhat version of the product are you using? On what operating system? n你正在使用產品的哪個版本?在什麼操作系統上?nnnPlease provide any additional information below.n如果有的話,請在下面提供更多信息。n

如果通過第一種方式無法找到答案,這多半不是一個簡單的概念問題,可能是一段代碼沒有按照預期的想法執行,也可能是用了不恰當的方法去實現需求。

所以提問的時候最好告訴對方,自己本來是要做什麼,而不是說這段代碼是要幹嘛。比如你提問如何能夠把數據保存在瀏覽器,其實你的目的是記錄用戶登錄狀態,那麼前面的問題很可能得到的答案是localstorage,但是真正需要的答案是cookie和session。

玉伯在文章中描述說

實際情況卻是,提問者選擇的路本身就是一條崎嶇之路,對於要解決的問題,實際上有更好的方式。這種情況下,描述清楚目標,講清楚要幹什麼非常重要。n

所以我們要盡量描述目標,而不是過程。

平和對等的心態

在QQ群里用「大神」,「大牛」這種詞求回答其實是不太合適的。因為如果我回答了問題,就要對號入座,承認自己是「大神」,這顯然是一件尷尬的事。

另外一種就是用一種理所當然的語氣提問,尤其是詢問自己工作的內容,也是感覺很不好的。畢竟是你在上班,如果是問知識點,或者編程技巧,大家可以交流一下。但如果赤裸裸的把工作內容拿出來,讓別人幫忙做,那是不是也要把工資拿出來給解決的人呢?

所以提問的時候最好提煉出知識點,或者描述清楚需求和自己的嘗試, 像「求實現這種效果」,然後貼個圖,真的是有人回答才怪。

正確的代碼提供方式

這就是一種特別不正確的提供代碼的方式

而這是另一種不正確提問的姿勢。

之所以有個企鵝屁股,是因為

htn

會被轉義,這就很尷尬了。

正確的代碼提供方式可以使用jsbin,粘貼代碼。前端的好處就是可以這樣不依賴本機環境,直接在線上運行。我自己給朋友發示例代碼,或者解答別人問題的時候,也基本都在使用jsbin。

利用好社區而不是IM工具

QQ群或者微信群並不是一個探討技術的好的載體,一來是群聊環境可能經常被插話,二來也是問題和答案難以被二次利用。而知乎上的問題和答案可以被更多人閱讀,這使得提問和回答的質量都更加有保障,答題者也更願意組織好語言,使得答案可以重複被利用。

當然,有時候在知乎提問也會有挫敗感,比如前幾天遇到的:

順手點了邀請,也不是非要你回答,老子也是奇怪了,知乎提問都還要說個請字么?

所以,請你們還是要珍惜願意無償且友善回答問題的網友

比如我...

【參考資料】

如何向開源社區提問題 · Issue #545 · seajs/seajs · GitHub


推薦閱讀:

哪個編程語言最流行?
如何學習一門編程語言-零基礎愛好者篇
Nemo 的 三門編程語言之旅

TAG:编程入门 | 提问技巧 |