複雜性是心智殺手 - PhilipK

banq發表於2022-05-10

當面臨選擇時,總是選擇最簡單的東西來解決你眼前的問題。然後確保你以後可以改變主意。我所說的最簡單的事情是指最容易推理的解決方案。

當我們總是選擇最簡單的解決方案時,我們就可以避免分析癱瘓,即找出在我們可以想象的所有未來情況下哪個解決方案可能是最好的。我們只需選擇最簡單的東西,然後繼續前進,因為我們知道以後很容易改變主意。在我們實施了簡單的解決方案之後,我們對我們的問題有了更多的瞭解,我們可以問:"我眼前的問題解決了嗎?" 如果沒有;重複。

複雜性是思維殺手!
當我們試圖改變一個複雜的系統時,我們的思維會超負荷,這導致我們犯錯。系統必須是可改變的,這是使它們不成為遺留問題的原因,它使我們保持敏捷和適應能力。

在可改變性的名義下,大量的複雜性被增加了。我們建立了微服務系統,所以我們可以改變我們的程式語言和服務實現,但我們增加了網路、服務發現、訊息佇列、容器協調等方面的複雜性。它還增加了資源開銷,迫使我們提前進行橫向擴充套件,這很複雜。我們是否可以簡單地將實現隱藏在一個介面或一個函式後面?我們真的會很快改變我們的程式語言嗎?它是否真的能解決我們眼前的問題?

始終著眼於你眼前問題的規模,找到你最簡單的東西。這裡有一些常見的複雜性陷阱。

  • 當你必須儲存一些資料時,不要急於馬上建立一個資料庫。一個資料庫會增加網路、sql、模式、死鎖等方面的複雜性。你能不能把它作為檔案儲存在磁碟上,甚至儲存在記憶體中?
  • 你需要使用那個框架或庫嗎?或者你能不能自己實現你實際使用的那個功能?
  • 你需要CQRS、N-Tier、Redux或MVC架構嗎?它們是否真正解決了你眼前的問題,還是說它們現在只是增加了複雜性?
  • 你需要重構你的程式碼嗎?還是你想讓它 "更漂亮",為可能永遠不會發生的未來做更多改變?

最簡單的解決方案往往是最快速的實現。這讓我們可以更快地進行迭代,從而得到更快的反饋,從而得到一個更好的解決方案。對刪除你的程式碼感到滿意。你投入的時間越少,刪除的傷害就越小。避免為一個有缺陷的抽象概念新增一個 "快速修復 "的誘惑。只需刪除它,然後寫一些簡單地封裝你的新抽象的東西。如果它是簡單的,重寫起來就會很快。

與其他工程領域不同,軟體總是可以改變的! 利用這種力量,選擇最簡單的東西來解決你眼前的問題,然後在需要的時候再改變它。

相關文章