敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham
在软件开发领域, Ward Cunningham 有许多独到的见解与成就。
1949年,Ward Cunningham 出生于印第安纳州的密歇根市,并在莱克县的一个小镇中长大。怀揣着对计算机浓厚的兴趣,在普渡大学学习期间,他获得了跨学科工程(电子工程和计算机科学)学士学位以及计算机科学硕士学位。1978年,Ward Cunningham 完成了全部学业。
( 普渡大学校徽)
毕业后的 Ward Cunningham 先后担任过研发总监、首席工程师等职位,也自己创办了 Cunningham&Cunningham,Inc.——专门从事面向对象编程的咨询公司,以及一个面向软件开发人员的教育性非盈利组织:The Hillside Group。
在自己丰富的软件开发实践的基础上,Ward 总结出了很多经验以及独到的思想,而这些思想也成为日后软件开发人员进行开发实践的准则。
Cunningham 定律与 Wiki
Ward Cunningham 认为:“ 在互联网上获得正确答案的最佳方法不是提出问题,而是发布错误的答案。”这就是 Cunningham 定律,指人们更正错误的答案比回答问题更快。在日后的工作中,Cunningham 也在一直贯彻这个想法。
20世纪80年代末,Cunningham 在使用一个名为 HyperCard 的程序时,发现了这样一个问题:虽然 HyperCard 程序管理了许多称为“卡片”的资料,每张卡片都可划分字段、上传图片,且支持修改编辑。这个类似网页的程序对当时的人们来说很有用,但要想创建卡片与卡片之间的链接,就非常难了。
![](https://cdn.easycorp.cn/minjie/data/upload/minjiekaifa/202105/f_4255b41d711212c8c8adfb7ea417163c.png)
为了解决这个问题,他在原有程序的基础上增添了一个新的链接功能。用户只需将链接输入卡片上的一个特殊字段,原有每一字段的按钮便会引导用户去新的目标卡片。链接功能加上 HyperCard 卡片的应用,能够让用户更正卡片上的错误内容,并链接到正确的卡片上。
这个在 HyperCard 的程序上写出的小功能,就是 Ward Cunningham 对 Wiki 的最初构想。
1995年,Ward Cunningham 正式推出了第一个 Wiki 网站:WikiWikiWeb,方便程序员们进行思想交流。
关于为什么要创建 Wiki 这一问题,Cunningham 有话要说:“ 起初创建 Wiki,我的目的就是创建一个能够将彼此经验联系起来的环境,从而发现编程的模式语言。”这个想法在他看来稀松平常。以至于后来接受采访时,被问及是否考虑过为 Wiki 的概念申请专利,Cunningham 解释说:“这个想法听起来就像是没人愿意为之付费的东西。”
尽管 Ward Cunningham 不考虑为 Wiki 申请专利,但这并不表明他放弃了 Wiki。自Wiki 诞生之后,他就一直希望在全世界范围内推广 Wiki。
![](https://cdn.easycorp.cn/minjie/data/upload/minjiekaifa/202105/f_738f40c4ecb5928485926d40c0413701.png)
2001年,Cunningham 与他人合著了一本名为《The Wiki Way》的书,书中主要介绍了如何安装、创建并管理 Wiki 系统。2011年,他又启动了 Smallest Federated Wiki 项目——用于 Wiki 联合的软件平台,他为 Wiki 添加了源代码控制系统,以及其他软件开发工具中的分叉功能……
至今,Ward Cunningham 仍在致力于推广 Wiki 技术。
Cunningham 与面向对象编程
作为一名程序员,Ward Cunningham 几乎对所有的编程模式都有所涉猎,包括面向对象和敏捷建模。
他支持面向对象编程中长期关注代码设计的实践,更偏向于注重代码和人的关系。为了推动模式语言的运用,Cunningham 发布了一个新的网站: 模式共享社区,希望将不同作者的软件模式集中在一起,展示现有模式之间的关系,以鼓励用户贡献更多的模式,获得更好的软件。
Cunningham 与极限编程
在创建 Wiki 的前几个月,Ward Cunningham、Kent Beck 一直与坚持软件工程的教条主义者们争论,争论的内容主要在于是否实践代码集体所有权。
Cunningham 认为,“代码集体所有权有很大的好处,不仅能够降低风险,还可以提升开发效率……”而教条主义者们认为,“这简直太荒谬了!实行代码集体所有权后,你永远不会有责任。如果你没有责任,你永远不会有质量。唯一能让你负起责任的方法就是承担责任。如果你不想再让一些人写出 Bug,你就必须把这个责任放在他的身上……”双方并没有说服彼此,但这场争论让 Cunningham 更坚定了维护代码集体所有权的信念。
![](https://cdn.easycorp.cn/minjie/data/upload/minjiekaifa/202105/f_4c6e6220cd4e720d9eee0f0d41bb9fec.png)
在设计 Wiki 的时候,Cunningham 认为 Wiki 也应该实现在大型代码库中协作的过程。例如,你在一堆代码中发现了一个问题,并且知道这个问题的解决方案。但是当你想去解决这个问题的时候,必须同这些代码作者们去沟通、协商,这是一个非常困难且麻烦的过程。而实现代码集体所有,实际上就会大大地减少沟通的成本。
因此,Wiki 中应用了代码集体所有权的理念。Wiki “ 开放”的特点决定了当内容不完整或者出现错误的时候,所有人都可以用他们认为合适的方式加以编辑。 在 Wiki 中,所有参与者都对此负责。
Cunningham 与《敏捷宣言》
“ 我宁愿转向下一个想法,也不愿为保持最后一个想法的纯正而奋斗。”
敏捷真正带给软件的是一种能力,通过使团队中的成员达成共同的目标,实现高质量的产品交付。“当《敏捷宣言》的四个价值观被整齐地列在黑板上时,我们只是在感慨,虽然我们是十七个不同的个体,但写在黑板上的内容是我们共同想要表达的东西。”回忆起2001年的雪鸟会议,Cunningham 这样说。
而对于“ 稀释”,也就是新想法的注入,他认为,这一行业是在不断发展的,如果不能不停地尝试用多种方法去做事情,就不再会有新的创造力。因此,作为一名极限编程的狂热爱好者,Cunningham 极力支持将敏捷与极限编程的工程实践结合使用。
不论是 Wiki、面向对象编程、极限编程还是《敏捷宣言》,对于这些新的尝试,Ward Cunningham 选择迎难而上。对此,他也有自己的一套看法:“ 如果你想要做的好,那就想办法每天都去做 。选择你害怕的事情,而不是选择你擅长的事情,然后克服它,这就是推动我前行的动力。”
敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham的更多相关文章
- 敏捷史话(八):敏捷的破局之道——Martin Fowler
在 Martin Fowler 的世界里,任何事情都有最优解. 1963年,Martin 出生于英格兰的沃尔索尔(Walsall),也在同样位于沃尔索尔的玛丽女王文法学校中接受中等教育.在这里的乡村中 ...
- 专业仿百度百科,维基wiki百科网站开发建设
专业仿百度百科,维基wiki百科网站开发建设,有需要的朋友可以欢迎私聊我 提供一站式服务:联系QQ:8582-36016(私聊),微信:lianweikj 电话:186-7597-7935 支持终端: ...
- 敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle
2018年3月23日,在美国的芝加哥发生了一起意外刺杀事件.一名男子刺杀了一位首席执行官,而这位不幸的首席执行官就是<敏捷宣言>的合著者--Mike Beedle.Mike 的这场意外令 ...
- 敏捷史话(十五):我发明了敏捷估算扑克牌 —— James Greening
雪鸟会议 雪鸟会议前夕,James Grenning 在 Object Mentor 与 Robert C. Martin 一同工作,彼时组织雪鸟会议的 Bob 大叔盛情邀请 James,告知他会议的 ...
- 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
2011年,Kent Beck 加入了 Facebook .那时候的他已年过半百,几十年的经验让他自认为非常了解软件行业.在 Facebook 的新手训练营期间,Kent 开始意识到,Facebook ...
- 敏捷史话(四):敏捷是人的天性 —— Arie van Bennekum
敏捷是人的天性,是你与生俱来的东西.面对敏捷,Arie van Bennekum 下了这样一个结论. 但这并不意味着人们只能通过天赋获得敏捷,对于想要学习敏捷的人来说,敏捷绝不是仅仅靠学习僵化的框架. ...
- 敏捷史话(五):敏捷已逝 —— Dave Thomas
" 敏捷已逝,但敏捷精神长存.因为所谓的敏捷专家卖给你的是方法论,而不是价值."当多数人都在从"敏捷"身上榨取利益时, Dave Thomas 成为了一位逆行者 ...
- 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin
Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...
- 敏捷史话(七):从程序员、作家到摇滚乐手——Andy Hunt的多面人生
与其说 Andy Hunt 是敏捷宣言的创始人,不如说他是一名专业作家来得更为合适.他的<实用程序员><程序员修炼之道:从小工到专家><编程 Ruby:实用程序员指南&g ...
随机推荐
- 前端-CS-04
一:DOM(文档对象模型) document 简写DOM 1.DOM中定义变量用 var 如下截图中:定义demo变量 2.取一个input输入框中的值的方法: 1)先如1中,在dom中顶一个一个变 ...
- 9、MyBatis教程之多对一处理
10.多对一处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 1.创建数据库 CREATE TABLE `teacher` ( `id` ...
- pycharm在debug时总是报UnicodeDecodeError
1,原文链接 解决pycharm run 正常 debug 报 UnicodeDecodeError 错误的问题 2,解决方法 首先尝试 如果上面还不行
- python登陆界面尝试
示例1: """ 编写一个程序 用户可以输入用户名和密码 用户有三次机会 登录成功可以进行相应的操作 输入Q退出系统 """ name_li ...
- java例题_04 分解质因数
1 /*4 [程序 4 分解质因数] 2 题目:将一个大于 2 正整数分解质因数.例如:输入 3, 3=3, 输入 6, 6=2*3,输入 90, 90=2*3*3*5. 3 程序分析:对 n 进行分 ...
- DFS 深搜专题 入门典例 -- 凌宸1642
DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 有 n 件物品 ...
- CI/CD版本回滚Jenkins解决方案
一.创建项目 填写项目名,关系到项目路径对应请谨慎命名 二.项目配置 1.配置字符串参数和选项参数 2.代码仓库配置 3.构建环境 4.构筑脚本配置 5.点击左下方的保存或者应用 三.使用方法 1.发 ...
- java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位
思路:结合Linux和JDK命令一起分析 1.用top命令找出CPU占比最高的进程 2.ps -ef|grep java|grep -v grep 或者jps -l进一步定位,得知是怎样一个后台程序惹 ...
- BLE链路层状态机初探
状态机 BLE链路层把所有的功能放到五种不同的状态中,在不同的状态分别执行不同的功能. 一般来说,BLE设备大致有这么几种状态:空闲,广播,扫描,发起连接和连接成功. 广播和扫描是相对应的,一个设备广 ...
- jasypt-spring-boot提示Failed to bind properties
1 问题描述 在Spring Boot中使用jasypt-spring-boot进行加密,但是提示: Description: Failed to bind properties under 'spr ...