為什麼我們無法避免複雜?

banq發表於2018-10-17

是因為我們無意識崇拜覆雜嗎? 本文來自艾伯哈德沃爾夫

軟體開發並不是真正的程式設計。任何人都可以寫一個十行程式。真正的挑戰是複雜的系統。如果一個系統如此之大,以至於單個人無法理解並進一步開發,那麼模組化等概念至關重要。模組化將系統劃分為小單元,這樣每個人都可以處理,然後複雜性成為主要挑戰,由於這種複雜性,單個人不能再實施一個專案,只能依靠實施團隊,這導致了組織方面的挑戰。

康威定律

康威定律在組織和軟體開發方面非常重要。它指出系統架構代表實現系統的組織的通訊結構。對於軟體中的每個模組,都對應有一個組織單元;組織單元之間存在的溝通依賴,對應軟體中的模組之間存在同樣依賴關係。

然而,康威1968年的論文也描述了其他內容:如果一個組織想要開發一個大系統,由於大型團隊中的溝通很困難,因此會在團隊特定某個大規模下崩潰。由於溝通和架構相互影響,溝通不良會導致混亂的架構和額外的複雜性。

但康威更進一步:顯然,如果可能的話,你應該尋求一個小團隊可以實現的優雅解決方案。康威表示,經理的聲望取決於團隊的規模和他或她負責的預算。這就是為什麼經理會爭取儘可能大的團隊和大預算。

起初這似乎不是問題。如果專案是由一個太大的團隊完成的,那麼有些人就會坐在那裡什麼都不做。這需要花錢,但不會危及專案或架構。但康威說,帕金森定律將會罷工。帕金森定律解釋了為什麼一些政府僱用更多員工,但仍然沒有完成更多的工作。法律規定任務完全使用所有員工可用的時間。即使可以輕鬆快速地處理任務,也會有越來越多的人參與,直到組織中的每個人都忙碌為止。因此,在軟體專案中,無論是否有必要,所有團隊成員都將在專案上工作。因此,組織將成長,溝通將崩潰,架構將變得混亂。

Conway的洞察力現在已有50年曆史,它特別有趣,因為它可以解釋為什麼一個大型重要專案可能有一個糟糕的架構,即使它是一個非常重要的專案也難以進一步發展。

本文所描述的管理者在沒有意識到的情況下崇拜覆雜性。他們希望儘可能龐大的團隊,從而使問題變得複雜,因為大型組織可能導致架構崩潰。

軟體架構師怎麼樣?
不僅管理者而且軟體架構師有時會無意識地崇拜覆雜性。例如,當我們使用諸如事件源,具有許多層或微服務的架構之類的模式而沒有充分考慮特定上下文與複雜性的益處時,就會發生這種情況。

如果您想使用最新,最閃亮的技術,這也會導致過度複雜。畢竟,我們都在尋找技術挑戰,並希望實施有趣的專案。現代方法,特別是複雜系統非常適合於此。

我們有時也會解決不存在的技術問題。這可能會產生非常通用或可擴充套件的解決方案,這些解決方案不是實際要求所必需的,因此會產生太多複雜性。

複雜性作為藉口
一個特別明顯的複雜性崇拜案例是“這對我們不起作用”。我們面臨的挑戰遠遠超過亞馬遜或谷歌。“我聽說過不同公司的員工。這些陳述令人驚訝:像亞馬遜或谷歌這樣的公司擁有極其複雜的IT系統。他們的經濟成功直接取決於這些IT系統。尤其是因為這些IT系統,它們是世界上最有價值的公司之一。

乍一看,這些陳述可以被解釋為具有防禦性:亞馬遜和谷歌擁有現代化的組織和雲基礎設施,但在公司更加複雜的環境中,顯然不可能建立類似的東西。但也許這句話反映了驕傲。畢竟,你正在應對幾乎前所未有的挑戰。無論哪種方式,複雜性當然都有缺點,但也有一個優點,即您不必考慮某些方法,如雲,持續交付或微服務,因為它們無論如何都無法實現。

因此,我們是否真的總是在避免複雜性是值得懷疑的。如果我們無意識地崇拜覆雜性,那麼僅僅專注於使設計儘可能簡單和優雅的技術是沒有用的。因此,實現這些無意識機制很重要。當然,仍然存在許多實際難以解決的複雜問題。

banq注:無意識崇拜覆雜其實源自人之內心的自大。
 

相關文章