軟件開發(fā)(方法與邏輯)_第1頁
軟件開發(fā)(方法與邏輯)_第2頁
軟件開發(fā)(方法與邏輯)_第3頁
軟件開發(fā)(方法與邏輯)_第4頁
軟件開發(fā)(方法與邏輯)_第5頁
已閱讀5頁,還剩169頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

軟件開發(fā)方法與邏輯目錄

第1章完美軟件開發(fā)之解構(gòu)

1.1完美軟件開發(fā)的定義

1.2完美軟件開發(fā)的構(gòu)成

1.3完美軟件開發(fā)的前提

1.4完美軟件開發(fā)的用途

第2章完美項目管理之解構(gòu)

2.1項目管理的存在意義

2.1.1價值根源

2.1.2定性分析

2.2完美項目管理的要素

2.2.1邏輯鏈1:意愿之價值

2.2.2邏輯鏈2:物理環(huán)境

2.2.3邏輯鏈3:文化環(huán)境之“意識形態(tài)”

2.2.4邏輯鏈4:文化環(huán)境之“觀點整合”

2.2.5邏輯鏈5:制度環(huán)境之“勢”

2.2.6邏輯鏈6:制度環(huán)境之“量化管理”

2.2.7邏輯鏈7:內(nèi)耗之終結(jié)

2.2.8邏輯鏈8:溝通之成本

2.2.9邏輯鏈9:組織行為之優(yōu)化

2.3完美項目管理

2.3.1完美項目管理的形象

2.3.2完美項目管理的關(guān)聯(lián)要素

第3章完美流程之解構(gòu)

3.1流程的存在意義

3.1.1價值根源

3.1.2定性分析

3.2完美流程的要素

3.2.1邏輯鏈1:正交的分解

3.2.2邏輯鏈2:流程之尺度

3.2.3邏輯鏈3:選擇與集中

3.2.4邏輯鏈4:共識之力量

3.2.5邏輯鏈5:成本之計算

3.3完美流程

3.3.1完美流程的形象

3.3.2CMMI與完美流程之異同

3.3.3完美流程的關(guān)聯(lián)要素

第4章完美開發(fā)模型之解構(gòu)

4.1開發(fā)模型的存在意義

4.1.1價值根源

4.1.2定性分析

4.2完美開發(fā)模型的要素

4.2.1邏輯鏈1:預(yù)則立

4.2.2邏輯鏈2:反紙上談兵

4.3完美開發(fā)模型

4.3.1完美開發(fā)模型的形象

4.3.2完美開發(fā)模型的關(guān)聯(lián)要素

第5章完美估算方法之解構(gòu)

5.1估算的存在意義

5.1.1價值根源

5.1.2定性分析

5.2完美估算的要素

5.2.1邏輯鏈1:標準單位的選擇

5.2.2邏輯鏈2:橫看成嶺側(cè)成峰的應(yīng)對

5.2.3邏輯鏈3:軟件類別的影響

5.2.4邏輯鏈4:估算的終結(jié)

5.2.5邏輯鏈5:反省是進步的階梯

5.3完美估算方法

5.3.1完美估算方法的形象

5.3.2完美估算方法的關(guān)聯(lián)要素

第6章完美需求開發(fā)之解構(gòu)

6.1需求開發(fā)的存在意義

6.1.1價值根源

6.1.2定性分析

6.2完美需求開發(fā)的要素

6.2.1邏輯鏈1:霧外江山看不真

6.2.2邏輯鏈2:80/20法則

6.2.3邏輯鏈3:需求開發(fā)的終結(jié)

6.2.4邏輯鏈4:變化永恒

6.2.5邏輯鏈5:偏好上的免疫力

6.3完美需求開發(fā)

6.3.1完美需求開發(fā)的形象

6.3.2敏捷與完美需求開發(fā)的異同

6.3.3完美需求開發(fā)的關(guān)聯(lián)要素

第7章完美設(shè)計和編碼之解構(gòu)

7.1設(shè)計、編碼和文檔間的關(guān)系

7.1.1【設(shè)計=編碼】VS【設(shè)計≠編碼】

7.1.2文檔的角色

7.1.3設(shè)計知識歸類法

7.2設(shè)計和編碼的存在意義

7.2.1價值根源

7.2.2定性分析

7.3完美設(shè)計和編碼的要素

7.3.1邏輯鏈1:正交的分解

7.3.2邏輯鏈2:層次的控制

7.3.3邏輯鏈3:時序下的數(shù)據(jù)流

7.3.4邏輯鏈4:信息的隱藏

7.3.5邏輯鏈5:“名”與“實”的契合

7.3.6邏輯鏈6:設(shè)計的終結(jié)

7.4完美設(shè)計和編碼

7.4.1完美設(shè)計和編碼的形象

7.4.2完美設(shè)計和編碼的關(guān)聯(lián)要素

第8章設(shè)計和編碼的度量與改善

8.1復(fù)雜度的度量

8.1.1現(xiàn)有度量方法的考察

8.1.2一種新的度量方法

8.1.3從復(fù)雜度的視角考察Factory模式

8.1.4從復(fù)雜度的角度考察Command模式

8.1.5小結(jié)

8.2設(shè)計方法的選擇

8.2.1一點歷史

8.2.2面向?qū)ο笈c結(jié)構(gòu)化間的互補性

8.23第一種互補關(guān)系

8.2.4第二種互補關(guān)系

8.2.5小結(jié)

第9章案例:薪水支付與性能優(yōu)化

9.1案例1:薪水支付

9.1.1設(shè)計決策1:雇員這一概念的邊界

9.1.2設(shè)計決策2:屬性還是類層次

9.1.3設(shè)計決策3:支付方式等與雇員類的關(guān)系

9.1.4設(shè)計決策4:支付方式要不要用多態(tài)

9.1.5設(shè)計決策5:支付時間表是應(yīng)該獨立還是放入Employee

9.1.6設(shè)計決策6:究竟在哪里用Command模式

9.1.7設(shè)計決策7:使用哪些輔助類

9.1.8實現(xiàn)

9.1.9小結(jié)

9.2案例2:性能優(yōu)化

附錄

附錄1貢獻值公式與《資本論》

附錄2遺留課題

附錄3語不驚人死不休——反主流觀點匯總

