敏捷史話(十三):我被 Facebook 解僱了——Kent Beck

敏捷開發社群發表於2021-04-08

2011年,Kent Beck 加入了 Facebook 。那時候的他已年過半百,幾十年的經驗讓他自認為非常瞭解軟體行業。在 Facebook 的新手訓練營期間,Kent 開始意識到,Facebook 與他所見過的任何公司都不一樣。

Facebook 確實在做真正的敏捷,不僅非常靈活,而且時刻在為改變做準備。在 Facebook 訓練營結束後,Kent 開始探索 Facebook 的程式碼庫和文化。他發現,Facebook 用於構建和擴充套件產品的方法,徹底重塑了他對軟體工程的信念。

Kent 剛加入 Facebook 時,它有2000名員工,當 Kent 離開時,員工數量擴充套件到了25000。Facebook 非常注重6個月的稽核週期。每6個月,員工就需要證明自己對 Facebook 產生的影響。而 Kent 對“影響”一詞顯然持有不同意見。

 

“這是我關心的指標,這是我的工作,這是我個人的影響……”

 

類似這樣的話,Kent 需要每6個月彙報一次。這確實能使每個人都專注於自己正在做的事,保證每個人對公司有所貢獻。但同時也有一定的缺點,社交工程師可以輕鬆提取私人資訊,會使應用變得更加混亂,員工沒有動力去關注自己工作的弊端,而弊端也無法得到改進,從而引發破窗效應,沒有人會為公司做出一個好的決定。

 

所以 Kent 認為,Facebook 需要從關注影響向關注決策質量轉移,否則這種“僅對一方有利”的激勵方案,可能會導致類似英國劍橋分析公司倒閉情況的發生。

 

不管付出成本如何,代價多大,Kent 都只想做正確的事。不幸的是,這次的代價是他失去了 Facebook 的工作。幸運的是,正是他一直以來的堅持,才為軟體開發帶來了創世之舉。

 

極限程式設計的誕生

 

從小到大,Kent Beck 的家庭中都瀰漫著技術的味道。他出生於矽谷, 有著一個對無線電痴迷的祖父,以及一個電器工程師父親,因此,小時候的 Kent Beck 就早已成為了業餘的無線電愛好者。

 

長大後,Kent Beck 在世界著名的公立研究型大學——俄勒岡州立大學,取得了電腦科學學士與碩士學位,正式踏上了程式設計之路。

其實早在讀本科期間,Kent Beck 深受建築師 Christopher Alexander 的影響,開始研究起了模式。Christopher Alexander 是第一個研究建築物和社群模式的人,為城鎮、花園等建築模式確定了統一的模式語言。Kent Beck 在此基礎上聯合其他軟體工程師一起開發出了設計模式以及實現模式,使程式碼編制真正工程化,就如同大廈的結構一樣,造就了軟體工程的基石脈絡,成為了軟體界中倡導這種工作方式的先行者之一。

 

1993年在《 Smalltalk 報告》上,Kent Beck 開始撰寫關於 Smalltalk 模式的專欄,同時結識了另一位使用 Smalltalk 的同仁——Ward Cunningham。Smalltalk 是個十分動態且特別適合重構的環境,週期非常短,因此很容易快速修改程式碼,也可以很快寫出極具功能的軟體。

 

Kent 和 Ward 開始認識到重構的重要性,他們繼續共同探索著新的軟體開發方法,仔細觀察和分析各種簡化軟體開發的前提條件、可能性以及面臨的困難,希望能發展出一套適合這類環境的軟體開發過程。

 

後來他們逐漸意識到,重構對於提高他們的生產力非常重要。從那時起,他們就一直在工作中運用重構的技術,並不斷精煉這套程式,成為了軟體重構技術的先行者。

 

終於,這個方法被實現了。

1996年,Kent Beck 成為 C3(Chrysler Comprehensive Compensation)的專案負責人,在為克萊斯勒公司的全部 87,000多名員工處理薪酬系統問題時,為了對專案的開發方法學進行改善,他提出了極限程式設計方法。為此,Kent Beck 還專門改善了極限程式設計方法學,並寫了一本《解析極限程式設計》書籍。

 

