承诺(Commitment):我们对团队承担的工作有了更大的掌控,更加坚定了对成功的承诺。
专注(Focus):我们将全部精力和技能都聚焦在所承诺的工作上,团队同心协力来促使更快的交付。
公开(Openness):团队通过自己的方式共同完成工作,每个成员都对进展和问题了如指掌。
敬重(Respect):团队中的每个人都有其特定的背景和经验,互相尊重,谦虚学习。
勇气(Courage):我们不是一个人在战斗,有了整个团队的支持,我们有了更大的勇气来进行挑战。
敏捷的核心基础:我们在一条船上!包括:
1)项目组所有人在一条船上。
2)员工和公司在一条船上。
敏捷的几个重要特征:
1)所有人对项目成功负责。
2)所有人直接需求驱动地工作。
3)所有人都需要跨领域地工作。
4)持续交付、迭代前进。
5)小步前进,持续改进。
6)有效、简单!
敏捷开发宣言:
1、个人和交互胜过过程和工具
2、可工作的软件胜过面面俱到的文档
3、客户协作胜过合同谈判
4、响应变化胜过z遵循计划
敏捷开发原则:
1、最高优先级是尽早地,持续地交付有价值的软件来满足客户。
2、欢迎变化的需求,即使在开发后期,敏捷过程利用变化为客户创造竞争优势。
3、频繁交付能工作的软件,短则几周,长则几个月,时间间隔越短越好。
4、整个项目开发过程中,业务人员和开发人员必须每天一起工作。
5、项目开发以积极个体为基础,为他们提供所需的环境和支持,并相信他们能完成工作。
6、向开发团队传递信息或者在开发团队内部传递信息,最高效,最有力的方法是面对面的交谈
7、能工作的软件是度量进度的首要标准。
8、敏捷过程推动了可持续的软件开发。发起者,开发者和客户应该能长期维持一个恒定的速度。
9、对技术卓越和良好的设计的持续关注能增强敏捷能力。
10、简单是非常重要的。
11、最好的架构、需求和设计出自于自组织的团队。
12、每隔一定时间,团队应该反思一下如何变得更有效,然后相应地调整或校正其行为。
整个团队:一起在开放的工作空间里,每次迭代开始时候,聚在一起参加一系列活动。一般总耗时2-4小时,每天聚集参加站立会议,通常5-10分钟。
现场客户:负责定义团队创建的软件。参与创建可实现的计划,并且提供需求细节。反馈价值给利益有关者。
产品经理:编写产品愿景文档,吸收反馈,产生特性和用户故事,为发布计划设定优先级,为团队的现场客户提供指导,评审进展中的工作,主持迭代演示,使真实客户参与项目,并处理组织问题。
好的产品经理对于软件将要提供什么和为什么那这是最重要的、项目团队值得花费时间的事情有着直观的理解。
领域专家:要想在行业中成功,软件必须忠诚地,正确的实现这些规则。即为领域规则,而关于这些规则的知识称为领域知识。大多数时间和团队呆在一起。
交互设计师:用户界面是产品的形象,对于多数用户而言,用户界面就是产品本身。交互设计师帮助定义产品的用户界面,他们的工作关注与理解用户、他们的需求、以及他们如何与产品交互。他们
通过会见用户,与用户一起评审纸张原型,和观察实际软件的使用情况以完成任务。在每次迭代中,帮助团队创建当前迭代中的用户故事和用户界面元件模型。当每个故事接近完成时,他们检查用户界面的外观和感觉以确认它如期工作。
业务分析员:非敏捷团队中,一般作为客户和开发人员之间的联络人,负责将客户需求澄清和提炼为功能需求规格,在XP团队中,他们扩充了已有产品经理和领域专家的团队。他们更多的是支持其他现场客户,而不是为了替换他们。业务分析员帮助客户发现他们容易遗忘的细节并且帮助程序员以业务术语表达技术权衡。
程序员:负责找到交付计划中用户故事的最有效路径。提供任务估算,建议替换方法,并且通过参与计划博弈帮助客户创建可以完成的计划。借助于整个团队,立秋在已完成的软件中不产生任何BUG,在项目开始,程序员建立编程规范以允许他们共同承担编码责任。当他们有问题的时候,不能猜而必须询问现场客户。最后,程序员通过在合适的实际撰写文档来帮助保证产品的长期可维护性。
设计师和架构师:通过指导团队的增量设计架构并且帮助团队成员寻找简化复杂设计的方法做出自己的贡献。指导但不命令。
技术专家:XP语气每个人都工作于系统中任何值得注意的部分。
测试员:应该应用批判性思维技能帮助客户在设想产品时考虑所有可能。帮助客户发现需求中的漏洞,协助客户测试。帮助团队其他人了解哪些地方有问题,防止类似BUG将来不再发生。
教练:XP领导者成为教练,帮助团队与组织的其余部分进行交互。帮组团队建立组织自信和团队和睦。
程序员教练:帮助程序员了解XP的技术实践。
项目经理:帮助团队与组织其余部分进行写作。他们通常擅长辅导与编码无关的实践。
项目社区:每个团队都有一个生态系统围绕着它,这个生态系统超越团队,延伸到项目社区。这个社区中每个人都影响你的成功。
利益攸关者:尽管他们不参与项目日复一日的开发,但是务必邀请他们参加迭代演示,现场客户(尤其是产品经理)负责理解利益攸关者的需求,衡权哪些需求最重要,最终了解如何最好地满足哪些需求。
执行发起人:他掌管着项目财权,务必了解发起人是谁,并且理解他对项目的期待是什么,他是你的最终客户。务必定期为他演示产品并确定项目正按照他的语气进行。
团队人数:12人最佳,6个程序员,4个客户,一个测试,一个项目经理。