天天看點

提個問題:從技術到人生

http://mindwind.me/blog/2017/01/02/%E6%8F%90%E4%B8%AA%E9%97%AE%E9%A2%98-%E4%BB%8E%E6%8A%80%E6%9C%AF%E5%88%B0%E4%BA%BA%E7%94%9F.html?utm_source=tuicool&utm_medium=referral

關于提問,你有沒有碰到過這種情況,有人拿着一個問題跑來,大概交代了一下他想解決的場景,然後描述了他的思路,然後這中間碰到一個障礙,就問你怎麼解決這個障礙。

面對這類具體的障礙問題,我經常很難回答。因為即使是同一個場景,不同人會有不同的思路,而也許我的思路就不會有這樣的障礙。比如:你想去一個十公裡外的地方,對方也許會問你怎麼套馬鞍的問題,這時你就很困擾,因為你的思路是坐車或開車啊。這就是一個針對技術人員面對同一場景問題,所能選取的不同技術方案可能處在不同的時代背景下的類比。

是以,關于怎麼提問我覺着本身就是一個好問題。

在國内的技術社群比如:CSDN 或 SegmentFault 都有技術問答社群。我跑上去浏覽過幾次,基本上每個問題的浏覽量寥寥十幾二十,回答更是少的可憐。上面的問題大部分都是類似下面兩種模式:

  • 某某出錯了,怎麼辦?
  • 如何針對某某封裝一個庫?

某某可以是一種具體的技術或架構,這兩種提問模式代表了兩個方向,都讓人無法回答。第一種太模糊而無法回答,而第二種則太龐大則不願回答。

如果你能繞過這兩個提問的大坑,提出一個具體的問題,那麼算是前進了一大步。但具體問題也有一個陷阱,就是前面套馬鞍那個例子。也許有人回答了你怎麼正确的套馬鞍,但你依然可能走在落後的道路上。是以就具體問題提問,除了問及手段,還最好跟上你的目的和你就此目是怎樣提出的手段,然後才走到了這一步的障礙,讓你不得不在此提問。

具體的問題是關于「術」的問題,一般都是解答題。表達清楚你的解答目的,也許你的困擾在高手那裡根本就不存在。你隻是走了一個彎路而已,這樣不僅繞過了障礙,還獲得了一條近路,是最有意義的提問。

而另有一類具體問題,叫做答案藏在問題中,屬于無法提問的問題。說得比較抽象,我舉個例子:曾經碰到過一個線上問題,系統間隙性出現逾時,隻有重新開機能解決。而且出現的很無規律性,不和什麼流量之類成正比,就是莫名其妙偶然出現,然後不能恢複,隻好重新開機。曾經困擾了很久這個問題,但這類問題雖然很具體,但你隻有一個現象,你甚至找不到一個好方式來描述這個問題。

如果我就把上面這段描述的關鍵現象,偶現逾時并結合使用的具體技術,如:JVM配置、開源架構配置和業務場景一起抛出來問人,你覺得有人能回答嗎?這類就屬于答案藏在問題中的問題,唯一的辦法隻能是找和你一起共事的同僚從各人不同的思維角度去分析、抽絲剝繭。當你能找出提問的方式,基本答案也就出來了。

當我定位到上面現象的根源是服務線程池的配置有誤,結合在某些慢業務場景下會引發連鎖逾時。這時的問題是怎麼配置服務線程池才最合理,這個問題本身就簡單到完全無需再問了,自然就有了答案。

《大教堂與集市》的作者 Eric Steven Raymond 曾就如何提技術問題寫過一篇影響頗大的文章 How To Ask Questions The Smart Way,距今已經十多年了,修訂了十多次(見下圖的修訂曆史),翻譯成了十多個國家的文字,我覺得值得好好讀讀。

提個問題:從技術到人生

這篇與其說是文章,不如說是一個關于如何提技術問題的提問指南,而且把寫文檔當作寫代碼的模式,不斷送出新的 Fix 和 Feature,并提供完整的修訂曆史,這就是我所推崇的方式和口味:“像寫代碼一樣寫文檔(規範),像寫文檔一樣寫代碼(可讀)。”

