敏捷畫卷:中國軟件史的精彩側影

1

若是把軟件開發當成一個謎題,數代的軟件人在過去的 50 年裏前赴後繼地嘗試解決這個謎題,不過到今天爲止,全世界無論是碼農仍是碼神,咱們仍在這個謎題當中痛苦掙扎。程序員

1965 年 ~ 1985 年,軟件危機逐步浮現,這讓剛剛進入科學管理時代的人們極其不爽。1931 年建成的帝國大廈只花了 410 天,仍是提早完工,寫個軟件還能複雜過蓋摩天樓?那確定是方法有問題。編程

供職於洛克希德軟件技術中心的 Winston W. Royce,在其 1970 年的論文 「Managing the Development of Large Software Systems」 中提出了一個長得像瀑布的流程,業界彷佛找到了一款靈丹妙藥,雖然這位搞了多年航天器的 Royce 老兄並無在他的文章中提到任何瀑布相關的字眼。以後以 1988 年 CMM 的發佈爲重大里程碑,剩下的彷佛就是沿着既定的路線,細化,標準化,量化,優化,再優化……網絡

直到一線幹活的人們發現事情其實不是這樣,因而生長出了各家敏捷流派,以期解決 Fred Brooks 在 「No Silver Bullet」 一文裏提出的複雜性(Complexity)、配合性(Conformity)、隱蔽性(Invisibility)、易變性(Changeability)這些現代軟件開發中本質性(Essence)的難度。架構

2

中國用 20 年的時間邁過了西方 50 年的軟件工程發展史。《敏捷中國史》中一個個鮮活的故事和嚴謹的數據考證一塊兒,描繪了敏捷方法在中國軟件產業的土壤中一步步發芽、傳播的畫卷,構成了中國軟件史一個精彩的側影。工具

《敏捷中國史》不只幫讀者在宏觀層面理清了中國軟件工程領域在過去 20 年裏發展的關鍵脈絡;一系列從業者的經歷巧妙串聯,更讓讀者從個體視角體驗歷史,瞭解衆多普通的軟件人是如何參與着歷史和創造着歷史。區塊鏈

我我的的從業經歷跟敏捷中國史的跨度大體重疊,所以格外有感觸。閱讀每篇內容,本覺得早就遺忘的畫面在腦海之中栩栩如生地一頁頁閃過。測試

3

我還記得 2001 年在新加坡的一個社區圖書館,第一次翻開 Kent Beck 的 Extreme Programming Explained 給我帶來的衝擊。優化

不過一番琢磨以後,我得出了幾個輕率的結論:ui

  • 迭代開發玩不轉,甲方的預算和立項流程根本不可能讓乙方這麼幹(我當時在新加坡的一個系統集成商工做);
  • 結對編程太奢侈,沒有老闆會讓團隊這麼幹;
  • TDD 真是好東西,不過只要團隊裏有一我的不這麼幹,其餘人也幹不下去,讓全部人都用 TDD 不現實。

所謂紙上得來終覺淺,直到四年以後,我本身捲起袖子,在全面採用敏捷實踐的團隊沉浸工做了幾個月,才真正體會了那些理念和實踐的價值和可操做性。讓我頗有共鳴的是,文中很多人和公司初步接觸敏捷的經歷和感覺其實也是相似。翻譯

看到敏捷中國大會的舉辦,大型通訊企業的敏捷轉型,DevOps、設計思惟、精益企業、精益創新的推廣,ThoughtWorks 相關的記述把影像拉回個人記憶。那些熟悉的名字把他們的面容帶回個人眼前,與他們合做中體驗到的酸甜苦辣又從心中流過。雖然是文中不少事件的親歷者,我看到的也只是點點滴滴,從沒想到有人能如此全局又生動地把握和呈現當時的脈動。

說到合做,我 2007 年加入 ThoughtWorks,那是我真正認識熊節的開始,不過我知道熊節卻要更早一些。那時常常在 JavaEye 上津津有味地旁觀一個叫熊節的人跟人吵架,以爲這人吵得頗有看法,並且吵得頗有文筆。因而,我有了無數的機會在現場和郵件裏看熊節懟人,以及被熊節懟,從中學到不少。

