敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
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 曾在中国做了一个很切题的主题演讲——“ 务实的理想主义”。现实和理想往往是比较矛盾的,但是在充满竞争和变化的现代社会,这种矛盾却无处不在。对软件开发来说,就需要一个理想的目标。你的目标建立了吗?请勇敢地去尝试吧!