具體提問之術的指南,大家可以去仔細閱讀 Eric 的文章,最後歸納下其關于提問之術的基本理念:

  • 草率的問題,隻能得到一個草率的答案。
  • 你得到的答案的好壞取決于提問的方式和開發答案的難度。
  • 隻索取而不願思考和付出的提問者,要麼什麼也得不到,要麼隻會得到 

    RTFM

     或 

    STFW

術語解析:
RTFM: Read The Fucking Manual
STFW: Search The Fucking Web
           

關于「道」的問題基本都是選擇題,比之于「術」更抽象的選擇題。這類問題反而很少有人提,沒人提多半是思考的人也少,随波逐流的多,但這類問題實際要更重要的多。

李笑來老師最近在得到專欄的一篇文章《什麼決定命運》提到:

選擇決定命運,什麼來決定選擇?價值觀。

價值觀這個概念就比較抽象了,是以我們還是舉一個比較具體的例子來說明。吳軍博士也在他的得到專欄裡寫了好幾篇關于巴菲特的投資理念的文章,其中有一條是:巴菲特不做空。長期以來巴菲特都秉持一個投資原則,永遠不做空自己的國家。這就是在投資這件事上巴菲特的價值觀所做出的選擇。

去年有一部很著名的講 2008 年美國金融危機的電影《大空頭》,裡面布拉德·皮特飾演一位聲望很高的退休銀行家,兩個初出茅廬的年輕投資者找上他幫忙參與到貸款違約保險市場中。當跟着布拉德·皮特賣空的兩位年輕人高興的手舞足蹈(他們馬上就要賺一大筆錢)時,布拉德·皮特嚴肅的對他們說:

你們知道你們剛剛做了什麼嗎?我們在對賭美國經濟。

是的,我們完成了交易,我們做到了(年輕人高興之情溢于言表)。

這意味着什麼,意味着什麼,你們清楚嗎?(連說兩遍)

假如我們是對的,人們就會失去房子,失去工作,失去終身俸,失去撫恤金。

别在我面前為此而跳舞。

這是另一個關于投資價值觀的生動例子。

大部分問題都是從一個選擇題開始,才是解答題,而很多時候我們都忽略了選擇題,因為圍繞你的環境裡通常有一個預設選擇,這就是随波逐流。而預設選擇一般都不是好選擇。

關于提問之道就是給自己的選擇題,這類問題可以提出來,正如李笑來在文中所說:“聽聽大多數人的話,參考少數人的意見,最終自己做決定。”這類問題的回答者隻有自己,也隻能是自己。無法逃避,逃避是一種不選擇,但實際也是一種選擇。

在自己的成長路上,其實我碰到過好多問題,所有的問題都是我們的困惑。遺憾的一點是,我沒能把這些問題記錄下來。在工作的前五年我并沒有開始寫部落格的習慣,是以也就沒能記錄下這些問題或困惑,以及我是如何跨越這些障礙的,如今再來回憶,隻剩下些零星的片斷。

是以,這就是為什麼一開始就要養成寫作記錄的習慣呢。有人說我沒東西可寫、沒有積累也寫不出什麼來,而且文筆也不好。這是一個誤區,至少你可以從記錄問題和解決問題開始寫起,不斷去積累并留下一些東西。比如,對于程式員,你總會碰到各種問題,那麼我就把這些問題按一種模式記錄下來也可以,比如像下面這樣:

  • 問題的上下文
  • 問題的具體描述
  • 問題的解決思考和思路
  • 問題的解決方案和具體技術或辦法
  • 問題解決後留下的思考或其他延伸的疑問

之前寫過一篇文章《程式員,你為什麼值這麼多錢?》 提到了除了積累價值,也要傳遞價值。這篇文章發出去後,有人評論說:“就是除了會做,還要會吹嘛?”,很多程式員對此評論表示贊同。其實自吹自擂乃下策,更好的方式是:“Share what you learn(分享你所學到的)”。可以是一個問題、一個觀點或一個認識,任何你學到的東西。

Give give give, and sometimes you will receive.

持續給予,終有所獲。

這就是我所認同的傳遞價值和提升價值的好方式。

所有的成長過程都是從提出一個問題開始,并找到了答案,最後融入自身的價值觀,完成下一次更好的選擇,周而複始。