爲何專門把懟人拿出來講?這其實跟 ThoughtWorks 的風格有關。不知足於現狀,尋求更好的理念、方法和工具,追求軟件卓越,這是 ThoughtWorks 的使命。ThoughtWorks 指望員工不盲從主流意見,要持懷疑挑戰的態度,以求找到不同的路徑,作到比當前更好。熊節就是這種風格的典型表明。

4

20 年中國軟件工程方法的變遷也是中國軟件行業追趕國際先進水平的歷史。巨大的國內市場已經讓咱們成爲一個軟件大國,但咱們在工程方法領域並沒可以取得匹配的領先地位。

我理解《敏捷中國史》不只僅是對歷史的記錄和記念,更是以史爲鑑。文中一個個致力於改善工做成效的一線從業者,致力於推廣新方法新工具的佈道者,正是他們吸引了一批又一批熱衷軟件開發的人加入進來,一塊兒推進行業的發展。


以上內容來自ThoughtWorks中國區總經理張鬆爲《敏捷中國史》所做的序。在這一系列課程中,做者熊節也用部分章節敘述了在ThoughtWorks與敏捷的不解之緣。

於 2005 年進入中國之後,對中國的敏捷社區發展起到了極大的推進做用。面對行業環境對敏捷並不積極的情況,ThoughtWorks 選擇了主動造勢。「敏捷中國」開發者大會就是這樣啓動起來的。

ThoughtWorks 初入中國

從進入中國開始,ThoughtWorks 就在行業中扮演了敏捷先鋒的角色。

2005 年,被西安豐富的高校資源和高新區政府的熱情態度所吸引,ThoughtWorks 在西安軟件園落戶,目標是服務中國本土客戶。

同年,ThoughtWorks 在國內得到了三個項目:與西安市高新區政府合做的單點登陸系統建設項目,與河北省地稅局合做的電子政務項目,以及與廈門好望角信息技術有限公司合做的網遊物品交易平臺項目。其中第三個項目是惟一來自私企的項目、惟一的互聯網項目,客戶對敏捷方法的配合程度很高。

ThoughtWorks 在這個項目上也投入了很大的資源,Martin Fowler、Fred George、Jim Webber、Perryn Fowler 等全球敏捷和開源社區的知名人物都曾參與過這個項目的架構與開發。在後來的幾年中,好望角是 ThoughtWorks 在中國最重要的標杆項目。

Martin Fowler 的中國之行後,一批 BJUG 和 JavaEye 的網友(如徐昊、李默、熊節、陶文、錢安川等)陸續加入 ThoughtWorks,爲 ThoughtWorks 在中國業務與影響力的初期發展作出了貢獻。

除了在網絡社區和《程序員》雜誌爲主的報刊發表言論以外, ThoughtWorks 開始積極參與國內的行業會議。

2005 年 12 月,熊節表明 ThoughtWorks 出席了微軟企業決策者峯會金融行業論壇,並作了題爲《敏捷軟件開發》的主題演講。

2006 年 6 月,Martin Fowler 再次來華,出席第十屆中國國際軟件博覽會暨中國軟件產業發展高峯論壇,並作發言演講。第十屆軟博會由信產部、發改委、科技部三部委主辦,發言嘉賓包括時任信產部副部長婁勤儉、科技部部長徐冠華等政府官員,以及來自東軟、用友、神州數碼、CA 等知名企業的高管,是當時國內檔次最高的 IT 行業會議。

但 ThoughtWorks 在這些行業會議上的亮相併不成功。熊節在微軟企業決策者峯會上的演講反響平平,幾乎沒有獲得任何反饋。

Fowler 在軟博會的演講中介紹了 ThoughtWorks 給國外一家投資銀行作的項目案例:這個原定計劃 8 個月完成的項目,因爲採用了迭代式的開發方法,在兩個月的時候已經有部分功能上線,並給客戶帶來真正的經濟效益,隨後幾個星期就收回了整個項目的投資。

當時臺下的聽衆一片茫然。因爲政府主導的重點行業信息化工程固有的特色,在當時絕大多數中國 IT 業者的概念中,軟件項目就只有一次預算和一次交付(多發生在年初和年底)。一個項目中有屢次交付、屢次上線、項目還沒結束軟件已經開始賺錢,這樣的事情對於不少人來講不是信不信的問題,而是根本沒法理解。

