複雜性是心智殺手 - PhilipK
當面臨選擇時,總是選擇最簡單的東西來解決你眼前的問題。然後確保你以後可以改變主意。我所說的最簡單的事情是指最容易推理的解決方案。
當我們總是選擇最簡單的解決方案時,我們就可以避免分析癱瘓,即找出在我們可以想象的所有未來情況下哪個解決方案可能是最好的。我們只需選擇最簡單的東西,然後繼續前進,因為我們知道以後很容易改變主意。在我們實施了簡單的解決方案之後,我們對我們的問題有了更多的瞭解,我們可以問:"我眼前的問題解決了嗎?" 如果沒有;重複。
複雜性是思維殺手!
當我們試圖改變一個複雜的系統時,我們的思維會超負荷,這導致我們犯錯。系統必須是可改變的,這是使它們不成為遺留問題的原因,它使我們保持敏捷和適應能力。
在可改變性的名義下,大量的複雜性被增加了。我們建立了微服務系統,所以我們可以改變我們的程式語言和服務實現,但我們增加了網路、服務發現、訊息佇列、容器協調等方面的複雜性。它還增加了資源開銷,迫使我們提前進行橫向擴充套件,這很複雜。我們是否可以簡單地將實現隱藏在一個介面或一個函式後面?我們真的會很快改變我們的程式語言嗎?它是否真的能解決我們眼前的問題?
始終著眼於你眼前問題的規模,找到你最簡單的東西。這裡有一些常見的複雜性陷阱。
- 當你必須儲存一些資料時,不要急於馬上建立一個資料庫。一個資料庫會增加網路、sql、模式、死鎖等方面的複雜性。你能不能把它作為檔案儲存在磁碟上,甚至儲存在記憶體中?
- 你需要使用那個框架或庫嗎?或者你能不能自己實現你實際使用的那個功能?
- 你需要CQRS、N-Tier、Redux或MVC架構嗎?它們是否真正解決了你眼前的問題,還是說它們現在只是增加了複雜性?
- 你需要重構你的程式碼嗎?還是你想讓它 "更漂亮",為可能永遠不會發生的未來做更多改變?
最簡單的解決方案往往是最快速的實現。這讓我們可以更快地進行迭代,從而得到更快的反饋,從而得到一個更好的解決方案。對刪除你的程式碼感到滿意。你投入的時間越少,刪除的傷害就越小。避免為一個有缺陷的抽象概念新增一個 "快速修復 "的誘惑。只需刪除它,然後寫一些簡單地封裝你的新抽象的東西。如果它是簡單的,重寫起來就會很快。
與其他工程領域不同,軟體總是可以改變的! 利用這種力量,選擇最簡單的東西來解決你眼前的問題,然後在需要的時候再改變它。
相關文章
- 複雜性系統是一種心智介面 – Charles
- 複雜性正在殺死軟體開發者
- 軟體複雜性正在殺死我們
- 軟體的複雜性正在殺死我們
- 什麼是 幾何複雜性
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 軟體開發到底是業務複雜還是UI複雜UI
- 複雜性Complex與複雜Complicated區別 - Sonja
- Google工程師:複雜性是軟體的死敵Go工程師
- 演算法複雜性分析演算法
- 如何降低軟體的複雜性?
- 解決DDD核心的複雜性
- 資料複雜性和簡單
- 簡單是優勢,但為何複雜性還受歡迎?
- 免殺雜談
- 思考複雜性免費電子書
- 軟體的複雜性:命名的藝術
- Guru of The week #20 程式碼的複雜性 Ⅰ. (轉)
- 樂心智慧手錶價效比分析 樂心智慧手錶值不值得入手呢?
- 高複雜性下的藍芽安全危機藍芽
- 外觀模式-簡化子系統的複雜性模式
- 有感於“以複雜性為生的行業”行業
- 計算複雜性(Computing Complexity) (轉)
- 分散式系統:常見陷阱和複雜性分散式
- 複雜查詢還是直接寫sql吧SQL
- 複雜性自適應系統無法建模分析
- 談談Bug引起的複雜性“Bug-O” — OverreactedReact
- 關於管理軟體複雜性的最佳書籍?
- 複雜性系統的戰略分析要點 -Dave
- 達達CTO談眾包物流系統的複雜性
- 關於系統複雜性的一句箴言箴言
- 【簡單演算法】什麼是複雜度?演算法複雜度
- 科學論文的可複製性、被引用量和創新性的複雜關係
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 使用Python處理複雜字串的必殺技-re.sub()的妙用Python字串
- 敏捷是扼殺產品思維的兇手?敏捷