程序員的思維利器:逆向,總是逆向
今天,介紹一個我最喜歡的一個思維模型,叫做逆向思考。思維模型(mental model)是一套簡單、抽象但非常有用的原則,可以幫助我們理解周圍的世界。
我是在 Farnam Street 的博客上看到逆向原理的,這也是查理·芒格(伯克希爾·哈撒韋公司的副主席和沃倫·巴菲特的朋友)最愛。他一句名言是,“......事物的本質是,許多困難的問題都是在逆向思考時得到最好的解決”。
在另一次采訪中,他回憶說,在二戰期間,作為一名空軍氣象學家,他沒有問什么能保證飛行員的安全,而是問有什么因素會殺死他們,并把所有的精力集中在“試圖預測雪、冰或霧,但忽略了幾乎所有其他的因素”。
我幾乎可以用一本書來介紹查理·芒格說過的其他有意思的東西,但是我先打住。
什么是逆向思考?
逆向思考是基于一個格言:逆向,總是逆向。它是先考慮一個逆向(通常是負面的)結果,并列出導致這些結果的原因。它迫使你需要停止做某些事情,以避免出現負面結果。它給我們提供了一種新的可能性和能力,這在正常的思維模式下很難被考慮到。
逆向思考的做法非常簡單。
定義問題:你要達到的目標是什么?
- 逆向思考:怎么做保證能出現失敗的結果?
- 最后,考慮避免出現上述失敗的解決方案。
- 這聽起來非常抽象和模糊,我們來看幾個例子。
一、與其問如何提高產品或功能的使用率? 你可以考慮有哪些事情阻礙了用戶使用某個功能?這將導致這樣一個優化的列表:
- 加載時間慢,即性能問題
- 營銷力度不夠,或者在平臺上營銷,或者營銷的對象不對。
- 用戶手冊不知道在說什么......你懂的。
二、 遵循逆向思考原則,自問是什么阻礙了自己閱讀 Kindle 或書架上所有未讀的書,而不是問如何才能讀更多的書?
可能的原因和需要割舍的一些東西如下:
- 花了太多時間在社交媒體上
- 在 Netflix 或迪斯尼看了太多的節目
- 花大量時間泡 reddit 或瀏覽 HN 新聞。
三、在投資過程中,不要想我如何總是選擇一只贏利的股票,而要問自己如何防止長期虧損?
- 是否足夠分散投資以防止長期虧損?
- 是基于合理的原則進行投資,還是在投機?
希望這能讓你體會到逆向思考作為一種心理模型的強大,我要補充的是,它并不是銀彈,也不會總是給你具體的答案,但它會起到一個強制作用,避免明顯的判斷失誤。我再給你留下一段我最喜歡的查理關于逆向思考的名言。
通過努力讓自己始終不笨,而不是努力成為一個非常聰明的人,這一點讓很多人獲得了長期的顯著優勢。
查理·芒格
其他程序員怎么看這個問題?
網友 mlangenberg 提到:
作為一名軟件開發人員,我在過去十二年里一直在做一件事:想盡所有可能出錯的原因。
這樣做的缺點是,我已經把我的思維模式訓練成了這樣一種方式,以至于在工作之外很難把它關掉,這對我的個人生活產生了不少負面影響。
(也許我天生就是一個末日思維者,這也是我成為一名優秀軟件工程師的原因)
網友 arthurjj 提到:
我習慣于和我的團隊一起做一個項目預驗收。在正式發布前幾個月,我提議團隊快進一下,假裝項目失敗了。然后我們討論項目為什么會失敗。
這通常會列出一個清單,并讓你時常對其保持警惕。
網友 seanpquig:
我在一家知名的搜索引擎算法團隊工作,我也可以證明這種思路多年來對幫助改進我們的產品非常有效。
相比于常規的“如何才能讓我們的搜索變得更好”的假設性想法,我們采取的是花費大量時間分析數據,找到我們失敗的地方。我們的許多顯著的相關性改進都來自于跟蹤和了解我們始終無法產生結果或用戶無法參與的查詢類型。
我認為這是一種非常有效的方法,但可能需要一些紀律和眼界。當團隊花了非常多時間關注產品的失敗時,也許會產生一些內部觀念,即產品不斷出現錯誤和各種問題。因此,你也需要記住你做得很好的地方,以及你作為一個團隊或產品,已經走了多遠。
擴展閱讀
避免愚蠢比尋求聰明更容易:
https://fs.blog/2014/06/avoiding-stupidity/ (英文)
網友討論:
https://news.ycombinator.com/item?id=23905221
英文原文:
https://www.anup.io/2020/07/20/invert-always-invert/
本文轉載自微信公眾號「 高可用架構」,可以通過以下二維碼關注。轉載本文請聯系 高可用架構公眾號。