【前言】

此刻我們並不知道,這些「軟體流程改善」的結果是否為典型的結果。我們認為詮釋這些結果最好的方式,就是將這些結果當作是指標,看看它在受到支持的環境下,會有什麼事情發生。

── J. Herbsleb等人

這本書要談的是,如何創造一個有利於軟體工程進行的環境。在這樣的環境裏,你的組織將可實現軟體工程協會(SEI)和其他流程改善機構的一些客戶所宣稱的,在品質與生產力方面獲得令人印象深刻的進展。

  本書是《溫伯格的軟體管理學》系列的第四本。前三本書告訴我們必須做些什麼,而這本書是說明如何創造出實踐必要的變革所需之環境。如果你尚未讀過其他三本,閱讀這本書應該會促使你回去讀那三本。你可以用任何順序來閱讀,但這本書應該留到最後才讀,即使那可能是你第二次讀它了。

  由於沒有從一開始就創造出一個有利於軟體工程的環境,結果軟體工程的歷史在實現品質與生產力的進展上,大多數是以失敗收場。為了改善糟糕的情況,很多經理人將錢花在CASE工具、CAST(電腦輔助軟體測試)工具、CAD工具、方法論、外包、訓練、應用套裝軟體等方面,但是他們極少一開始就把力氣花在改善、或換掉那些造成這種後果的經理人。

  我們這一行一直是個「尚未成功」的產業,而且除非我們能破除對於「特效藥」的迷思,真正去處理關於經理人的問題,不然我們將永遠是個未成功的產業。這種迷思有一部分是來自於只是將每項工作當作更高階工作之踏腳石的那些經理人。海軍上將瑞克瓦(Hyman Rickover)在談到這類經理人或工作者所犯的錯誤時說:

「當一個人從事某項工作時(任何工作都一樣),他必須認為他『擁有』那項工作,而他的所做所為,就好像他會永遠一直從事那項工作一樣。他必須負責盡職地關照他的工作,就好像看待自己的事業或自己的錢一樣……有太多人將整個的工作生涯花在尋找下一份工作上。當一個人覺得他擁有現在的工作,也依照這樣的態度來做事,那他根本不需要擔心他的下一份工作。」

身為經理人,我們承認有成長的需要,無論是人或組織都需要成長。請不要沮喪,因為我已經看過數百位經理人成功地成長,我知道我們辦得到。一旦經理人開始成長,我看過他們能成功地進行本書所介紹的許多美妙的軟體工程活動,相信你也做得到。

  這些活動是什麼?《溫伯格的軟體管理學》系列的前三卷談到,想要在軟體工程的管理工作上獲致高品質的成果,你需要具備以下三種基本能力:

1.     具有了解複雜情況的能力,以便你能為專案做好事前的規畫,從而進行觀察並採取行動,使專案能依計畫進行,或適時修正原計畫。

2.     具有觀察事態如何發展的能力,並且有能力從你所採取的因應行動是否有效,來判斷你觀察的方向是否正確。

3.     在複雜的人際關係中,即使你會感到迷惘、憤怒、或是非常害怕,甚至害怕到想要一走了之並躲起來,但你仍然有能力採取合宜的行動。

第四卷要處理組織變革的問題,並告訴我們如何運用前三卷所提到的工具來進行管理,將原本的組織改造成不僅現在能了解和實踐優良的軟體工程觀念,而且未來也能了解和實踐這些觀念。我們將這種組織稱作「防範未然型」(Anticipating)的組織。

  所有的組織都會改變,但是「防範未然型」組織讓組織變革成為一種明確的、普遍性的功能。與前一階段的「把穩方向型」(模式3)的文化相比,「防範未然型」的文化具有四個特性:

1.     「防範未然型」文化具有有效的模型,以協助人們在理智與情感上了解組織與個人的改變。

2.     組織裏的員工(不僅是經理人)有相當高的比例是擁有技能的變革能手(change artist),他們獲得組織實務上的支持,而能夠使變革之輪平順運轉。

3.     「防範未然型」文化習慣前瞻未來,並為組織變革做好規畫。在變革能手的協助下,這種文化知道如何堅持到底地執行計畫。

4.     「防範未然型」文化讓有計畫的變革立足於健全軟體工程實務的穩定基礎上,使評量和預測得以進行。

