官术网_书友最值得收藏!

自  序

2002年,我偶然得到一本書,名為《解析極限編程》。書中介紹的軟件開發(fā)方法與現(xiàn)實(shí)中使用的工作方法截然不同。書中的很多實(shí)踐看上去都不現(xiàn)實(shí),如測試驅(qū)動(dòng)開發(fā)、持續(xù)集成、結(jié)對編程、用戶故事等,這讓我感到很新奇,怎么會(huì)有團(tuán)隊(duì)這么做呢?但這些方法看上去的確很誘人,于是我?guī)е皯岩伞钡膽B(tài)度,在實(shí)際工作中引入了其中一些方法,但執(zhí)行上還是打了一些折扣。例如:我沒有做測試驅(qū)動(dòng)開發(fā),而只是增加一些單元測試;我沒有做結(jié)對編程,而是要求代碼評(píng)審(code review);我沒有做持續(xù)集成,而是每日構(gòu)建。一段時(shí)間后,雖然能感受到一些收益,但并沒有那么顯著。

直到2005年,我的一個(gè)朋友向我展示了他們?nèi)绾问褂眠@種開發(fā)方式交付真實(shí)的軟件項(xiàng)目,以及真實(shí)的編寫代碼的過程。每一次修改代碼,都編寫并執(zhí)行一系列的自動(dòng)化測試用例;每一次提交,都會(huì)進(jìn)行持續(xù)集成。這是一種從未有過的編碼體驗(yàn),開發(fā)工程師很少需要啟動(dòng)程序,通過單步調(diào)試來找出代碼中的問題。這使我真正相信,的確存在按照這種敏捷方式工作的團(tuán)隊(duì),而且離我并不遙遠(yuǎn)。

2007年,我加入ThoughtWorks,希望能體驗(yàn)敏捷軟件開發(fā)方式。作為一名需求分析師和交付經(jīng)理,我加入了持續(xù)交付平臺(tái)GoCD的產(chǎn)品研發(fā),我的搭檔就是Jez Humble(該產(chǎn)品的產(chǎn)品經(jīng)理),他也是《持續(xù)交付》的作者之一,書中很多實(shí)踐都來自我們團(tuán)隊(duì)自己的軟件產(chǎn)品研發(fā)過程。從想法的誕生到產(chǎn)品上架,我經(jīng)歷了一個(gè)完整的產(chǎn)品研發(fā)過程,也真正認(rèn)識(shí)了敏捷開發(fā)方法,掌握了持續(xù)交付實(shí)踐。

2009年以后,我作為外部顧問或內(nèi)部教練,開始為國內(nèi)外很多企業(yè)提供相關(guān)的組織敏捷與精益轉(zhuǎn)型咨詢服務(wù),客戶既有PC互聯(lián)網(wǎng)時(shí)代的巨頭,也有傳統(tǒng)IT企業(yè);既有國內(nèi)知名大企業(yè),也有高速成長的移動(dòng)互聯(lián)網(wǎng)創(chuàng)業(yè)公司。在與客戶合作的過程中,我對“持續(xù)交付”有了更深刻的理解,也對如何幫助組織實(shí)現(xiàn)“持續(xù)交付價(jià)值”有了全新的認(rèn)識(shí)。

2007年,我認(rèn)為包括極限編程在內(nèi)的眾多敏捷開發(fā)實(shí)踐是快速高質(zhì)量軟件交付的法寶。2010年之后,我發(fā)現(xiàn)實(shí)踐本身雖然非常重要,但更重要的是支撐實(shí)踐的組織管理方法、工作思路與理念。于是,我的口頭禪成了“別提敏捷,只解決問題!”。自2012年后,更多的軟件開發(fā)方法與敏捷流派在國內(nèi)開始盛行,但其背后的核心理念與主要工作原則并沒有根本性的變化。無論什么樣的方法,都應(yīng)該以“解決問題”為出發(fā)點(diǎn),而“解決問題”的一個(gè)重要前提是“能夠正確定義問題,并達(dá)成共識(shí)”。

我當(dāng)然不是思想無用論的支持者。相反,我認(rèn)為思想對每個(gè)人對事物的認(rèn)知和理解至關(guān)重要。但咨詢經(jīng)歷告訴我,對事物的正確理解,并不能確保正確的思想和理念在現(xiàn)實(shí)中落地,也不能確保對企業(yè)有大的和直接的幫助。對方法應(yīng)用者而言,其目標(biāo)是通過對思想理念的認(rèn)知,能夠盡早解決自己(或者客戶)所面臨的棘手問題。

正如企業(yè)經(jīng)營管理一樣,軟件工程發(fā)展的歷程也是各種方法論不斷出現(xiàn)與發(fā)展的過程。從20世紀(jì)60年代“軟件工程”這一術(shù)語的誕生,到20世紀(jì)70年代提出瀑布軟件開發(fā)模型,以及1985年提出的迭代增量開發(fā)和1986年Barry Boehm在“A Spiral Model of Software Development and Enhancement”一文中提出的噴泉模型,20世紀(jì)90年代的軟件能力成熟度模型集成(capability maturity model integration,CMMI)的產(chǎn)生和多種輕量級(jí)軟件開發(fā)方法,21世紀(jì)初敏捷宣言的正式發(fā)表,再到精益軟件開發(fā)方法、看板方法,以及持續(xù)交付和DevOps運(yùn)動(dòng),所有這一切變化,既反映出該領(lǐng)域的快速變化,也反映出沒有哪一種理論或方法能夠完全解決這個(gè)領(lǐng)域面臨的所有問題。

本書希望能夠讓讀者在了解“持續(xù)交付”全貌的基礎(chǔ)上,當(dāng)遇到與IT組織效能相關(guān)的問題時(shí),能夠以適當(dāng)?shù)乃伎挤绞胶捅尘爸R(shí)來應(yīng)對,在今后的工作中少走一些彎路,至少遇到相似問題時(shí),可以有所參考。


主站蜘蛛池模板: 平泉县| 台中市| 清水河县| 祥云县| 丹棱县| 信宜市| 赣榆县| 丰原市| 万盛区| 合肥市| 禄劝| 乐安县| 云和县| 沐川县| 北川| 峨眉山市| 年辖:市辖区| 贞丰县| 富蕴县| 青神县| 郴州市| 军事| 湖南省| 新密市| 迁安市| 辽阳市| 白水县| 吕梁市| 南京市| 清丰县| 武功县| 永和县| 海晏县| 松潘县| 三亚市| 梧州市| 云林县| 鄂伦春自治旗| 永清县| 江津市| 法库县|