對敏捷方法、迭代式交付基本理念和運做方式的缺少了解,使得中國的 IT 同行一時沒法認識到 ThoughtWorks 獨特的價值。

在早期的三個本地項目中,ThoughtWorks 與西安高新區政府和河北省地稅局的合做都出現了不愉快,爲時不長即告結束,只有與廈門的私企好望角的合做持續了較長時間。Martin Fowler 在短暫的中國之行中已經看到,當時的中國市場並不特別重視軟件的價值,行業更關注壓縮項目成本,包括縮短項目週期和擠壓人力成本,所以更傾向實施成型產品而非定製開發。

這種對軟件獨特價值的忽視和對成本的極度重視,致使 ThoughtWorks 在與北大方正等典型的本土 IT 企業謀求合做機會時屢屢遭遇尷尬。爲此,ThoughtWorks 決定自行營造行業氛圍,主辦大型行業會議,倡導對軟件價值的重視。

「你還不走嗎?」熊節問郭曉。

此時已是夜裏 11 點多,熊節跟 CSDN 的一名工做人員正在調試會場的音響設備,猛然回頭,發現郭曉坐在會場中間的座位上,兩眼呆呆地望着天花板。

「噢,」被熊節問到,郭曉好像忽然回過神似的,「再等一下子。大家不是也沒忙完嘛。」

說完,郭曉又進入了入神的狀態。他低頭看看一張紙卡片,而後又擡頭望着天花板,過一下子開始唸唸有詞,手還不時揮舞兩下。熊節好奇地走到郭曉身旁,探頭看他手上的卡片寫了什麼。

「這是我明天的 cheat sheet,」郭曉主動拿起卡片給熊節看,只見卡片正反兩面密密麻麻地寫着英文小字,「明天不是我講第一個嗎?得抓緊時間練啊。」

「總共 40 分鐘演講還須要準備?」熊節詫異地問道,「你這種外企高管不是張口就來嗎?」

「哪兒啊,」郭曉笑着說,「你可不知道,我最怕對着一大羣人演講了。緊張啊,緊張起來腿都會抖,跟篩糠似的。況且這是第一次在中國作這麼大規模的演講,更緊張。因此我得先練好,練得熟了就不那麼緊張了。」

說完,郭曉又把注意力放回他的卡片上,一時擡頭呆看天花板,一時念念有詞手舞足蹈。直到其餘人調好全部設備準備關燈,他才離開會議室回房間睡覺, 這時時間已過午夜。

首屆敏捷中國開發者大會在 2006 年 6 月 3 日在北京新世紀日航飯店舉行,大會的主題是「敏捷釋放軟件價值」。此次會議由 ThoughtWorks 和 CSDN 共同主辦,JavaEye 等網上社區以協辦單位身份幫助宣傳。除 Martin Fowler 外,ThoughtWorks 還派出了來自澳大利亞的 Scott Shaw 和來自英國的 Liv Wild 做爲演講人,公司創始人 Roy Singham 也專程到中國參會。現場到會聽衆約 600 人。

在時任 ThoughtWorks 中國區副總經理郭曉的開場演講中,他一方面迎合了行業對成本的重視,列舉 Forrester 的數聽說明採用敏捷開發方法能夠大幅節省軟件項目成本。然而他給出的數據中,產品整體缺陷率的大幅降低或許能夠用測試驅動開發和持續集成等實踐來解釋,但項目速度(若是「速度」定義爲項目完工的整體時間的話)的大幅提高是敏捷解釋不了的,只能解釋爲實施敏捷的團隊(即 ThoughtWorks 的團隊)能力更強。

另外一方面,他也指出「軟件的功能不等於價值」,由於「實際上不少功能最終用戶根本不會用」,反而形成軟件的維護和擴展困難。敏捷方法藉由充分的溝通避免開發沒必要要的功能、藉助技術和管理手段保障軟件的可維護性與可擴展性,從而釋放軟件的價值。

