在这个报告中,我们将首先解释十个核心ets of Agile Development are, and then we’ll look at the specific example of XP, and then we’ll look at how this model impacts the product manager and how to deal with some of the challenges it poses.
There are twelve core principles that the various Agile methods all have in common. The ways in which each method carries out the principles vary sometimes considerably, but the common philosophy is:
1.首要任务是通过早日和频繁地提供贵重软件 - 贵重软件
2. Deliver working software frequently, from a couple of weeks to a couple of months – frequent releases
3. Working software is the primary measure of progress – software matters more than documents
4.欢迎改变要求，即使是发展迟到 - 倾听和迅速学习
5. Business people and developers work together daily through the project – intense collaboration
6.在激励个人周围建立项目 - 为他们提供他们需要的环境和支持，并相信他们完成工作
8.自我组织团队 - 敏捷架构中最好的架构，要求和设计;任何地方的好主意
9.持续注意技术卓越和良好的设计增强了敏捷 - 重构经常
10. Agile processes promote sustainable development – should be able to maintain a constant pace indefinitely – no death marches
11. Simplicity is essential – less is more
12. At regular intervals, the team reflects on how to become more effective, and then adjusts its processes accordingly – post-mortems
Overview of Extreme Programming
- 对编程 - 软件由两个程序员一起编写，在一台计算机周围一起工作。
– Simple Design – the idea is to design and build only what you need right now and not for some potential future need.
– On-site Customer – the developers have a customer that represents what the product needs to do, sitting with the team and constantly available for clarification and decisions.
- 增量开发 - 策略是开始小，做很多“迷你版”，以便将产品迅速发展到它需要的地方。
– Scheduling and Planning – estimates are provided by the engineers and the customer decides scope and timing for each release.
– Continuous Code Review – based on the pair programming model, the developers are constantly reviewing each others’ work.
– Continuous Testing – the technique is to have the developers write unit tests as they code, and the customer writes functional tests as use cases are defined, and these tests all are run on an automated, ongoing basis.
– Continuous Build – the software is constantly built and integrated so that problems are found early and the system is always kept in a buildable state.
- 连续重构 - 软件开发人员通过重构代码来简化和改进实现，同时保持运行所有测试。
– Collective Code Ownership – rather than the model where each developer “owns” his own section of code, in the XP model every developer can improve any code anywhere in the system anytime he sees an opportunity and need.
- 开放式工作区 - 这个想法是，该团队在一个大型房间里与该中心的开发人员一起工作。
– 40-hour Weeks – the belief is that overtime should be limited so that quality remains high.
- 通过代码的文档 - 信仰是最有用的文档是软件本身，并且团队需要遵循编码标准。
Certainly this is very much a software developer-centric view of the world, as there really isn’t much besides the programmers (figuratively and literally at the center) and the user (the customer). However, in general, many of these techniques represent industry best practices and pose little concern to the product manager.
Defining the Product:
Typically the main concern is this notion of an on-site customer. However, the product manager, to the degree she has studied the target customer and understands his needs, environment and concerns, as well as the competitive situation, can do her best to serve as a proxy for the customer in this process, just as is typically done by the product manager in conventional methods.
The second area of concern is with the consequences of some of these techniques for a scalable, high-performance, reliable, and maintainable product. These concerns quickly get into near-religious arguments about the best way to develop and test software, which are largely beyond the scope of the product management role, but the main point relative to the product manager is to ensure the release requirements are clearly defined up front. The engineering organization can then address the concerns of how to manage the risks in the best way they see fit.
The XP process typically looks to the customer to define the use cases (called stories) which serve as the basis for functional tests. On small efforts this may be fine, but for larger, general product efforts, there is a need for a dedicated role to concentrate on identifying and creating the necessary test cases to ensure scalability, functionality, performance, fault-tolerance, localizability, etc. This is typically the QA function, and there is no reason it can’t be used with the XP model. The key is that the developers are responsible for the unit tests, and the QA people are responsible for the other types of tests (e.g. system, integration, functional tests).
Deploying the Product
However, for product organizations building commercially available products and services, it is important to augment these methods with product management, product design, and quality assurance to ensure you’re building a product that will be useful to, and usable by, a broad range of users and customers, and that will be robust enough to operate in a range of customer environments.