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

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 給我帶來的衝擊。

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

  • 迭代開發玩不轉,甲方的預算和立項流程根本不可能讓乙方這麼幹(我當時在新加坡的一個系統集成商工作);
  • 結對編程太奢侈,沒有老闆會讓團隊這麼幹;
  • 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 年編程經驗。目前從事支付系統相關業務,曾轉戰區塊鏈、通信行業。敏捷倡導者、手繪愛好者。


分享到:


相關文章: