黄色三级片无码高清-一级国产黄色片传媒-下载日韩一级黄色片-国产黄片卡片一级-看三四级黄色毛片-国产一级爱做c片免费-欧美一级电影播放观看-日韩一级视频在线看-成人簧片一级AAA片

【請登錄】【免費注冊】

首頁新聞技術產品供應二手培訓展會物流維修求購招商招標招聘企業(yè)

新聞

在這里讀懂中國機械行業(yè) 搜索 搜索
新聞首頁行業(yè)資訊政策協(xié)會企業(yè)榮譽人物訪談展會快訊職教新聞新年寄語
您的位置:盤古機械網>新聞資訊>行業(yè)資訊>詳情

從康威定律和技術債看研發(fā)之痛

時間:2017年02月22日瀏覽:302次收藏分享:

所謂康威定律

有一位叫康威的人,提出一個觀點:設計系統(tǒng)的組織,其產生的設計等同于組織之內、組織之間的溝通結構。其實,這里的系統(tǒng)并不局限于軟件領域的系統(tǒng)。康威對其定律又做了具體解讀:

組織溝通方式會通過系統(tǒng)設計表達出來。

時間再多一件事情也不可能做得完美,但總有時間做完一件事情。

線型系統(tǒng)和線型組織架構間有潛在的異質同態(tài)特性。

大的系統(tǒng)組織總是比小系統(tǒng)更傾向于分解。

組織溝通方式會通過系統(tǒng)設計表達出來,溝通成本隨著團隊成員的增加而以幾何級數(shù)增加。線型系統(tǒng)和線型組織架構間有潛在的異質同態(tài)特性,這句話說白一點就是,你需要構建什么樣的系統(tǒng),就搭建什么樣的組織結構。下面我們會融合案例來看看這些逃不過的原則。

所謂技術債務

技術債務是由Ward Cunningham在1992年的報告中創(chuàng)造的一個比喻,被定義為當我們有意或無意地做了錯誤的或不理想的技術決策所累積的債務。它和金融債務非常相似。一個人貸款了就會產生債務。如果他定期還款,那么所創(chuàng)建的債務是可以接受的,不會產生進一步的問題。但是,如果他不還款,就會以利息作為懲罰,并隨著不還款次數(shù)的增加而增加。如果這個人很長一段時間不能支付任何款項,那么應計利息使得他更難以償還債務。在極端情況下,該人不得不宣布自己破產。

為了快速做業(yè)務,采取簡單粗暴的方案是大家表示支持的。臨時方案的毛病不在于這2個月臨時了,而在于這個臨時上線之后,再無人管了,俗稱“有人生、沒人養(yǎng)”。1年如果做5個臨時方案,就等于欠了5筆債務。欠債并不可怕,怕的是沒有償還計劃,或者借口沒有時間,或者借口等業(yè)務不那么高速發(fā)展的時候。吊詭的是好的業(yè)務一定是永遠都沒有時間的,而差的業(yè)務確實不用發(fā)展了,因為被下線了,或者整個公司close了。So,珍惜高速發(fā)展的業(yè)務,記得去更換引擎,償還債務,欠的,遲早要還的。有關技術債,推薦當當史大官人在周評比中名列前茅的文章:當技術宅遇到技術債,我個人覺得是這方面有調皮有調性的好文章。

以三個case來看看研發(fā)活動之痛

一次接入效率優(yōu)化

以真實的X業(yè)務為例,在去年年中的時候,一個全新模式的業(yè)務接入需要多達10天,歷經17個環(huán)節(jié),8個團隊。如下圖所示。

從康威定律和技術債看研發(fā)之痛

我們確定了幾個策略以期帶來改變:

為什么要減少協(xié)同呢?我們前面講過,組織溝通方式會通過系統(tǒng)設計表達出來,溝通成本隨著團隊成員的增加而以幾何級數(shù)增加。關于溝通成本,人月神話給出了很簡潔的答案:溝通成本 = n(n-1)/2,n=項目成員。如果按一個團隊1個成員作為接口人參與跨團隊協(xié)同,那么8個團隊的溝通可能就達到87/2=28;而3個團隊的溝通值算下來是32/2=3。

為什么要減少環(huán)節(jié)呢?環(huán)節(jié)越多,涉及的組織和團隊就越多;減少組織協(xié)同必然要減少環(huán)節(jié)。有報道說某市一家工廠的一個基建項目,在申報過程中,一共蓋了745個公章。流程如此繁瑣,必然會影響辦事效率。軟件研發(fā)亦是如此。