附錄4綜合能力歸類法第1章完美軟件開發(fā)之解構(gòu)某哲學(xué)家曾經(jīng)說過:現(xiàn)實世界不過是理想世界的一個蒼白摹本。就像完美的圓形只在概念中存在,現(xiàn)實中的圓形只能是對完美的圓形的無限回歸。這也即是所謂的完美大多處于虛無之中。然而完美境界之所以具有永恒的價值,卻并非在于其是否可實現(xiàn),而是在于其可以給不懈努力者以終極的指引。真的完美境界更多地會體現(xiàn)為一種原則,一種規(guī)律,一種必然性,它并不以個人的喜好而變動半分,當(dāng)你背離它時,它會以慘痛的教訓(xùn)讓你重新認識到它的存在。而所謂成功項目或者失敗項目所昭示的則是對這種規(guī)則性的順應(yīng)程度。當(dāng)我們處于蒙昧之中時,往往并不知道當(dāng)為不當(dāng)為之準繩,其結(jié)局必然是在沉重中惶恐,在惶恐中希冀,在希冀中重新陷入迷惘。當(dāng)此情境,唯有理想真知才能讓人破妄返真,重拾方向與希望。所以覺悟之后,雖知一去難返,卻終究要在虛無中尋找永恒,以完美境界為現(xiàn)實之歸宿。對完美之追尋,實是以短暫之身,叩問永恒之道,窺天心而解惑。軟件亦概莫能外—謹以此拉開完美軟件開發(fā)的序幕。1.1完美軟件開發(fā)的定義不識廬山真面目,只緣身在此山中?!K軾,《題西林壁》任何軟件開發(fā),其輸入的都是需求、工具(編譯工具等)和人,這三者在特定的時空背景下受主觀的影響而改變的可能性小。接下來,基于上述三者,通過選定的管理方法、流程、開發(fā)模型、需求開發(fā)方法、估算方法、設(shè)計編碼方法等對軟件進行構(gòu)建,期望最終達成多重質(zhì)量目標。最終輸出的是軟件產(chǎn)品。對軟件產(chǎn)品的度量至少有兩個維度:一是用戶層面的,如功能正確,性能優(yōu)異;二是結(jié)構(gòu)層面上的,如容易維護等。從輸入到輸出這一過程受三個維度的因素影響,一是商業(yè)因素,二是技術(shù)因素,三是“政治”因素。商業(yè)因素決定收益與成敗,技術(shù)因素決定成本和質(zhì)量,而“政治”因素添加變數(shù)。在這里,“政治”是指人與人之間非理性的復(fù)雜關(guān)系,即“項目政治”,而非“國家政治”。如果只考慮技術(shù)因素即只考慮軟件開發(fā)自身的內(nèi)在合理性,那么最終推導(dǎo)出的就是完美方法,摻雜了商業(yè)因素和“政治”因素后的真實的方法,將是對完美方法的折中和回歸。完美軟件開發(fā)是追求這樣一種狀態(tài):在只考慮技術(shù)因素的情況下,在限定的要求、工具、指定的人員狀況下(輸入),在既定的質(zhì)量水平下(輸出),達到生產(chǎn)效能最高。在這一狀態(tài)下,任何對管理、流程、估算方法等在尺度上的修正,如果不以降低質(zhì)量為代價,則將導(dǎo)致生產(chǎn)效能的降低。1圖1-1軟件開發(fā)的基本組成建模設(shè)定一個范圍,把范圍內(nèi)的東西抽象出對應(yīng)的概念,再標明這些概念間的關(guān)系,這樣一個過程就是建模。為免晦澀,這里的定義可能和教科書里略有不同,但建模的概念大致如此,并不高深,幾乎人人可做。1.2完美軟件開發(fā)的構(gòu)成自其異者視之,肝膽楚越也;自其同者視之,萬物皆一也—莊子,《德充符》軟件是一種固化的思維,這一點決定了許多的事情。從特質(zhì)上來看,既然軟件是固化的思維,那就必然同時具備思維以及思維所承載之物的特質(zhì)?!袼季S的特質(zhì)是指思維的澄清通常是漸進的,思維自身是不可度量的,思維的主體一定是人,思維通常由概念和邏輯組成,思維的無邊界化(靈活易變)這樣的特質(zhì)。這部分特質(zhì)是共通部分,同時屬于所有軟件?!袼季S承載之物的特質(zhì)是指當(dāng)思維的對象是數(shù)學(xué)的時候,思維本身也就具備了數(shù)學(xué)的特質(zhì);當(dāng)思維的對象是商業(yè)邏輯的時候,思維自身也就具備了商業(yè)邏輯的特質(zhì)。既然思維自身的特質(zhì)是復(fù)合的,那么作為固化思維的軟件,其特質(zhì)必然也是復(fù)合的:既有屬于所有軟件的共同特質(zhì),也有特屬于某類軟件,甚至同其他類軟件完全相反的獨有特質(zhì)。也就是說,在軟件這一范疇里,兩種矛盾的說法同時成立,并不是什么值得驚訝的事情。既然軟件的世界如此多元,那么進行完美軟件開發(fā)的討論時,就必須忽略一些細節(jié),才可能在限定的篇幅下,取得有價值的結(jié)論。因此,在本書后續(xù)討論中,將更多的基于思維的特質(zhì),而非思維承載之物的特質(zhì),來探討軟件。這樣得出的結(jié)論才更有普適性。如果說軟件是一種固化的思維,那么軟件開發(fā)無疑是思維固化的過程。在思維固化的過程中有兩個層面的問題需要同時解決?!袼季S的主體必然是人,當(dāng)多個人在一起協(xié)作的時候,彼此間的關(guān)系如何處理?在這背后隱含的兩個分支是管理和流程?!裨谲浖_發(fā)過程中,從本質(zhì)來看,事實上只有兩個根本步驟:一是弄清楚要做什么(需求開發(fā));二是對思維進行固化(設(shè)計,編碼)。對這兩個步驟的時序進行各種安排,則產(chǎn)生各種開發(fā)模型。為支持這兩個步驟能夠平滑進行,需要預(yù)先進行估算。2上述分解總結(jié)起來如圖1-2所示。在做出上述分解后,我們可以進一步推斷完美軟件開發(fā)必然包含著兩個根本命題:一是上述各個分解步驟自身的最優(yōu)化;二是上述各個步驟彼此間搭配的最優(yōu)化。也就是說現(xiàn)存的大多方法論(CMMI、敏捷等),由于其過度強調(diào)某單一維度,同時漠視方法與軟件本質(zhì)間的關(guān)聯(lián),一定程度上講其本質(zhì)是蒼白的。圖1-3用于說明這種關(guān)聯(lián)的復(fù)雜性。圖1-2軟件開發(fā)中各項活動的歸類 圖1-3軟件開發(fā)中各項活動的關(guān)聯(lián)關(guān)系本質(zhì)與細節(jié)這世上同時存在著兩種對立的聲音:本質(zhì)決定成敗和細節(jié)決定成敗。偏好本質(zhì)的人喜歡說本質(zhì)論。偏好細節(jié)的人則喜歡說精細化管理。但如果在較長的時間軸上考量這兩種觀點,就會發(fā)現(xiàn)它們之間并不真的對立。本質(zhì)決定大尺度時間上的走勢和必然性,而細節(jié)則決定差異(包括短期成?。?。比如說:人的本質(zhì)特征是能思考,有感情,會衰老,壽命有限等,但區(qū)別不同人的卻不是這些,而是性格,膚色,發(fā)色等細節(jié)。具體來看:軟件本質(zhì)上是只有人才能處理的東西,因此公司中程序員群體的衰落一定會導(dǎo)致軟件的衰落,只有優(yōu)秀的程序員群體,才能保證軟件的持久成功,這是必然的。但優(yōu)秀的程序員卻不一定確保當(dāng)前項目成功,任何細節(jié)上的小疏忽,都可能導(dǎo)致軟件在市場上崩潰,死鎖,進而導(dǎo)致災(zāi)難性后果,這就是細節(jié)決定成敗。成敗自身雖然萬眾矚目,對個體而言卻只是一種偶然和機遇。當(dāng)事人可以很努力地平衡本質(zhì)上的追求(長期視點)和細節(jié)上的追求(短期視點),但變更的始終是一種成敗可能性。1.3完美軟件開發(fā)的前提十世古今,始終不離于當(dāng)念;無邊剎境,自他不隔于毫端?!钔ㄐ?dāng)我們試圖對完美的軟件開發(fā)進行闡述時,事實上總是有兩類方法可以幫助我們達成目的。●歸納法。即基于項目經(jīng)驗,總結(jié)出一定的規(guī)律,再推而廣之。在沒有反例出現(xiàn)之前,3總結(jié)出的規(guī)律一直成立?!裱堇[法。即基于預(yù)設(shè)的前提,依照邏輯,推導(dǎo)各種結(jié)論。這個時候,只要前提沒被推翻,邏輯又沒有錯誤,那么得出的結(jié)論就具有必然性,雖然這種必然性何時體現(xiàn)在現(xiàn)實之中比較難以測度。當(dāng)前軟件行業(yè)采用的大多數(shù)方法論和結(jié)論是基于歸納法的。但一如我們前面所論及的,軟件作為一種固化的思維,必然同時具備思維以及思維承載之物的雙重特質(zhì)。而思維承載之物的特質(zhì)有時候甚至可能產(chǎn)生矛盾,因此基于歸納法得出的結(jié)論,容易偏頗并引發(fā)爭議。很顯然,從數(shù)學(xué)類軟件上得出的結(jié)論與業(yè)務(wù)流類軟件上得出的結(jié)論并非是共通的;適用于操作系統(tǒng)內(nèi)核的經(jīng)驗,也并不一定適合于視頻播放軟件。與此同時,人的精力是有限的,這就導(dǎo)致一個人既不太可能經(jīng)歷所有的軟件開發(fā)領(lǐng)域,也不可能窮盡同一類軟件下的所有變數(shù)。比如說,A所經(jīng)歷的MIS系統(tǒng)和B所經(jīng)歷的MIS系統(tǒng)很可能天差地別。這很可能是軟件行業(yè)中紛爭不斷的一個主要原因—每個人都以為自己看到的就是全部,而當(dāng)另一種與自己不同的觀點出現(xiàn)時,這種觀點會因與己不同而被判處死刑,但事實上兩者可能同時正確,只是正確的邊界不同。為避免這類爭議,在這本書里,我們將主要使用演繹法。為得到各種結(jié)論,我們將主要基于以下4個前提,使用邏輯進行推導(dǎo)。●軟件是一種固化的思維?!褚庾R指導(dǎo)行動?!耥椖克芎馁M的資源是有限的。●重復(fù)做同樣的工作會降低效率。這4個前提被假設(shè)為公理,將不額外進行說明。而為使結(jié)論不顯得晦澀和突兀,我們將盡可能使用現(xiàn)實里的例子對邏輯鏈和結(jié)論進行佐證和補充。為了從這4個基本前提推導(dǎo)出屬于各個部分(管理、流程等)的相關(guān)結(jié)論,我們還需要對影響團隊創(chuàng)造價值的因素做進一步分解,否則事情會保持在混沌狀態(tài),進而無法以正確的尺度判斷某一行為所能產(chǎn)生的正、負兩方面影響。如果我們假設(shè)一個人的工程素養(yǎng)為E,一個人的工作意愿為W,組織所能提供的力量為O,內(nèi)耗系數(shù)為M,那么對于一個擁有n個人的團隊,其在單位時間內(nèi)最終可能的貢獻值可以表示為[(E1×W1+O)+(E2×W2+O)+…+(EnWn+O)]×M其中M的取值可以為0~1。0表示完全內(nèi)耗掉,整個團隊完全沒有貢獻。注:很多人會對為什么可以用加法累積不同人的貢獻這一點產(chǎn)生疑問,比如,架構(gòu)設(shè)計師的貢獻和測試人員的貢獻為什么可以疊加等,這點將在附錄1中統(tǒng)一進行說明。也就是說,單位時間團隊總貢獻=[(A的工程素養(yǎng)×A的工作意愿+組織力量)+(B的工程素養(yǎng)×B的工作意愿+組織力量)+…]×內(nèi)耗系數(shù)其中:●工程素養(yǎng)是指人員的工程能力,比如,需求分析能力,架構(gòu)設(shè)計能力,編碼能力等。●工作意愿是指一個人愿意不愿意工作。工程素養(yǎng)和工作意愿乘起來才是一個人的可能4貢獻。這并不難理解,一個能力不好的人,再怎么努力,貢獻也不會好;而一個能力好的人,每天蒙事,其貢獻也不會好。●組織提供的力量是指常說的組織力。比如說,組織內(nèi)有比較多的重用代碼庫,那么不管誰都可以從中受益。探討組織力,會使范疇發(fā)散,因此在本書中大多時候我們會忽視這個維度?!駜?nèi)耗系數(shù)是指人員彼此間貢獻耗散的程度。影響因素會比較復(fù)雜。比如說,A開發(fā)一個模塊,但和B開發(fā)的模塊有80%重疊,這會產(chǎn)生內(nèi)耗;再比如說,A和B坐在一起工作就會吵架,這也會產(chǎn)生內(nèi)耗。上面這段分析可以總結(jié)為如圖1-4所示的情況。圖1-4貢獻值的分解那么在指定的時間段,這一團體的生產(chǎn)率為[(E1×W1+O)+(E2×W2+O)+…+(EnWn+O)]×Mn上面的公式可以用來定性分析貢獻值的大小,但并不能用來分析貢獻值的效果。比如說,某個團隊可能在上述4方面都沒有問題,最終也開發(fā)出了比較好的軟件,但由于云計算的興起,公司開發(fā)的這類客戶端軟件已經(jīng)沒有市場。這時候貢獻值再好,也體現(xiàn)不出效果。這意味著要想獲得更好的結(jié)果,一要保證貢獻值盡可能的大,二要保證貢獻值使用在正確的方向上。控制方向性雖然重要,但與商業(yè)因素等有較大關(guān)聯(lián),本書中大多時候不會對其進行考量。演繹法與空談經(jīng)驗主義者是不喜歡演繹法的,極端的甚至認為演繹法即是空談。但我們不應(yīng)該忘記,《相對論》與《資本論》這兩個與演繹法有深刻關(guān)聯(lián)的東西對世界所產(chǎn)生的巨大且深刻的影響。在軟件工程或者項目管理領(lǐng)域中,對演繹法的排斥達到了極點。人們似乎很忌諱談及形而上學(xué)的東西,對經(jīng)驗的推崇則是達到了無以復(fù)加的地步。但事實則證明這并不很有效,幾十年下來,軟件行業(yè)中還是一如既往的紛爭不斷。比如說,Linux之父LinusTorvalds每隔一段時間就會站出來貶斥一下C++(有時還連帶上面向?qū)ο螅?,并?jīng)常用垃圾、很差這樣的形容詞來描述C++。而與此同時世界上很多關(guān)鍵系統(tǒng)是用C++成功開發(fā)出來的,擁有許多屬于自己的鐵桿粉絲。這似乎很矛盾,也很難判定出是非,但當(dāng)我們用演繹法來分析這類事情時,就會發(fā)現(xiàn)貌似對立的事情并非不可調(diào)和。Linus主要專注的領(lǐng)域是內(nèi)核,所以他的觀點在內(nèi)核領(lǐng)域里一定是不能漠視的,但這并不意味著C++和面向?qū)ο缶筒贿m合游戲,富客戶端,數(shù)據(jù)庫程序等。5這類事實的存在意味著,我們應(yīng)該切換視角,用演繹法來重新審視軟件這個行業(yè),而不能只是用有限領(lǐng)域中得來的經(jīng)驗去臆測無限范圍中的事物—這是必將陷入矛盾的方法。1.4完美軟件開發(fā)的用途夫英雄者,胸懷大志,腹有良謀,有包藏宇宙之機,吞吐天地之志者也。—羅貫中完美境界是這世界上的終極力量,真的完美,絕不蒼白無力。真正的完美背后是規(guī)則的力量。牛頓第一定律說:任何一個物體在不受任何外力或受到的力平衡時,總保持勻速直線運動或靜止狀態(tài),直到有作用在它上面的外力迫使它改變這種狀態(tài)為止。這無疑是在描述一種完美狀態(tài),任何物體當(dāng)然是受外力的,但誰敢說這一完美狀態(tài)是蒼白無力的。完美的軟件開發(fā)狀態(tài),其存在意義與上述相同。具體而言,其真實作用是幫我們俯視全局,對種種問題洞若觀火,進而把持解決問題的方向和尺度。為獲得最終的軟件產(chǎn)品,中間必然面臨種種困難。而在特定場景下,項目所面臨的主要矛盾往往不同。比如,如果項目的主要問題是缺人或人員不負責(zé)任,那么加大技術(shù)培訓(xùn),增強編碼能力,就是緣木求魚。為了解決種種問題,事實上需要有人有一個軟件開發(fā)的全體視圖,再從中找到最關(guān)鍵的矛盾,接下來采取具體措施進行解決,這即是包藏宇宙之機,且腹有良謀。而上述所有關(guān)鍵步驟都需要完美狀態(tài)作為參照,并把握現(xiàn)實和完美狀態(tài)間的距離—現(xiàn)實世界中難的并非是沒有方法,而是待選方法太多,不好把握其間尺度。這就要求首先要有完美狀態(tài)下的整體視圖,同時不能讓采取的措施與完美狀態(tài)下的規(guī)則相背離,否則就會陷入迷途。智慧與珍珠佛家有“智珠”之說,“智珠在握”則用來形容有高深的智慧可以應(yīng)對任何事情。非常巧合的是,達成“智珠在握”狀態(tài)的過程與珍珠的形成過程極度類似。一旦有異物侵入蚌的外套膜,蚌就會不停地分泌珍珠質(zhì),最終得到的就是珍珠。這與智慧的形成過程相似。一個人對軟件開發(fā)的全體視圖可以淺陋,單薄,但一定要有。這就是形成珍珠的那粒雜質(zhì),它可以是沙粒,甚至可能是鳥屎,這都沒有關(guān)系,關(guān)鍵是要有。在此基礎(chǔ)上,可以讀書,可以從實踐中反省,最終就會生成璀璨奪目的“珠”。但如果沒有這粒雜質(zhì),很多東西就無所依憑,到頭來學(xué)到的東西就會彼此沖突,知識反而成為一種障礙。這正是編寫本書的目標之一—通過解構(gòu)和邏輯鏈來幫助每個人形成自己的那粒雜質(zhì)。6第2章完美項目管理之解構(gòu)項目管理自身并不復(fù)雜,卻往往被看做一門復(fù)雜的學(xué)問。究其根本,實是因為為術(shù)則日繁,為道則日遠。就好比伐樹的時候卻從剪枝葉做起,必然只見其繁雜,而不見其根本。在這一章里,我們將對管理的根本命題進行解構(gòu)。如果你曾經(jīng)對下面這些問題困惑過,那么在這里,你將找到一份邏輯上說得通的答案。為什么同樣人數(shù),天分又差不多的團隊,爆發(fā)出來的戰(zhàn)斗力卻有天壤之別?為什么看上去很好的量化管理,一旦導(dǎo)入?yún)s會天怒人怨?為什么團隊的成員會從朝氣蓬勃,變得得過且過?為什么開源項目沒有項目經(jīng)理,往往也運作得很好?管理真的有價值么?為什么工廠式的開發(fā)不適合軟件?項目經(jīng)理究竟要不要懂技術(shù)?……2.1項目管理的存在意義君子務(wù)本,本立則道生?!鬃?.1.1價值根源價值是一個可以引起無數(shù)紛爭的詞語。在商業(yè)社會中,價值的界定就更為艱難。即使完全相同的兩個程序,廣為人知的可能價值億萬,沒于靜室的可能一文不值。所以當(dāng)我們考察項目管理的價值時,我們必須剝離一些東西,使價值的范疇更加清晰。在后續(xù)各個章節(jié)中,對價值進行討論時,我們將要剝離的是軟件的商業(yè)價值。也就是說,在完美的世界中,我們關(guān)注的是做最好的軟件,但并不關(guān)注最好的軟件是否有市場。后者顯然是有意義的,但并不在我們的考察范圍之內(nèi)。在剔除商業(yè)價值之后,我們來看一下軟件的一個根本特質(zhì)。由于軟件是一種固化的思維,而思維固化的媒介必然是代碼,因此我們可以講:軟件與代碼相等價,是同一事物的兩面。也即說代碼可以表征軟件的一切價值。這也就意味著,如果項目管理確實有意義,那么項目管理必須直接或間接地對代碼施加影響。顯然的,項目管理很難直接對代碼產(chǎn)生影響,這也就意味著項目管理自身并不直接創(chuàng)造價值,必須以他人為媒介才可能最終產(chǎn)生自己的價值。項目管理者對他人可能產(chǎn)生的影響可以分為兩類:一是對個人的影響;二是對組織的影響?!駥€人的影響可以體現(xiàn)在對消極、排斥異己、懶惰、好高騖遠等負面情緒的遏制上;也可以體現(xiàn)在肯定成績、表達信任這類激勵方法上。7●對組織的影響則可以體現(xiàn)在對謀而無斷、職責(zé)不清、流程不清這類負面組織行為的遏制上;也可以體現(xiàn)在創(chuàng)建共識、對組織意識形態(tài)進行引導(dǎo)這類避免紛爭的手段上來。上述兩點正是項目管理的價值根源。在下一節(jié)里,我們將對上述的價值根源做一些定性的分析,但在進行定性分析前,有必要對項目管理這一常用詞語的范疇做一點補充說明。因為我們推導(dǎo)出來的價值根源與大多數(shù)人的認識可能已經(jīng)有了較大的偏差。我們來看一下PMBOK(ProjectManagementBodyofKnowledge,項目管理知識體系)對項目管理的定義:項目管理就是把各種知識、技能、手段和技術(shù)應(yīng)用于項目活動之中,以達到項目的要求。項目管理是通過應(yīng)用和綜合諸如啟動、規(guī)劃、實施、監(jiān)控和收尾等項目管理過程來進行的?!狿MBOK這個定義中的關(guān)鍵詞是“各種”,在PMBOK中,“各種”被定義為諸如:法律、金融、標準、規(guī)章制度等,甚至也包含文化和社會環(huán)境、政治環(huán)境等。PMBOK和上述的推導(dǎo)結(jié)果間的一個顯然差異是:PMBOK強調(diào)的項目管理的職責(zé)更多的是向外看的,而我們推導(dǎo)結(jié)果是項目管理的價值根源在于對內(nèi)部的人或組織施加影響。造成這種差異的一個原因是PMBOK考慮的是現(xiàn)實的世界,并沒有如我們一般剝離商業(yè)價值這一維度。而如何在兩者之間尋找平衡,則是從完美世界回歸現(xiàn)實時需要考慮的問題,需要具體情況具體分析,我們這里就不做進一步討論了。2.1.2定性分析讓我們回到第3章中提到的公式:一個人的工程素養(yǎng)為E,一個人的工作意愿為W,組織所能提供的力量為O,內(nèi)耗系數(shù)為M,那么對于一個擁有n個人的團隊,其在單位時間內(nèi)最終可能貢獻值可以表示為[(E1×W1+O)+(E2×W2+O)+…+(EnWn+O)]×M其中M的取值可以為0到1。0表示完全內(nèi)耗掉,整個團隊完全沒有貢獻。沒有管理者時,在指定的時間段里,這一團體的生產(chǎn)率為[(E1×W1+O)+(E2×W2+O)+…+(EnWn+O)]×Mn假設(shè)加入了一個管理人員,由于管理人員不直接創(chuàng)造價值,生產(chǎn)率的公式變?yōu)閇(E1×W1+O)+(E2×W2+O)+…+(EnWn+O)]×M(n+1)任何管理手段幾乎不可能對工程素養(yǎng)E產(chǎn)生影響,短期內(nèi)也很難影響組織力O,因此如果工作意愿W或者內(nèi)耗系數(shù)M沒有變化,則生產(chǎn)率必會降低。反過來講,項目管理者必須對工作意愿W或者內(nèi)耗系數(shù)M施加正面影響才能促進生產(chǎn)率的增長,進而阻止生產(chǎn)效能的降低。為做進一步分析,我們引入經(jīng)濟學(xué)中邊際價值和邊際價值遞減的概念。邊際價值是指在其他條件不變的前提下,增加一單位要素投入所增加的產(chǎn)品的價值。邊際價值遞減是指超過某一水平之后邊際投入的邊際產(chǎn)出下降。邊際價值遞減可以幫我們推導(dǎo)出下面的結(jié)論。8當(dāng)一個人處于消極狀態(tài)時,其工作意愿可挖掘空間比較大,管理的潛在價值也比較大(邊際價值大)。但當(dāng)一個人本來就是為興趣而工作,其工作意愿必然是處在高端上,這時候即使做很大投入,也很難進一步提高其工作意愿(邊際價值遞減)。在后一種情形下,管理者的價值根源就變成了降低內(nèi)耗系數(shù)。懲罰,獎勵等對個人施加影響的手段變得無效,管理者的職能也就進一步弱化,變?yōu)閏oordinator(協(xié)調(diào)者)。這能很好地解釋為什么開源項目中并不存在真正意義的管理者,但很多項目依然運作得很好。EricRaymond在《大教堂與市集》這篇文章里專門提到了管理,在列舉了一些管理的基本任務(wù)(如確立目標、監(jiān)督、激勵、組織、資源監(jiān)護)后,EricStevenRaymond說:顯然所有這些目標都是有價值的。但是在開源模式以及其社會語境中,這些目標會變得出奇得不靠譜。上面的定性分析可以成為這一現(xiàn)實的最合理解釋。到這里,我們可以得出幾個很有意思的結(jié)論。人工作意愿越差、內(nèi)耗越大,管理價值越大,此時邊際價值越大。也就是說,組織越成熟,管理的價值越小。組織越不成熟,管理的價值越大。這也意味著,管理的方向是消滅管理,而不是讓管理更有價值。2.2完美項目管理的要素萬物負陰而抱陽,沖氣以為和。—老子根據(jù)2.1節(jié)里的結(jié)論,項目管理為了體現(xiàn)價值,必須對個人意愿或者內(nèi)耗系數(shù)施加影響。接下來,我們將對如何施加影響進行一些分析:任何人都有一個自己的精神世界,外部種種往往成為對這一精神世界的輸入。意愿則是個人精神世界對種種輸入的一種反應(yīng)。一個人的精神世界往往有其深厚之歷史根源(家庭、經(jīng)歷、文化背景等),其改變往往需要劇烈刺激(家破人亡、生命受到威脅等),但大多時候,這種劇烈刺激并不存在,也就是說,大多時候影響個人意愿的主要手段是控制種種“輸入”,而非直接使其改變。“輸入”本身大致可以分為如下3類:物理環(huán)境、文化環(huán)境(或者說非制度環(huán)境)及制度環(huán)境?!裎锢憝h(huán)境是指空間、桌椅、計算機等?!裎幕h(huán)境是指未曾明確定義,但又相對清晰的價值取向和行為規(guī)范。●制度環(huán)境是指明確定義了的行為規(guī)范。上面的表述可以概括成如圖2-1所示的情況。圖2-1影響個人工作意愿的要素9假設(shè)說個人意愿上的所有問題都得到了解決,每個人都可以很理智地看待問題,做到徹底的公心公論,那么內(nèi)耗產(chǎn)生的根本原因可以進一步分解為:觀點的分歧和不恰當(dāng)?shù)慕M織行為。●觀點的分歧是指盲人摸象式的爭執(zhí),這時任何人的觀點都有屬于自己的合理支撐,但不一致,進而造成對立?!癫磺‘?dāng)?shù)慕M織行為是指權(quán)責(zé)不清或者工作時序安排不妥這類問題。比如,例1:項目的關(guān)聯(lián)要素往往形成一定的因果關(guān)系。如果這種因果關(guān)系發(fā)生混亂,那么會導(dǎo)致人員空閑或者返工等現(xiàn)象出現(xiàn),進而降低效能。假設(shè)為開發(fā)某個程序需要購入某型設(shè)備,而設(shè)備的購入周期為一個月。如果預(yù)先購入設(shè)備,那么項目無疑能夠平滑進行,但如果在使用前才意識到需要購入這款設(shè)備,那么很可能所有團隊成員都需要空等一個月。例2:項目中人員的能力、興趣和擅長領(lǐng)域是不同的,如果在項目執(zhí)行到一定程度的時候才發(fā)現(xiàn)一個人在做根本不適合他做的工作,那么團隊的效能會被降低。任何項目的問題都具有一定時空特征,而在大多時候,早發(fā)現(xiàn)問題并進行應(yīng)對,代價總是要比在問題已經(jīng)變嚴重后才發(fā)現(xiàn)再進行應(yīng)對成本要低。上面的觀點可以概括成如圖2-2所示的情況。不恰當(dāng)?shù)慕M織行為這一維度是當(dāng)前流行的項目管理學(xué)的主戰(zhàn)場,是PMP這類認證的關(guān)鍵,但實際上這只應(yīng)該是項目管理中的一個分支,只關(guān)注它,會導(dǎo)致以偏概全。 圖2-2影響內(nèi)耗系數(shù)的要素上面的分解告訴我們,用邏輯對管理方法進行推導(dǎo)的時候,我們需要從下面幾個方面入手。●個人意愿■物理環(huán)境■文化環(huán)境■制度環(huán)境●內(nèi)耗系數(shù)■觀點的分歧■不恰當(dāng)?shù)慕M織行為針對這幾個方面我們提出一些邏輯鏈來分析其最關(guān)鍵的控制點,見表2-1。表2-1項目管理相關(guān)的邏輯鏈管理的分解 邏輯鏈軟件是一種固化的思維→只有人才是思維的主體→思維依賴于個人→個人意愿對軟件生產(chǎn)的影響巨大管理

