敏捷史话(十一):敏捷宣言“间谍”——Steve Mellor
Steve Mellor 是敏捷宣言的签署人之一,他自称是作为“ 间谍”去参加雪鸟会议的。
起初收到会议邀请时,Steve 非常惊讶,因为他所做的工作一直都是关于建模方面的,很少将深受敏捷实践者喜爱的编码和测试作为重点。确实,我们很少会看到“敏捷”和“建模”同时出现, 接下来我们就来了解 Steve Mellor 与它们的故事吧。
Steve Mellor 与“敏捷”
在收到会议邀请前,Steve 刚读过 Kent Beck 的《极限编程》,书中所说的: 不重视前期思考、 憎恶模型、 反对文档……这些理论着实吓到了他,不过也激发了他的好奇心。
冬日里,闲在落基山脉无事可做,Steve 决定去参加雪鸟会议一探究竟。
会议上,Steve 坦言,他原本想邪恶地来阻挠雪鸟会议的计划,但是在会议的过程中,他却发现自己对大家所提出的绝大多数观点都十分赞同。比如,对“前期大规模设计”的过度强调是存在的。就这样,Steve 成为了一名敏捷的支持者,只不过他关注的仍然是建模的价值,尤其是自己十多年来专注于构建的可执行模型。
Steve Mellor 与“建模”
就在雪鸟会议之前,Steve 几乎与所有的宣言签署者有过一段对话,有时对话不只一次。对话如下所示:

Steve 与其他人意见相左,是因为他们在“模型”这个词的含义上各持己见。一些签署人把模型视为草图,用完即扔;更让人愤怒的是把模型视作蓝图,画完后直接扔给隔壁言听计从的开发人员。这些做法 Steve 都不认可,他认为模型是可以运行的。
雪鸟会议中谈论到模型时,Steve 不断听到,没法用统一建模语言写“Hello World”程序的说法。事实上,这是可以做到的,只是不容易做到。因为早在雪鸟会议之前,Steve 及其团队成员就已经在运用自己的动作语言运行模型了。此时他意识到,当下亟需解决的问题是, 建模要被广泛认为是可执行的。

不相关的两个事物融合,往往会发生奇妙的化学反应。后来,Steve 这样描述“敏捷”和“建模”:“敏捷”和“建模”虽然很少出现在同一个句子中,但它们一点也不冲突。恰恰相反, 建模者能从实施敏捷的人身上学到许多,例如尽早为模型构建测试;遵循敏 捷过程的人,也能受益于提高生产率和轻松地跟客户沟通。无疑,所有人都能从中获益。
其实,Steve 对建模的执着追求,早在几十年前就有了苗头。
Steve Mellor 与他的追求
1974年,Steve 在埃塞克斯大学拿到了首批计算机科学学士学位,而后在世界上最大的粒子物理学实验室,也是万维网的发源地——CERN 总部,开始了他的职业生涯。在 CERN 中,Steve 主要负责加速器控制系统,用以支持 CERN 出售在不同国家或地区的系统。
如果说这是一个计算机工作者梦寐以求的事业,那 Steve 还有第二个、第三个……
1977年,Steve 加入了美国最杰出的国家实验室之一——伯克利实验室,为多个项目提供了系统支持软件。不到两年的时间,比团队中任何成员都年轻的他成为了一名出色的小组负责人,领导团队为多个项目开发控制系统。

