最近在学习敏捷软件开发,看的书是"Agile Principles, Patterns, and Practices in C#",这里摘录一部分书中的精华与大家分享。
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over process and tools.
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
敏捷软件开发宣言
我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:
人和交互 重于过程和工具
可以工作的软件 重于面面俱到的文档
客户合作 重于合同谈判
随时应对变化 重于遵循计划
虽然右项也有其价值,但我们认为左项更加重要。
体会:敏捷软件开发重在强调人与人的交互,通过可以工作的软件来与客户合作交流,以便随时应对变化。体现的是一种沟通、反馈、尽早交付、持续迭代以及拥抱变化的思想。
Martin's First Law of Documentation
Produce no document unless its need is immediate and significant.
体会:除非文档的需求是迫切及重要的否则就不要写文档,取而代之的应该是可以工作的代码。因为代码是明确的,它反映了事实,不会有任何歧义,而且永远是最新。
Principles
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity -- the art of maximizing the amount of work not done -- is essential.
- The best architectures, requirements and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
敏捷宣言遵循的原则
- 我们最优先要做的是通过尽早地、持续地交付有价值的软件来满足客户需要。
- 我们欢迎需求的变化,即使到了开发后期。敏捷过程能够驾驭变化,为客户创造竞争优势。
- 经常交付可以工作的软件,从几个星期到几个月,时间间隔越短越好。
- 在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起。
- 围绕斗志高昂的人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成任务。
- 在团队内部,最有效率也最有效果的信息传达方式,就是面对面的交谈。
- 可以工作的软件是进度主要的度量标准。
- 敏捷过程提倡可持续开发。出资人、开发者和用户应该总是保持稳定的开发速度。
- 对卓越技术和良好设计的不断追求有助于提高敏捷性。
- 简单——尽量减少工作量的艺术是至关重要的。
- 最好的构架、需求和设计都源自自我组织的团队。
- 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。