這個演講用一種貼近中國市場現狀的方式闡述了敏捷的價值:沒有超越時代地談論「迭代式發,而是從避免功能浪費和延長軟件生命週期的角度提出論述。後來幾年的實踐證實,這個演講的邏輯,比起 Fowler 「原汁原味」的敏捷論述,在中國市場上更容易獲得承認。 在隨後的主題演講中,來自英國的業務分析師 Liv Wild 具體介紹瞭如何進行「充分的溝通」。

當時的ThoughtWorks 在啓動項目時會採用一套稱爲「QuickStart」(快速啓動)的信息收集方法,以高互動、可視化的工做坊形式釐清項目的願景、利益相關人、業務流程、功能範圍、設計風格、技術架構,並造成明確的交付計劃。當時典型的 QuickStart 需耗時 4 周,後來這套方法在中國被壓縮到兩週甚至一週。即便放下迭代式開發不談,這套需求獲取的方法自己也大大領先於當時國內 IT 企業廣泛的水平。

主題演講以外,ThoughtWorks 的諮詢師還在會場組織了一系列「敏捷遊戲」,邀請現場聽衆參與。「摺紙帽子」遊戲闡述了在開發過程當中與客戶頻繁溝通和反饋的重要性,「搬運氣球」遊戲闡述了迭代式交付對於消減項目風險的價值。 這兩個遊戲都是 ThoughtWorks 在印度舉行的新員工入職訓練營 「ThoughtWorks 大學」(簡稱 TWU)的課程內容,這種參與性強、寓教於樂的形式,在中國 IT 行業的專業會議中前所未見,令與會者耳目一新。

大會結束後,李默創建了「敏捷中國」郵件列表,並根據簽到記錄邀請與會者加入。在後來幾年中,這個郵件列表中發生了一系列很有深度的討論,成爲國內敏捷先行者們又一個重要的在線言論陣地。這個郵件列表隨着一年一度的「敏捷中國」大會不斷成長,正是中國敏捷社區在逆境中砥礪前行的剪影。

結語

在行業信息化項目的甲方與軟件企業的高層領導都對敏捷缺少興趣的幾年時間裏,在一線打拼的一批敏捷實踐者沒有停下腳步。

他們在探尋輕量級開源架構方案的同時,也在各自的工做中採用敏捷方法,尤爲是用戶故事、迭代管理、持續集成和測試驅動開發等實踐,在需求管理、項目管理、配置管理和質量保障等方面得到了紮實的能力提高。

他們在 JavaEye 等在線論壇交流心得、在 BJUG 等線下社區展開深刻的探討和分享。在交換信息、答疑解惑的過程當中,他們也結識了同道的朋友,得到了並肩前行的動力。

在整個行業對敏捷缺少認同的歲月,《程序員》雜誌爲這些「草根」實踐者們保留了一個可貴的言論陣地,使他們得以持續發聲。當全球敏捷社區的領導者 ThoughtWorks 進入中國,這些敏捷實踐者們迅速在其周圍彙集,並以行業大會的形式喊出了響亮的宣言。

隨後,一些對於軟件能力有着最迫切訴求的大企業迴應了這一號召,向着「敏捷中國」這面大旗靠攏。


做爲中國敏捷十餘年發展歷程的親歷者與推進者,資深老程序員熊節從整個中國 IT 發展進程審視敏捷,經過本課程帶你一塊兒從新經歷一代程序員的青蔥熱血歲月,與你一塊兒梳理中國軟件工程領域 20 年發展的關鍵脈絡。

不止於敏捷,你會切實感覺到整個中國 IT 行業、乃至中國經濟的發展。

做者簡介:

熊節,現任寶尊電商成都研發中心總經理,曾任 ThoughtWorks 總監諮詢師、 CSDN 技術主編。

IT 行業打拼 18 年,在金融、零售、政府、電信、製造業、全球醫療等行業的信息化建設方面有着豐富經驗。翻譯了《重構》《軟件工藝》《實現模式》等行業重要著做,是中國 IT 浪潮中敏捷發展的領航者之一。熊節擁有利物浦大學 MBA 學位。

插圖提供:

虎頭錘,旅居墨爾本的老程序員,北郵博士、北大碩士,15 年編程經驗。目前從事支付系統相關業務,曾轉戰區塊鏈、通訊行業。敏捷倡導者、手繪愛好者。

相關文章
相關標籤/搜索