
《軟件工藝》針對軟件開發,提出了一些相當棘手和敏感的問題,并給出了頗具爭議性的結論:從一個數百年來一直興旺發達的系統——工藝學中獲得啟示,尋找答案。《軟件工藝》用5個部分共19章的篇幅,系統地闡述作者的觀點,并試圖回答一直困擾著軟件行業的難題——我們應該如何重組軟件構造的過程,使其能夠如我們所愿地有效運轉?第1部分共4章,對傳統的觀點提出質疑——軟件工程真的是解決軟件開發問題的靈丹妙藥嗎?第2部分共2章,這一部分提出了本書的觀點,即以軟件工藝的視角看待軟件開發。第3部分以7章的篇幅,從不同的角度全面地展現了軟件工藝理論所帶來的主要變化,以及如何實踐這個觀念。第4部分共3章,對比了軟件工藝與軟件工程,并為各自適用的范疇重新劃定了界限。第5部分共3章,分別討論軟件開發中的權宜之計和長期問題。
《軟件工藝》榮獲2002年度Jolt圖書大獎。閱讀本書,有助于引發讀者在軟件開發問題上的獨立思考,《軟件工藝》適合軟件行業的所有從業人員閱讀參考。
本書證明了優秀程序員對于成功軟件開發的決定性影響!它告訴我們: ·技術人員迫切需要轉變觀念。 ·技術不權是技術本身,更應該是為客戶提供價值的基礎。 ·我們該如何培養程序員對技術的精通? ·如何發展小型開發團隊中創造的協作? ·如何加強與客戶的溝通?如果你是一位渴望讓自己的技藝出類拔萃的程序員……如果你是一位渴望雇用的優秀開發的項目經理……這本《軟件工藝》就是為你準備的!
本書針對軟件開發,提出了一些相當棘手和敏感的問題,并給出了頗具爭議性的結論:從一個數百年來一直興旺發達的系統——工藝學中獲得啟示,尋找答案。 本書用5個部分共19章的篇幅,系統地闡述作者的觀點,并試圖回答一直困擾著軟件行業的難題——我們應該如何重組軟件構造的過程,使其能夠如我們所愿地有效運轉?第1部分共4章,對傳統的觀點提出質疑——軟件工程真的是解決軟件開發問題的靈丹妙藥嗎?第2部分共2章,這一部分提出了本書的觀點,即以軟件工藝的視角看待軟件開發。第3部分以7章的篇幅,從不同的角度全面地展現了軟件工藝理論所帶來的主要變化,以及如何實踐這個觀念。第4部分共3章,對比了軟件工藝與軟件工程,并為各自適用的范疇重新劃定了界限。第5部分共3章,分別討論軟件開發中的權宜之計和長期問題。 本書榮獲2002年度Jolt圖書大獎。閱讀本書,有助于引發讀者在軟件開發問題上的獨立思考,本書適合軟件行業的所有從業人員閱讀參考。
Pete McBreen 是一名獨立顧問,對軟件開發情有獨鐘,盡管將很多時間用于寫作、教學和顧問工作,但他仍然堅持每年至少在一個真實項目親手從事編程工作。他特別善于為軟件開發者面臨的問題找到創造性的解決方案。在過去的很多的中,他參與了各種正式和非正式的過程改進活動
第一部分 置疑軟件工程
第 1 章 理解軟件工程 3
軟件工程的悖論 4
等待硬件開發時,軟件開發者在干什么? 5
得到可用的硬件之后,軟件開發者如何
加快交付的速度? 5
傳統開發過程的內蘊 6
軟件工程的當代解讀 7
“足夠好”的軟件—庶民的軟件工程 9
軟件工程適合你的項目嗎? 10
第 2 章 軟件工程的困境 11
“有組織的、可計量的”軟件開發過程現
實嗎? 14
我們當然可以將軟件開發中的某些部分
自動化,不是嗎? 16 第一部分 置疑軟件工程
第 1 章 理解軟件工程 3
軟件工程的悖論 4
等待硬件開發時,軟件開發者在干什么? 5
得到可用的硬件之后,軟件開發者如何
加快交付的速度? 5
傳統開發過程的內蘊 6
軟件工程的當代解讀 7
“足夠好”的軟件—庶民的軟件工程 9
軟件工程適合你的項目嗎? 10
第 2 章 軟件工程的困境 11
“有組織的、可計量的”軟件開發過程現
實嗎? 14
我們當然可以將軟件開發中的某些部分
自動化,不是嗎? 16
“足夠好”的軟件開發方法的危害 17
誰能取代軟件工程? 19
第 3 章 理解軟件開發 21
軟件資產 23
軟件開發需要團隊協作 25
軟件開發的分工有用嗎? 26
沒有一勞永逸 27
尋找比“軟件工程”更合用的隱喻 30
第 4 章 尋找一個比軟件工程更好的隱喻 33
軟件開發的工藝 35
與傳統工藝學的比較 37
軟件開發工藝的復興 38
第二部分 軟件工藝
第 5 章 重拾軟件開發 45
工藝學致力于改善軟件開發的現狀 46
工藝學鼓勵開發者編寫優秀的軟件 47
吹響號角 48
第 6 章 無須執照的工藝學 51
工藝是私人性的 51
同行認可和推薦是獲得更好軟件的辦法 52
執照只是假象 53
執照是在向風車開戰 55
工藝學關注個人 57
軟件開發者不是太少,而是太多 57
第三部分 軟件工藝隱含的意味
第 7 章 工藝學對系統的用戶有何影響 65
軟件容易拷貝,所以軟件工藝能夠有效 66
批量市場的難題 67
工匠與用戶有一種不同的關系 69
但是,請記住:購買者很可能不是
使用者 70
優秀的軟件應該簽上開發者的名字 71
為作品簽名會使情況發生變化 72
工匠應當對作品負責 72
工匠需要挑剔的用戶 73
更小、更堅固的軟件更有利于用戶 73
軟件工藝帶來協作式開發 74
第 8 章 顧客與工匠的關系 75
給我一個真實的交付日期 75
揭穿“足夠好的軟件”的謬論 76
另一種選擇 78
不要只考慮出價最低的開發者 79
差勁的客戶將很難吸引優秀的開發者 80
讓軟件工匠因為自己的作品而獲得榮譽 80
要求開發者對作品負責 81
利用開發者之間的差異 81
雇傭優秀開發者組成的小團隊 82
優秀的開發者究竟值多少? 83
但我們如何知道開發者有多優秀呢? 84
根據交付的成果來衡量開發者的水平 85
在選擇工匠時,客戶在成本和質量之間作
出權衡 87
軟件工匠的專業分工 88
客戶與軟件工匠有長期的聯系 90
維護者是一個榮耀的身份 90
軟件工藝有益于長期使用的軟件 92
客戶與軟件工匠志趣相投 92
第 9 章 工匠的管理 95
軟件工匠不是雇工 96
好的開發者比管理者更有價值 96
軟件開發的實際過程無法詳細定義 97
軟件工匠與管理者的關系 98
以管理優秀的開發者為樂為榮 98
優秀的管理者理解項目的節奏 99
軟件工匠喜歡創造軟件 100
軟件開發的根本從來沒有改變過 100
家有一老,如有一寶 101
軟件工藝要求全新的管理方式 103
軟件工藝不是“有計劃報廢” 103
軟件工匠堅持自己的要求 104
第10章 成為軟件工匠 107
軟件工藝拒絕精細的分工 107
過度的專業化會延誤開發、導致錯誤 108
軟件工匠建造能夠理解的系統 109
工藝學需要獻身精神 109
如何成為軟件工匠? 110
學徒是比學校教育更有效的學習方式 111
技師是工藝學傳統的關鍵 111
工藝學傳統已經延續多年 112
第11章 工藝的掌握 115
軟件工藝大師是什么樣子? 116
善用你的老員工 116
“掌握技藝”意味著使用穩定的技術 117
軟件工匠不會僅僅因為工具“最新最好”
而使用它 118
軟件工程對COBOL的謀殺 119
技藝需要花時間去掌握 120
“掌握”意味著承担起傳遞工藝的責任 121
工匠挑選學徒和技師 122
第12章 學徒開發者 123
我們必須扭轉開發者培訓質量下滑的局面 123
大學文憑與項目開發無關 125
會編程不等于會開發軟件 125
如果必須送初學者去培訓,選擇好的
培訓課程 127
工藝的掌握,學徒比培訓更有效 127
成為學徒是重要的一步 128
為了降低對工作的影響,工匠慎選
學徒 128
重要的是學,不是教 129
學徒不是學校 129
活到老學到老 130
學徒審查師傅的作品,并從中學習 131
學徒的角色 132
從低風險的任務開始 133
晉升到產品開發 133
因為能力而晉升 134
學徒不是廉價勞動力 134
學徒期是時間和精力的投資 136
學徒如何成為技師 137
第13章 技師開發者 139
技師在工藝學傳統中的位置 140
技師開發者 140
技師很少單獨工作 141
技師關注應用程序的交付 141
技師在軟件工藝中扮演關鍵角色 143
第四部分 重新定位軟件工程
第14章 軟件工程項目 149
軟件工程的目標是大型系統項目 150
軟件工程需要專業分工 151
軟件工程項目依舊使用瀑布過程 151
編程是一項刻板的工作 152
軟件開發不是軟件工程項目的瓶頸 152
形形色色的軟件工程項目 153
敏捷方法代替縝密的軟件工程 154
第15章 “軟件工程”隱喻的危害 155
無法以低成本實施軟件工程 155
魚與熊掌可以兼得? 156
相信估算軟件工程項目的確需要
很長的時間 156
軟件工程鼓勵“科學管理” 157
軟件工程輕視不精確的討論 159
軟件工廠:軟件的生產線 160
跨項目復用極難實現 161
冒險的“長時間復用” 162
“標準軟件開發過程”的迷思 164
傳統的分工無助于軟件開發 165
“最佳實踐”是“科學管理”的遺毒 166
最佳實踐使人墨守成規 166
最佳實踐阻礙了過程革新 167
軟件工程強迫我們忽視個人 168
軟件開發者不是可替換的資源 169
偽造一個“理想的開發過程” 169
開發過程,不嫌其多 170
拋棄軟件工程的瀑布式過程 171
瀑布方法需要大型團隊來實施 172
小型團隊絕不要嘗試軟件工程 173
第16章 學習軟件工程的經驗 175
尺度和復雜度 175
做軟件,不容易 176
應用程序需要良好的結構 177
變化的代價很高——如果你不允許變化
的話 178
交流至關重要 179
文檔總是錯的 180
用增量式開發來控制風險 180
精確的估算很難得到 181
借用這些經驗 183
第五部分 星期一的早上
第17章 經驗——項目成功的指示燈 189
根據聲望選擇軟件工匠 189
信任工匠的推薦 190
最后,開始大范圍搜索 191
根據聲望和作品來評價工匠 191
考察工匠的作品 192
工匠的試演 193
由軟件工匠來組建開發團隊 194
根據個人了解和推薦挑選團隊成員 194
年富力強的開發團隊 195
為低預算團隊担心 196
通力協作 196
使用增量式開發 197
盡早解決問題 198
任何人都能學會協作式開發 198
回避極端技術 199
經驗的價值 200
他們去年在哪里? 201
獎勵優秀開發者 201
想要人才,就得付高薪 202
我們付得起那么多錢嗎? 203
做好吃驚的準備 204
第18章 為測試和維護而設計 207
是軟件應用,不是軟件項目 208
應用程序只會退休,不會結束 208
維護團隊理應拒絕丑陋的軟件 209
可維護軟件需要有自動測試 209
使應用程序能夠被測試 210
為維護而設計 211
創建可維護軟件需要經驗豐富的
開發者 212
可維護軟件能夠生存多年 213
長壽的應用程序需要長壽的開發工具 213
開放源碼,軟件工藝的最愛 214
Java對項目的健康有害 214
可維護軟件需要穩定的基礎設施 215
優秀的軟件是全球性的 216
保證軟件的全球性 217
拒絕“有計劃報廢” 218
優秀的軟件需要優秀的用戶界面 218
能夠安全使用的軟件 219
可維護軟件易于診斷 220
外包的危害 221
外包忽視了軟件開發的本質 222
在外包中堅持軟件工藝 223
借助外來的工匠 224
維護是軟件生命中最重要的部分 224
提高維護者的地位 225
維護者當受賞 226
并非所有軟件都必須可維護 226
“為測試和維護設計”不能一蹴而就 227
第19章 活到老,學到老 229
創造學習的環境 229
用內部研討創造學習環境 230
邀請所有人參加講座 231
學習時間是一種投資 231
掌握軟件開發的技藝 231
鼓勵參加用戶組和技術會議 233
慎選培訓課程 234
課前聯系 234
課后跟蹤 235
亡羊補牢 235
鼓勵員工活躍于開發者社群中 236
鼓勵出席技術會議 236
鼓勵開發者担任講師 237
鼓勵開發者寫書 237
沉思的實踐者 238
網載 2014-07-15 13:47:06