敏捷史话(十一):敏捷宣言“间谍”——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 就是这样的人,他带着他的勇气和坚持在敏捷的道路上不断前行,以实现 ...
随机推荐
- DevOps tools
DevOps tools mozart & ansible https://www.ansible.com/integrations/devops-tools websocket jenken ...
- macOS open url from terminal
macOS open url from terminal open URL && start terminal bash open url in chrome open chrome ...
- Dart: 请求graphql数据
import 'package:http/http.dart' as http; const url = "http://127.0.0.1:4000/graphql"; main ...
- RocketMq灰皮书(三)------MQ使用
RocketMq灰皮书(三)------MQ使用 在使用MQ之前,我们回顾一下前两篇博文的内容. 我们大致了解了RocketMQ的四个概念,分别是:Producer,Consumer,Message和 ...
- http server源码解析
本文主要过下http生成服务和处理请求的主要流程,其他功能并未涉及. 使用例子 const http = require('http'); http.createServer((req, res) = ...
- SpringBoot Test 多线程报错:dataSource already closed
1:前言 最近在项目中使用多线程对大任务拆分处理时,进行数据库操作的时候报错了. 业务代码大概是这样的: @Service public calss TestServiceImpl implement ...
- Charles 抓取https 包
1. Recording Settings中 include 添加 host , port端口为443 2. SSL Proxying Settings 选中 Enable SSL Proxyin ...
- if __name__ == '__main__':简单粗暴解释
这个脚本被执行的时候,__name__ 值就是 __main__ ,才会执行 main()函数如果这个脚本是被 import 的话,__name__的值不一样.main()函数就不会被调用.这个句子用 ...
- C++入门(1):计算机组成
系列文章尽在 | 公众号:lunvey 学习C++之前,我们有必要了解一下计算机的简单组成,毕竟C++是需要操作内存的一门语言.大家或许知道内存是什么,但是内存怎么读取和操作数据以及数据的表现形式会不 ...
- go mod包管理 加代理下载
原始go.mod文件 module xxx go 1.14 报错 i/o timeout go mod init workorder go mod init: go.mod already exist ...