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