以下内容是我在读了2002年第2期《程序员》杂志上林星先生有关敏捷方法的那篇文章之后的一些感想,由于是“初识”,所以在思想的把握和理解上可能有差错,尽请大家指点。
Agile Alliance成立于2001年2月,其价值观是:
Individials and interactions over processes and tools
Working software over comprehensive documentation
Custonmer collaboration over contract negotiation
Responding to change over following a plan
对于Agile所阐述的内容,我很赞同,并且我认为,抛开具体的方法论,这些见解应该是很容易接受和理解的。尤其在现今这样一个现实环境下,更是如此。实践发展到一定阶段,新的理论和思想便自然而成。
以我的理解,如果要改正既往的错误,我们需要真正承认如下的事实,这是首要的,并且也是从这四条价值观中所体现出来的:
承认人的重要性;
承认变化的存在;
一方面,在一个具体的软件开发场景下,人的具像很多,不同人扮演着不同的角色,发挥着各自的功能。程序员、设计人员、分析人员、管理人员以及客户,他们通过彼此间的沟通和交流,协作完成一个或多个任务。
另一方面,变化无处无时不在。需求的变化,设计的变化,技术手段的变化,还有人的变化,彼此穿插交互,如此的变数,极大的影响着软件开发。
承认上述两点是一切事情的开始。
我觉得Agile的价值观正是上述两点推理之后的必然结论,或者说其价值观的核心便是上述两点。
软件和建筑确是相异,这也就注定了monumental方法的缺陷(但非完全错误)。庞杂的结构,冗长的文档,繁琐的过程,漫长的周期,这些都成了失败或低效的根源。
人确有其特殊性。作为情感的动物,具有可伸缩的承受劳动强度的能力,以及彼此交流间理解和表达的偏差现象,现实环境中人们往往低估了情感、利用了可伸缩性、忽视了偏差现象。这便是第一条价值观的背景。
文档的变化与软件的变化必须同步,否则便部分的失去了其意义。此外,由于人的因素,文档表述的模糊和二义性很难避免。文档尽管有其存在的绝对必要性,然终究是辅助工具。软件本身才是首要的,是代码体现了设计者和实现者的真正意图,最终运行的也是代码本身。这是第二条价值观的存在理由。
还是由于人和变化这两个因素共同作用的结果,导致了第三条价值观的出现。保持动态和开放的态度,将客户也积极纳入team中,而不是为了满足需求的固定而排斥、回避和敷衍之,这是很危险的。
正如前所述,因为太多的变数,第四条价值观的含义是不言而喻的。
此外,理论如果只是理论,就很可惜,源于实践并回归实践,这是很重要的。就中国目前的现状而言,我觉得agile的思想似乎是很适合的,并且更适合于那些小型软件开发团体。
以人为本,拥抱变化,快速迭代,加强交互,以至适应。前提+方法+结果。这便是我所认识的agile思想。