此时大量的实操项目对 Steve 来说只是不断的重复,他认为建模在未来的可能性远远大于当下,而眼下, 是要让更多人知道建模的价值。
1982年,Steve 全职加入由程序设计方法学的开拓者之一—— Edward Yourdon 创办的咨询公司 Yourdon Inc.。在那里,他与 Paul Ward 合作,重新开发IT课程。于是,Ward-Mellor 方法问世了,发表在他极具开创性的三部曲《实时系统的结构化开发》中。Steve 向多家公司提供了咨询服务,这也令他重新找到了事业方向。
1985年,Steve 与 Sally Shlaer 共同创立了 Project Technology Inc.,目标是提供咨询服务。几年间,他们不断开设课程,以期将技术更快地传达给客户。也就是在这个时期,他们开发出了Shlaer-Mellor方法:被认为是最早的面向对象分析设计方法学。并于1998年出版了第一本有关该主题的书——《面向对象的分析:在数据中建模世界》,随后又相继出版了《对象生命周期:建模世界》以及有关模型驱动开发的特刊,还创建了第一个模型编译器。
从顾问委员会主席、澳大利亚国立大学兼职教授、首席科学家到程序主席……种种身份都是Steve 在建模领域走出的一步步踏实而坚定的脚步。
曾有人问过 Steve ,如何才能成为一个优秀的架构师,他笑而不语。但他早已归结出一个方法——“ 永远不要相信你最近创建的系统是唯一的,应设法寻找不同方法来解决相同类型的问题。”
架构师如此,程序员亦如此。
敏捷史话(十一):敏捷宣言“间谍”——Steve Mellor的更多相关文章
- 敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland
普通的人生大抵相似,传奇的人生各有各的传奇.Jeff就是这样的传奇人物,年近80的他从来没有"廉颇老矣尚能饭否"的英雄迟暮,不久前还精神矍铄地与好几百名中国学生进行线上交流,积极回 ...
- 敏捷史话(四):敏捷是人的天性 —— Arie van Bennekum
敏捷是人的天性,是你与生俱来的东西.面对敏捷,Arie van Bennekum 下了这样一个结论. 但这并不意味着人们只能通过天赋获得敏捷,对于想要学习敏捷的人来说,敏捷绝不是仅仅靠学习僵化的框架. ...
- 敏捷史话(五):敏捷已逝 —— Dave Thomas
" 敏捷已逝,但敏捷精神长存.因为所谓的敏捷专家卖给你的是方法论,而不是价值."当多数人都在从"敏捷"身上榨取利益时, Dave Thomas 成为了一位逆行者 ...
- 敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries
他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域.八十多岁的他依然运营维护着网站和博客,是极限编程网站 XProgramming.com 的作者,该网站是 ...
- 敏捷开发 and 敏捷测试
名词解释 agile: 敏捷的:灵活:敏捷开发. scrum: 扭打,混打:并列争球:参加并列争球. sprint: 冲刺,全速跑. backlog: 积压的工作:积压待办的事务. retrospe ...
- 【敏捷0】敏捷项目管理-为什么从敏捷开始?为什么从PMI-ACP开始?
作为敏捷项目管理的开篇文章,还是先来简单地说一说为什么先从敏捷开始,为什么是以 PMI-ACP 为参考.当然,这一系列的文章可能不可避免地会为 PMI-ACP 做一些广告,但是我想告诉大家的是,敏捷以 ...
- CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建
疫情之下的高速公路管控重任 江苏高速公路信息工程有限公司(以下简称:江苏高速信息)成立于 2002 年,是江苏交通控股旗下,专业从事高速公路领域机电系统集成.智能交通软硬件研发.大数据分析运营的高新技 ...
- 敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle
2018年3月23日,在美国的芝加哥发生了一起意外刺杀事件.一名男子刺杀了一位首席执行官,而这位不幸的首席执行官就是<敏捷宣言>的合著者--Mike Beedle.Mike 的这场意外令 ...
- 敏捷史话(三):笃定前行的勇者——Ken Schwaber
很多人之所以平凡,并不在于能力的缺失,而是因为缺乏迈出一步的勇气.只有少部分的人可以带着勇气和坚持,走向不凡.Ken Schwaber 就是这样的人,他带着他的勇气和坚持在敏捷的道路上不断前行,以实现 ...
随机推荐
- taro router
taro router https://nervjs.github.io/taro/docs/router.html bug import Taro, { Component, Config } fr ...
- nodejs 调用win32 api
video 教程文件 win32 api >node -v v12.16.1 >npm install -g node-gyp >npm i @saleae/ffi >node ...
- C++算法代码——质因数分解[NOIP2012普及组]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1102 题目描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 ...
- sqlserver日期时间格式转换
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...
- 1.3 PHP+MYSQL+APACHE配置(序)
本节对服务器端web服务进行配置.事实上,对于配置这个环境(WAMP)网上还是有很多教程的,大家可以通过网上的教程完成配置,也不必拘泥于本文.甚至网上有免费的服务器端软件可以选择,比如著名的phpst ...
- Linux 安装python 模块及库
转载于https://blog.csdn.net/csdn_am/article/details/79924744 有时我们使用下载python 自带的pip 安装一些工具包时,会报如下错误 找不到满 ...
- TCP/IP协议学习-1.概述
目录 TCP/IP协议概述 分层 延伸知识 FTP例子 为什么需要网络层和传输层 TCP/IP的分层 封装 分用 总结 本文主要摘抄自书籍<TCP/IP详解卷一:协议>与TCP协议相关内容 ...
- vue监听生命周期
监听生命周期事件 内部监听声明周期函数 data() { return { monitor: null }; }, mounted() { this.monitor = setInterval(() ...
- C++多文件结构和预编译命令
下面随笔将给出C++多文件结构和预编译命令细节. 多文件结构和编译预处理命令 c++程序的一般组织结构 一个工程可以划分多个源文件 类声明文件(.h文件) 类实现文件(.cpp文件) 类的使用文件(m ...
- Get和Post请求方式
Get和Post是两种不同的类型的请求. 它们主要有3点不同. 1.get请求通过浏览器地址栏传递表单数据.post请求通过form data 传递数据,不会通过地址栏. 2.get请求安全性较低,p ...