問題像縫紉機上的絲線
雜亂而復雜
需要慢慢捋清
才能找到線的源頭
“在么?”
“我使用XX框架啟動報錯,你幫忙看下?”
“我代碼報錯了,誰能幫我看下?”
“我發現一個詭異的問題”
生活中我們經常可以看到一些無效的問題,在開發運維工作中,經常可以看上面這些提問。比較有意思的例子是,工作中突然有個人找你,就說了句“在么?”。等你方便時回復了“在,什么問題?”的時候,對方沒回應。過了一會兒,對方又冒了一句“還在么?”。 有一種像 TCP 連接需要做三次握手確認,這種交流是特別低效的。低效的問題有很多種,不能讓對方快速清晰知道問題背景、具體問題的都算的上無效問題。然而在自己身上也有類似的經歷。
今天和師兄聯調一個接口,發現了一些數據不符合預期。 于是我沒想太多,就自然而然的將頁面數據截圖發給他,并且紅色框框圈出問題的數據,直接發給他。然后說了句, “你這個數據有些問題,辛苦幫忙看下哈”。
我以為大家對項目的整體鏈路,整體設計都很清晰,只要輕輕點下問題就可以。結果一個簡單的問題,卻討論半天,解釋問題是什么。最后師兄拋出了一句,“你下次說問題題時注意這些細節,建議說明背景、期望得到什么結果、實際是什么”。那一瞬間對自己沖擊很大,是得好好思考下自己的反饋問題方式,學習如何能夠高效表達一個問題,提高效率。
在平時生活或工作中,我們也經常能遇到別人向你尋求幫助或提問,或在遇到問題時也會讓身邊相關的人幫忙。社會合作體系導致我們必然會和身邊的人共同協作完成工作,也有越來越多的問題需要反饋、溝通。大家時間都很忙,如果提出一個無效的問題往往耗費大家時間,影響效率。本文就說說自己的一些總結,希望對大家都有幫助。
01 首先遇到問題時,不要馬上問別人
先自己排查,上網查詢。一般我們生活中或開發中遇到的很多問題都是別人經歷過的,而且網上資源豐富。通過搜索引擎工具,大部分問題我們都可以查到,避免問身邊人一些低效的問題。 比如當自己想要投資理財,買基金,于是問專業人士“基金是什么,基金與活期的區別是什么?”。
自己排查問題的過程可以提高自己解決問題能力,正如一些InfoQ 的大神說的一樣,問題見多了你就成為大神。 見多了,積累多了你的能力就上去了。就像古代的一些名將,都是歷經大大小小戰役以后。
另外,自己排查問題,明確背景、明確問題的本質,而不是只看到問題的表象。將反饋的問題提前定位,捋清楚, 看是否真的是對方的問題。避免查到最后是自己問題,卻反饋給對方,出現尷尬的局面。
02 提煉問題的核心
簡單提煉問題的核心,通過簡單的一句話能夠描述出問題的核心和本質。根據專業領域不同,帶上專業領域相關關鍵詞,能夠讓對方一眼大致知道問題類型是什么,問題是什么。避免用了一大段詳細描述以后,對方還不知道是什么問題。
類似一篇文章的核心思想、作文標題,能夠一看就看出問題。 避免使用“在么?”, “系統起不來了” 等非常抽象的詞描述。以我的例子, “xx 接口返回的數據結果不符合預期”。這個也類似一個問題的代號,后續只要說這個標題大家都知道是哪個問題,方便溝通。
理解任何時期都需要對它進行定義,這樣才能在頭腦中清除地知道正在談論的是這個東西,而不是其他東西。
03 清晰描述問題具體問題、期望的目標和現狀
下面就是需要清晰描述具體問題是什么,最好包含期望達到的目標是什么,以及目前遇到的現狀。例如:
問題:xx 接口調用時返回的數據結果中的 總數和成功數字不符合預期。
期望:結果中的總數應該大于成功數量。 成功數量是實際執行成功的數量,不含有失敗等數量??倲蛋械臄抵?。
現狀: 總數小于了成功數量。
該過程主要讓問題具體化,讓對方更加明確問題所在。如果可能最好是加上相關截圖、日志,證明事實真的是這樣。 避免出現質量同學和開發同學反饋問題時,開發同學習慣性用“我這邊運行好好的,肯定是你使用有問題”來辯駁。
04 問題的場景,如何復現該問題
一個問題能夠復現,就解決了90%。 發現問題時,將問題出現的場景、條件捋清楚。場景是說明通過哪些步驟、哪些場合下發生問題,通過什么方式能將問題復現。這些方便對方定位問題,提高排查效率。
有些問題是在極端條件下才能產生,開發平時也注意不到。如果僅僅是反饋問題,在他的認知里不可能會出現這個錯誤,他就會反駁你。所以場景和復現手段是非常必要的,一個程序會因為不同變量做出不同反應,這引起問題的變量就是場景。描述的過程盡可能的具體,避免使用你和對方理解不同的概念,導致歧義。
05 補充信息,比如自己排查阻塞點
盡可能多地補充問題信息,能夠讓對方快速排查到問題。比如操作系統、操作系統版本、框架版本、具體排查的日志等。也可以將自己已經排查的點和相關日志貼出,說明目前阻塞的點在哪里,懷疑可能出錯的地方。補充更多更詳細的信息,也是避免雙方理解不同導致的誤會,影響溝通效率。
每個領域不同,補充的信息也就不同。比如注冊中心相關問題,需要說明那個訂閱者無法訂閱到哪個發布者的xxx服務。 所以可以提供的信息如下:
服務: xxxx
發布者: xxxx , IP xxx.xxx.xxx.xxx
訂閱者:xxxx , IP xxx.xxx.xxx.xxx
06 問問題之前自己過一遍
提問前最好自己過一遍,看有哪里描述不清晰的,哪里表達不通順,以及是否可以通過現有的這套描述可以讓對方很清晰的知道問題所在。
07 我自己的一套模板
問題: XXX 版本的 XXX 接口 調用返回的數據不符合預期
期望:xxx 接口的執行總數應該大于執行成功數量。執行成功數量應該只統計成功執行的數值不能包含其他值。
現狀:接口返回的成功數量大于執行總數;成功數量也不是具體的成功數值。
場景:
- xxxx
- xxxx
- xxxx
補充:
- 客戶端機器 ip xxxx
- 服務端機器 ip xxxx
- 請求流水號 xxxx
- 我排查的日志詳情 xxx
最后對方幫你把問題解決完了,不要忘了說聲感謝。
更多精彩,關注微信公眾號