程序員,你會問問題嗎?
但是非常遺憾的是,這樣的好問題卻是鳳毛麟角。我經(jīng)常會被一些莫名其妙的問題搞的啼笑皆非,比如:
程序運行過程中突然內(nèi)存溢出,該如何解決?
如何配置JVM的虛擬機參數(shù)?
程序部署到Linux上后,頁面出現(xiàn)中文亂碼,是不是中間件的配置出現(xiàn)問題了?
集群節(jié)點不能自動復(fù)制,如何解決?
最可氣是第四個問題,經(jīng)過了解環(huán)境逐一排查,最后發(fā)現(xiàn)兩個節(jié)點根本就ping不通嘛,這種“異常”在現(xiàn)場該是多么容易發(fā)現(xiàn)?。?/p>
當(dāng)然,類似的傻問題我年輕的時候也問過,誰會不犯錯呢,真正讓我認識到這一點的重要性,還是在工作中與國外程序員的郵件交流。在2005年期間,與國外程序員共同維護公司內(nèi)部的一個平臺級產(chǎn)品,郵件往來必不可少,慢慢的我發(fā)現(xiàn)國外的程序員提的問題或報的bug都非常有規(guī)律,每個問題或bug都有非常清晰的標(biāo)題,正文是環(huán)境描述,已經(jīng)采取了什么措施、結(jié)果,相關(guān)日志,Core dump,圖片等等,一般讀完郵件就能非常清楚的了解對方想要表達的意圖和希望你能提供的幫助,而且你也知道該做什么,如何回復(fù)等等。久而久之,自己也不好意思再去寫那些傻問題了。
那么作為技術(shù)人員,如何去問一個讓雙方都滿意的好問題并最大程度的得到回復(fù)呢?這一點對提問者重要,對被問者同樣重要,大好人生,誰也不愿意為一個爛問題浪費時間。
簡單總結(jié)一下,如果你按照以下步驟進行,提出的問題一定會更靠譜一些,提出好的問題是你提升的第一步,其實這個過程在提問之前已經(jīng)開始了:
遇到問題不要急著問別人,在時間允許的情況下看是否自己能夠解決,一方面鍛煉自己分析問題和解決問題的能力,另一方面,一旦問題解決了,問題就不是問題,而是你的經(jīng)驗和知識庫。況且現(xiàn)在互聯(lián)網(wǎng)有那么多的技術(shù)資料和各類問答網(wǎng)站,想碰到一個別人沒碰到的問題,已經(jīng)非常困難了,除非是內(nèi)部產(chǎn)品。
如果做了努力依然不能解決,或者客觀條件不允許你自己解決了,那么首先要選擇提問對象,不管是社區(qū)還是公司同事,確保他是你所知道的最佳解決人選。
你需要一個好的標(biāo)題,用清晰的短句描述你遇到的問題
至關(guān)重要的正文
(1)用清晰的語言描述你遇到的問題
(2)提供軟件環(huán)境,包括操作系統(tǒng)、數(shù)據(jù)庫等相關(guān)軟件及其版本號
(3)問題是否可以重現(xiàn),采用什么方式重現(xiàn)
(4)采用了什么措施解決問題,最終結(jié)果(可提供日志、程序、截圖等描述)
(5)盡可能提供問題相關(guān)的可分析文件,包括日志、截圖和Core dump等
(6)不要長篇大論,簡明扼要,描述主要問題
最后,不要忘了說請和謝謝,畢竟你需要別人幫助你解決問題,沒人欠你什么。
原文鏈接:http://www.cnblogs.com/chijianqiang/archive/2012/09/24/question.html
【編輯推薦】