我們再來看一下提升效率!減少環(huán)節(jié),減少協(xié)同,自然效率就高了,有哪些減少協(xié)同的方式呢?

我們來看一些例子:如果一個團隊有3個team在協(xié)作,而每個team都是前端、后端、測試職責分明,那么需要協(xié)同的環(huán)節(jié)必然就會很多。比如team1后端開發(fā)交付測試、team1后端進行驗收測試、team1和team2進行功能聯(lián)調等等。

從康威定律和技術債看研發(fā)之痛

如果嘗試進行能力合并,就是全棧型團隊,那么可能的模式就變成下圖所示:

從康威定律和技術債看研發(fā)之痛

全功能團隊雖然也有編寫代碼、單元測試、接口測試、集成測試等環(huán)節(jié);但跨越組織的溝通已經減少了很多。

我們再嘗試一種變化,因為設計系統(tǒng)的組織,等于組織內和組織間的溝通結果。

從康威定律和技術債看研發(fā)之痛

這個組織溝通圖背后的架構關系可以如下示意:

從康威定律和技術債看研發(fā)之痛

總結:組織關系和架構息息相關;溝通成本往往由于組織協(xié)同方太多造成;應該從外部視角來組合組織關系;嘗試通過抽象、構建通用組件來嘗試達到能力復用;嘗試對于用戶或者內部客戶提供統(tǒng)一受理界面。

重復的輪子

軟件開發(fā)領域有一個流行的原則:DRY,全稱是Don’t Repeat Yourself,我們一般翻譯為:不要重復造輪子。關于要不要造輪子,有一篇非常精彩的文章:使用開源項目的正確姿勢,都是血和淚的總結!

我們拋開其他,嘗試聊聊輪子與組織的關系。首先,如果是同一個boss下面,已經有一個輪子了,兄弟團隊用還是不用?如果不用,boss肯定要跟你算賬!盡管你背后在罵這廝做得有多爛,你還得用。如果是不同組織的輪子呢?就不一定了,如果是一個業(yè)務研發(fā)型團隊,是沒有時間去造中間件輪子的了,但是可以搞些common-tools之類,這些也可以作為創(chuàng)新產出去交差。而且我們是絕對對同類產品表示嫉妒的,要千方百計證明對方很low,我解決了世界級難題。當然另外一個團隊也是這樣向老板匯報的。最終這些輪子越來越多,很難推廣,也無法解決全部問題,因為問題域很廣,沒有銀彈。

我們以下面這個案例來說一下。如下圖所示:

從康威定律和技術債看研發(fā)之痛

方案1是最好的,專業(yè)的事情交給專業(yè)團隊;方案2是不得已而為之;方案3是折中解決方案。也就是方案3優(yōu)于方案2,但我們習慣于做方案2,造一個輪子,因此形成了鄙視鏈。

從康威定律和技術債看研發(fā)之痛

你需要構建什么樣的系統(tǒng),就搭建什么樣的組織結構;這句話有一種逆向作用力。為了滿足xx領域的監(jiān)控能力,我們在基礎平臺的基礎上引入了xx實時計算,xx指標管理,xx模型;那么我們成立了一個團隊A來做這事;做著做著,我們就形成了一種認知,團隊A就是解決這個問題了,而且我們很強大;我們致力于解決更多的類似問題;后來我們發(fā)現(xiàn)團隊B、團隊C也是通過自然生長解決類似問題的。那么問題來了,從公司角度看,A、B、C做的事情應該合并;從各具體組織看,會不斷證明別的團隊做的會滿足不了我的需求,我是應該留下來的團隊。

總結:你要什么樣的系統(tǒng),要搭建什么樣的組織結構;一旦搭建了這樣的組織結構,可能帶來逆向作用力,從而導致重復建設、效率低下、部門墻,且最終可能都沒有對一個問題域打穿,給合作伙伴或者客戶提供了非一站式的解決方案,陷入各自為政。

