Conway#39;s law(康威定律)
Mel Conway? 康威在加利福尼亞理工學(xué)院獲得物理學(xué)碩士學(xué)位,在凱斯西儲(chǔ)大學(xué)獲得數(shù)學(xué)博士學(xué)位。畢業(yè)之后,他參與了很多知名的軟件項(xiàng)目,如 Pascal 編輯器。在他的職業(yè)生涯中,康威觀察到一個(gè)現(xiàn)象:軟件團(tuán)隊(duì)開(kāi)發(fā)的產(chǎn)品是對(duì)公司組織架構(gòu)的反映。
1967 年他針對(duì)這個(gè)現(xiàn)象提交了一篇論文。(http://www.melconway.com/Home/Conways_Law.html)給 《哈佛商業(yè)評(píng)論》。結(jié)果程序員屌絲的文章不入商業(yè)人士的法眼,無(wú)情被拒,康威就投到了一個(gè)編程相關(guān)的雜志,所以被誤解為是針對(duì)軟件開(kāi)發(fā)的。
最初這篇文章顯然不敢自稱(chēng)定律(law),只是描述了作者自己的發(fā)現(xiàn)和總結(jié)。后來(lái),在Brooks Law著名的人月神話(huà)中,引用這個(gè)論點(diǎn),并將其“吹捧”成了現(xiàn)在我們熟知“康威定律”。
康威定律的核心如下:
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
任何設(shè)計(jì)系統(tǒng)的組織,必然會(huì)產(chǎn)生以下設(shè)計(jì)結(jié)果:即其結(jié)構(gòu)就是該組織溝通結(jié)構(gòu)的寫(xiě)照。簡(jiǎn)單來(lái)說(shuō): 產(chǎn)品必然是其組織溝通結(jié)構(gòu)的縮影。
?
為什么溝通會(huì)影響產(chǎn)品、架構(gòu)等?
在《人月神話(huà)》 中提到這樣一個(gè)觀點(diǎn):
Adding manpower to a late software project makes it later --Fred Brooks, (1975)?
為了趕進(jìn)度加程序員就像用水去滅油鍋里的火一樣(無(wú)奈大家還是前赴后繼)。
為什么會(huì)有這樣的情況,《人月神話(huà)》中給出了簡(jiǎn)潔的答案:?
溝通成本 = n(n-1)/2,溝通成本隨著項(xiàng)目或者組織的人員增加呈指數(shù)級(jí)增長(zhǎng)。是的,項(xiàng)目管理這個(gè)算法的復(fù)雜度是O(n^2)。舉個(gè)例子:
5個(gè)人的項(xiàng)目組,需要溝通的渠道是 5*(5–1)/2 = 10
15個(gè)人的項(xiàng)目組,需要溝通的渠道是15*(15–1)/2 = 105
50個(gè)人的項(xiàng)目組,需要溝通的渠道是50*(50–1)/2 = 1,225
150個(gè)人的項(xiàng)目組,需要溝通的渠道是150*(150–1)/2 = 11,175
所以知道為什么互聯(lián)網(wǎng)創(chuàng)業(yè)公司都這么小了吧,必須小啊,不然等CEO和所有人講一遍創(chuàng)業(yè)的想法后,風(fēng)投的錢(qián)都燒完了。
?
Mike Amundsen 在 《遠(yuǎn)距離條件下的康威定律——分布式世界中實(shí)現(xiàn)團(tuán)隊(duì)構(gòu)建》 講座中(http://www.infoq.com/cn/presentations/team-building-implementation-in-distributed-world?)還舉了一個(gè)非常有意思的理論,叫“Dunbar Number”,這是一個(gè)叫Dunbar(廢話(huà))生物學(xué)家在1992年最早提出來(lái)的。最初,他發(fā)現(xiàn)靈長(zhǎng)類(lèi)的大腦容量和其對(duì)應(yīng)的族群大小有一定關(guān)聯(lián),進(jìn)而推斷出人類(lèi)的大腦能維系的關(guān)系的一些有趣估計(jì)。舉例來(lái)說(shuō)
親密(intimate)朋友: 5
信任(trusted)朋友: 15
酒肉(close)朋友: 35
照面(casual)朋友: 150
溝通的問(wèn)題,會(huì)帶來(lái)系統(tǒng)設(shè)計(jì)的問(wèn)題,進(jìn)而影響整個(gè)系統(tǒng)的開(kāi)發(fā)效率和最終產(chǎn)品結(jié)果。
?
什么樣的團(tuán)隊(duì),產(chǎn)生什么樣的架構(gòu)
你想要什么樣的系統(tǒng),就搭建什么樣的團(tuán)隊(duì)。如果你的團(tuán)隊(duì)分成前端團(tuán)隊(duì),Java后臺(tái)開(kāi)發(fā)團(tuán)隊(duì),DBA團(tuán)隊(duì),運(yùn)維團(tuán)隊(duì),你的系統(tǒng)就會(huì)長(zhǎng)成下面的樣子:
典型的分層架構(gòu):
如果你的系統(tǒng)是按照業(yè)務(wù)邊界劃分的,大家按照一個(gè)業(yè)務(wù)目標(biāo)去把自己的模塊做出小系統(tǒng),小產(chǎn)品的話(huà),你的大系統(tǒng)就會(huì)長(zhǎng)成下面的樣子,即微服務(wù)的架構(gòu)。
?
微服務(wù)的理念團(tuán)隊(duì)間應(yīng)該是 inter-operate, not integrate 。inter-operate是定義好系統(tǒng)的邊界和接口,在一個(gè)團(tuán)隊(duì)內(nèi)全棧,讓團(tuán)隊(duì)自治,原因就是因?yàn)槿绻麍F(tuán)隊(duì)按照這樣的方式組建,將溝通的成本維持在系統(tǒng)內(nèi)部,每個(gè)子系統(tǒng)就會(huì)更加內(nèi)聚,彼此的依賴(lài)耦合能變?nèi)?#xff0c;跨系統(tǒng)的溝通成本也就能降低。?
?
參考資料:
微服務(wù)架構(gòu)的理論基礎(chǔ) - 康威定律?
https://yq.aliyun.com/articles/8611?
每個(gè)架構(gòu)師都應(yīng)該研究下康威定律?
http://www.infoq.com/cn/articles/every-architect-should-study-conway-law
原文地址:http://www.cnblogs.com/ghj1976/p/5703462.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Conway#39;s law(康威定律)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ASP.NET Core Linux下为
- 下一篇: 使用Visual Studio Code