相信很多人都聽說過二八定律,這是一個適用性非常廣泛的定律。我發(fā)現(xiàn)二八定律同樣適用于軟件開發(fā),并對其產(chǎn)生了十分深遠(yuǎn)的影響。這次我想聊聊二八定律是如何影響我們?nèi)粘5拈_發(fā)工作的,希望通過這個話題來改變一下大家習(xí)以為常的開發(fā)思維。
二八定律是19世紀(jì)末20世紀(jì)初意大利經(jīng)濟(jì)學(xué)家巴萊多發(fā)現(xiàn)的。他認(rèn)為:
在任何一組東西中,重要的只占其中一小部分,約20%,其余80%盡管是多數(shù),卻是次要的,因此又稱二八定律。
二八定律有相當(dāng)廣泛的普適性,不論是在生活中,還是在工作上,只要你細(xì)心觀察,都會發(fā)現(xiàn)其身影。
不知道大家有沒有發(fā)現(xiàn)這樣一個事實,隨著我們系統(tǒng)要處理的業(yè)務(wù)功能越來越多,我們添加一個新功能的代價也越來越大。很有意思,我發(fā)現(xiàn)業(yè)務(wù)功能與添加一個新功能要做出的努力呈現(xiàn)出類似于下圖所示的關(guān)系。
effort-feature
起初,為了使得一個新系統(tǒng)能運行,我們不得不處理一些非業(yè)務(wù)性的工作,比如搭建框架、技術(shù)選型、架構(gòu)設(shè)計、部署結(jié)構(gòu)設(shè)計、資源申請等等。而一旦這些基礎(chǔ)性的工作完成,那我們就可以快速的完成業(yè)務(wù)需求。大概花費我們20%的精力就可以滿足80%的業(yè)務(wù)功能,這些業(yè)務(wù)功能也是系統(tǒng)的主要功能。但是再往后新增功能,所要做出的努力就會成指數(shù)增長。這張圖與P o EAA中的領(lǐng)域邏輯復(fù)雜度與工作量之間的關(guān)系類似。當(dāng)然,這個曲線并不是絕對的,影響這條曲線的關(guān)鍵在于系統(tǒng)的代碼架構(gòu),好的代碼架構(gòu)能讓你在處理復(fù)雜的業(yè)務(wù)需求時更加從容。(題外話,我認(rèn)為一個的程序員應(yīng)該具備處理復(fù)雜需求的能力。)
既然我們發(fā)現(xiàn)了這個規(guī)律,是否能指導(dǎo)我們的日常開發(fā)工作呢?答案是肯定的。因為80%的功能基本已經(jīng)滿足了大部分人的需求,而為了滿足少數(shù)人的需求而增加80%的努力是不值得。當(dāng)然,公司完全有理由要求你這么做,與此同時你也可以把這個利害關(guān)系介紹給他們聽。
甚至在細(xì)分到x軸和y軸,我們可以繼續(xù)運用二八定律來分解。80%的業(yè)務(wù)功能其實大概只有20%是核心功能,其余的只是為了優(yōu)化體驗或者簡化流程為存在的;而對于20%的努力而言,其中80%的工作主要集中在滿足核心的業(yè)務(wù)需求而存在的,我們應(yīng)該也必須投入這么多精力來設(shè)計并開發(fā)這些功能,因為它們是整個系統(tǒng)的核心。
程序員總是對性能優(yōu)化這個話題充滿激情,好像這成了彰顯其技術(shù)能力的手段。確實,要把應(yīng)用系統(tǒng)的性能優(yōu)化到極致,確實要付出大量的努力。但實際上性能優(yōu)化所付出的努力與取得的效果也符合二八定律。其工作量與索取的效果類似于下圖所示。
effort-performance
不消多說,凡是做個性能優(yōu)化的同學(xué)應(yīng)該都會有這樣的感觸:只用加個索引或者加上緩存就可以使得系統(tǒng)的性能大幅度提供。使用常規(guī)的優(yōu)化手段(大概耗費20%的精力)就可以取得顯著的效果(提升80%的性能)。但是要取得另外20%的性能提升要付出努力將大大增加。掌握這個規(guī)律相信大家應(yīng)該知道如何“使力”了。
還一個比較顯著的符合二八定律的場景就是在項目管理上。
people-progress
同時參與一個項目的人并非越多越好,實際上影響應(yīng)項目進(jìn)度只取決于少數(shù)人(20%),后面增加更多的人其實收效甚微。我個人也是傾向于不要在一個項目上投入過多的人力,要精不要多。現(xiàn)在微服務(wù)這么流行,我覺得也有類似地影響。它在架構(gòu)層面把一個大系統(tǒng)拆分成一個一個小服務(wù),讓每個服務(wù)有少數(shù)幾個人負(fù)責(zé),這樣整體的開發(fā)效率會更高。
類似上面的例子還有很多,比如迭代周期對軟件質(zhì)量的影響、服務(wù)數(shù)量對整體可用性的影響等等,只要你細(xì)心觀察就會發(fā)現(xiàn)二八定律在我們的日常開發(fā)工作中無處不在。更為重要的是,我們不僅要發(fā)現(xiàn)其存在,更要在那20%的重點上下功夫,避免在80%的事情上瞎費勁。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個個人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。