GHawk

UP & XP之争,意义何在?(续)

虽然我没能去参加BEA的活动,但是相关的资料已经下载并且浏览过了,确实收获不少。所以,对于庄兄的这些想法我很理解。

相信不只你我,大部分的人都比较认同敏捷化的过程,希望使过程变得敏捷。的确,这是个好东西,之前我也说过“敏捷过程是三赢的”这样的话。

我所关心的问题是“如何能够用好XP?”。

庄兄认为“汤的味道,不需要什么过程控制”,我也会认同。为什么?因为你我都是中国人。大部分中国人不会认为汤的味道需要什么过程控制。但是想想看,如果你在不同地方买到的肯德基炸鸡味道各异;同一批次生产的同型号的汽车形状各异;银行里取出来的一叠百元大钞大小不一,你不会觉得奇怪么或是有那么一点点愤怒么?

西方人(甚至学习西方的日本人)对品质的重视程度却完全不同。他们不允许肯德基炸鸡的味道有很大偏差(即便你觉得无所谓);“2毫米工程”不允许整车的总装长度发生2毫米以上的偏差(即便你觉得无所谓);百元大钞……(我想谁都不会无所谓)。

所以,一切质量都有标准,一切标准都应该被度量!这就是工程学的目标之一,为了实现更严格的质量标准,就需要过程控制和度量。

庄兄所说,用测试用例保证代码的质量其实还是采用了“测试用例”作为度量的标准。唯一的问题是:“如何确保测试用例的质量”。显然,我们不能把一把不直的尺子度量出来的结果作为可靠的参考依据。怎么解决呢?“结对编程”么?嗯,这是一个不错的方式,那么最终该信赖谁呢?是Pair中的A还是B呢?或者,是Leader么?那么又是谁提出的要求呢?是老板么?还是客户?政府?法规?市场?……问题没有终结了。

不要学习哲学家的方法,提出一层又一层无法解决的问题。我们是工程师,应该试图解决问题才对!解决问题的关键在于,XP同样需要标准!为了制定标准,必要的文档是不可以少的。而且,标准本身的质量是严苛的。因为,作为标准,他不可以含糊其辞、模棱两可。在标准的基础之上,我们才可以谈什么TDD、Pair Programming之类的实践。

回到争论的开端。我引用了林先生的话“UP是正楷;XP是草书。要先学好UP才能学好XP,先学XP会乱套。”我对这句话的理解如下:这句话并没有批判UP或是XP,只是指出了一个学习的顺序。我认为这句话是有实践依据的,因为UP强调的是一种经典的工程方法。软件工程本来就源于其他行业的工程实践经验。UP利用大量的文档对开发活动进行约束和记录。正是这种重量级的过程规范了规范了从PM到Coder的所有活动,有问题可以参照文档,看看自己应该怎么做。文档也可以作为日后评估这个过程的依据。随着整个团队和每个个人的经验不断积累,开发活动中的日常行为渐渐形成了一种职业习惯。然后可以通过对UP的配置,逐渐减少文档的使用量,一些没有必要的文档就可以省去,更具团队的实际能力调整过程。UP是可配置的,不必要的文档没有存在的理由,这一点UP和XP没有什么两样。当然,随着大家的职业习惯越来越好,经验越来越丰富,个人和团队就可以采用更敏捷更轻便的过程,逐渐过渡到XP上去。

反过来,如果一开始就没有详尽的文档,很多活动(比如设计、版本控制)往往会脱离控制,进入一种无序的、混乱的状态。没有文档可参考,就意味着很多问题只能问人,而不同人的回答可能各异,同一个人对同一个问题的两次回答也可能不同!当然,如果整个团队的工程素养和个体的职业习惯都比较好的情况下可能不会发生类似的情况。但是这种工程素养和职业习惯从哪里来,可能单靠的XP是不足以培养出来的。

“UP是正楷;XP是草书。要先学好UP才能学好XP,先学XP会乱套。”这句话表明了UP和XP在一定程度上是存在冲突的,并且提出了一条路线去降低和避免这个冲突。

再次需要强调的是庄兄所提到的“XP是一种思想”,这点我认同。但是我认为这个除了思想之外,还是一种“文化”。这种思想和文化也是出于软件工程多年来的实践,其中也不免有UP等其他过程。不能简单地认为“我们只要吸取历史的教训,提出新的思想和文化就不会再犯同样的错误了。”很多时候历史总是一次又一次地重演着。新的思想和文化如果不能被准确地理解和运用,它所带来的可能仍然是它原本想解决的问题。只有我们具备了引入这种文化的基础,才能把它变成自己的文化,否则这仍然是挂在嘴边行于表面的一种不求精髓只求模仿的伪文化、伪思想。这一点对于UP和XP的实践者来说没有什么两样。

posted on 2006-04-25 15:03 GHawk 阅读(2030) 评论(4)  编辑  收藏 所属分类: 软件过程

评论

# re: UP & XP之争,意义何在?(续) 2006-04-25 16:02 yuxie

引用“反过来,如果一开始就没有详尽的文档,很多活动(比如设计、版本控制)往往会脱离控制,进入一种无序的、混乱的状态。没有文档可参考,就意味着很多问题只能问人,而不同人的回答可能各异,同一个人对同一个问题的两次回答也可能不同!当然,如果整个团队的工程素养和个体的职业习惯都比较好的情况下可能不会发生类似的情况。但是这种工程素养和职业习惯从哪里来,可能单靠的XP是不足以培养出来的。”

如果你的团队没有足够的经验和工程素养,却又不想组织足够的培训和交流,那么即使文档再多、再详尽也无济于事!  回复  更多评论   

# re: UP & XP之争,意义何在?(续) 2006-04-25 17:30 GHawk

这就好比法规、制度,它存在,但是依然可以违反它。
文档提供了一个做事的准则和流程,声明了一些大家都应该知道和遵守的东西。如果一个人连明文规定的东西都无法理解和遵守。那怎么指望他能够仅仅通过沟通就能遵守团队的行动准则,成为团队的一员呢?应该是很有难度的吧。

文档是UP进行过程控制的手段,XP用来解决过程中采用的是“沟通”。文档的适用范围更普遍一些 ,“沟通”虽然便利,但是会受到很多条件的限制。从UP到XP,可以明确知道哪些文档从“文档”变成了“沟通”;从XP到UP,却很难把所有的“沟通”转化成“文档。”这是因为文档的成本通常比沟通来得高。  回复  更多评论   

# re: UP & XP之争,意义何在?(续) 2006-04-27 23:58 joachim

我想最重要的是需要有一份简单概要的指导原则性的规范,就像法律先要有宪法一样。
随着项目的进行和经验的积累,各种规范、文档会多得吓人,新人进来不大会去完整的读或者学习长达上百页甚至更多的文档。XP的交流应该是更有效。
文档固然可以积累和沉淀知识,但如何让这些沉淀的东西更好更广泛的传播,似乎UP也没有很好的解决办法。  回复  更多评论   

# re: UP & XP之争,意义何在?(续) 2006-05-11 17:23 SpiderMan

XP 与 UP之争的背后,体现着两种不同文化理念、价值观的差异

打个比方:

教育、培养人的道德观念,提高人们的素养,来降低犯罪。

还是

制定大量的法律条例,来打击、制止犯罪。

  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: