软件开发社区“宗教信仰”之争风波未息

  • 李剑

2007 年 10 月 17 日

话题:敏捷语言 & 开发架构文化 & 方法

James O. Coplien 在 10 月 9 日,以创造并追随宗教信仰来描述当今的软件产业,在社区中引起了轩然大波。他在文中提出,我们应该更关注于思考,而不是对所谓的最新技术和热门词汇言听计从,否则就有可能采用并非是最有效率的做法。

Dave Quick 对 Coplien 表示了赞赏

人们常常都在渴求一条“唯一正确的道路”,然后把对质疑他们观点的意见都视为异端……虽然我不清楚是不是人们只有对于新生的热门事物才投入如此的狂热,但这确实是个非常普遍的问题,你的文章把它带到了明处,做的棒极了!

有些人发现某些技术可以在某些场景下提高生产率,然后试图加以推广,这并没什么错。但人们很容易就只关注于技术本身而忽略了它们所适用的特定场景。

你所提到的所有热门词汇都有其价值所在。大多数阐述它们的文章都多把重点放在了其价值所在上面。但是,了解什么时候不该用某种技术,应该是和了解什么时候该用某种技术同样重要的……不幸的是,我们中的大多数人都抱着教条主义的观点,把对技术局限性的描述当作攻击来看待。

在 InfoQ 英文站的报道中,gcom nz 回帖支持说
用 Jim 的说法来形容 REST 狂热者(RESTefarians)真是再贴切不过了,那些人一直坚信只有他们的做法是正确的,GET,PUT,POST,DELETE 是唯一的真正的集成技术,所有胆敢对此提出质疑的人都会被他们大肆批判。

无独有偶,国内开源项目SpringSide创始人江南白衣在 9 月 22 日也对“REST 狂热者”提出了批驳
构建一个分布式的系统并不仅仅只有一种方法。REST 是一种,SOA 是另一种,分布式的对象和 RPC 也是。任何人认为 REST 是唯一的方法都是天真的!

现实就是,许多真正成功的 Web 应用程序都不是 REST 的。这样不好吗?我不觉得——他们只是在利用 TimBL 和其他人发明的东西去很好地完成工作,并做 得很棒。他们没有遵循 REST 规则,这重要吗?只是对于 REST 盲从者来说很重要;那些应用程序运行得很好,可以伸缩,用户们喜欢——谁会说它们错了呢?

不迷信权威和热门技术,从实际出发,寻找最适合解决当前问题的方案,从实践中来,到实践中去,这不单单是开发人员所应遵循的原则,更是“人们正确地认识世界和能动地改造世界的无限发展的过程”。在几年前《J2EE Developement Without EJB》译文版上市的时候,ThoughtWorks 咨询师、InfoQ 中文站编辑熊节便在序中写到:

Rod Johnson 发出振聋发聩的一呼:尔等不必向泥胎偶像鼎礼膜拜,圣灵正在尔等自身——这就是他在书中一直倡导的“循证架构”(evidence- based)。选择一种架构、一种技术的依据是什么?Rod Johnson 认为,应该是基于实践的证据、来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见。书中谈到了企业应用方方面面的问题和 解决办法,而这些方案无一不是这种“循证方法”的产物。……

这潮流不是 Spring 和 Hibernate,也不是 IoC 和 AOP,甚至不是“轻量级架构”,而是一切实事求是的“循证架构”的工作方式。



但是,Colpien 在文章中却拿出了 TDD 作为反例:

我们被告知“只有做 TDD 你才是一个专家”……,却不告诉我们为什么要相信这一点,没有证明,也没有证据。只是说“你就相信这一点吧,没错儿!”。
难道整个敏捷社区在宣传敏捷文化,推广敏捷实践中所做的种种努力,就真的如 Cosplien 所说的一样“盲目”么?在我们成功地使用了 TDD 来提高生产率和代码质量的时候,是不是也会对他的话产生怀疑呢?

“信仰”这个词从广义来讲说范围太大,如果对其进行细化,至少可以分成两类:一种是自己并无亲身体验,只是听到众多技术专家、敏捷推动者对 TDD 的宣传、推 崇,就陷入了对这个“魔咒”无限的狂热中,这个可以算是“宗教信仰”;另外一种,则是在实际开发过程中有过使用 TDD 的丰富经验,并且对 TDD 所带来的益处深有体 会,所以才会坚定不移的继续使用 TDD,并致力于它的推广。那么,你对敏捷和 TDD 的感觉应该属于哪一种?

极限编程 Yahoo group中,llja Preuss 对 Coplien 反驳说:

是的,我有时候也看得到身边的教条主义,但是却很难把它跟敏捷甚至是软件开发联系起来……我所亲见的,更多是对已经获得成功的事物所怀有的激情——它往往容易和教条主义 / 信仰相混淆。要是我们不和别人分享经验的话,我们的激情就会看上去有些不合情理。

但如果去要求人们,或是整个社区“虔诚的程度低一些”,那就好像要人别容易动感情一样。纯属扯淡。

Amr Elssamadisy 则在 InfoQ 英文站上对 Coplien 开火
我不知道 Jim Colplien 能不能算是 TDD 或是 Agile 的权威……看过他的众多文章后,我不得不怀疑他是不是真的亲身体验过 TDD,并且在宣布结论之前先把自己的成见放在一边。

他甚至在文中这样写:“集成测试和系统测试已经被长期实践证明为效率最低下的寻找 bug 的方式”。 他凭什么这么说?实际上,系统测试是除了代码审查以外,唯一一个得到全面的文档记录,并通过实验测试证明为可以改善代码质量的方式了……

基于以上种种,我只能得出一个结论,Colplien 先生是带着有色眼镜来写这篇文章的,而且他的说法也多多少少没有事实依据可言。

看来,Colpien 的核心观点并没有问题,只是选用了错误的论据进行了错误的证明。这也提醒我们要以冷静理性的态度对待问题,否则便有可能在远离一个极端的同时,走向另一个极端。

您的身边是否也存在有对新技术、热门词汇的盲从者?或者敏捷文化的传播者?您对他们的看法是怎样的呢?欢迎与我们分享您的感受和经验。

敏捷语言 & 开发架构文化 & 方法