敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

在软件开发领域,Ward Cunningham 有许多独到的见解与成就。

1949年,Ward Cunningham 出生于印第安纳州的密歇根市,并在莱克县的一个小镇中长大。怀揣着对计算机浓厚的兴趣,在普渡大学学习期间,他获得了跨学科工程(电子工程和计算机科学)学士学位以及计算机科学硕士学位。1978年,Ward Cunningham 完成了全部学业。

敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

(普渡大学校徽)

毕业后的 Ward Cunningham 先后担任过研发总监、首席工程师等职位,也自己创办了 Cunningham&Cunningham,Inc.——专门从事面向对象编程的咨询公司,以及一个面向软件开发人员的教育性非盈利组织:The Hillside Group。

在自己丰富的软件开发实践的基础上,Ward 总结出了很多经验以及独到的思想,这些思想也成为日后软件开发人员进行开发实践的准则。

 

Cunningham 定律与 Wiki

 

Ward Cunningham 认为:“在互联网上获得正确答案的最佳方法不是提出问题,而是发布错误的答案。”这就是 Cunningham 定律,指人们更正错误的答案比回答问题更快。在日后的工作中,Cunningham 也在一直贯彻这一想法。

20世纪80年代末,Cunningham 在使用一个名为 HyperCard 的程序时,发现了这样一个问题:虽然 HyperCard 程序管理了许多称为“卡片”的资料,每张卡片都可划分字段、上传图片,且支持修改编辑。这个类似网页的程序对当时的人们来说很有用,但要想创建卡片与卡片之间的链接,就非常难了。

敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

为了解决这个问题,他在原有程序的基础上增添了一个新的链接功能。用户只需将链接输入卡片上的一个特殊字段,原有每一字段的按钮便会引导用户去新的目标卡片。链接功能加上 HyperCard 卡片的应用,能够让用户更正卡片上的错误内容,并链接到正确的卡片上。

这个在 HyperCard 的程序上写出的小功能,就是 Ward Cunningham 对 Wiki 的最初构想。

1995年,Ward Cunningham 正式推出了第一个 Wiki 网站:WikiWikiWeb,方便程序员们进行思想交流。

关于为什么要创建 Wiki 这一问题,Cunningham 有话要说:“起初创建 Wiki,我的目的就是创建一个能够将彼此经验联系起来的环境,从而发现编程的模式语言。”这个想法在他看来稀松平常。以至于后来接受采访时,被问及是否考虑过为 Wiki 的概念申请专利,Cunningham 解释说:“这个想法听起来就像是没人愿意为之付费的东西。”

尽管 Ward Cunningham 不考虑为 Wiki 申请专利,但这并不表明他放弃了 Wiki。自Wiki 诞生之后,他就一直希望在全世界范围内推广 Wiki。

敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

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 更坚定了维护代码集体所有权的信念。

敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

在设计 Wiki 的时候,Cunningham 认为 Wiki 也应该实现在大型代码库中协作的过程。例如,你在一堆代码中发现了一个问题,并且知道这个问题的解决方案。但是当你想去解决这个问题的时候,必须同这些代码作者们去沟通、协商,这是一个非常困难且麻烦的过程。而实现代码集体所有,实际上就会大大地减少沟通的成本。

因此,Wiki 中应用了代码集体所有权的理念。Wiki “开放”的特点决定了当内容不完整或者出现错误的时候,所有人都可以用他们认为合适的方式加以编辑。在 Wiki 中,所有参与者都对此负责

 

Cunningham 与《敏捷宣言》

 

我宁愿转向下一个想法,也不愿为保持最后一个想法的纯正而奋斗。”

敏捷真正带给软件的是一种能力,通过使团队中的成员达成共同的目标,实现高质量的产品交付。“当《敏捷宣言》的四个价值观被整齐地列在黑板上时,我们只是在感慨,虽然我们是十七个不同的个体,但写在黑板上的内容是我们共同想要表达的东西。”回忆起2001年的雪鸟会议,Cunningham 这样说。

敏捷史话(十七):维基(Wiki)背后的灵感来源—— Ward Cunningham

而对于“稀释”,也就是新想法的注入,他认为,这一行业是在不断发展的,如果不能不停地尝试用多种方法去做事情,就不再会有新的创造力。因此,作为一名极限编程的狂热爱好者,Cunningham 极力支持将敏捷与极限编程的工程实践结合使用。

不论是 Wiki、面向对象编程、极限编程还是《敏捷宣言》,对于这些新的尝试,Ward Cunningham 选择迎难而上。对此,他也有自己的一套看法:“如果你想要做的好,那就想办法每天都去做。选择你害怕的事情,而不是选择你擅长的事情,然后克服它,这就是推动我前行的动力。”

 

往期《敏捷史话》系列

敏捷史话(十六):我对《敏捷宣言》没有半点贡献—— Brian Marick

敏捷史话(十五):我发明了敏捷估算扑克牌 —— James Greening

敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith

敏捷史话(十三):我被 Facebook 解雇了——Kent Beck

敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries

敏捷史话(十一):敏捷宣言“间谍”——Steve Mellor

敏捷史话(十):我牺牲了滑雪时间,参加了一场软件革命——Jon Kern

敏捷史话(九):用做面包的方式做敏捷——Alistair Cockburn

敏捷史话(八):敏捷的破局之道——Martin Fowler

敏捷史话(七):从程序员、作家到摇滚乐手——Andy Hunt的多面人生

敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin

敏捷史话(五):敏捷已逝 —— Dave Thomas

敏捷史话(四):敏捷是人的天性 —— Arie van Bennekum

敏捷史话(三):笃定前行的勇者——Ken Schwaber

敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle

敏捷史话(一):用一半的时间做两倍的事——Jeff Sutherland

{{o.name}}


{{m.name}}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/84011.html

(0)
上一篇 2021年8月12日 19:43
下一篇 2021年8月12日 19:43

相关推荐

发表回复

登录后才能评论