雖然像 Ward Cunningham 、Ron Jeffries 等諸多敏捷大神級人物都先後參與到 C3 專案中,但系統仍然比預定時間延遲了幾個月才上線,而且該系統上線後的效能一直是個問題——只能處理10,000名員工的薪酬問題。最終,克萊斯勒公司在2000年2月終止了 C3 專案。

 

雖然 C3 專案從根本上來看算不上成功,但從另一個角度看,C3 專案中誕生了極限程式設計方法和一系列優秀的軟體開發實踐,因此它在軟體工程的發展史上留下了 濃墨重彩的一筆。

 

面對極限程式設計這個創新領域,Kent Beck 交出了一份份漂亮的答卷,不斷驗證了極限程式設計的“存在即合理”。不管是和軟體開發大師 Martin Fowler 合著的奠基之作——《規劃極限程式設計》,還是《測試驅動開發》《解析極限程式設計》等系列著作,都讓更多人領略到了極限程式設計的精髓,也極大程度上引導了極限程式設計的流行。

 

敏捷開發的誕生

 

2000年春,一些極限程式設計的支持者們以及有助於推動極限程式設計的革命者們,一起參加了 Kent Beck 在俄勒岡州的羅格里夫酒店組織的“極限程式設計領導會議”,主要討論如何來推動極限程式設計的發展。

 

這次會議對於極限程式設計的發展起到了重要作用,同時也掀起了一次軟體革命。

 

會前,Bob以及其他幾個參會者都相信,像極限程式設計這樣的輕量級方法將會使整個行業受益,應該會有更多人想要推動這樣一個組織的建立。然而事實並非如此,會議上很多參會者對此並沒有太高熱情。

 

會議休息時,Martin Fowler 找到 Bob 簡單討論了一番,是否還要再次舉辦一個會議,將會上提議的組織範圍擴大到像敏捷和自適應軟體開發等所有的“輕量級方法”,而不侷限於極限程式設計。他們認為這樣不僅可以提高所有人的積極性,同時還能促使擁護這些方法的人進行更多、更全面的補充。

 

於是,就有了後來的雪鳥會議。 Kent Beck 的極限程式設計,也在慢慢改變著軟體行業。當然,Kent Beck 的貢獻遠不僅如此。

 

JUnit 的誕生

 

對於眾多的 Java 程式設計師來說, Kent Beck 和 Erich Gamma 共同打造的 JUnit,意義更加重大。也許正是因為這個簡單而強大的工具,才讓更多程式設計師更加認可和信賴極限程式設計,從而引發了敏捷開發的狂潮。

軟體大師的手筆和理念使得 JUnit 簡單而強大,它將 Java 程式設計師代入了測試驅動開發的時代。JUnit 連任了2001、2002年“Java World 編輯選擇獎”以及2003年“Java World 最佳測試工具”、“Java Pro 最佳 Java 測試工具”等眾多獎項,深受 Java 程式設計師好評。

 

如今,有關敏捷 Scrum 的認證遍地叢生,反觀極限程式設計卻不爭不搶。Kent 在一次採訪中聲稱,如果像 Scrum 一樣,通過極限程式設計來獲利,似乎不是特別道德,而且他對認證持嚴重的保留態度。

 

確實,Kent 創造了極限程式設計、測試驅動開發等等,但這些影響後來軟體開發的方法在網路上都是免費的。唯一讓 Kent 賺錢的途徑只有書籍,在技術領域乃至整個商業領域,我們都需要更多這樣的人。

 

很早以前,Kent 曾在中國做了一個很切題的主題演講——“ 務實的理想主義”。現實和理想往往是比較矛盾的,但是在充滿競爭和變化的現代社會,這種矛盾卻無處不在。對軟體開發來說,就需要一個理想的目標。你的目標建立了嗎?請勇敢地去嘗試吧!

相關文章