池建強:程式設計師,你會問問題嗎?
來源:池建強
由於一直從事技術和平臺產品方面的工作,我們部門經常會收到公司內外同事和同仁的問題郵件,有些好的問題能讓你發現自己技術上的缺陷、產品的bug或提升的空間,去思考、回答和解決這樣的問題真是一件讓人愉悅,充滿挑戰和成就感的事情。但是非常遺憾的是,這樣的好問題卻是鳳毛麟角。我經常會被一些莫名其妙的問題搞的啼笑皆非,比如:
1、程式執行過程中突然記憶體溢位,該如何解決?
2、如何配置JVM的虛擬機器引數?
3、程式部署到Linux上後,頁面出現中文亂碼,是不是中介軟體的配置出現問題了?
4、叢集節點不能自動複製,如何解決?
最可氣是第四個問題,經過了解環境逐一排查,最後發現兩個節點根本就ping不通嘛,這種“異常”在現場該是多麼容易發現啊!
當然,類似的傻問題我年輕的時候也問過,誰會不犯錯呢,真正讓我認識到這一點的重要性,還是在工作中與國外程式設計師的郵件交流。在2005年期間,與國外程式設計師共同維護公司內部的一個平臺級產品,郵件往來必不可少,慢慢的我發現國外的程式設計師提的問題或報的bug都非常有規律,每個問題或bug都有非常清晰的標題,正文是環境描述,已經採取了什麼措施、結果,相關日誌,Core dump,圖片等等,一般讀完郵件就能非常清楚的瞭解對方想要表達的意圖和希望你能提供的幫助,而且你也知道該做什麼,如何回覆等等。久而久之,自己也不好意思再去寫那些傻問題了。
那麼作為技術人員,如何去問一個讓雙方都滿意的好問題並最大程度的得到回覆呢?這一點對提問者重要,對被問者同樣重要,大好人生,誰也不願意為一個爛問題浪費時間。
簡單總結一下,如果你按照以下步驟進行,提出的問題一定會更靠譜一些,提出好的問題是你提升的第一步,其實這個過程在提問之前已經開始了:
1、遇到問題不要急著問別人,在時間允許的情況下看是否自己能夠解決,一方面鍛鍊自己分析問題和解決問題的能力,另一方面,一旦問題解決了,問題就不是問題,而是你的經驗和知識庫。況且現在網際網路有那麼多的技術資料和各類問答網站,想碰到一個別人沒碰到的問題,已經非常困難了,除非是內部產品。
2、如果做了努力依然不能解決,或者客觀條件不允許你自己解決了,那麼首先要選擇提問物件,不管是社群還是公司同事,確保他是你所知道的最佳解決人選。
3、你需要一個好的標題,用清晰的短句描述你遇到的問題
4、至關重要的正文
(1)用清晰的語言描述你遇到的問題
(2)提供軟體環境,包括作業系統、資料庫等相關軟體及其版本號
(3)問題是否可以重現,採用什麼方式重現
(4)採用了什麼措施解決問題,最終結果(可提供日誌、程式、截圖等描述)
(5)儘可能提供問題相關的可分析檔案,包括日誌、截圖和Core dump等
(6)不要長篇大論,簡明扼要,描述主要問題
5、最後,不要忘了說“請”和“謝謝”,畢竟你需要別人幫助你解決問題,沒人欠你什麼。