軟件是一種固化的思維→思維的基本組成是概念和邏輯→概念和邏輯的推演和確立物理環(huán)境 是需要集中精力,連續(xù)實施的→物理環(huán)境上要盡可能保證思維著的人有獨立思考的空間和時間而不被外物所打斷個人意識指導(dǎo)行動→個人意識受環(huán)境中現(xiàn)存共識影響比較大→真正的共識下,個人行為即意愿組織行為,組織行為也是個人行為→如果所有組織行為,都是共識下的行為,那么永遠不會有個人意愿的損耗,也不會有紛爭內(nèi)耗文化環(huán)境 軟件是一種固化的思維→思考是思維形成的必經(jīng)之路→積極的思考和被動的思考差異巨大→組織里需要讓人積極思考的氛圍→形成積極思考氛圍的關(guān)鍵要素是:積極思考是被鼓勵的→積極思考的成果沒有被輕易漠視,對個人有邏輯的觀點的強制否決要盡可能的少10(續(xù))管理的分解 邏輯鏈個人意愿管理內(nèi)耗

制度環(huán)境觀點的分歧

意識指導(dǎo)行動→總體來看,個人意識是傾向于擴張而非收斂(收入,榮譽,地位,自己意志的實行程度)→擴張的目標和現(xiàn)實的差距是每個人前進的動力→管理的一種使命是確保這種差距存在軟件是一種固化的思維→思維的本質(zhì)是概念和邏輯→概念和邏輯無法直接度量和精確度量→度量過程中需要很多的主觀判斷→以目標為導(dǎo)向的,以個人為中心的量化管理(相關(guān)的激勵和懲罰)將崩潰→參照無歧義數(shù)據(jù)(函數(shù)復(fù)雜度等)的判斷將成為程序員評價中的輔助手段軟件是一種固化的思維→就思維上大多數(shù)問題而言,基本上是一題多解→組織結(jié)構(gòu)要確保各種情境下都能做出盡可能正確的決斷,但又不能傷害個人意愿→層級過多,會導(dǎo)致做決定的人離現(xiàn)場越遠,對真實的情況把握越不清楚(信息在傳遞時會損失),同時誤判增加,對個人意愿傷害增加→組織應(yīng)該盡可能扁平→為避免謀而無斷,即使扁平,也要有能做出決定的人軟件是一種固化的思維→思維自身具有迭代特質(zhì)(否定之否定)→思維的主體必然是人,思維的對接也是只有人才能完成的工作→項目越大,需要的迭代也就越多,必須的人和人間的溝通量也就越多→參與溝通的人越多,需要協(xié)調(diào)的不同個性的人也就越多,效率也就越差→所以軟件生產(chǎn)往往表現(xiàn)為規(guī)模不經(jīng)濟。同一個軟件,一個人開發(fā),效率最高,人越多效率越差→盡可能控制團隊規(guī)模(控制溝通成本)重復(fù)是降低工作效率的→工作分解必須是正交的,并且時序合理,符合因果關(guān)系→項不恰當(dāng)?shù)慕M織行為

