敏捷史话(十):我牺牲了滑雪时间,参加了一场软件革命——Jon Kern
“在镜头定格的一刹那,所有美好都和你不期而遇”,这是 Jon Kern 对生活的表达。为了更好地记录生活,他在一家名为 flickr 的网站上创建了一个属于自己的照片博客,在这个博客里,Jon 上传了各种随手拍下的照片,拍摄的对象可能是一艘满载的渡轮,可能是一对长得像警卫的消防栓,也可能是倒映在水面的一只蜥蜴……Jon 不仅在生活中习惯于观察、欣赏身边的小细节,同样在工作中也习惯于从细节入手,推动业务成功。
忽略他身上的耀眼光环,你会重新认识 Jon Kern。
20世纪60年代末,“软件危机”出现之后,人们开始思考:如何满足不断增长的需求,以及如何维护数量不断膨胀的软件产品。这之后的几十年间,快速原型、增量等模型不断涌现,推动软件行业不断向前发展。也正是在这一激烈动荡的时期中,Jon Kern 发现了一个未知的世界,带着对这个世界的好奇,他开始踏足软件开发领域。
1981年,Jon 顺利地从俄亥俄州立大学毕业,获得了航空工程学士学位。带着初入社会的兴奋与激情,他以一名项目工程师的身份进入海军航空推进中心工作,在推进中心,Jon 的工作内容主要是巡航导弹喷气发动机的高级研发测试。这段时间里,Jon 不停地在编写数据采集代码,用来实时计算推力、气流等元素。 不论是工作要求还是自身的性格使然,这段经历都让Jon更加注重细节之道。
5年后,他又以航空航天工程师的身份加入了一家名为 Veda 的国防部咨询公司,从事半实物控制、飞行模拟,以及实时数据采集等研究。很快,软件研发成为 Jon 的兴趣所在,也是在这一过程中, 他逐渐发现了轻量级开发方法的过人之处,也开始探索新的面向对象范式。他认为,这是软件开发的必然要求。
到20世纪80年代末,Jon 开始探索新的面向对象的范式。在这一过程中,Jon 发现,不同的方法学家都在提出自己的面向对象分析设计学,一时间,呈现出百花齐放的局面。但这也带来了一个问题: 各方法学虽万变不离其宗,但都有自己的一套概念、定义、标记符号等,也就是说在这一领域里,还没有一个通用型的概念,当开发人员在选择某一方法学时,会因为这些细节的不同产生混乱。因此,一个统一的表示法亟需建立。
1997年,三位方法学家为打破这一僵局,开始取各方法学之精华,将所有建议合并成一套建议书。这一建议书最终得到 OMG( Object Management Group , 国际对象管理集团)全员的一致通过,UML(Unified Modeling Language, 统一建模语言)就此诞生。
UML 的诞生,让 Jon 找到了坚定的方向和道路,他成为了一名面向对象和轻量级过程的传播者。与此同时,和他志同道合的还有一位朋友,这位朋友就是:Peter Coad —— FDD(Feature Driven Development, 特征驱动开发)的支持者。不仅如此,Peter与Jon还是面向对象编程和 Coad/Yourdon 方法论的早期实践者。对 Jon 而言,Peter 不仅是伯牙子期般的知音,更是携手与共的同路人。
两人有极深的渊源,早在90年代初期,Peter 就与 Jon 一起共事,在工作之余,他们还合著了《Java 设计》一书。在Peter的身上,Jon 学到了一项非常重要的东西,就是“诚实”——软件开发中,要确保团队提升的是“频繁的、切实的工作成果”,而不是无限趋近于完成但始终没有完成的开发过程。“诚实”对 Jon 影响颇深,在之后的工作中,他也一直坚守这一原则,并将其运用到他所在的团队中。
为了更好地帮助客户使用软件开发交付业务价值,1995年,Jon 决定自己创立一家公司,并将其命名为 Lightship。Lightship 公司致力于使用最佳实践的软件开发方法,为客户提供先进的、面向对象的、多层次的解决方案。在 Lightship 的工作期间,Jon 作为开发 IBM 下一代制造执行系统的首席架构师和建模师,为公司做出了巨大的贡献。除却在团队中应用UML之外,Jon 对体系架构也极为看重。他认为, 首要目标是要帮助团队构建一种能够实现有效实践以及可靠的体系结构的环境,最终达到高效地交付业务价值。因此,他着力从 人员、 过程、 技术等角度为团队寻找更好的方法来实现团队目标。
Jon 对团队以及客户的看法赢得了许多人的认可,这其中也包括他的好友 Peter Coad。1999年,Jon 受邀加入 Peter 创建的 TogetherSoft 公司,帮助团队进一步推广UML建模工具。与他共事的团队成员和客户都说,Jon是一个非常有远见的人。当然,这种远见在他的日常工作中淋漓尽致地体现了出来:他重视同团队、客户进行互动,并指导团队成员进行交付和反馈流程,使用技术实践和工具等。在此工作的将近三年的时间里,TogetherSoft 在 UML 建模/ IDE(集成开发环境)产品以及他所组建的专业导师团队的支持下取得了骄人的成就。任职结束后,Jon 留下了一个对 TogetherSoft 更有价值的团队。
2001年,一个新的概念被提出:MDA。MDA(Model Driven Architecture, 模型驱动体系架构)把建模语言用作一种编程语言而不仅仅是设计语言,并以一种全新的方式将 IT 技术的一系列新的趋势性技术整合到一起。这些技术包括基于组件的开发、设计模式、中间件、说明性约束、抽象、多层系统、企业应用整合以及契约式设计等。模型驱动体系架构(MDA)的出现,为如何提高文档编制的便利性指明了解决之道。Jon 在接触到 MDA 之后,发现 MDA 极佳的同步特性也能够为轻量型方法论提供有力支持,随后,Jon 开始了 MDA 之旅。
同样在2001年,Jon Kern 与其他十六位软件开发领域的杰出代表共同编写了“敏捷宣言”。在这一会议上,敏捷联盟成立,他们通过激发群智,将原本零零散散的“轻量”方法整合起来,形成包容度更大的概念,以满足不同团队、不同项目的实际需要。由此, Jon 转向了 Agile MDA/UML 方向。
在之后的几十年间,Jon Kern 以 Agile MDA 的传道者的身份践行软件开发实践,同时也从事敏捷培训等业务。他有过多种身份,例如敏捷顾问、Web 开发人员和架构师,甚至自己创立了几家小型公司。无论过去、现在还是未来,也无论 Jon 的身份、角色发生了什么样的变化,他对敏捷的初心、对面向对象编程的坚持都没有发生改变。
回忆起2001年的那场会议,Jon 说,他们中没有一个人想到,这场聚会竟然会在软件开发领域掀起如此大的波澜。因为在当时,轻量型的方法在软件开发的实践中所占的比重非常小。站在几十年后的今天,我们不难看出,敏捷运动已形成了不可抵挡的形势,仍在浩浩荡荡地向前发展。现如今的敏捷在最初的敏捷基础上衍生出了新的分支和新的内容,对于这些新的内容,Jon 持支持态度,无论如何, 新鲜血液的涌入都能激发敏捷的活力。
而当被问起当年聚会中有什么遗憾的时候,Jon 的回答既出人意料又在情理之中。他是这样回答的,“ 我应该早几天过去,这样在会议开始之前就有更多的时间去那里滑雪了。”
对他来说, 无论是在工作中还是在生活里,细节都是一项至关重要的因素。Jon 不仅善于从长远角度看问题,更善于发现细节,并促使团队或公司完善每一个细节处,从而推动业务成功。自始至终,Jon 都坚持认为,建立起一个持久的、历经检验的过程,以解决具有挑战性的业务问题,并让团队受到面向对象和敏捷方法论的指导,是最有意义的事情,这也正是他一直坚持 Agile MDA/UML 的理由。
现如今,一方面,工作中的 Jon Kern 会在名为“technicaldebt”的博客上分享相关的技术性内容;另一方面,日常中的 Jon Kern 在闲暇时间不仅会与妻子及家人一起出门旅行摄影、滑雪、登山、攀岩,还会去品尝各地的美食,品鉴不同种类的啤酒、葡萄酒……Jon Kern 赋予了生活新的意义,那就是不断地寻求“新知”。