在提出解法前,我拋些原則:協(xié)同、賦能、動態(tài)組織。首先明確一個動態(tài)組織的概念,組織是為業(yè)務或者某些目標服務的,組織應該具備靈活性、動態(tài)性。一個長期穩(wěn)定的組織,可能沒有活力,或者沒有尋找新的挑戰(zhàn)空間。其次,協(xié)同原則,意思就是孤膽英雄不能成事已然是IT界的共識了,孤膽團隊同樣難以成事。經常有人講站在巨人的肩膀上,登高望遠。所以一個組織要明確自己的目標,而且明確多少事是協(xié)同哪些干系方去拿到;一定有很多不用自己做的事情,笨不是理由,沒看清楚會讓團隊泥足深陷。賦能,是基于協(xié)同這個共識來的,中間件團隊要賦能業(yè)務研發(fā)團隊自不必說,業(yè)務研發(fā)團隊之間也可以相互賦能。那些共性問題,沒有必要重復造輪子。這里引入了一個非常關鍵的因素,就是考核!團隊A的主管如何看待A這個團隊,他可能就把某工具做成當目標,其實團隊A的主管的主管的目標是達成5秒的異常檢測能力,他并不關注監(jiān)控的一部分能力是誰提供的。OK,基于以上的討論,可以給出一些解法,但不限于此。

從康威定律和技術債看研發(fā)之痛

如上圖所示,中間件團隊可以把監(jiān)控平臺做成內部開源模式,是完全開放,還是提供基礎能力層,開放層這樣具體的細節(jié)且不討論,其他業(yè)務團隊都可以貢獻代碼,業(yè)務團隊的優(yōu)勢是離業(yè)務場景很近,有具體的場景驅動;這樣還可以解決A、B、C團隊的優(yōu)先級問題,全部List給中間件團隊,不知道猴年馬月了。

從康威定律和技術債看研發(fā)之痛

如上圖所示,業(yè)務團隊A和中間件團隊可以持續(xù)共建某些基礎能力,可能業(yè)務團隊A是需要賦能的大戶,而且所需要的成本很高,故長期共建。基于我們說的協(xié)同、賦能、動態(tài)組織原則,業(yè)務團隊A在完成使命后可以在對應的組織內重新確定新的目標。同時,賦能原則,共建的成果,可以為業(yè)務團隊B、C服務。對于業(yè)務團隊B而言,可能投入1-2個人,搞上2個月自己的需求就滿足了,那么他們就撤出。

平臺發(fā)展vs業(yè)務發(fā)展

最近陳康賢寫了一篇談演進式架構的文章,我記得大致是對于成熟的業(yè)務領域可以采用平臺式架構。我非常認同。之前也有一些大咖提出架構是演進出來的,而不是設計出來的。總體來講,演進是必須的,前期設計做多少合適是值得探討的。我個人的一個衡量標準是對于方案A、B進行評估,如果方案B可以更通用,而付出的成本在可接受范圍內,優(yōu)先選擇方案B。不做BDUF是大家的共識,而藝術在對于“度”的把握。

許多人都會面臨一個問題就是平臺發(fā)展vs業(yè)務發(fā)展。按理說平臺應該隨著業(yè)務一起發(fā)展,但是如果每個需求都是堆砌式地上線,那么就是構建了一個一個的煙囪。我們期望的是在一段時間后,相似度高的、同類型需求可以擁有快得多的上線能力。

關于平臺發(fā)展和支持業(yè)務,以及不同場景不同階段的業(yè)務架構原則我有幾個觀點。

架構方案和業(yè)務形態(tài)息息相關。

架構是演進的、發(fā)展的;架構沒有最好,只有適合。

技術債要做清償計劃。

不要在下雨天去補屋頂。

架構方案和業(yè)務形態(tài)息息相關

我之前親身經歷了一條產品線,完全是試錯型的產品線。我們在設計之初,對于模型共同層做了抽象,后來五花八門的產品長在上面,公共的內容越來越少,反而導致了系統(tǒng)調用鏈路增加;代碼編寫的復雜度增加。1年后,這條產品線全線關閉!從這個case來看,最適合的就是滿足業(yè)務快速試錯,可能煙囪式架構是最合適的;甚至產品之間有一些代碼重復,但各team各司其職,是最快反應,是最小的研發(fā)響應單元。對應到康威定律的組織和架構關系,也是依賴最少的組織,溝通成本最低。

從康威定律和技術債看研發(fā)之痛

如上圖所示,煙囪型架構在不確定產品線的試錯有優(yōu)勢,對應的組織構架也應以簡單、快速響應為特征。

架構是演進的、發(fā)展的;架構沒有最好,只有適合

我再舉一個例子來說架構演進這事。隨著業(yè)務發(fā)展,上了規(guī)模,類似的訴求會凸顯,因此沉淀為越來越多的平臺。如下圖示意:

從康威定律和技術債看研發(fā)之痛