目的資源是有限的,必須合適的人做合適的事情→為達成這一目的,項目管理者必須既理解所做的事,也理解相關(guān)的人員特性→為避免遺忘,使經(jīng)驗轉(zhuǎn)化為價值,普適于多個項目的,特定的因果關(guān)系和時序需要被提取出來并強制實行,最終形成流程其中第一條邏輯鏈不針對具體子項,而是直屬于“工作意愿”的。主要是用來說明,為什么軟件這一行業(yè)中,“工作意愿”需要被額外強調(diào)。下面我們將對這9條邏輯鏈分別進行說明,為使邏輯鏈不至于過度晦澀,在進行說明的同時,我們會對每條邏輯鏈進行命名,在后續(xù)章節(jié)中將一直使用類似的方法。2.2.1邏輯鏈1:意愿之價值軟件是一種固化的思維→只有人才是思維的主體→思維依賴于個人→個人意愿對思維的確立影響巨大。在不同的組織里,人的價值往往不同,意愿的價值也因此而不同。通常來講,當(dāng)一項工作越傾向于思維,個人的價值越大;反之則個人價值越小。當(dāng)個人價值大的時候,工作意愿所隱含的價值也隨之增大。這與我們?nèi)粘5乃娝勏喾?,下面來看兩個極端的情形。在生產(chǎn)性企業(yè)(工廠等)里,人員的職能相對比較單一,可替換性也就比較強,個人的價值也就比較?。坏诶碚撗芯窟@樣的領(lǐng)域里,人幾乎就是一切。在生產(chǎn)性企業(yè)里,即使工作人員對工作比較反感,只要能保證工作比較機械性的一面,則仍然可以持續(xù)創(chuàng)造價值。但搞理論研究的人,如果心不在焉,那么出成績的可能性幾乎是零,這兩種情況示意圖如圖2-3所示。圖2-3工作意愿與企業(yè)類型的示意圖11如果我們認為生產(chǎn)性企業(yè)和研究性組織是兩個端點,那么軟件則在這兩個端點之間占據(jù)很長的跨度,但總的來看比較傾向于后者。這是由軟件自身的特質(zhì)所決定的。如前文所述,軟件同時具有思維的特質(zhì)和思維承載之物的特質(zhì)。這就使軟件的復(fù)雜程度可以具有很高的浮動空間。有的軟件開發(fā)門檻比較低,甚至達到只要是正常智商的人就可以進行的地步。這并不讓人驚訝。思維是上天賜予人類的禮物,只要是正常的人,不分高低貴賤,都具有使用思維的能力。從這個角度上看,只要是人就具備進行程序開發(fā)的能力—只要軟件承載的東西足夠少。但也正如語言人人可以懂,人人可以說,卻遠不是每個人都是文學(xué)家一樣。當(dāng)軟件自身的內(nèi)在復(fù)雜度逐步提升,質(zhì)量要求也逐步提升的時候,軟件的個人依賴特質(zhì),才會表現(xiàn)得越發(fā)明顯。我們常見的小規(guī)模的信息管理系統(tǒng)更接近于前者,而操作系統(tǒng)內(nèi)核,大規(guī)模的系統(tǒng)則更接近于后者。但不管是哪類的軟件開發(fā),只要規(guī)模、質(zhì)量要求、生產(chǎn)性能的要求達到了一定的程度,都會使軟件開發(fā)更傾向于研究性組織而非生產(chǎn)性企業(yè),在這種時候意愿對軟件生產(chǎn)的影響就變得巨大起來。量化意愿很難,但定性分級卻并不難,大致可以有以下3個層次?!癞?dāng)一天和尚撞一天鐘,有事就應(yīng)付一下。●能對自己工作負得起責(zé)任。●全身心投入,主動工作?!爱?dāng)一天和尚撞一天鐘”狀態(tài)下,工作意愿可以無限趨近于0。意愿狀態(tài)的判斷在日本管理人員中流傳著這樣一種共識,當(dāng)你不太弄得清一個公司的狀況時,你可以去看看它的衛(wèi)生間。衛(wèi)生間臟、亂、差的公司大致上是混亂的公司。這方法聽著偏門,但確實在一定范圍內(nèi)是有效的,因為完全不在意衛(wèi)生間環(huán)境的團隊,往往就是工作意愿較差,抱著當(dāng)一天和尚撞一天鐘想法的團隊。這同時也提示我們檢查一個團隊的工作意愿并不難,并不需要煩瑣且復(fù)雜的方法,見微知著已是足夠。◆工作沒完,但如果沒人督促,則所有人都到點下班。這表示這是一個“當(dāng)一天和尚撞一天鐘”的團隊?!粽f好的事,大家都是能拖就拖,能不做就不做。這也表示這是一個“當(dāng)一天和尚撞一天鐘”的團隊。◆順手就可以做好的事,卻從來沒人關(guān)心,比如,水龍頭漏水了,卻從來沒人和負責(zé)人進行聯(lián)絡(luò),這也表示這是一個“當(dāng)一天和尚撞一天鐘”的團隊。2.2.2邏輯鏈2:物理環(huán)境軟件是一種思維→思維的基本組成是概念和邏輯→概念和邏輯的推演和確立是需要集中精力,連續(xù)實施的→物理環(huán)境上要盡可能保證思維著的人有獨立思考的空間和時間而不被外物所打斷。12無論是軟件中各個概念的確定,還是邏輯的推演,事實上都是一個連續(xù)思考的過程。任何對這一過程的打斷,都需要在腦海中重新恢復(fù)現(xiàn)場,重新進入狀態(tài),這無疑是影響效率的。如《人件》一書中所強調(diào)的,只要當(dāng)事人從事的軟件開發(fā)還不是不用思考,隨隨便便就可以完成那一類時,無疑的要確保當(dāng)事人思考的空間和時間。以當(dāng)前的社會環(huán)境而言,達成《人件》中所描述場景(如:每人一間辦公室)估計還需要較長的時間。這首先是經(jīng)濟問題。如果軟件每年所帶來的收益只等價于100間辦公室的租金,并且需要1000個人來開發(fā),那么上述想法就是不可能的。如果能提供一組數(shù)據(jù)來描述【人/每平方米】和【思維效率】間的對應(yīng)關(guān)系,則無疑是有幫助的,可惜當(dāng)前還找不到這樣的數(shù)據(jù)。作為折中,也可以嘗試培養(yǎng)“上午少互相打擾,下午多交流”這類的工作習(xí)慣來做些彌補。2.2.3邏輯鏈3:文化環(huán)境之“意識形態(tài)”意識指導(dǎo)行動→個人意識受環(huán)境中現(xiàn)存共識影響比較大→真正的共識下,個人行為即組織行為,組織行為也是個人行為→如果所有組織行為,都是共識下的行為,那永遠不會有個人意愿的損耗,也不會有紛爭內(nèi)耗。組織中的共識,勉強可以稱為“意識形態(tài)”。意識形態(tài)的力量可以無限大,再怎么高估也不為過。經(jīng)濟學(xué)家凱恩斯曾經(jīng)講過:經(jīng)濟學(xué)家與政治學(xué)家的思想,其力量之大,往往出于常人意料。實際上,統(tǒng)治世界的不過就是這些思想。這雖然未必完全正確,但實是對意識所蘊含的力量的極佳詮釋。意識形態(tài)這個題目攤開來,可以無限廣,在這里我們把范圍收束在團隊內(nèi)部??苹眯≌f作家劉慈欣在《白堊紀往事》中描寫了這樣一種場景:螞蟻和恐龍分別創(chuàng)建了自己的帝國,而有一天兩個帝國要開戰(zhàn)了,其原因是:螞蟻認為上帝的樣子應(yīng)該是螞蟻,而恐龍則認為上帝的樣子應(yīng)該是恐龍。與螞蟻和恐龍的戰(zhàn)爭相類似的事情,在項目團隊內(nèi)部每天上演,但其頻度和程度則受限于共識的多少。一些不是項目層面可以控制的事情可以被忽略,但在項目層面至少要對一些經(jīng)常發(fā)生的事情形成共識,不然個人意愿會降低,內(nèi)耗會增大。下面列舉一些經(jīng)常發(fā)生的,需要達成共識的例子,以供參考。(1)相信誰的共識項目中碰到問題了,大家調(diào)查了一下答案:麻省理工可能說A對,CMMI可能說B對,團隊中有兩個人堅持認為自己是對的。這時候怎么處理?這類事情上需要培養(yǎng)的是一種不唯書,不唯上,只為實的共識—即使最終自己仍然可能是錯的。(2)如何判斷意見有沒有被尊重的共識團隊可以盡可能尊重每個人的意見,但最終的選擇往往只能有一個。這意味著很多人的意見最終會被拋棄。這個時候團隊中如果沒有“意見被考慮過,不被采納也是正?!边@樣的共識,那么個人意愿會非常容易受到干擾。(3)忙與不忙的共識比如說,A說我很忙,無法做當(dāng)前工作之外的事情。B則認為你從來都不加班,哪里忙了,明顯是不愿意多承擔(dān)工作。于是兩人之間就可能產(chǎn)生不必要的恩怨,進而成為內(nèi)耗的種子。(4)小利益分配上的共識13比如說,有新人加入時,一般會分配新的計算機。這時有的公司把分配的權(quán)利下放給團隊自身。而有的團隊則會把新計算機分配給老員工,新員工用換下來的舊計算機。這時候如果沒有共識(可以表現(xiàn)為定義好的分配規(guī)則),則會導(dǎo)致意想不到的麻煩。●新員工會以為,明明是我的,怎么拿給別人,很氣憤?!穹植坏降睦蠁T工會以為,怎么給他不給我,很氣憤?!穹值降睦蠁T工會以為,明明我的工作更需要,你們有什么好不滿的,也很氣憤。(5)“組織”與“個人”間利益均衡上的共識即使在最為公正的環(huán)境中,組織利益和個人利益還是會有所沖突。這種沖突,不涉及是非標準,而只和價值取向有關(guān)系。比如,有的員工可能特別喜歡自由隨意的風(fēng)格,但為了項目安全,具體的工作卻可能要求人嚴格遵守某些確定的規(guī)范。這個時候很難講對錯,所能有的只是一種選擇。這類情形下,需要培養(yǎng)的共識是關(guān)于哪種程度的沖突是正常的應(yīng)該接受,哪種程度的沖突是過分的,應(yīng)該堅決反對。要么接受,要么拒絕都是不錯的選擇,勉強接受,而又心里抱怨就不好了。沒有這類共識,長時間下來,每個人心里剩下的可能就只有抱怨了。(6)無心之失上的共識考慮下面這兩類情形:A努力做事,承擔(dān)的工作也比較多,且艱難;B比較消極,承擔(dān)的工作也就比較少,且容易。這時候A因為某個疏忽導(dǎo)致了一個錯誤,影響了工作;B的工作卻做得比較順利。這時候應(yīng)該如何看待這A和B?這并非是一個是非問題,而是一個選擇問題。假如說,一個組織以責(zé)任感和主動性為評價一個人的唯一準繩,那么A就并不值得苛責(zé),反倒是B會逐漸出局。中國古代的獎懲觀在《尚書·大禹謨》中皋陶在評價帝舜時說:“宥過無大,刑故無?。蛔镆晌┹p,功疑惟重;與其殺不辜,寧失不經(jīng)”。大意是說:寬恕臣民無心的大過,但重罰那種故意犯下的罪行,即使那只是小罪。對有疑之罪處罰從輕,對有疑之功賞則從重。為了避免枉殺無辜,寧可放棄那種不能肯定的罪人?!涡隆洞笳椀洹ど袝陆狻芳毤毾雭?,這數(shù)千年前的智慧足以擊穿時空,今時今日仍然閃爍著耀眼的光芒。(7)保持現(xiàn)狀與勇往直前上的共識如果我們認可外部環(huán)境始終在發(fā)生著變化,那么不斷的改變自身通常就是必要的。與這種必要性相對的是—很多時候人們討厭變化。社會變革中,這種反對力量其根源也許更加復(fù)雜,團隊中這種反對力量大多來源于一種安全的假象以及對思考和風(fēng)險的厭惡。潛意識中很多人認為,對于一種行之已久的方法,既然他沒導(dǎo)致任何問題,那對項目而言這種方法是安全的,畢竟它不會導(dǎo)致較大的失敗。與此同時,任何改變在可能獲得收益之前,首先要面對的是風(fēng)險。這是很多人所不愿承擔(dān)的。從“不唯上,不唯書,只唯實”的視角來看,任何改變,其起點必然是某種已經(jīng)暴露出來的不合理性,而要想提出合適的改變方法,對這種不合理性進行深度思考則是必須的,這將成為一份額外的工作,這也是很多人所厭惡的。但是,一旦在一個團隊中產(chǎn)生因循守舊的氛圍,那么像主動性這類最必須的東西就會在不知不覺中消失殆盡,團隊前進的動力也就會逐步消失。這是極為危險的,所以在這類問題上的共識至關(guān)重要。14假設(shè)說我們從A點出發(fā)進行改善,途經(jīng)B,C,D但最終卻回到了A。這個時候如果我們能保證A→B,B→C,C→D,D→A的變化是有邏輯的,是合理的。那么這種否定之否定的過程就遠比始終停留在A要更有價值。魯迅先生曾在《無聲的中國》里講:譬如你說,這屋子太暗,須在這里開一個窗。大家一定不允許的。但如果你主張拆掉房頂,他們都會來調(diào)和,愿意開窗了。沒有更激烈的主張,他們總連平和的改革也不肯行。魯迅先生寫這段文字的時候,心里想必是無奈的。而這種無奈不應(yīng)該在任何一個團隊成員的心里產(chǎn)生。(8)曖昧與直來直去上的共識權(quán)利無論大小,往往令人迷戀。直接與上級論及其自身的是非,往往會引致上司的不快。而上司往往擁有對工資、獎金等的影響力,如果上司不能公心公論,那么無疑其后果是嚴重的。上面講的是最簡單的人都會想到的事情,于是很多事情趨于曖昧,琢磨上司的心理成為一門必修功課。這種氛圍一旦形成,組織就會逐漸往“一言堂”的方向靠攏。所以我們有理由呼喚一種直來直去的風(fēng)格,軟件團隊是做開發(fā)的,是非面前不需要太多的含蓄。這對管理者的要求是,一定要確保沒有人會因為直接發(fā)表觀點受到任何形式的批評。對于管理者而言,破壞一種直來直去的風(fēng)格,實在是再簡單不過的事情。(9)具體與似是而非上的共識陶淵明曾在《五柳先生傳》中寫到:好讀書,不求甚解,每有會意,便欣然忘食。以詩文而論,首要之事是悟其神韻,所以“不求甚解”是比“咬文嚼字”要高明的治學(xué)態(tài)度。但對項目管理則恰恰相反,更多的時候是需要咬文嚼字地澄清各個概念的確切含義,而不能不求甚解。當(dāng)我們設(shè)立一個目標或分解一個任務(wù)時,目標或任務(wù)的接受者對這個目標的理解偏差越小,團隊的行進方向越不會出現(xiàn)偏差。這個時候最可怕的事情是容忍“差不多就是這個樣子”這類的想法,這樣最終會導(dǎo)致每個人不是在同一個方向上用力。上面只是列舉了一些常見的例子,實際中針對具體工作或團隊特色,需要達成共識的地方可能不同。但像小利益分配這樣的事情確實很多很雜,影響又比較微妙,必須達成共識。而共識本身其實并無對錯,只要存在,是真的共識。達成共識的關(guān)鍵手法是以邏輯和事實為基礎(chǔ)進行公開討論,而盡可能客觀、公正的關(guān)鍵點則在于剝離利害關(guān)系。比如說,項目組獲得了一筆額外的獎金,明天就要發(fā)放了,那么如果今天才討論獎金分配的原則,就幾乎不可能有結(jié)論。而如果在沒有獎金的時候,事先討論就會順利很多?!吧睢蔽幕c“淺”文化團隊的文化是有深淺的。如果說“豈曰無衣?與子同袍?!笔且环N“深”文化;那工作之余,喝酒打牌無疑是一種“淺”文化。以公司這種組織形態(tài)而論,如果文化本身不以員工的核心利益訴求為根基,那么文化建設(shè)本身往往是“虛情假意”的,得到的也只能是“淺”文化。只有直接面對員工的人,關(guān)心各個員工的核心利益訴求,才可能形成真正的“深”文化。15比如,對年青的員工要盡可能清楚地告訴員工他3年后可以成長為什么樣子。無論在哪里,公司與個人之間始終會存在著矛盾。而面對矛盾,要么調(diào)和而共同發(fā)展,要么激化而斗爭,而后者則是一場災(zāi)難。事實上只有“深文化”才有可能調(diào)和矛盾,避免災(zāi)難發(fā)生。如果把個人和公司抽象為兩極,那么只有在兩極上的砝碼等重,才可能達到均衡狀態(tài)。在公司這種組織形態(tài)下,公司一極的砝碼天生較重。比如說,運作項目時,項目利益壓倒其他很多個人考量。這個時候如果沒有其他“勢力”與之對沖,那么最終結(jié)局必然是天平不斷向公司一極傾斜。這時候,往往就需要“深”文化來對此進行平衡,否則傾斜到一定程度,必然矛盾激化導(dǎo)致斗爭(離職也可以看做是一種斗爭形式)。2.2.4邏輯鏈4:文化環(huán)境之“觀點整合”軟件是一種固化的思維→思考是思維形成必經(jīng)之路→積極的思考和被動的思考差異巨大→組織里需要讓人積極思考的氛圍→形成積極思考氛圍的關(guān)鍵要素是:積極思考是被鼓勵的→積極思考的成果沒有被輕易漠視,對個人有邏輯的觀點的強制否決要盡可能的少。當(dāng)一個人認為他的觀點被毫無理由地忽略,并被強行拉到了另一條路上時,通常這個人會表現(xiàn)出憤怒,消極等情緒。如果這是偶然事件,那么時間可以幫助淡化其負面影響,但如果這是一種組織的文化特征,那么這類情形無疑會對所有人的工作意愿造成致命傷害。從原因來看,觀點分歧大致有如下兩類?!褚活愂怯械娜苏J知還不夠清楚,比較片面,是盲人摸象式的?!窳硪活愂钦J知已經(jīng)足夠清楚了,但視角不同,選擇不同,是橫看成嶺側(cè)成峰式的。對于盲人摸象式分歧,為避免對工作意愿形成致命傷害,那么做決定的人無疑要通過邏輯分析把各種認識引導(dǎo)到同一觀點上來。這時候事實上要求做決定的人必須對問題的本質(zhì)有著更深層次的把握。對于橫看成嶺側(cè)成峰式分歧,由于并不單純的是你對我錯,而是多種觀點同時具有合理性,只不過視角不同。那么,當(dāng)不選擇某些觀點時,至少要讓持這種觀點的人知道,他的觀點沒被接受的原因是什么。上面的簡單邏輯堅持得好,最終就會形成真的“民主集中”:有問題暢所欲言,有決定后集中實施的文化環(huán)境;堅持得不好,就會成為“一言堂”:有問題沒人說話,做起事情牢騷滿腹的文化環(huán)境。在處理觀點整合時,比較差的情形是走兩個極端:要么是“一言堂”,要么是“絕對自由主義”。從危害來看,這兩者一樣的差,并無區(qū)別。所不同的是人們對“一言堂”模式深惡痛絕,無比警覺,而對“絕對自由主義”卻很包容,認為是民主風(fēng)范。下面來分析一下這兩種情形。在“一言堂”的模式下,項目管理者具有凌駕于其他成員之上的權(quán)威,甚至可以以個人喜好來代替是非標準。在“絕對自由主義”的模式下,沒人能把自身的意志強加到別人身上,體現(xiàn)為議而不決,謀而不斷。如果我們認為,項目管理是一種存在著某種內(nèi)在的規(guī)律的事物,并且只有人的行為符合了這種內(nèi)在規(guī)律后,才能把項目管理做好的話,那么無疑的上述兩種極端情形都是不好的,16他們都使順應(yīng)這種規(guī)律更加困難?!耙谎蕴谩钡臓顟B(tài)下,通常很難集思廣益,不利于認知的深入,同時會扼殺團隊成員的責(zé)任感和積極性。一旦責(zé)任感喪失,信任感也就會逐漸失去,團隊的效能也就會一路下滑。畢竟測試驅(qū)動開發(fā)這類方法論,不是管理人員一個人決定后就可以自然地獲得成功的,更需要的是群體的合作和努力?!耙谎蕴谩睜顟B(tài)非常容易識別,通常有以下幾個典型特征?!袼械纳纤緛淼囊篌w現(xiàn)為一種命令,執(zhí)行者甚至不關(guān)注這么做背后的理由?!駵贤ㄍ菃蜗虻模纤竞茈y收到下屬來的反饋。假設(shè)說有一輛車,我們希望它走得快,那么無論推或拉都不是最佳手段(即使推或拉的人的力量非常大),只有這輛車能夠自行前進了,那么未來才是光明的。“絕對自由主義”的狀態(tài)下,團隊成員各行其是,方向混亂,內(nèi)耗嚴重,執(zhí)行力低下,團隊效能低下。亞里士多德對這種狀態(tài)極其反感,他說:多頭是有害的,讓一個人去統(tǒng)治吧!這種狀態(tài)的典型特征是會議比較多,但每次的問題都議而不決,就算決了也沒人做。以項目管理而論,上述兩種極端情形都需要避免,需要向理性回歸?!癞?dāng)一個人是講邏輯的,那么結(jié)合特定情境(時限,人力資源,技術(shù)難度等),事情如何處理大多會有定論,即可以辯明是非,這類情形下無疑不需要強權(quán)。而如果一個人是不講道理和邏輯的,那么更應(yīng)該把這個人剔除出去,而不是在日常工作中以強權(quán)進行壓制。●當(dāng)面臨各有利弊的選擇時,根據(jù)權(quán)利與責(zé)任應(yīng)當(dāng)為常數(shù)這一原則,職位高的人要做出選擇。職位所賦予的權(quán)利只應(yīng)使用在這類場景下。●在解決觀點沖突時,強權(quán)是絕對必要的,但也是最應(yīng)該避免的。這與軟件的特質(zhì)與組織結(jié)構(gòu)的特質(zhì)有關(guān)。與此同時項目組作為一種相對比較松散的組織結(jié)構(gòu),并不足以支撐強權(quán)的大幅使用。項目組這種結(jié)構(gòu)并不具備“強約束力”,人員至少可以選擇退出(離職)或消極(得過且過)。而如前文所說,消極對強調(diào)思考的軟件開發(fā)而言是致命的。反過來講,既使用強權(quán)也要求主動也不是完全不可以,但要有辦法縮小人員選擇的權(quán)利,比如,給超過平均水平2倍的工資。但這似乎很難,也很難持久,并且長期來看,始終還是會傷害工作意愿。權(quán)利的來源與類型管理人員需要對能否提高團隊的效能負責(zé),所以他的權(quán)利不是來源于他的老板,而是來自他手里的事業(yè)。其實這是對事不對人的本源,也應(yīng)該成為項目管理中使用權(quán)利的準繩。從執(zhí)行的角度看,事業(yè)自身通常也可以表示為一組責(zé)任,因此責(zé)任和權(quán)利之間存在著因果關(guān)系。同時如果確實兩者都可以量化,那么兩者相除其商應(yīng)該是個常數(shù)。在專門對權(quán)利進行研究的書籍中會對權(quán)利的類型進行進一步的劃分:比如把權(quán)利分為授予型(granted)和掙得型(earned)。掙得型(earned)權(quán)利也是我們通常所說的影響力。在這一節(jié)里面我們提到的權(quán)利專指授予型權(quán)利,即在一個組織中某個人被分配到的權(quán)利。形式上講,大多時候影響力畢竟要通過授予型權(quán)利再起作用,如果在同一個組織中正式地,同時存在著兩個權(quán)利中心,那么在大多時候并不是好事。172.2.5邏輯鏈5:制度環(huán)境之“勢”意識指導(dǎo)行動→總體來看,個人意識是傾向于擴張而非收斂(收入,榮譽,地位,自己意志的實行程度)→擴張的目標和現(xiàn)實的差距是每個人前進的動力→管理的一重使命是確保這種差距存在。知名學(xué)者何新先生講過一段很有意思的話,他說:人的本性類似于熱力學(xué)第二定律,即趨向于“熵”的增大方向發(fā)展。也就是說生物(包括人)的本性就是追求自由,優(yōu)越感,出人頭地等。熵增意味著個人的意識傾向于擴展而非收斂,這事實上對管理提出了一個課題:每個人所處的現(xiàn)實和他的可見未來之間必須存在著可見的足夠大差距,這樣“勢能”才可能足夠大,也才可能激勵一個人積極前行。熱力學(xué)第二定律熱力學(xué)第二定律可以表述為:不可能把熱從低溫物體傳到高溫物體而不產(chǎn)生其他影響;不可能從單一熱源取熱使之完全轉(zhuǎn)換為有用的功而不產(chǎn)生其他影響;不可逆熱力過程中熵的微增量總是大于零。也可以被表述為熵增原理:在孤立系統(tǒng)中,一切不可逆過程必然朝著熵的不斷增加的方向進行。但熱力學(xué)第二定律之所以有名卻不是因為其對熱力學(xué)的影響,而是因為其對形而上學(xué)的影響。比如說,我們可以把宇宙抽象為孤立系統(tǒng),這樣一來,宇宙最終的結(jié)局就是熱寂。這不一定對,但對思考宇宙人生的人沖擊確實非常強烈。顯然“勢”是一個相對概念。對于每天吃窩頭的人,吃白面饅頭就可以成“勢”。而對于每天吃白面饅頭的人,多兩個少兩個則沒什么價值。這并不只是項目層次要解決的問題,但項目層次也并非什么都不能做。馬斯洛的需求層次理論把人的需求分為以下5個層次?!裆砩闲枰热?,對水,食物的需要●安全上的需要,比如,人身安全,財產(chǎn)安全●情感和歸屬的需要,比如,愛情,友情●尊重的需要,比如,成就感●自我實現(xiàn)的需要,比如,對理想的實現(xiàn)這里面無論哪一項都可以轉(zhuǎn)換為具體的“勢能”,而顯然的1,3,4,5和項目中的活動(評價、工作安排、交流)等直接相關(guān)。具體來講,在物質(zhì)層面,“勢”至少要具象為兩類東西:一是職位以及收入的提升/下降;二是技能的提升。在精神層面,“勢”,則可以具象為成就感,榮譽等。從應(yīng)用角度看,要結(jié)合每個人的現(xiàn)狀,性格,背景,公司所能提供的環(huán)境來綜合考慮,這樣才能很好地判斷個人的“勢”究竟可以體現(xiàn)在那里。比如說,對于新畢業(yè)生,那就要很現(xiàn)實地共同考慮職業(yè)規(guī)劃的下一步究竟在哪里,走到那里之后未來會更光明。這個時候一定要真誠且具體,否則就是“畫餅欺人”,最終只會適得其反。這里的關(guān)鍵詞是具體,但具體并不是很難達到,只要一起考慮一定可以找到合適的答案。在此之前,通常需要對軟件所牽涉的各種知識做一個分類,下面來舉一個還算具體的例子,18來進行說明。構(gòu)建軟件的直接知識可以被分為以下3大類。1)用于打造概念邊界并且優(yōu)化概念間邏輯關(guān)系的知識,比如,面向?qū)ο蠓治龊驮O(shè)計。2)用于實現(xiàn)概念和邏輯的通用領(lǐng)域知識。比如,編程語言。3)用于解決指定領(lǐng)域的專業(yè)的領(lǐng)域知識。比如,圖形算法。在很多場合3)并不是必須的,但1)和2)則是不可分割的,并不存在孰輕孰重的問題。沒有概念無法形成邏輯,沒有邏輯,概念的徹底定義更是無從談起。而沒有載體(比如,編程語言或UML),概念和邏輯根本就無法表達。事實上編程語言的演化很大程度上就是想把這種表達變得更容易。而與軟件有關(guān)聯(lián)的間接知識則有以下4大類。1)需求開發(fā)和描述。比如,規(guī)格說明的編寫。2)估算。比如,功能點方法等。3)測試。比如,驗收測試等。4)軟件工程和方法論。比如,CMMI和敏捷。根據(jù)上面的分類,我們可以制作一份分類的表單。關(guān)于軟件的直接知識如下。(1)通用的領(lǐng)域知識●編程語言(C/C++,Java,C#,Python,Perl等)?!窨蚣芎皖悗欤∕FC,Boost,Struts,,Hibernate等)?!衿脚_(WindowsAPI,POSIX,.NetFramework※1,JavaAPI,C/C++RuntimeLibrary等)。恰如JeffryRichter所說,大多時候可以從內(nèi)存機制、線程機制、錯誤處理、異常處理、組件構(gòu)建、組件組合等方面來進一步考察一個平臺。●計算機體系結(jié)構(gòu)(CPU指令、虛擬存儲等)?!駥嵱眉记桑ㄕ{(diào)試方法、代碼生成器等)?!瘛?有的時候子類別間的界限并不是很容易界定,其中一個主要原因就是存在著像.NETFramework這樣涵蓋了過多內(nèi)容的概念。(2)概念和邏輯創(chuàng)建和優(yōu)化●面向?qū)ο蠓治龊驮O(shè)計/結(jié)構(gòu)化分析和設(shè)計?!裨O(shè)計模式。●重構(gòu)?!衿跫s式編程?!馯ML※2?!瘛?從形式上來看UML更近似于一種編程語言,但從其目的上來看也許歸在這里是更合適的一種選擇。(3)專業(yè)領(lǐng)域知識●圖形圖像算法?!窬W(wǎng)絡(luò)協(xié)議。19●人工智能?!駭?shù)值/非數(shù)值類算法?!瘛P(guān)于軟件的間接知識如下。(4)需求開發(fā)和描述(5)估算●估算法。比如,COCOMO,F(xiàn)P等?!窆浪阈g(shù)。比如,使用計數(shù)等原始辦法。(6)測試(7)軟件工程和方法論●輕量型方法論。比如,敏捷?!翊蠓椒ㄕ?。比如,CMMI?!窬C合分析。比如,《人月神話》,《人件》中所做的工作。在這份表單里面,還沒有列入與管理相關(guān)的內(nèi)容。但基于這種分類已經(jīng)可以設(shè)計一條很直觀的,3~5年內(nèi)可用的職業(yè)發(fā)展路徑,如圖2-4所示。圖2-4職業(yè)路徑的例子這時候要考慮當(dāng)前的工作是否能支持既定的職業(yè)發(fā)展路徑,比如,如果一個人當(dāng)前的主要工作是使用C++做底層驅(qū)動,那么上面的職業(yè)路徑就不適合。人是很復(fù)雜的復(fù)合體,這就導(dǎo)致在不同情景下精神訴求會有很大的不同,能成“勢”的點也很不同。完全漠視這類個體的特殊性,而簡單地把每個人都等價為相同的人,并只是迷信于流程這樣的手段,事實上是管理上的惰性。可以講,“勢”在很大的程度上決定了團隊的活力和向前走的動力。同時“勢”也是雙贏的一個關(guān)鍵基礎(chǔ)。以職場而論,公司的訴求往往單一而清晰,大多時候是以平衡短期及長期利益為根本訴求;但個人的訴求卻往往復(fù)雜而含糊,每個人的訴求既有共通之處,也有差異。如果在項目管理這一層次上漠視這種差異性,那個人訴求很可能就永遠停留在不可見的區(qū)域里,這還談什么雙贏。欲望的無邊界特質(zhì)欲望的起源有很多,但最終大多以思維為媒介表達出來。在這一過程中,思維的的無邊界特質(zhì)直接導(dǎo)致了欲望的無邊界化。比如說,一個人可能期望擁有整個宇宙。這最終導(dǎo)致到達一定程度之后,物質(zhì)力量將不足以成“勢”,精神的事情還是要回到精神層面來解決。這個時候人們很可能更需要成就感,需要自我實現(xiàn)的空間。但對剛畢業(yè)的人而言,這些則相對遙遠。2.2.6邏輯鏈6:制度環(huán)境之“量化管理”軟件是一種固化的思維→思維的本質(zhì)是概念和邏輯→概念和邏輯無法直接度量和精確度20量→度量過程中需要很多的主觀判斷→以目標為導(dǎo)向的,以個人為中心的量化管理(相關(guān)的激勵和懲罰)將崩潰→參照無歧義數(shù)據(jù)(函數(shù)復(fù)雜度等)的判斷將成為程序員評價中的輔助手段。公平公正是管理的基石,為達到這一目的很多人會想到量化管理,但量化管理的基石卻往往被忽略。對人進行量化管理的基石是:量化后的數(shù)字主要受個人表現(xiàn)這一個因素的影響,否則將產(chǎn)生巨大的不公正,并對個人工作意愿產(chǎn)生不良影響,是真正的事與愿違。好比說,不同的工人在同等條件下生產(chǎn)杯子,一個人一小時生產(chǎn)5個,一個人1小時生產(chǎn)6個,那顯然后者要好于前者。這時,5和6可以用來比較的前提是兩個人的生產(chǎn)條件相同,比如生產(chǎn)工藝等。在這種情況下,量化后的數(shù)字為個人表現(xiàn)的函數(shù),因此量化管理基本上是公正的。這時可以進一步來考慮下面的情形:兩個人同時生產(chǎn)杯子,廠方安排一個人用工藝a,另一個人用工藝b,這個時候前者一小時生產(chǎn)5個,后者1小時生產(chǎn)6個。這個時候單純比較5和6事實上是不公平的,因為這1個杯子的差距可能是工藝造成的。大多時候,軟件的情況比后一個情形還要糟糕一些。在軟件開發(fā)中,往往既沒有辦法清楚地界定一個人的輸入,也沒辦法清楚地界定一個人的輸出。軟件開發(fā)的輸入是需求,但同一個需求不需要做多次,所以對需求自身的復(fù)雜程度眼下來看還只能依賴判斷,而不能精確度量。軟件開發(fā)的輸出是代碼,而代碼自身屬于固化后的思維。在度量思維時,多少、大小、長短、厚薄這類慣常的度量方向,并不具有多大意義。就好比說,不能講一個人代碼寫的越多貢獻就越大一樣。誠然思維的表現(xiàn)形式則是可以度量的,我們可以通過頁數(shù)來度量一本書的厚薄,通過分鐘來度量一部電影的長短,通過代碼行來度量軟件,但這種度量所反映的內(nèi)涵是有限度的,精度也是有限度的。最終結(jié)果很可能是人員之間的差距是由誤差或其他非主觀因素造成的,而不是由個人工作好壞所造成的??偨Y(jié)來看,在軟件開發(fā)中,數(shù)字含義的模糊性會導(dǎo)致使用數(shù)字進行評價包含非常多的不公正,這種不公正會對工作意愿構(gòu)成致命傷害。所以個人層面的量化管理在軟件開發(fā)面前,必然崩潰。但也不是所有數(shù)據(jù)都不能用于評價,無歧義數(shù)據(jù)是可以的。比如,函數(shù)的圈復(fù)雜度、對既定風(fēng)格的遵守等都可以根據(jù)靜態(tài)代碼工具獲取,這些數(shù)據(jù)是可以用來輔助評價的。但這些數(shù)據(jù)由于不能完整的表現(xiàn)一個人工作價值,所以只能成為判斷的輔助手段。為避免矯枉過正,最后需要強調(diào)的是:并不是說項目管理中不需要收集數(shù)據(jù),只是說在軟件這個行業(yè)中,各種數(shù)據(jù)的精度天生是有限的,因此必須用在允許有限精度的工作上(估算、任務(wù)安排等),而不能用在對人進行評價、對項目進行評價這樣需要高精度數(shù)據(jù)的工作上。換句話說,任何數(shù)據(jù)其天然模糊性所導(dǎo)致的偏差和其他輸入(問題等)導(dǎo)入的偏差如果很容易區(qū)分,那么量化管理可以使用這些數(shù)字,因為數(shù)字可以直接映射到問題;否則數(shù)字不可用,因為分不清數(shù)字的真實含義。軟件項目中的評價很不幸,基于這一節(jié)里的結(jié)論,軟件項目中的評價只能基于判斷。我們可以對這種判斷進行重重分解,比如,把工作分拆為日常工作和具體項目工作,項目工作又可以進一步分拆21為需求、設(shè)計、編碼等,但歸根到底還是判斷。剔除主觀因素后,正確判斷的基石是對事實的理解,這一點反過來限制了可管理軟件團隊的規(guī)模。假設(shè)說,一個人可以比較清楚地了解9個人的工作,那么可管理的軟件團隊規(guī)模必然為10人左右。大的軟件團隊則需要拼接很多個這樣10人左右的團隊。一旦規(guī)模過大,由于評價者對事實了解的不夠清楚,往往就會偏頗。比如,會因為某人智力、想象力、知識淵博等而印象較好,進而給出較高的評價,但事實上考評更應(yīng)該以成果為標準。2.2.7邏輯鏈7:內(nèi)耗之終結(jié)軟件是一種固化的思維→就思維上大多數(shù)問題而言,基本上是一題多解→組織結(jié)構(gòu)要確保各種情境下都能做出盡可能正確的決斷,但又不能傷害個人意愿→層級過多,會導(dǎo)致做決定的人離現(xiàn)場越遠,對真實的情況把握越不清楚(信息在傳遞時會損失),同時誤判增加,對個人意愿傷害增加→組織應(yīng)該盡可能扁平→為避免謀而無斷,即使扁平,也要有能做出決定的人。三國演義中,曹操對袁紹的評價是:色厲而膽薄,好謀而無斷。如邏輯鏈4所述,充分尊重個人觀點是保持工作意愿的必要條件。當(dāng)需要協(xié)調(diào)的人數(shù)比較多的時候,事實上會出現(xiàn)各種各樣的觀點和意見。這時候協(xié)調(diào)各種意見成為一項挑戰(zhàn)性比較強的工作,如果不能迅速地協(xié)調(diào)各方意見,那么組織很容易就變成袁紹型組織:會議很多,工作沒進展,進而產(chǎn)生巨大內(nèi)耗。為避免無休止的內(nèi)耗,并盡可能做出更正確的決定,從組織結(jié)構(gòu)上來看,關(guān)鍵點有3個:層級的多少、權(quán)責(zé)的對等及專權(quán)?!窠M織中的層級越多,參與解決分歧的人數(shù)越多,效率越差。層級過多的一個壞處還在于信息在傳導(dǎo)過程中損失。即使只基于常識,大多數(shù)人也可以理解信號在傳導(dǎo)過程中會逐漸衰減,如果不采取措施,那么原初的信號會最終消失,所以在網(wǎng)絡(luò)中需要“中繼器”存在。信息傳遞亦是如此。信息在傳導(dǎo)過程中自身就有失真的傾向。語言或文字作為一種記錄信息的手段,所能記錄的遠不是待傳遞信息的全部。表達有如冰山,總有一個水下部分存在,比如,個人背景等。而傳導(dǎo)路徑越長,隱含信息也就越容易丟失,其失真的程度也就越大。更不幸的是組織之中往往并沒有“中繼器”,因此盡可能的縮減層級成為防止信息失真的一個有效手段。在組織中,通常是離現(xiàn)場越遠的人決策權(quán)越大,這本身并沒有什么問題。關(guān)鍵是一旦現(xiàn)場來的信息被過度扭曲,決策自身將變成無根之木。以項目管理而論,需傳遞的細節(jié)信息較多,而各種決策并非高層決策,不允許離這些細節(jié)太遠,因此大多時候都要盡可能維持2或2.5級結(jié)構(gòu)。《人月神話》中提到的外科手術(shù)式團隊是典型的兩級結(jié)構(gòu)。但實際中有時候1個人沒法肩負起管理和技術(shù)兩重角色,這時候就需要讓出一部分權(quán)限,進而形成2.5級結(jié)構(gòu)?!衽c層級并列的第二個影響因素是:權(quán)責(zé)的對等,即兩者的比值應(yīng)當(dāng)為常數(shù)。舉一個極端的例子來對這一點做點說明。正常來講,設(shè)計的主要負責(zé)人有權(quán)利決定最終的設(shè)計方案。這個時候作為整個項目的負責(zé)人,項目經(jīng)理有權(quán)利推翻設(shè)計負責(zé)人的決定,并選定其他方案,但是一旦項目經(jīng)理這么做,那么就意味著項目經(jīng)理行使了決定設(shè)計方案的權(quán)利,那接下來的任何源于這一選擇的不良后22果的主要責(zé)任人也就變成了項目經(jīng)理,而非設(shè)計負責(zé)人。權(quán)責(zé)不統(tǒng)一的短期后果可能不嚴重,但卻對形成團隊的基石—責(zé)任感有致命的負面影響,而沒有責(zé)任感的團隊必然是沒有戰(zhàn)斗力的。●與層級并列的第三個影響因素是:組織并非是多頭的。我們看一個極端的例子。假設(shè)說一個團隊中有兩個經(jīng)理,一個偏向于技術(shù),一個偏向于管理,兩人層級相同,互不統(tǒng)屬。這種情況下,壞處有兩個,一個是項目信息將被割裂成兩個部分。兩個經(jīng)理必然要做責(zé)任劃分,一旦劃分之后,就不再有一個人對項目整體情況有完整的了解,但決策實際上同時需要兩個維度上的信息,這必然會增加判斷出錯的幾率。另一個壞處是兩個經(jīng)理對某些事情看法上可能會有分歧,這種分歧可能并不關(guān)鍵,從項目自身來看有可能都是可以接受的,但在不好的氛圍下,讓任何一方放棄自己的想法,都可能需要相對比較高的成本。PMBOK中把組織分為如表2-2所列一些種類。表2-2組織結(jié)構(gòu)職能式項目特征 弱矩陣項目經(jīng)理權(quán)限 很少或沒有 有限可利用資源 很少或沒有 有限控制項目預(yù)算者 職能經(jīng)理 職能經(jīng)理項目經(jīng)理角色 半職 半職項目管理行政人員 半職 半職

組織的類型矩陣式平衡矩陣少到中等少到中等職能經(jīng)理與項目經(jīng)理全職半職

項目式強矩陣中等到大 很高,甚至全權(quán)中等到大 很多,甚至全部項目經(jīng)理 項目經(jīng)理全職 全職全職 全職其中“職能式”組織,對增強組織透明度和靈活支配人力資源應(yīng)該是有幫助的,但無疑的會使事權(quán)分裂。這個時候如果諸多當(dāng)事人間紛爭不下,那么內(nèi)耗有可能無法控制。資歷的力量資歷往往讓人想起論資排輩,進而給人一種不好的印象。但不管我們對其印象如何,資歷自身確實是一種不能輕易忽視的力量。在組織中,當(dāng)其他因素?zé)o法明顯區(qū)分彼此的差別時,人們往往潛意識地選擇服從于資歷。年紀大的領(lǐng)導(dǎo)年紀小的,入公司早的領(lǐng)導(dǎo)入公司晚的一般會少些紛爭和矛盾,有助于削減內(nèi)耗。但一旦組織中出現(xiàn)孫悟空這類具備大鬧天空能力的人,就會對資歷所構(gòu)成的序列形成沖擊和挑戰(zhàn),反過來造成更大的內(nèi)耗。這背后,本質(zhì)的原因是資歷序列和能力序列并不相同。如何平衡兩者大多時候并非是項目管理這一層面需要處理的問題,只是說資歷作為一種現(xiàn)實存在的力量,并不能被徹底忽視。2.2.8邏輯鏈8:溝通之成本軟件是一種固化的思維→思維自身具有迭代特質(zhì)(否定之否定)→思維的主體必然是人,思維的對接也只有人才能完成的工作→項目越大,需要的迭代也就越多,必須的人和人間的溝通量也就越多→參與溝通的人越多,需要協(xié)調(diào)的不同個性的人也就越多,效率也就越差→所以軟件生產(chǎn)往往表現(xiàn)為規(guī)模不經(jīng)濟。同一個軟件,一個人開發(fā),效率最高,人越多效率越差→盡可能控制團隊規(guī)模(控制溝通成本)。23在充分尊重個人意愿的前提下,解決內(nèi)耗、進行決策這一行為本身是需要成本的。這一成本主要受兩方面的因素影響:一是觀點分歧次數(shù)的多少;二是解決每次分歧所需要的平均成本。如果軟件的復(fù)雜度確定,人員的基本特征確定,那么觀點分歧的次數(shù)事實上是軟件規(guī)模的函數(shù),也就是說軟件規(guī)模越大,可能產(chǎn)生的觀點分歧越多。如果我們認為軟件是可進行分解的,那么這種數(shù)目的增加將是線性的。而解決每次分歧所需要的平均成本則和參與的人數(shù)(組織層級)、人員對問題的熟悉程度及人員間共識的程度有關(guān)。一般來講陌生人間,對陌生問題的協(xié)調(diào)需要更多的時間。從這個角度看,參與的人員越多,解決每次分歧的平均成本越高。上述兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論