複雜性是心智殺手 - PhilipK
當面臨選擇時,總是選擇最簡單的東西來解決你眼前的問題。然後確保你以後可以改變主意。我所說的最簡單的事情是指最容易推理的解決方案。
當我們總是選擇最簡單的解決方案時,我們就可以避免分析癱瘓,即找出在我們可以想象的所有未來情況下哪個解決方案可能是最好的。我們只需選擇最簡單的東西,然後繼續前進,因為我們知道以後很容易改變主意。在我們實施了簡單的解決方案之後,我們對我們的問題有了更多的瞭解,我們可以問:"我眼前的問題解決了嗎?" 如果沒有;重複。
複雜性是思維殺手!
當我們試圖改變一個複雜的系統時,我們的思維會超負荷,這導致我們犯錯。系統必須是可改變的,這是使它們不成為遺留問題的原因,它使我們保持敏捷和適應能力。
在可改變性的名義下,大量的複雜性被增加了。我們建立了微服務系統,所以我們可以改變我們的程式語言和服務實現,但我們增加了網路、服務發現、訊息佇列、容器協調等方面的複雜性。它還增加了資源開銷,迫使我們提前進行橫向擴充套件,這很複雜。我們是否可以簡單地將實現隱藏在一個介面或一個函式後面?我們真的會很快改變我們的程式語言嗎?它是否真的能解決我們眼前的問題?
始終著眼於你眼前問題的規模,找到你最簡單的東西。這裡有一些常見的複雜性陷阱。
- 當你必須儲存一些資料時,不要急於馬上建立一個資料庫。一個資料庫會增加網路、sql、模式、死鎖等方面的複雜性。你能不能把它作為檔案儲存在磁碟上,甚至儲存在記憶體中?
- 你需要使用那個框架或庫嗎?或者你能不能自己實現你實際使用的那個功能?
- 你需要CQRS、N-Tier、Redux或MVC架構嗎?它們是否真正解決了你眼前的問題,還是說它們現在只是增加了複雜性?
- 你需要重構你的程式碼嗎?還是你想讓它 "更漂亮",為可能永遠不會發生的未來做更多改變?
最簡單的解決方案往往是最快速的實現。這讓我們可以更快地進行迭代,從而得到更快的反饋,從而得到一個更好的解決方案。對刪除你的程式碼感到滿意。你投入的時間越少,刪除的傷害就越小。避免為一個有缺陷的抽象概念新增一個 "快速修復 "的誘惑。只需刪除它,然後寫一些簡單地封裝你的新抽象的東西。如果它是簡單的,重寫起來就會很快。
與其他工程領域不同,軟體總是可以改變的! 利用這種力量,選擇最簡單的東西來解決你眼前的問題,然後在需要的時候再改變它。
相關文章
- 複雜性系統是一種心智介面 – Charles
- 軟體的複雜性正在殺死我們
- 複雜性正在殺死軟體開發者
- 什麼是 幾何複雜性
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 複雜性Complex與複雜Complicated區別 - Sonja
- Istio的複雜性揭祕
- 複雜性是房間裡的大象,很容易被人忽視!
- 解決DDD核心的複雜性
- 如何降低軟體的複雜性?
- 資料複雜性和簡單
- 直面不確定性與非線性的複雜現實:邁向複雜性經濟 - Cilliers
- 簡單是優勢,但為何複雜性還受歡迎?
- 免殺雜談
- DDD之理解複雜度、尊重複雜度、掌控複雜度複雜度
- 分散式系統:常見陷阱和複雜性分散式
- 高複雜性下的藍芽安全危機藍芽
- 如何開始複雜性科學的研究? - systemsinnovation
- 外觀模式-簡化子系統的複雜性模式
- 亞馬遜雲科技用生成式AI,向開發的複雜性動手了亞馬遜AI
- 複雜查詢還是直接寫sql吧SQL
- 使用Python處理複雜字串的必殺技-re.sub()的妙用Python字串
- 談談Bug引起的複雜性“Bug-O” — OverreactedReact
- Kubernetes會不會被自身的複雜性壓垮?
- 關於管理軟體複雜性的最佳書籍?
- 複雜性自適應系統無法建模分析
- 複雜性系統的戰略分析要點 -Dave
- 科學論文的可複製性、被引用量和創新性的複雜關係
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 【簡單演算法】什麼是複雜度?演算法複雜度
- [譯] Font-size:一個意外複雜的 CSS 屬性CSS
- 2024年雲複雜性報告:人工智慧鴻溝人工智慧
- 六邊形架構:管理複雜性的解決方案架構
- Slime 2022 展望:把 Istio 的複雜性塞入智慧的黑盒
- 為複雜性語言辯護:類的意義 - viralinstructionStruct
- 識別不必要的複雜性是軟體開發中最重要的技能之一