一直以來摇邦,我對度量骨子里有一種抵觸恤煞,因為很多時候,指標(biāo)容易被拿來衡量團(tuán)隊績效施籍。而作為考核的KPI居扒,容易成為團(tuán)隊改進(jìn)指揮棒,帶有很大片面性和欺騙性丑慎;另一方面喜喂,如果沒有度量,有無法客觀的評價組織改進(jìn)的效果竿裂,這是一種矛盾玉吁。不想因為自己心智模型導(dǎo)致目光的短淺,跳出盒子去了解原本的度量腻异,這是我都這本書《精益軟件度量——實踐者的觀察與思考》的初衷进副。本次閱讀本書的前四章。
第一章 度量謎題
按照IEEE的定義悔常,“軟件工程是將系統(tǒng)化影斑、規(guī)則给赞,以及可控的體系方法,應(yīng)用于軟件設(shè)計鸥昏、開發(fā)塞俱、操作和維護(hù);換言之吏垮,即工程理念在軟件中的貫徹障涯。”
Roger Martin在他的著作《The Design of Business: Why Design Thinking is the Next Competitive Advantage》把知識的演進(jìn)用一個知識漏斗(Knowledge Funnel)生動形象地描述了出來膳汪。這個漏斗總是從一個問題開始唯蝶,需要經(jīng)過謎題(Mystery)、啟發(fā)(Heuristic)和算法(Algorithm)3個階段[注釋]遗嗽,如圖1-1所示粘我。
Roger在書中提出了兩種思考問題的方式:分析性思維和啟發(fā)性思維[注釋]。分析性思維的驅(qū)動力是標(biāo)準(zhǔn)化痹换,消除個體的判斷所帶來的偏見和差異征字,而啟發(fā)性思維的驅(qū)動力是發(fā)現(xiàn)和創(chuàng)新。這兩種思路在具體實現(xiàn)上體現(xiàn)出的區(qū)別在于娇豫,分析性思維傾向于可靠性匙姜,而啟發(fā)性思維傾向于有效性。
度量本身似乎就是一個分析性思維的產(chǎn)物冯痢,但這并不妨礙我們回歸問題本身氮昧,同時利用分析性和啟發(fā)性思維,判斷到底哪些要素跟“成功”更相關(guān)浦楣,并嘗試用一個度量體系來幫助我們在動蕩的環(huán)境中捕捉和把控這些要素袖肥。
1.1 精益軟件開發(fā)的度量體系
在理念上,我們希望把度量的重心從“控制”轉(zhuǎn)向“改進(jìn)”振劳。雖然控制和改進(jìn)都是對系統(tǒng)采取的干預(yù)性措施椎组,“控制”給人造成的心理暗示是圍繞著靜態(tài)目標(biāo)而行動;而“改進(jìn)”則將動態(tài)的目標(biāo)植入人們的思維模式澎迎。
度量體系的實現(xiàn)分成3個不同的層次——理念庐杨、設(shè)計、應(yīng)用夹供。
1.2 度量是什么
1、度量是在一個特定組織上下文中形成的一系列共識仁堪。
秦始皇“一法度衡石丈尺哮洽。車同軌,書同文弦聂∧窀ǎ”
度量的一個重要意義是統(tǒng)一思想氛什、統(tǒng)一方式,從而使不同的人能夠在一致的基準(zhǔn)上進(jìn)行溝通匪凉,減少產(chǎn)生誤解的可能性枪眉。
在一個軟件開發(fā)組織里,度量統(tǒng)一的不僅僅是度量單位再层、度量對象贸铜、度量手段,更重要的是統(tǒng)一對目標(biāo)的認(rèn)識聂受。
2、度量是將經(jīng)驗?zāi)P拖蛄炕P瓦M(jìn)行匹配的嘗試蛋济。
量化模型就是通常所指的硬數(shù)據(jù)棍鳖、硬指標(biāo)。量化模型比較有兩種類型:
?跟自己比較:持續(xù)改進(jìn)碗旅,持續(xù)超越自己渡处,就需要比較自己發(fā)生的變化。
?橫向比較:這對于擁有大量開發(fā)人員祟辟、團(tuán)隊和產(chǎn)品的大型組織來說医瘫,是非常有吸引力的。在組織內(nèi)部進(jìn)行團(tuán)隊和團(tuán)隊之間的比較川尖,是不少公司激勵大家提升績效的手段拍嵌。另外,如果能跟業(yè)界的數(shù)據(jù)比較晒哄,也可以知道自己在行業(yè)中的位置如何巨柒。
3. 度量是包含人、流程馍悟、組織和工具的一個動態(tài)系統(tǒng)畔濒。
如果把軟件開發(fā)組織看做一個動態(tài)的系統(tǒng),度量實際是作為反饋機(jī)制來對這個系統(tǒng)產(chǎn)生作用的锣咒。
1.3 度量不是什么
1. 度量不是軟件開發(fā)固有的活動侵状。
作為一個組織來講,應(yīng)該積極地評估當(dāng)前的度量活動的成本毅整,分析是否真正為達(dá)成業(yè)務(wù)目標(biāo)發(fā)揮著價值趣兄,從而確保運行度量體系的投入產(chǎn)出是在一個合理的水平。
2. 度量應(yīng)該避免跟績效直接相關(guān)悼嫉。
把一套標(biāo)準(zhǔn)的度量與個人艇潭、團(tuán)隊績效強(qiáng)相關(guān),很可能導(dǎo)致各種奇怪的博弈行為,中長期的負(fù)面作用經(jīng)常會大于短時間指標(biāo)提升帶來的好處
3. 度量不是免費的蹋凝。
目標(biāo)和指標(biāo)的選擇就顯得特別重要鲁纠,試圖實施一個大而全的度量體系,通常弊大于利鳍寂。
第二章 組織目標(biāo)
度量體系是引導(dǎo)團(tuán)隊達(dá)成業(yè)務(wù)目標(biāo)的一整套策略改含,如圖2-1所示,包含了業(yè)務(wù)目標(biāo)迄汛、決策場景和指標(biāo)體系3個階段捍壤。
2.1 業(yè)務(wù)目標(biāo)
軟件產(chǎn)品的開發(fā)分成幾個大的階段:業(yè)務(wù)策略、項目定義隔心、項目執(zhí)行白群、維護(hù)支持。
2.2 開發(fā)組織的目標(biāo)
業(yè)務(wù)對開發(fā)組織的期望大致分為幾類:價值硬霍、效率帜慢、質(zhì)量和能力,其中效率又包括對市場的響應(yīng)速度和單位規(guī)模開發(fā)組織的交付速率唯卖。
2.2.1 交付價值
對于功能性需求粱玲,開發(fā)組織能夠在開發(fā)前,將低價值內(nèi)容從高價值特性上剝離下來拜轨,從而提升投資回報(ROI)抽减。
對于非功能性需求,很多情況下橄碾,開發(fā)組織提出的方案都會影響投入在短期和長期時間軸上的分配卵沉,因此,能夠使技術(shù)方案跟業(yè)務(wù)模式相吻合法牲,就有可能在相當(dāng)程度上提升交付的價值史汗。
2.2.2 響應(yīng)速度
管道的長度代表了端到端的軟件開發(fā)活動,包含了從用戶需求的產(chǎn)生到該需求以產(chǎn)品的形態(tài)為用戶產(chǎn)生價值的整個過程拒垃。管道的長度和交付對象在管道里流動的速度停撞,決定了組織對市場的響應(yīng)速度,也就是交付周期悼瓮。
2.2.3 交付速率
如果把管道直徑比作組織的規(guī)模戈毒,效率的一個目標(biāo)是提升管道的吞吐率,也就是交付管道直徑不變的情況下横堡,提高單位時間內(nèi)通過管道的工作單元的數(shù)量埋市。對應(yīng)到軟件開發(fā)組織,就是單位規(guī)模的組織在單位時間內(nèi)所能交付的軟件規(guī)模命贴,我們簡稱其為交付速率恐疲。
軟件開發(fā)本身的特點腊满,使得在傳統(tǒng)制造業(yè)中大放異彩的規(guī)模效應(yīng)套么,并沒有在軟件開發(fā)中產(chǎn)生明顯的效果培己。業(yè)界分析的結(jié)果指出,規(guī)模能夠?qū)浖_發(fā)效率帶來2個正面效應(yīng)胚泌。
(1)在以提高生產(chǎn)效率為目的的工具和基礎(chǔ)設(shè)施上的投入可以被更廣泛的共享省咨。
(2)產(chǎn)品和項目管理的成本不會直接隨著項目規(guī)模的增大而增加,可以想象玷室,一個項目經(jīng)理或一個產(chǎn)品經(jīng)理零蓉,可以應(yīng)對從十來號人到上百人團(tuán)隊的管理工作。
負(fù)面效應(yīng):
(1) 溝通成本:如Brooks在《人月神話》中說的[注釋]穷缤,開發(fā)規(guī)模大了之后敌蜂,團(tuán)隊成員之間、團(tuán)隊和團(tuán)隊之間的溝通路徑是幾何級數(shù)增長的津肛。
(2)人員投入程度:軟件開發(fā)是一個需要緊密協(xié)作的活動章喉。大團(tuán)隊增加了人員間個性沖突的概率,會造成團(tuán)隊內(nèi)不良的化學(xué)反應(yīng)身坐,降低團(tuán)隊效率秸脱。此外,大團(tuán)隊還降低了大多數(shù)個體的參與感部蛇。
(3)系統(tǒng)復(fù)雜度:產(chǎn)生大規(guī)模團(tuán)隊的一個原因是系統(tǒng)本身的規(guī)模摊唇,而根據(jù)Conway’s Law[注釋],軟件設(shè)計的架構(gòu)涯鲁,實際上反映了開發(fā)組織的結(jié)構(gòu)與溝通架構(gòu)巷查。隨著組織結(jié)構(gòu)的擴(kuò)展和復(fù)雜化,模塊間接口數(shù)量也會隨著模塊數(shù)量的增加呈幾何級數(shù)增長的抹腿。這意味著系統(tǒng)復(fù)雜度的增長岛请,而且更加難以評估引入變更的影響,這也意味著系統(tǒng)維護(hù)幢踏、演進(jìn)成本的增加髓需。
2.2.4 質(zhì)量
質(zhì)量是指廣義上的質(zhì)量,包括產(chǎn)品設(shè)計房蝉、用戶體驗僚匆、功能完善等。質(zhì)量是個約束性的屬性搭幻,對于一個特定的產(chǎn)品來說咧擂,其質(zhì)量要求通常是相對穩(wěn)定的。質(zhì)量保障是通過系統(tǒng)化的一系列活動檀蹋,提供足夠的證據(jù)說明軟件產(chǎn)品是適合使用的(fI Tfor use)松申。
2.2.5 能力
個人、團(tuán)隊、組織的能力是對上述3個因素有直接影響的要素贸桶。Peter M .Senge在《第五項修煉》中指出舅逸,一個組織唯一可持續(xù)的競爭優(yōu)勢是比對手更快的學(xué)習(xí)能力。這種學(xué)習(xí)不僅發(fā)生在課堂里皇筛,更重要的是從客戶琉历、市場、團(tuán)隊學(xué)習(xí)水醋,從成功和失敗學(xué)習(xí)旗笔。
第三章 決策場景
3.1 使用度量的人們
軟件度量信息的使用者分成3個主要角色——管理層、項目管理拄踪、工程師蝇恶。
管理層關(guān)注:
?公司的戰(zhàn)略定位——產(chǎn)品和服務(wù)的交付對戰(zhàn)略目標(biāo)的支撐。
?戰(zhàn)略目標(biāo)的達(dá)成——產(chǎn)品和服務(wù)的商業(yè)績效惶桐,組織的交付效率撮弧。
?組織所處的競爭環(huán)境——自身和競爭對手商業(yè)模型,對市場變化和機(jī)會的響應(yīng)速度耀盗。
?客戶滿意度想虎,等等。
大多數(shù)的度量都跟項目管理相關(guān)叛拷,但是項目管理也分不同的層面舌厨。首先需要在組織層面考慮各個目標(biāo)的權(quán)衡,諸如交付忿薇、創(chuàng)新和能力提升裙椭;然后需要考慮本項目在產(chǎn)品或產(chǎn)品線組合中的位置、產(chǎn)品各個版本之間的關(guān)系署浩,還要顧及項目目標(biāo)和相關(guān)人員個人訴求之間的關(guān)系揉燃。
工程師不僅僅是第一手度量信息的生產(chǎn)者,當(dāng)管理層和項目管理人員根據(jù)信息采取行動時筋栋,工程師都常常是執(zhí)行者或是最終受到主要影響的人炊汤。
3.2 決策的組織上下文
合適的軟件開發(fā)實踐一定會受到產(chǎn)品本身和開發(fā)組織特點的影響,正如 Barry Boehm 和 Richard Turner 在“Balancing Agility and Discipline: A Guide for the Perplexed”里提到弊攘,5個方面的因素[注釋]會在很大程度上影響開發(fā)的組織模型和流程模型抢腐。
3.3 項目決策的階段
3.3.1 項目定義
1. 問題定義
清晰地定義問題是設(shè)定目標(biāo)、制定計劃的前提襟交。如果把項目分成問題域和方案域迈倍,不少組織和個人都會不自覺地混淆問題域和方案域。
2. 交付目標(biāo)
交付目標(biāo)應(yīng)該有可度量的開始點和截止點捣域,也就是有清晰的邊界啼染。這個邊界可能會在交付過程中宴合,根據(jù)最新的信息而調(diào)整。但在任何特定的時候迹鹅,項目的所有干系人對邊界都應(yīng)該有一個清楚的共識卦洽。
3. 提升目標(biāo)
一個組織要分析相關(guān)行業(yè)和競爭對手的數(shù)據(jù),對自身交付競爭力做出評估徒欣,有策略地制定提升目標(biāo)逐样。研發(fā)競爭力的提升必須要以項目為載體,在實踐當(dāng)中部署實施打肝。
4. 資源配置
一個大型的開發(fā)組織一般都有多個產(chǎn)品、多個版本在同時進(jìn)行當(dāng)中挪捕。這就涉及到在不同發(fā)布目標(biāo)之間的權(quán)衡粗梭,決定資源,特別是優(yōu)質(zhì)資源的分配级零。資源的投入經(jīng)常是多個項目断医、多個產(chǎn)品之間博弈的結(jié)果。項目管理人員需要根據(jù)項目的目的和里程碑來規(guī)劃項目奏纪,在規(guī)劃的時候需要覆蓋進(jìn)度鉴嗤、質(zhì)量、資源和風(fēng)險各個方面序调。
5. 進(jìn)度目標(biāo)
項目的關(guān)鍵路徑信息可以幫助項目管理人員識別交付過程中的里程碑醉锅。里程碑提供了一個常規(guī)機(jī)制來跟蹤項目的進(jìn)展是否跟預(yù)期相符。這些里程碑給團(tuán)隊之外更廣泛的項目干系人一個必要的機(jī)會发绢,一起分析最新的項目和環(huán)境信息硬耍,調(diào)整后續(xù)的時間點、投入边酒、工作范圍和目標(biāo)经柴,或做出其他必要的決策和干預(yù)。
6. 質(zhì)量目標(biāo)和手段
不同類型的產(chǎn)品有不同的質(zhì)量目標(biāo)墩朦。在這個項目里坯认,開發(fā)人員將負(fù)責(zé)單元測試完成,測試人員將會跟業(yè)務(wù)分析人員一起定義每個用戶估算的驗收條件氓涣,并設(shè)計功能和集成測試用例牛哺。功能和集成測試用例的自動化則根據(jù)工作量的平衡,由開發(fā)人員和測試共同完成春哨。
7. 資源的規(guī)劃
項目管理人員就需要用真憑實據(jù)荆隘,對照過往的歷史數(shù)據(jù)和項目相關(guān)信息,提出資源的要求赴背。對于個人來講椰拒,項目的參與人員需要了解團(tuán)隊計劃晶渠,評估個人對于交付目標(biāo)的承諾,并且識別成長的機(jī)會燃观。
3.3.2 項目執(zhí)行
項目干預(yù)通常主要出自以下兩個方面的原因褒脯。
?環(huán)境變化——市場上的客戶需求或是競爭對手的行動出現(xiàn)了變化,原來決策所基于的事實或假設(shè)出現(xiàn)了變化缆毁,因此需要對本組織的開發(fā)做出調(diào)整番川。
?內(nèi)部變化——本項目的進(jìn)度、質(zhì)量脊框,周邊其他項目的進(jìn)展跟預(yù)期不符颁督,如果需要達(dá)成原來的目標(biāo)就需要采取額外行動,否則就可能需要調(diào)整目標(biāo)浇雹。
對于項目管理來說沉御,為管理層提供確實的數(shù)據(jù),支持管理層決策是至關(guān)重要的昭灵。這里度量數(shù)據(jù)的典型用途包括以下幾方面吠裆。
(1)設(shè)定管理層對進(jìn)度和質(zhì)量的期望。
(2)獲取更多資源烂完,以較低的風(fēng)險達(dá)成項目目標(biāo)或是管理層的期望试疙。
(3)提高項目透明度,取得包括管理層在內(nèi)的各方干系人的信任抠蚣,以取得決策的權(quán)威祝旷。
(4)預(yù)測項目狀態(tài),爭取管理層做出對項目有利的干預(yù)柱徙。
(5)識別項目執(zhí)行當(dāng)中的瓶頸缓屠,做出相應(yīng)調(diào)整,或是說服調(diào)動其他有資源护侮、有權(quán)利的人做出調(diào)整敌完。
(6)識別項目執(zhí)行過程中的浪費,積極采取措施消除浪費羊初。
3.3.3 維護(hù)階段
管理層在這個階段更關(guān)心客戶的滿意度滨溉,這里滿意度主要體現(xiàn)在以下兩個方面。
?需求的價值命中率——做出來的東西是否真是市場和客戶最需要的東西长赞,是否為公司創(chuàng)造了最大的價值晦攒。
?客戶滿意度——這個維度更加復(fù)雜一些,不僅包含了前一個需求價值命中率的因素得哆,還包含了用戶體驗脯颜、線上的缺陷率,以及支持維護(hù)的響應(yīng)速度和質(zhì)量贩据。
項目管理人員需要在維護(hù)階段管理客戶和市場對維護(hù)響應(yīng)的期望栋操,因此需要知道以下內(nèi)容闸餐。
(1)問題的優(yōu)先級——哪些問題會造成較大的影響,必須先解決矾芙。
(2)響應(yīng)速度——支持團(tuán)隊對客戶的響應(yīng)周期舍沙,包括:郵件、電話確認(rèn)問題剔宪,定位拂铡、解決問題,回復(fù)客戶的周期葱绒。
(3)響應(yīng)質(zhì)量——提出解決辦法是否真的解決了問題感帅?打補(bǔ)丁的時候是否引入了新的問題?
(4)維護(hù)成本——每個類型問題和請求的處理工作量哈街。
第4章 指標(biāo)框架
如果借助戴明環(huán)(PDCA循環(huán)——P計劃留瞳、D執(zhí)行、C檢查骚秦、A行動)分析這個過程,就會發(fā)現(xiàn)度量數(shù)據(jù)的使用主要集中在支持計劃和檢查兩個環(huán)節(jié)的決策璧微。
4.1 支撐決策的數(shù)據(jù)
計劃-根據(jù)己知的數(shù)據(jù)作箍,設(shè)定合理的目標(biāo),預(yù)測未來可能發(fā)生的情況前硫,制定可行的計劃胞得。
檢查:我們借助度量數(shù)據(jù),識別現(xiàn)實與預(yù)期的差異屹电、面臨的問題阶剑、改進(jìn)的空間。
4.2 指標(biāo)
一個指標(biāo)體系通常包括下列內(nèi)容危号。
?指標(biāo)的維度牧愁。
?每個維度里可選的具體指標(biāo)。
?指標(biāo)的優(yōu)先級評估外莲。
?指標(biāo)的數(shù)據(jù)采集猪半、分析和使用方法。
4.3 指標(biāo)屬性
每一個指標(biāo)都不是獨立存在的數(shù)據(jù)偷线,都必然跟一系列上下文信息相關(guān)磨确,具體體現(xiàn)為類似下面所列的屬性。
4.4 指標(biāo)優(yōu)先級
在裁剪指標(biāo)體系的時候声邦,也應(yīng)該在目標(biāo)優(yōu)先級的引導(dǎo)下乏奥,如圖4-3所示,權(quán)衡有效性亥曹、可靠性和成本邓了,設(shè)計和選擇要使用的度量指標(biāo)恨诱。
?有效性:指標(biāo)數(shù)據(jù)在多大程度上能真實地為達(dá)成目標(biāo)服務(wù)。
?可靠性:數(shù)據(jù)收集以及分析結(jié)果的一致性和可靠性驶悟。
?成本:度量數(shù)據(jù)的收集和分析成本胡野。
以工作量的估算數(shù)據(jù)為例,在使用Delphi專家估算法的時候痕鳍,參與者會將很多可以量化硫豆、不可以量化的上下文信息都納入到估算的考慮當(dāng)中,因此有可能得到更有效的數(shù)據(jù)笼呆。
4.5 指標(biāo)體系的局限性
從前面的過程中可以看到熊响,度量體系的設(shè)計本身蘊(yùn)含了很多人為的主觀判斷和取舍,面臨著不少的局限性诗赌,所以肯定不能滿足所有人的訴求汗茄。
對業(yè)務(wù)目標(biāo)有幫助,能起到引導(dǎo)作用才是我們實施度量體系的價值所在铭若。
4.6 指標(biāo)體系需要演進(jìn)
度量體系中的指標(biāo)不是一成不變的洪碳,所謂“流水不腐,戶樞不蠹叼屠,動也”瞳腌。
企業(yè)內(nèi)部和外部環(huán)境的變化不可避免,我們設(shè)計體系時所期望滿足的目標(biāo)和優(yōu)先級也可能發(fā)生變化镜雨,因而需要隨之增加嫂侍、減少或是修改當(dāng)前的指標(biāo)。
當(dāng)增加一個指標(biāo)的時候荚坞,一定要記住重新審視一下己有的指標(biāo)挑宠,看看是否有可以減去的,否則指標(biāo)體系將會越來越沉重颓影,體系的投資回報逐漸降低各淀。
4.7 度量信息的傳播和使用
1. 度量數(shù)據(jù)應(yīng)該解決數(shù)據(jù)生產(chǎn)者的問題。
2. 各級組織有自己的期望和目標(biāo)并需要上下雙向溝通瞭空。
小結(jié)
今天參加了《研發(fā)教練大會》揪阿,收獲和體會很大,對著自己的心智模型有了改變咆畏。有客觀的數(shù)據(jù)南捂,去直面團(tuán)隊變化,應(yīng)該是團(tuán)隊轉(zhuǎn)型的第一步旧找。