项目管理与群体智慧
知識(shí)的詛咒(The Curse of Knowledge),通俗的說(shuō)是指我們一旦知道了某事,就無(wú)法想象這件事在未知者眼中的樣子。
?
當(dāng)我們把自己知道的知識(shí)解釋給別人的時(shí)候,因?yàn)樾畔⒌牟粚?duì)等,我們很難把自己知道的完完全全給對(duì)方解釋清楚。是我們擁有的知識(shí)“詛咒”了我們。
為什么會(huì)出現(xiàn)知識(shí)的詛咒這種現(xiàn)象呢? 我認(rèn)為是人類集體的智慧和文明經(jīng)過(guò)數(shù)千年的進(jìn)化,積累了如海洋一般無(wú)限量的知識(shí),但是人類單顆大腦的容量和信息處理能力是有限的,每個(gè)人經(jīng)過(guò)多年的教育和工作經(jīng)歷之后,都只能獲得人類知識(shí)庫(kù)的一小部分知識(shí),一旦你成為一個(gè)領(lǐng)域的專家,在其他領(lǐng)域就很難再成為專家。
?
舉個(gè)很常見(jiàn)的例子,大家去醫(yī)院看病的時(shí)候,疑難雜癥通常會(huì)由多個(gè)科室的專家會(huì)診之后才能做出比較精確的診斷,就是這個(gè)道理。人類文明的偉大之處,就在于這種群體智慧的力量,單個(gè)個(gè)體的體力和腦力有限,但是一旦形成協(xié)作之后力量就會(huì)非常強(qiáng)大,能完成工作量和難度巨大的工程活動(dòng)。
?
“知識(shí)的詛咒”會(huì)給人類的協(xié)作帶來(lái)很多的困難,因?yàn)槊總€(gè)個(gè)體都只有局部的知識(shí)和信息,如何從全局的角度做頂層設(shè)計(jì)和正確決策就是一個(gè)困難的問(wèn)題。
?
軟件項(xiàng)目研發(fā)活動(dòng)不同于其他工業(yè)工程,是人類歷史上最為復(fù)雜的技術(shù)密集,知識(shí)密集和智力密集型工程活動(dòng),不同于蓋樓、修鐵路、橋梁這類體力密集型的工程,研發(fā)一個(gè)大型軟件項(xiàng)目需要成百上千知識(shí)工作者的分工協(xié)作共同完成,一個(gè)軟件項(xiàng)目所處理問(wèn)題的復(fù)雜性之高,所涉及的知識(shí)面之廣,已經(jīng)不是幾個(gè)會(huì)寫(xiě)代碼的工程師就可以解決的問(wèn)題。
?
以現(xiàn)在大家熱談的中臺(tái)戰(zhàn)略為例,在實(shí)施的過(guò)程中失敗的案例比比皆是,就是因?yàn)橹信_(tái)的本質(zhì)是企業(yè)級(jí)的整體設(shè)計(jì),一個(gè)用戶視角的完整應(yīng)用,涉及上百個(gè)技術(shù)組件,需要成百上千業(yè)務(wù)人員、架構(gòu)師、研發(fā)人員之間的溝通和協(xié)作才能夠完成,整個(gè)企業(yè)的業(yè)務(wù)人員、技術(shù)研發(fā)人員會(huì)成為一個(gè)整體,協(xié)作的范圍和復(fù)雜度遠(yuǎn)遠(yuǎn)超過(guò)了原來(lái)單體時(shí)代的項(xiàng)目。
?
現(xiàn)實(shí)情況往往是懂業(yè)務(wù)的不懂技術(shù),懂一個(gè)業(yè)務(wù)領(lǐng)域的不懂另一個(gè)業(yè)務(wù)領(lǐng)域,從業(yè)務(wù)人員到技術(shù)人員之間、不同項(xiàng)目組的技術(shù)人員之間都有巨大的信息鴻溝。
?
一方面,軟件項(xiàng)目的規(guī)模之大、難度和復(fù)雜性之高需要成千上萬(wàn)不同領(lǐng)域之間的專家、業(yè)務(wù)人員和技術(shù)人員的協(xié)作和集體智慧才能完成,另一方面,“知識(shí)的詛咒”現(xiàn)象會(huì)給項(xiàng)目的進(jìn)行帶來(lái)很大的困難。項(xiàng)目過(guò)程中的很多問(wèn)題都直接或者間接和這個(gè)現(xiàn)象有關(guān)的。
?
舉幾個(gè)項(xiàng)目過(guò)程中常見(jiàn)的問(wèn)題:?
?
問(wèn)題一、業(yè)務(wù)與產(chǎn)品、開(kāi)發(fā)之間的溝通問(wèn)題
?
業(yè)務(wù)人員、產(chǎn)品人員和開(kāi)發(fā)經(jīng)常是各說(shuō)各話,產(chǎn)品設(shè)計(jì)人員經(jīng)常吐糟開(kāi)發(fā)人員做的太慢或者做出來(lái)功能的不是自己設(shè)計(jì)的效果,開(kāi)發(fā)人員回懟說(shuō)產(chǎn)品人員設(shè)計(jì)的功能太理想不能實(shí)現(xiàn)……
?
出現(xiàn)這個(gè)現(xiàn)象是因?yàn)楫a(chǎn)品人員設(shè)計(jì)的原型或者效果圖是從用戶的業(yè)務(wù)需求和最終效果來(lái)考慮的,是一個(gè)主觀的設(shè)計(jì)過(guò)程,往往會(huì)忽略技術(shù)原理、實(shí)現(xiàn)的細(xì)節(jié)等過(guò)程性因素,而開(kāi)發(fā)人員是從客觀的技術(shù)可行性、實(shí)現(xiàn)過(guò)程等角度考慮,業(yè)務(wù)人員純主觀的設(shè)計(jì)和技術(shù)人員客觀的思維方式兩者之間本身就是存在矛盾的。
?
問(wèn)題二、始終如“一”的項(xiàng)目管理
?
這個(gè)在軟件工程領(lǐng)域的專業(yè)術(shù)語(yǔ)叫驗(yàn)證和確認(rèn)(Verification and Validation)。通俗來(lái)講,就是最終實(shí)現(xiàn)做出來(lái)的軟件功能要和最開(kāi)始的需求、設(shè)計(jì)目標(biāo)、約束等保持一致,也經(jīng)常被大家叫做以始為終或者以終為始。
?
在一個(gè)項(xiàng)目研發(fā)團(tuán)隊(duì)中,需求分析人員的職責(zé)在于調(diào)研客戶需求,建立清晰的需求規(guī)格及軟件藍(lán)圖(原型或功能設(shè)計(jì)說(shuō)明書(shū)),開(kāi)發(fā)人員的職責(zé)在于設(shè)計(jì)和實(shí)現(xiàn)藍(lán)圖,測(cè)試人員的職責(zé)在于驗(yàn)證系統(tǒng)的實(shí)現(xiàn)是否和需求人員的藍(lán)圖是一致的。這種角色分工模式帶來(lái)的一個(gè)問(wèn)題是前一個(gè)角色的輸出作為后一個(gè)環(huán)節(jié)的輸入時(shí)出現(xiàn)偏差,經(jīng)過(guò)眾多研發(fā)測(cè)試環(huán)節(jié)之后最終實(shí)現(xiàn)的系統(tǒng)偏離了設(shè)計(jì)預(yù)期以及客戶的需求。
?
現(xiàn)代軟件工程為了解決這個(gè)問(wèn)題發(fā)明出各種各樣的方法來(lái)解決這個(gè)問(wèn)題,從若干年前的UML建模到近年流行的DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)),BDD(行為驅(qū)動(dòng)設(shè)計(jì))、軟件形式化方法等等,目標(biāo)都是如何清晰準(zhǔn)確的對(duì)客觀世界建模定義軟件的功能和預(yù)期行為,幫助不同角色共同分析復(fù)雜業(yè)務(wù)模型、建立業(yè)務(wù)全貌和統(tǒng)一的溝通語(yǔ)言,減少信息在不同角色傳輸?shù)膿p益。測(cè)試領(lǐng)域的TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))、實(shí)例化需求等方法,目標(biāo)是讓測(cè)試的輸入和需求階段的輸出保持一致。
?
除此之外,還有項(xiàng)目管理常用的需求追溯矩陣、全流程審計(jì)等方法,都是為了實(shí)現(xiàn)這個(gè)目標(biāo)。然而在現(xiàn)實(shí)的研發(fā)管理中,實(shí)現(xiàn)始終如一這個(gè)目標(biāo)仍然是一個(gè)困難的問(wèn)題。
?
問(wèn)題三、問(wèn)題定位排查過(guò)程
?
生產(chǎn)出現(xiàn)問(wèn)題的時(shí)候,拉上一波研發(fā)人員排查定位問(wèn)題,往往會(huì)出現(xiàn)從頭開(kāi)始兜了一圈還是沒(méi)有定位,在復(fù)雜的單體項(xiàng)目,一個(gè)系統(tǒng)的整體功能是由若干子系統(tǒng)完成的,每個(gè)子系統(tǒng)又分為若干模塊,子模塊,出現(xiàn)問(wèn)題的時(shí)候只能從頭開(kāi)始逐步縮小搜索范圍, 定位問(wèn)題的系統(tǒng), 子系統(tǒng),模塊,子模塊等。
?
在當(dāng)前中臺(tái)和分布式架構(gòu)盛行的時(shí)代,問(wèn)題的定位和排查更是一個(gè)困難的問(wèn)題,用戶視角的一個(gè)完整功能,可能會(huì)調(diào)用數(shù)十個(gè)組件的服務(wù),雖然有鏈路追蹤系統(tǒng)的輔助定位,問(wèn)題的定位仍然是一個(gè)十分麻煩的問(wèn)題,動(dòng)輒幾十甚至上百人如熱鍋上的螞蟻一樣手忙腳亂的排查問(wèn)題更是家常便飯,經(jīng)歷過(guò)的同學(xué)肯定都會(huì)心有余悸。其原因就是每個(gè)個(gè)體都只了解整個(gè)系統(tǒng)的一部分知識(shí),只有把每個(gè)個(gè)體所掌握的知識(shí)和信息整合起來(lái)才能掌握系統(tǒng)的全貌。?
?
問(wèn)題四、項(xiàng)目經(jīng)理的決策過(guò)程
?
由于每個(gè)個(gè)體都只具備一部分知識(shí)和信息,項(xiàng)目經(jīng)理作為項(xiàng)目全局的決策者,要做出正確的決策是一件非常不容易的事情,需要具備和掌握正確的思維方式才能夠做到。然而什么是正確的思維方式是個(gè)見(jiàn)仁見(jiàn)智的問(wèn)題,因?yàn)槊總€(gè)人的思維方式和觀點(diǎn)都是不同的(個(gè)人認(rèn)為大概有如下幾個(gè)方面,正確的思維方式應(yīng)該具備以下幾個(gè)方面,全局性、客觀性、動(dòng)態(tài)性、開(kāi)放性等,以后作者將專門就這個(gè)話題進(jìn)行探討)。
?
項(xiàng)目經(jīng)理的決策過(guò)程,通常要以大量其它角色提供的信息為基礎(chǔ),綜合集成判斷之后才能做出,由于每個(gè)個(gè)體的水平是非常參差不齊的,如何保證其他角色提供的信息正確客觀是個(gè)非常困難的問(wèn)題。一旦項(xiàng)目經(jīng)理的信息輸入出了問(wèn)題或者項(xiàng)目經(jīng)理的決策模型出了問(wèn)題做出錯(cuò)誤的決策,后果將非常嚴(yán)重。
?
當(dāng)年的723動(dòng)車事故,以及多架波音飛機(jī)墜機(jī)的事故等等都是活生生的實(shí)例,當(dāng)系統(tǒng)的規(guī)模和復(fù)雜性達(dá)到一定程度,項(xiàng)目經(jīng)理如果不能做出正確的決策就會(huì)給正常的生產(chǎn)和生活帶來(lái)巨大的損害。
?
從上面的問(wèn)題我們可以看到雖然每個(gè)個(gè)體都有局部的知識(shí)和信息,在項(xiàng)目經(jīng)理的統(tǒng)一調(diào)度和管理下形成協(xié)作和分工,就能研發(fā)完成規(guī)模巨大精密運(yùn)行的產(chǎn)品和系統(tǒng)(雖然過(guò)程充滿了混沌和曲折),從這點(diǎn)來(lái)看,和指揮樂(lè)團(tuán)演奏出華麗的樂(lè)章一樣,項(xiàng)目管理確實(shí)也是一門藝術(shù)。
?
軟件行業(yè)已經(jīng)越來(lái)越復(fù)雜,不僅所處理問(wèn)題的復(fù)雜性大大提高,所涉及的知識(shí)面也越來(lái)越大,軟件開(kāi)發(fā)是比足球活動(dòng)更需要團(tuán)隊(duì)協(xié)作的一項(xiàng)團(tuán)體活動(dòng),軟件項(xiàng)目管理是運(yùn)用組織、流程和工具將每個(gè)大腦連接形成一個(gè)智慧共同體的過(guò)程。
總結(jié)
- 上一篇: vlan、三层交换机、网关、DNS、子网
- 下一篇: Python 内置方法和属性应用:反射和