本書的內容分成四部,分別涵蓋「防範未然型」組織的這四個特性,並說明如何讓組織具備這些特性。

  軟體作家與研究者Capers Jones告訴我們,專案越大,失敗的機率也越高。他的觀察適用於軟體專案,但是,要改變你所在的組織的品質文化,其工作份量比起您的組織曾做過的任何軟體專案都要大得多。那正是為什麼我將「組織變革」這個主題單獨寫一本書的原因,也是為什麼它是系列中最後一冊的原因。因為若要獲得成功,你必須從前三冊開始所有的練習。

  為了帶領組織文化的變革,你必須變成一位傑出的軟體工程經理人,而光是閱讀這四卷書是不夠的。這四卷書中大多數的章節都有建議延伸閱讀,而你應該遵循這些建議進行。此外,大多數章節的結尾都有「練習」這一節,讓你在學習的最高潮時檢驗學習的效果。

  談完所有這些之後,你可能發現至少要閱讀四十本書(不是要你立刻讀完!),而這四本書僅僅是個導引,你還需要花幾千個小時練習你所學到的。然而,相較於你為了要成為傑出的軟體工程師,已讀過多少書練習了多少小時,這個負擔似乎還算合理。如果你能這樣努力下去,你必定能達成你的新目標,也就是至少成為一位傑出的軟體工程經理人,能帶領整個組織進行轉型。

  祝你一路順風!

 

【目次】

 

致台灣讀者  傑拉爾德‧溫伯格  7

Preface to the Chinese Editions  10

〔導讀〕從技術到管理,失落的環節  曾昭屏  13

〔推薦序〕期望改變又不想受傷害的軟工思維  王克明  17

編輯說明  24

謝詞  35

前言  39

 

第一部 讓變革真正能夠發生的模型

 

1         一些常見的變革模型    45

 

1.1  擴散模型  46

1.2  地板有洞模型  48

1.3  牛頓模型  53

1.4  學習曲線模型  57

1.5  心得與建議  59

1.6  摘要  60

1.7  練習  62

 

2         薩提爾變革模型  65

 

2.1  模型綜述  65

2.2  1階段:近期現狀階段  67

2.3  2階段:混亂階段  72

2.4  3階段:整合與實踐階段  74

2.5  4階段:「新現狀」階段  77

2.6  心得與建議  79

2.7  摘要  82

2.8  練習  84

 

3         對變革的反應      87

 

3.1  抉擇點  88

3.2  運用麥理曼的時區理論來決定變革介入時機  94

3.3  資訊流動的方式  97

3.4  統合變革  100

3.5  防範未然型組織中的變革  102

3.6  心得與建議  104

3.7  摘要  106

3.8  練習  109

 

第二部 防範未然型組織中的變革才能

 

4         變革才能    115

 

4.1  個人對變革的反應  116

4.2  個案研究:變更座位安排  121

4.3  個案研究:程式碼修補  123

4.4  個案研究:知道什麼事該丟下不管  125

4.5  心得與建議  127

4.6  摘要  128

4.7  練習  131

 

5         大部分事情維持不變    133

 

5.1  你在維持什麼?  134

5.2  揭露使用中的理論  138

5.3  變質  140

5.4  設計維護債務  141

5.5  變革才能債務  144

5.6  破壞變革才能  145

5.7  經理人的簡單規則  148

5.8  心得與建議  149

5.9  摘要  150

5.10  練習  153

 

6         練習成為變革能手        155

 

6.1  去上班  155

6.2  做一項小改變  157

6.3  什麼都不改變  160

6.4  改變關係  162

6.5  成為觸媒  165

6.6  完全在場  167

6.7  完全不在場  170

6.8  應用加法原則  172

6.9  安排「大旅行」(Grand Tour)  174

6.10  以史為鑑  176

6.11  將理論化為實務  178

6.12  自我發展  180

 

第三部 替未來的組織做規畫

 

7         統合規畫第一部分:資訊      183

 

7.1  從統合規畫開始  184

7.2  資訊蒐集  188

7.3  技巧  201

7.4  心得與建議  203

7.5  摘要  205

7.6  練習  207

 

8         統合規畫第二部分:系統思考        211

 

8.1  解決問題  212

8.2  成長與規模  215

8.3  風險與報酬  222

8.4  信賴  227

8.5  移除掉完全靜止不動  230

8.6  心得與建議  234

8.7  摘要  236

8.8  練習  240

 

9         戰術性變革規畫  243

 

9.1  何謂戰術性變革規畫?  244

9.2  開放式的變革規畫  245

9.3  以倒推方式做規畫  247

9.4  挑選實際可行的新目標  250

9.5  從頭到尾言行一致  253

9.6  挑選與測試目標  255

9.7  什麼會妨礙達成目標?  260

9.8  面臨不可預測性時的規畫模型  261

9.9  回饋計畫  268

9.10  心得與建議  270

9.11  摘要  271

9.12  練習  273

 

10       以軟體工程師的思維做規畫 275

 

10.1  工程控制的含意  276

10.2  工程管理行動的基本圖  285

10.3  控制的層級  286

10.4  心得與建議  292

10.5  摘要  295

10.6  練習  296

 

第四部 應該改變什麼

 

11       穩定軟體工程的構成要件      301

 

11.1  為什麼軟體沒什麼不同  302

