在工作的前一兩年,是一個(gè)沉迷于代碼玄呛,努力學(xué)習(xí)如何做好每個(gè)feature的狀態(tài)诬留。隨著經(jīng)驗(yàn)的積累,在技術(shù)方面開始接觸一些架構(gòu)方面的新知識搔弄。最近重新研讀 Uncle Bob 的博客合集 《整潔架構(gòu)之道》, 還是有很大收獲幅虑。其中之一就是對于康威定律有了更加全面的認(rèn)識和思考。
Conway’s law 最初來自于Conway在1967年發(fā)表的論文
《How Do Committees Invent?》顾犹,之后在《人月神話》
這本書中引用了論文的結(jié)論倒庵,并命名為康威定律(Conway’s law)得以推廣褒墨。
Conway’s law: Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)
設(shè)計(jì)系統(tǒng)的組織其產(chǎn)生的設(shè)計(jì)等價(jià)于組織間的溝通結(jié)構(gòu)。
反向理解起來也是成立的哄芜。
Conway’s law reversed:You won’t be able to successfully establish an efficient organizational structure that is not supported by your system architecture design.
如果系統(tǒng)架構(gòu)不支持貌亭,你無法建立一個(gè)高效的組織。
Mike Amundsen 歸納了如下四個(gè)核心觀點(diǎn):
- 第一定律
Communication dictates the design
組織溝通方式會通過系統(tǒng)設(shè)計(jì)表達(dá)出來
對于復(fù)雜的认臊,需要協(xié)作完成的系統(tǒng)開發(fā)圃庭,溝通是必須要持續(xù)提升的問題。
每個(gè)團(tuán)隊(duì)由5-10人組成(溝通成本 = n(n-1)/2 - 《人月神話》)失晴,在團(tuán)隊(duì)內(nèi)部進(jìn)行頻繁的剧腻、細(xì)粒度的溝通。對于團(tuán)隊(duì)外部涂屁,定義好接口书在,契約,只進(jìn)行粗粒度的溝通拆又。這樣可以降低溝通成本儒旬,同時(shí)也符合高內(nèi)聚,低耦合原則(代碼和人員管理有些時(shí)候真是相通的)帖族。
- 第二定律
There is never enough time to do something right, but there is always enough time to do it over
時(shí)間再多一件事情也不可能做的完美栈源,但總有時(shí)間做完一件事情
這就是我們在用kanban管理迭代時(shí)幾乎都有一列是BAU(Business As Usual ),其中會包括一些日常修復(fù)的Bug Story竖般。敏捷開發(fā)中將迭代引入甚垦,做到持續(xù)交付,快速驗(yàn)證涣雕,迅速反饋艰亮,持續(xù)改進(jìn)。
- 第三定律
There is a homomorphism from the linear graph of a system to the linear graph of its design organization
線型系統(tǒng)和線型組織架構(gòu)間有潛在的異質(zhì)同態(tài)特性
大白話就是挣郭,你想要架構(gòu)成為什么樣迄埃,就將團(tuán)隊(duì)分成怎樣的結(jié)構(gòu)。比如前后端分離的團(tuán)隊(duì)兑障,架構(gòu)就是基于前后端分離调俘。在基于微服務(wù)設(shè)計(jì)的團(tuán)隊(duì)里,一個(gè)很好的理念是自管理旺垒。團(tuán)隊(duì)內(nèi)部對于自己所負(fù)責(zé)的模塊高度負(fù)責(zé)彩库,進(jìn)行端對端的開發(fā)以及運(yùn)維。
- 第四定律
The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems
大的系統(tǒng)組織總是比小系統(tǒng)更傾向于分解
合久必分先蒋,分久必合骇钦,團(tuán)隊(duì)以及架構(gòu)都是在不斷優(yōu)化的。一個(gè)團(tuán)隊(duì)隨著人員的增加竞漾,溝通以及管理成本一定會增加眯搭。
一些思考:
康威定律只是Conway本人基于軟件開發(fā)的經(jīng)驗(yàn)窥翩,對于架構(gòu)以及團(tuán)隊(duì)管理普遍現(xiàn)象的總結(jié)。軟件行業(yè)半個(gè)世紀(jì)的發(fā)展也驗(yàn)證了其正確性鳞仙。理解了康威定律可以幫助開發(fā)人員從另一個(gè)角度理解架構(gòu)設(shè)計(jì)】芪茫現(xiàn)實(shí)中的問題是,僅僅基于康威定律棍好,還是不能評判某個(gè)架構(gòu)是否是合格的仗岸?如何提升?什么時(shí)間進(jìn)行提升借笙?等一系列問題扒怖。我還在學(xué)習(xí)中。业稼。盗痒。