除了需求相似性、平臺要求相似性導致的架構發(fā)展以外,還可能有,我們對領域本質認知的升級。比如在支付寶淵源的發(fā)展過程中,我們先后使用過紅包、實時優(yōu)惠、商戶優(yōu)惠券等產品。這是煙囪式架構發(fā)展下的產物。下圖示意為一個紅包產品的展示。

從康威定律和技術債看研發(fā)之痛

行業(yè)也有其他類似券的東東,如下圖所示:

從康威定律和技術債看研發(fā)之痛

如果簡單地看,券和紅包是兩類東西。但是,我們在產品上形成了如下定義,就可以視作一類東西,則可以對它們進行統(tǒng)一的抽象和管理。

券定義:

是一種票據(jù),作為券發(fā)行方和擁有方之間的憑證,具有一定的價值和法律效應。

相關干系方:

券的發(fā)放方(提供權益)

券的擁有方(享受權益)

劵的發(fā)放工具(是券發(fā)行方向擁有方發(fā)放券憑證的工具)

券形式:

可以把券作為基礎產品,在業(yè)務形態(tài)上可以包裝為打折卡,滿減卡等用戶感知的產品或者是營銷工具。

技術債要做清償計劃

前一段,參與了一個關于技術債務的討論。技術債務確實一個惹人討厭的東西,業(yè)務逼著你跑,你不跑不行,可能跑著就累死了;你停下來歇會兒,搞搞技術改造,又可能被業(yè)務壓力壓死了,反正都是死!關于技術債務我提了4個觀點:

由于技術人員水平不行,意識不夠,所以越寫越爛。

developer都有一顆積極向上的紅心,但是他們不知道如何做才是好的。

上行下效,沒有靠譜的Leader,架構師,大家都是懶惰的,不想去還債。

有華為的朋友表示,永遠的業(yè)務壓力,我沒時間;其實所有公司都一樣滴,趕著交付,哪有時間去清償。

關于債務清償,也總結了務實接地氣的幾個思路:

構建質量保障體系,讓我有勇氣動手動刀。比如接口測試、單元測試,通過CI持續(xù)反饋,這樣我有50%的勇氣來做重構。

對于遺留系統(tǒng),沒出問題的地方,你不要動它。出問題的,修復并補充測試代碼。如果更進一步,對于高危的功能和模塊可以做定向增強。

招募優(yōu)秀的工程師,好的作風和習慣可以影響整個團隊。

抓住痛得不行的時候大作文章。平常說持續(xù)集成,可能團隊成員沒有感受到好處,出bug了,再回顧看看;copy-paste代碼總有一天不能滿足更復雜的需求,這樣從心理認同上,大家覺得必須重寫了。抓住這樣的機會,構建品質高一些的代碼和質量防線。改變一個人是非常難的,抓住這樣的機會很重要!

不要在下雨天去補屋頂

馬老師有一金句:不要在下雨天去補屋頂。做軟件研發(fā),做架構也是一樣的。當一些重點戰(zhàn)役型項目讓你喘不過氣的時候,你去做理想架構無異于找死。這里一個觀點就是技術、架構始終為業(yè)務,為商業(yè)服務。無論從走出舒適區(qū),還是從架構發(fā)展來講,一定要找準時機來做架構升級。這個升級是基于對業(yè)務本質的不斷認知,否則就是南轅北轍。我們團隊曾在一次重要架構改造的過程中,架構方案確定比新業(yè)務來臨早了3個月,這樣剛好通過一個小業(yè)務的切換,快速上線。然后在戰(zhàn)役打響的第二個月新架構派上用場,3個月的時差足以改變許多東西。

因此,我們要記住,不要在下雨天去補屋頂!補屋頂包括償還技術債務,包括架構的升級改造!

總結一下:康威定律及其推論告訴我們,要什么事情,設定什么樣的組織結構;同時做不同的事情,要允許動態(tài)彈性組織結構,不要被組織束縛;再進一步,跨越組織,立足協(xié)同、賦能可以做出更大的組織成效;技術債務這事不要等到下雨天才償還,做業(yè)務和平臺架構發(fā)展平衡的藝術取決于在一定時間和環(huán)境下的目標,技術人員不要永遠處于被驅動的狀態(tài)!研發(fā)之痛,是一個復雜的調試性問題,沒有銀彈!


熱門新聞

業(yè)務咨詢:932174181   媒體合作:2279387437    24小時服務熱線:15136468001 盤古機械網 - 全面、科學的機械行業(yè)免費發(fā)布信息網站 Copyright 2017 PGJXO.COM 豫ICP備12019803號