11.2  為什麼軟體成本如此高昂  304

11.3  何處可找到改進空間  307

11.4  為什麼軟體專案會失敗  309

11.5  資訊失敗  310

11.6  找出資訊失敗的解決方案  314

11.7  行動失敗  317

11.8  心得與建議  319

11.9  摘要  320

11.10  練習  321

 

12       流程原則    323

 

12.1  百萬富翁測驗  324

12.2  穩定性原則  326

12.3  明顯性原則  330

12.4  可評量性原則  334

12.5  產品原則  337

12.6  心得與建議  340

12.7  摘要  341

12.8  練習  343

 

13       文化與流程          345

 

13.1  文化/流程原則  346

13.2  文化與流程互動的例子  347

13.3  流程的三種含義  353

13.4  是什麼創造了文化?  358

13.5  心得與建議  360

13.6  摘要  362

13.7  練習  364

 

14       改善流程    369

 

14.1  三種流程改善層次  370

14.2  一個流程改善案例  371

14.3  讓看不見的變成可見  376

14.4  預防未來再發生  377

14.5  學到的教訓  378

14.6  但是我們公司不一樣  379

14.7  但是那代價太高  382

14.8  心得與建議  385

14.9  摘要  386

14.10  練習  388

 

15       需求原則與流程  389

 

15.1  固定需求的假設  390

15.2  軟體品質第零法則  392

15.3  需求的流程模型  395

15.4  孿生流程  397

15.5  需求的向上流動  399

15.6  管理階層對需求流程的態度  401

15.7  心得與建議  403

15.8  摘要  404

15.9  練習  407

 

16       改善需求流程      409

 

16.1  衡量需求的真正成本與價值  410

16.2  獲得對需求投入的控制  414

16.3  獲得對需求產出的控制  421

16.4  獲得對需求流程本身的控制  425

16.5  心得與建議  429

16.6  摘要  431

16.7  練習  434

 

17       正確地啟動專案  437

 

17.1  專案的先決條件  438

17.2  想要的結果  442

17.3  指導方針  444

17.4  資源  446

17.5  責任歸屬  448

17.6  後果  451

17.7  心得與建議  455

17.8  摘要  458

17.9  練習  462

 

18       正確地維持專案  463

 

18.1  瀑布模型  464

18.2  級聯模型  466

18.3  疊代強化  468

18.4  可再利用的程式碼  469

18.5  原型設計  471

18.6  重新規畫  474

18.7  心得與建議  479

18.8  摘要  482

18.9  練習  486

 

19       適當地終止專案  487

 

19.1  測試  488

19.2  測試vs.竄改程式  492

19.3  如何知道專案何時步入失敗  499

19.4  使專案重生  504

19.5  心得與建議  506

19.6  摘要  509

19.7  練習  512

 

20       以更小規模更快速建造          515

 

20.1  更小的意思是什麼?  516

20.2  縮減規格的範圍  519

20.3  消除最糟糕的部分  520

20.4  盡早拿掉  525

20.5  管理遲來的需求  528

20.6  心得與建議  533

20.7  摘要  535

20.8  練習  538

 

21       保護資訊資產      539

 

21.1  程式碼庫  542

21.2  資料字典  543

21.3  標準  546

21.4  設計  547

21.5  測試庫及其歷史  549

21.6  其他文件  551

21.7  增進資產保護  551

21.8  心得與建議  555

21.9  摘要  557

21.10  練習  560

 

22       管理設計    561

 

22.1  設計創新的生命週期  562

22.2  設計的動態學  564

22.3  艾德蒙.希拉瑞學派  570

22.4  法蘭克.洛伊.萊特症候群  571

22.5  泰德.威廉斯理論  573

22.6  太多廚師  577

22.7  哎呀!  577

22.8  心得與建議  579

22.9  摘要  579

22.10  練習  583

 

23       引進技術    585

 

23.1  調查工具文化  586

23.2  技術與文化  588

23.3  技術移轉定律  593

23.4  從危機到鎮靜的型態管制  596

23.5  技術移轉十誡  600

23.6  第十一條戒律  606

23.7  心得與建議  607

23.8  摘要  609

23.9  練習  612

 

第五部 結語

 

附錄A 效應圖  619

附錄B 薩提爾人際互動模型  623

附錄C 軟體工程文化模式  625

附錄D 控制模型  633

附錄E 觀察者的三種立場  641

附錄F 梅布二氏人格類型指標與四種氣質  643

 

註解  651

法則、定律、與原理一覽表  673

人名索引  679

名詞索引  683

 

溫伯格的軟體管理學:擁抱變革(第4卷)

溫伯格的軟體管理學:擁抱變革(第4卷)

Quality Software Management, Volume 4:Anticipating Change

arrow
arrow

    EcoTrend 發表在 痞客邦 留言(0) 人氣()