敏捷史话(十):我牺牲了滑雪时间,参加了一场软件革命——Jon Kern
“在镜头定格的一刹那,所有美好都和你不期而遇”,这是 Jon Kern 对生活的表达。为了更好地记录生活,他在一家名为 flickr 的网站上创建了一个属于自己的照片博客,在这个博客里,Jon 上传了各种随手拍下的照片,拍摄的对象可能是一艘满载的渡轮,可能是一对长得像警卫的消防栓,也可能是倒映在水面的一只蜥蜴……Jon 不 仅在生活中习惯于观察、欣赏身边的小细节,同样在工作中也习惯于从细节入手,推动业务成功。
忽略他身上的耀眼光环,你会重新认识 Jon Kern。
一、“初识软件开发”
20世纪60年代末,“软件危机”出现之后,人们开始思考:如何满足不断增长的需求,以及如何维护数量不断膨胀的软件产品。这之后的几十年间,快速原型、增量等模型不断涌现,推动软件行业不断向前发展。也正是在这一激烈动荡的时期中,Jon Kern 发现了一个未知的世界,带着对这个世界的好奇,他开始踏足软件开发领域。
1981年,Jon 顺利地从俄亥俄州立大学毕业,获得了航空工程学士学位。带着初入社会的兴奋与激情,他以一名项目工程师的身份进入海军航空推进中心工作,在推进中心,Jon 的工作内容主要是巡航导弹喷气发动机的高级研发测试。这段时间里,Jon 不停地在编写数据采集代码,用来实时计算推力、气流等元素。 不论是工作要求还是自身的性格使然,这段经历都让Jon更加注重细节之道。

5年后,他又以航空航天工程师的身份加入了一家名为 Veda 的国防部咨询公司,从事半实物控制、飞行模拟,以及实时数据采集等研究。很快,软件研发成为了 Jon 的兴趣所在,也是在这一过程中, 他逐渐发现了轻量级开发方法的过人之处,也开始探索新的面向对象范式。他认为,这是软件开发的必然要求。
二、“UML/MDA”
到了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 之旅。
三、“Agile UML/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 赋予了生活新的意义,那就是不断地寻求“新知”。
敏捷史话(十):我牺牲了滑雪时间,参加了一场软件革命——Jon Kern的更多相关文章
- 敏捷史话(十五):我发明了敏捷估算扑克牌 —— James Greening
雪鸟会议 雪鸟会议前夕,James Grenning 在 Object Mentor 与 Robert C. Martin 一同工作,彼时组织雪鸟会议的 Bob 大叔盛情邀请 James,告知他会议的 ...
- 敏捷宣言(Agile Manifesto)和敏捷开发十二原则
敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...
- 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
2011年,Kent Beck 加入了 Facebook .那时候的他已年过半百,几十年的经验让他自认为非常了解软件行业.在 Facebook 的新手训练营期间,Kent 开始意识到,Facebook ...
- 敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland
普通的人生大抵相似,传奇的人生各有各的传奇.Jeff就是这样的传奇人物,年近80的他从来没有"廉颇老矣尚能饭否"的英雄迟暮,不久前还精神矍铄地与好几百名中国学生进行线上交流,积极回 ...
- 敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries
他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域.八十多岁的他依然运营维护着网站和博客,是极限编程网站 XProgramming.com 的作者,该网站是 ...
- 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith
"我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...
- 敏捷史话(三):笃定前行的勇者——Ken Schwaber
很多人之所以平凡,并不在于能力的缺失,而是因为缺乏迈出一步的勇气.只有少部分的人可以带着勇气和坚持,走向不凡.Ken Schwaber 就是这样的人,他带着他的勇气和坚持在敏捷的道路上不断前行,以实现 ...
- 敏捷史话(五):敏捷已逝 —— Dave Thomas
" 敏捷已逝,但敏捷精神长存.因为所谓的敏捷专家卖给你的是方法论,而不是价值."当多数人都在从"敏捷"身上榨取利益时, Dave Thomas 成为了一位逆行者 ...
- 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin
Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...
- 敏捷史话(七):从程序员、作家到摇滚乐手——Andy Hunt的多面人生
与其说 Andy Hunt 是敏捷宣言的创始人,不如说他是一名专业作家来得更为合适.他的<实用程序员><程序员修炼之道:从小工到专家><编程 Ruby:实用程序员指南&g ...
随机推荐
- Web前端入门第2问:前端开发是什么?与后端、全栈的区别是什么?一个完整的Web项目有哪些角色参与?
一个完整的Web项目有哪些角色参与? 提出需求(这一步可以是甲方,也可以是用户) 需求分析,画出原型图(产品经理) 根据原型图输出 UI 界面及交互图(UI/UX设计师) 根据UI及交互效果画出页面, ...
- MySQL查询建表规范
因为之前一直再查找一些比较好的数据库规范,以方便在开发时连接 MySQL 进行查询/建表的时候,能根据规范来执行,达到提高 查询速度 / 执行 SQL 的性能 和提升 MySQL 的整体性能, 这里主 ...
- go 定义接口解决 import cycle not allowed
前言 go项目运行报错: import cycle not allowed,导入循环(import cycle) 报错原因,在Go语言中,两个或更多的包之间形成了相互依赖的关系,即A包导入了B包,而B ...
- go gin web服务器使用fvbock/endless优雅地重启或停止
gin使用fvbock/endless gin 正常使用注册路由时: package main import "github.com/gin-gonic/gin" func mai ...
- CSAPP学习笔记——chapter4 处理器体系结构
CSAPP学习笔记--chapter4 处理器体系结构 这一章相对于其它的章节,是相对来说比较困难的一章:其它章节的一些内容都在计组,计网,操作系统等课程里面已经接触过一些概念,但是有关处理器,我才发 ...
- Oracle PLSQL 存储过程无法进入单步调试
使用PLSQL工具调试存储过程的时候,不管你怎么设置断点,当你点击测试的时候就瞬间执行而过你无法进入单步调试 解决办法:
- ubuntu 22.04安装harbor
一.概述 Harbor 是一个企业级的云原生容器镜像仓库,由 VMware 开发并贡献给 Cloud Native Computing Foundation (CNCF).它在传统的 Docker R ...
- python环境配置命令
在Python中,创建新的环境通常指的是创建一个隔离的Python环境,以便在该环境中安装和管理不同版本的库,而不会影响到系统中其他Python环境的库.这通常用于解决不同项目之间的依赖冲突.下面是一 ...
- rabbitmq的高级部分
producer的XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&quo ...
- python爬虫(BeautifulSoup)爬取B站视频字幕
比如"https://www.bilibili.com/video/BV1zU4y1p7L3"这个视频,有1.2万条弹幕 首先,B站视频的弹幕是有专门的接口传递数据的:http:/ ...