當你遇到與你共事的人向你詢問問題,
卻描述得不太清楚時,你會怎麼回答?
我認為問問題是門學問,
(請參見我另外一篇文章 How to ask good questions)
【譯註:這是作者另外一篇文章,有機會的話我也會嘗試翻譯。】
然而,如何有效得回答問題同樣是門學問,兩者同等實用。
在開始之前,先做個假設:
我知道大家多少都遇過不尊重你的寶貴時間的提問者,
那種感覺很糟。
但在這篇文章中,
我要先假定這樣的情況不存在。
假設這篇文章裡的提問者都是合乎理性且會盡全力把事情弄懂,
是會讓你想幫助的那種人。
因為身邊和我一起工作的伙伴都是這樣的人,
而我目前就是在這樣的環境下工作。
【譯註:除了讓人羨慕以外,我想這也會讓這篇文章著重在回答問題上,比較不會模糊焦點。】
以下是一些我認為如何更有效回答問題的方法:
初學者常會提出不夠明確的問題,或者提出沒有足夠資訊、讓人無從回答的問題。
這裡有幾個方法可以讓你幫助他們釐清問題:
很多類似的方法在我的另外一篇文章 How to ask good questions 都有被提及。
(然而我絕對不會對某個人說:「喔,你必須先看過這篇 How to ask good questions 才能問我問題。」)
在回答問題之前,先瞭解對方已經知道哪些東西是很有用的。
Harold Treen 給了我一個很棒的例子:
某天有個人要我解釋 "Redux Sagas" 是什麼,我並沒有直接回答:「它們就像等待 action 並幫你更新 store 的背景工作執行緒 (worker threads)!」
而是先從對方對於 Redux, Redux 的 action, Redux 的 store 及其他關於 Redux 的基本觀念瞭解多少著手,如此一來會讓解釋 Redux Sagas 這件事容易一些,因為這些觀念與其環環相扣。
瞭解對你提問的人已經知道哪些東西是很重要的,
因為對方可能是連一些基本的觀念都還搞不太清楚的新手(例如:什麼是 Redux?),
也可能是遇到極端案例(corner case)的老手。
你的回答如果是建立在對方不知道的觀念上,會造成對方的困惑;
你的回答如果是重述對方已經知道的事情,則會讓對方感到厭煩。
在詢問對方已經知道哪些東西的時候,有個實用的技巧是,
與其問對方「你知道 XXX 嗎?」
也許可以試著改成問對方「你對 XXX 瞭解的程度有多少?」
【譯註:第一種問法得到的回答通常只有「知道」或「不知道」,而第二種通常會得到比較詳細一點的回答,能夠比第一種問法容易知道對方的程度。】
「去讀那些他媽的文件」(RTFM) 是最典型的無用回答,
但如果你明確告訴對方要去看哪個文件則能產生很大的幫助。
當我問問題的時候,比起直接得到答案,
我其實比較喜歡被告知該去看哪份文件,
因為該份文件的內容很可能也會順便解決掉我其他的問題。
我認為有件很重要的事情是,
你必須確保當下告知對方的文件真的有回答到他的問題,
如果沒有的話,至少在事後確認它有幫助到對方。
否則你很有可能上演這種常見的場景:
如果我告知對方的文件太過冗長的話,
我會明確點出我正在說的是其中的哪一個部份。
Bash 的使用說明 有 44,000 個英文字(這是真的!),
所以如果只告訴對方「去看 Bash 的使用說明。」根本沒什麼幫助。
在工作上,
我時常會使用一些「我知道這會讓我得到答案」的關鍵字來進行搜尋。
然而這樣的關鍵字對於新手來說可能不是這麼顯而易見,
所以告訴對方「如果是我的話,我會用 XXX 關鍵字來搜尋答案。」是很有用的。
同樣地,記得事後確認一下你給出的關鍵字真的有幫助到他們。
我常常不斷遇到不同的人來問我所處的團隊一模一樣的問題,
但這並不是這些人的錯,
畢竟他們不知道在這之前已經有 10 個人問過一樣的問題,
也不知道答案。
因此,與其一直重複告訴不同的人相同的答案,
我和團隊的其他人改用了以下的步驟:
雖然撰寫文件花費的時間比直接回答問題還多,
但通常是很值得的,尤其是以下幾種問題:
身為某個領域的初學者時,
如果發生以下對話,真的會令人很沮喪:
如果向你提問的人正在嘗試瞭解某件事是如何運作的話,
幾個方法將對其有所幫助:
雖然這比你直接做給對方看要花更多時間,
但這對於提問者來說是個學習的機會,
如此一來,他們往後面對相同的問題時就能夠有所準備。
套用這樣的方法,對話狀況就會好上許多:
如果你向對方解釋你如何針對問題進行除錯,
將有利於讓對方瞭解你如何排除其他原因及如何發現真正的問題點。
當你遇到問題時,能馬上判斷出原因,的確是件讓人覺得很爽的事。
但幫助他人學得更好、更深入分析問題,
並瞭解到自己想出來的對策是有效的,
是件更棒的事。
這個方法比較難一點,有時候會遇到一種情況,
提問者覺得自己已經找到了正確的解決方法,
且只差最後一個關鍵就可以把問題解決,
但其實很可能不是這麼一回事。
舉例來說:
在上面的對話中,Jasminda 並沒有直接回答 George 的問題,
而是根據經驗推測 George 實際上不是想搞定 X 這件事,
而她對了,這個舉動非常的有用。
但有一點要注意的是,
如果回答者太過於高姿態的話,很可能會造成反效果,
例如:
所以回答時切忌高姿態,
而且要記住,有些提問者有可能會附上他們已經做了哪些事,
最好的回答方式是,
針對「對方提問的問題」及「對方真正該問的問題」都進行回答,
例如:
「如果你想要解決 X 的話,你可以試試看這個方法,但如果你想用這個方法解決 Y 的話,我建議你用另外一個方法,那個方法比較有效。」
我喜歡在自認為已經回答到對方的問題後,
額外向對方確認:「這樣有回答到你的問題嗎?還有更多想問的嗎?」
然後我會停下來等對方回答這個問題,
這樣做的好處是,人們總是需要個一兩分鐘確認自己是不是真的搞懂了。
我是在撰寫文件的時候才特別發現,
這句額外的「這樣有回答到你的問題嗎?」是很有用的,
我因為這點,
常常在為我已經熟知的事物撰寫文件時,
留下一些對他人而言重要的資訊而不自知。
我是一位遠端工作者,
所以我和同事絕大多數的對話都是用文字溝通,
對我來說,文字是預設的溝通方式。
現今,我們活在一個很容易進行視訊會議與分享螢幕畫面的世界。
工作時,我可以點個按鈕就開始和某人進行視訊會議,
並分享螢幕畫面給對方。
許多問題用講的會比用打字的更容易解決。
例如:
最近有人問我要如何規劃與設定服務自動擴充(autoscaling)的容量,
我腦中大概可以想出有哪些東西需要釐清,
但還不是非常確定真正的情況。
於是我們快速通了個視訊電話,
五分鐘之後,
就回答完他們提出的所有問題了。
我特別相信,如果有人對於某件事情不知道如何下手,
以結對程式設計(pair programming)的方式進行當面的溝通,
只要幾分鐘就會很有幫助,
比只用電子郵件或即時通訊軟體來溝通有效多了。
這個原則出自於 Recurse Center 手冊的其中一條:別假裝很驚訝,
常見的情況:
小華的反應(姑且先不論他到底是真的訝異還是假的訝異)一點幫助也沒有,
只會讓小明因為自己不知道 Linux kernel 是什麼而感到非常受傷。
即便我因為聽到對方不知道某個東西而真的感到有點訝異,
我反而會故作鎮定,能做到這點的話會是件很棒的事。
顯然的,以上這些方法並不是任何情況都適用,
但希望你至少可以從中找到幾個你覺得有用的方法。
我發現花時間回答問題與教導別人是非常有收穫的一件事。
非常感謝 Josh Triplett 為這篇文章給出許多建議和幫忙新增很多很棒的內容。
感謝 Harold Treen、Vaibhav Sagar、Peter Bhat Harkins、Wesley Aptekar-Cassels 和 Paul Gowder 花時間閱讀這篇文章並給予評論。
看完這篇文章的當下後想了一下,
發現自己之前回答同事的問題算是都有做到這篇文章提到的事情,
但我還有多做一件事:「告知對方下次可以怎樣問會更好。」
這篇也很適合三不五時回來看看並反省自己是否有做到。
如果覺得我的文章不錯的話,
歡迎按讚、追蹤、訂閱、留言、分享,
也可以利用像是 Feedly 等 RSS Reader,
直接訂閱我的部落格:https://blog.m157q.tw。
因為 iThome 這邊未來我不保證持續更新,
雖然目前用起來沒太大問題,
但就是覺得要管兩個地方有點麻煩。