“提問的智慧”之程序員篇
譯文【51CTO精選譯文】無論你做什么事,你都會(huì)遇到需要提問的時(shí)候。對于技術(shù)人員來說尤其如此。網(wǎng)絡(luò)上曾流傳一文《提問的智慧》(如果你還沒看過,請自行搜索),雖然講的是黑客社區(qū)中的事情,但其智慧性令其成為了很多技術(shù)與非技術(shù)論壇的法典。
下面這篇文章和那篇經(jīng)典的《提問的智慧》一樣,內(nèi)容都是開發(fā)人員在社區(qū)中所能夠看見的真實(shí)的問題(唯一的不同可能是沒有那篇長吧)??傊?,如果你是一個(gè)程序員,遇到問題要在社區(qū)里發(fā)問,那么請一定不要忽略這位作者提出的建議——它們會(huì)幫你更好的得到你想要的答案。
我在stackoverflow.com(51CTO編者注:stackoverflow是英文界一個(gè)相當(dāng)不錯(cuò)的開發(fā)問答站,在這里推薦一下)上花費(fèi)很多時(shí)間來回答各種各樣的問題,有些問題問得好,但有些問題簡直無法回答,優(yōu)秀的開發(fā)人員應(yīng)該知道如何提問才能最快獲得***的答案。
首先,我想說的是,如果你認(rèn)為你還是一名程序員,如果你每天都沒有一點(diǎn)問題要問,那你一定正在錯(cuò)誤中前行。問問題不要害羞,這沒什么丟人的,大師也會(huì)有不懂的地方。
由于我在各種各樣的問答網(wǎng)站上混了很長時(shí)間,看到過無數(shù)怪異的提問方法,根據(jù)我遇到的問題,提煉出幾點(diǎn)建議:
不要害怕過度描述你的問題
有些人似乎害怕在問題中泄露什么天機(jī),不愿意帖出代碼片段,可能無關(guān)的詳細(xì)信息等,其實(shí)很多時(shí)候這些信息可能是解決問題至關(guān)重要的東西,當(dāng)然也有一個(gè)限度,我不鼓勵(lì)你將整個(gè)類庫都貼出來,除非確有必要。
包括錯(cuò)誤消息
如果我看到類似“它不工作了”,“它失效了”等問題,我一般會(huì)直接跳過。你不說清楚一點(diǎn),叫人家怎么回答你呢?難道要讓人家來猜測你想問的是什么?你可能覺得有些信息沒必要帖出來,對于你而言,你可能是這么認(rèn)為的,但對于想幫助你的人,他們肯定不太清楚這些,因此你一定要清楚到底發(fā)生了什么,即使是些微不足道的信息也要貼出來,當(dāng)然包括錯(cuò)誤信息。
簡要列出你的環(huán)境信息
我的另一篇文章“我痛恨那些還不知道如何報(bào)告BUG的人”也提到了這個(gè)問題,環(huán)境變量常常被忽略,多花幾秒鐘列出象軟件的詳細(xì)信息,版本號(hào)等對回答問題是很有幫助的。
你自己的推測
如果在你的問題中將你對問題的看法,以及自己所想到一些思路等帖出來,或許其它人看了就會(huì)受到啟發(fā),或者發(fā)現(xiàn)你的錯(cuò)誤之處,這樣即使沒人能準(zhǔn)確回答你的問題,至少也可以獲得不少建議。
例子
雖然不是所有問題都可以舉一個(gè)例子,但如果有一個(gè)例子進(jìn)行表達(dá),那效果會(huì)相當(dāng)好。如你的代碼片段,如果可以截圖也可以張貼關(guān)鍵的圖片,對于CSS這樣的問題,可能只有將你的代碼貼出來人家才有法回答。
提問前先自己嘗試找解決辦法
Stackoverflow上每天都有無數(shù)的問題通過Google簡單搜索一下就可以得到答案,但有些人偏偏要提出來,在張貼問題之前自我探索和研究應(yīng)該是必需的,不要做一個(gè)懶人,那樣你會(huì)一直提不高;反之,即使你通過自我探索和研究最終也沒有找到解決辦法,但你會(huì)發(fā)現(xiàn)你又多學(xué)到了好多東西。
不要得罪回答你問題的人
大多數(shù)時(shí)候回答問題的人都是利用業(yè)務(wù)時(shí)間在幫助人,如果有人對你的提問做了響應(yīng),但沒有正面回答你的問題,而是進(jìn)一步詢問你一些相關(guān)的內(nèi)容,此時(shí)你應(yīng)該耐心回答他們的詢問,可能還有一些人會(huì)直言不諱地說你“這個(gè)都不懂”或“這個(gè)太簡單了,搜索一下便知”,你也不要以為自己就很笨了,更不要回復(fù)一些不敬的話語。
這幾點(diǎn)還是很好做到吧!沒有人知道所有問題的答案,因此不要害羞提問,在遇到你能解決的問題時(shí),也不要吝嗇你的回答。
提問的智慧,也是程序員的必修課。
原文:How Do GOOD Developers Ask Questions?
作者:Mike Bernat
【編輯推薦】