# Introduction
# Why Agile? 为什么要敏捷?
- Long term planning methodologies less supportive of projects currently done
长期规划方法论不足以支持目前完成的项目 - Highly changing environment
瞬息万变的环境
# Agile Alliance 敏捷联盟
Snowbird, Utah February, 2001
Created Agile Manifesto
# Shift 转移
- Big up front design to iterative incremental development
从前期大设计到迭代增量开发 - Drive toward higher quality software in shorter time frames (MVP)
在更短的时间范围内向更高质量的软件发展(MVP) - Requirements and solutions evolve through collaboration and self-organizing cross functional teams
需求和解决方案通过协作和自组织跨职能团队而发展
# The foundation of Agile is found at…. 敏捷的基础位于
AgileManifesto.org
# 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 processes 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.
也就是说,尽管右项有其价值,
我们更重视左项的价值。
Please memorize these values
The word is “Over” not instead of…this is very important
# Principles Behind the Manifesto 宣言背后的原则
We follow these 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 timescale.
经常地交付可工作的软件,
相隔几星期或一两个月,倾向于采取较短的周期。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.
团队定期地反思如何能提高成效,
并依此调整自身的举止表现。
# Summary 12 principles 总结 12 条原则
- Customer satisfaction
顾客满意度 - Welcome changes
欢迎更改 - Frequent delivery
频繁交付 - Work together
一起工作 - Motivated individuals
有动力的人 - Face-to-face contact
面对面的接触 - Working software
可工作的软件 - Constant/sustainable pace
恒定 / 可持续的步伐 - Continuous attention
坚持不懈地追求 - Simplicity
简洁 - Self-organization
自组织
# Empirical Process Control 经验过程控制
- Scrum is based on it
敏捷基于此- Transparency; the process itself and all communications
透明度;流程本身和所有通讯 - Inspection; Frequent inspection and the utilization of frequent reviews of the product service or results
检查;经常检查和使用对产品服务或结果的频繁检查 - Adaptation; embrace uncertainty and changes and manage risks accordingly
适应;把握不确定性和变化并相应地管理风险
- Transparency; the process itself and all communications
- Empiricism involves learning and adapting as needed
经验主义需要学习和适应
Please memorize the three pillars of empirical process control.
请记住经验过程控制的三个支柱。
- Iterative
迭代式 - Incremental
增加的 - Frequent Reviews
经常评论 - Adaptation
适应 - Uncertainty and risks during execution
执行过程中的不确定性和风险 - It isn’t a “defined” process; it’s a way of being and doing
这不是一个 “定义” 的过程;这是一种存在和做事的方式
# Scrum Values 敏捷价值观
https://www.scrum.org/resources/scrum-values-poster
COURAGE 勇气
Scrum Team members have courage to do the right thing and work on tough problems
敏捷团队成员有勇气做正确的事并解决棘手的问题FOCUS 专注
Everyone focuses on the work of the Sprint and the goals of the Scrum Team
每个人都专注于冲刺工作和敏捷团队的目标COMMITMENT 承诺
People personally commit to achieving the goals of the Scrum Team
人们亲自致力于实现敏捷团队的目标RESPECT 尊重
Scrum Team members respect each other to be capable,independent people
敏捷团队成员相互尊重,成为有能力的独立人OPENNESS 开放性
The Scrum Team and its stakeholders agree to be open about all the work and the challenges with performing the work
敏捷团队及其利益相关者,同意对所有工作和执行工作所面临的挑战持开放态度
# Agile is an umbrella for… 敏捷是…… 的保护伞
- XP 经验值
- Scrum
- Kanban 看板
- Others
# Scrum Team Defined 敏捷开发团队的定义
# Main Ideas about a Scrum team 关于敏捷开发团队的主要想法
- Team is 7 +/- 2 members (optimally)
团队为 7 +/- 2 名成员(最佳) - Cross functional
跨功能 - The “Team” owns the code base, specific programs are not ”owned” by a single person.
“团队” 拥有代码库,特定程序不是一个人 “拥有” 的。 - Product Owner provides User Stories on the Product Backlog and ranks them
产品负责人在产品待办事项列表上提供用户案例并对其进行排名 - Team Helps refine the product backlog
团队帮助完善产品积压 - Scrum Master Coaches the entire team & removes impediments
流程管理员 (Scrum Master) 指导整个团队并消除障碍
# Scrum Team has 3 parts 敏捷开发团队包括 3 个部分
- Product owner 产品负责人
- Scrum master 流程管理员
- Team 开发团队
# Product Owner 产品负责人
- Creates User Stories for the scrum team to work on.
创建供 Scrum 团队使用的用户故事。 - Work with dev/test while revising User Stories on the backlog
与开发人员 / 测试人员合作,同时修改积压的用户故事 - Prioritize backlog
优先安排积压 - Approves:
批准:- work products as they complete
工作产品完成 - test plans
测试计划
- work products as they complete
- Explains User Stories to Dev/Test team (ongoing).
向开发 / 测试小组说明用户案例(正在进行中)。 - Negotiates User Story content when there are technical (or other) limitations
在存在技术(或其他)限制时,协商用户故事内容 - May actually execute the “demo” for all appropriate stakeholders
可能实际上为所有适当的利益相关者执行 “演示”
# Prioritization of User Stories 用户故事的优先级
- The vison of the organization
组织的形象 - Client’s immediate needs
客户的即时需求 - NPV (if possible)
净现值(如果可能的话) - Story points of the User Story
用户故事的故事点 - Risks (to the team and to the business)
风险(对团队和业务) - Perceived value of the User Story
用户故事的感知价值 - Weighted Shortest Job First (WSJF)
加权最短作业优先 - Dependencies
依存关系 - Must have, Could have, Should have, Won’t have (MoSCoW)
必须拥有,可能拥有,应该拥有,不会拥有
# Development & Test 开发与测试
- Team ownership of all code
团队所有代码的所有权 - Helps to refine user stories on backlog
有助于完善积压的用户案例 - Commits specific User Stories into Specific Iterations
将特定的用户故事提交到特定的迭代中 - Applies story points (by mutual consensus)
应用故事点(通过相互协商) - Has work approved by product owner as it completes – does not wait for “demo” at the end of sprint for approval.
完成产品所有者的工作后,无需等待 sprint 结束时的 “演示” 即可获得批准。 - Does the actual work:
实际工作:- Coding
编码 - All things related to Testing
与测试有关的所有东西 - May do environment support
可以提供环境支持 - Etc.
等等。
- Coding
# Scrum Master 流程管理员
- “Servant leader,” not a project “manager”
“仆人式领导”,而不是项目 “经理” - Guide team toward Scrum thinking
指导团队进行敏捷思维 - Keep team moving in efficient manner
保持团队高效运作 - Keep team moving as one unit
使团队保持整体移动 - Impediments
障碍- Coach team to remove impediments independently
教练团队独立消除障碍 - Actually remove impediments (but avoids this to keep the team thinking “on their own,” and not dependent on the scrum master to the greatest extent.
实际消除障碍(但要避免这种情况,以使团队保持 “独立思考”,并且在最大程度上不依赖于 Scrum 管理员。
- Coach team to remove impediments independently
- Must be competent with respect to technology and application.
在技术和应用方面必须胜任。 - Ensure team logs hours and expected remaining hours into a software tool like Jira. (to make the burn down chart)
确保团队将小时数和预期的剩余小时数,记录到 Jira 之类的软件工具中。(制作燃尽图)
# Scrum Masters are “Servant Leaders” 流程管理员是 “仆人式领导者”
- Defined 定义
- “The servant-leader is a servant first”
“仆人领导首先是仆人” - Mission 任务
- Continually “ensuring that other people’s highest priority needs are being served.”
不断 “确保满足其他人的最高优先需求。” - Focus 重点
- “… the growth and well-being of people …”
“…… 人们的成长和福祉……”
What is Servant Leadership?
# Scrum Masters are “leaders” not managers 流程管理员是 “领导者” 而不是管理者
A Main Idea of Leadership…
…Leadership is based on a “Vision” of a better tomorrow
领导力的主要思想…… 领导力是对美好明天的 “愿景”
# Leaders … 领导者...
- Inspire trust
激发信任 - Focus on people
专注于人 - Have, and share with their team members, the long-range vision
拥有并与团队成员分享远景 - Associate the “vision” directly to the work the team is performing
将 “愿景” 直接与团队正在执行的工作相关联
Inspired by Warren Bennis, as originally written in his best selling leadership book: “On Becoming a Leader”
受沃伦・本尼斯(Warren Bennis)的启发,最初写在他最畅销的领导力著作中:“论成为领导者”
# Repositories & User Stories 储存库和用户故事
# 2 User Story Repositories 2 个用户故事存储库
- Product backlog 产品积压
- all un-worked User Stories Start Here
所有未使用的用户故事从这里开始
- all un-worked User Stories Start Here
- Iteration backlog 迭代积压
- The team pops work off the top of the prioritized backlog and puts the Uses Stories into the iteration-backlog.
团队将工作从优先积压的顶部弹出,并将 “使用案例” 放入迭代积压中。 - Team members actually “commit” to the work before placing it in the iteration/sprint backlog.
团队成员实际上将其 “投入” 到工作中,然后再将其放入迭代 / 冲刺积压中。
- The team pops work off the top of the prioritized backlog and puts the Uses Stories into the iteration-backlog.
# Product backlog 产品积压
- All User Stories start here
所有用户故事从这里开始 - User Stories that are worked are selected from here, based on their priority, as assigned by the Product Owner.
根据产品所有者指定的优先级,在这里选择有效的用户故事。 - Low priority User Stories may never get done.
低优先级的用户故事可能永远不会完成。
# Refining the Backlog 完善积压
- The Team and the Product Owner work together to review and revise it; this is called backlog refinement
团队和产品负责人一起进行审查和修订;这称为积压细化 - This process happens on a regular basis
此过程会定期发生 - Product Owner ranks and prioritizes User Stories based
产品负责人基于用户故事对用户故事进行排名和优先排序- organizational vision & mission
组织愿景与使命 - customer needs
客户的需求 - MoSCow (Must have, Could have, Should have, Won’t have)
- Duration of User Story, cost of User Story vs. Value (Weighted Shortest Job First - WSJF)
用户故事的持续时间,用户故事的成本与价值(加权的最短作业优先 - WSJF)
- organizational vision & mission
Low priority items may never get done
低优先级项目可能永远无法完成
# Iteration Backlog 迭代积压
- Subset of the Product Backlog
产品待办事项的子集 - What the Team commits to for this iteration
团队对此迭代所做的承诺 - Iterations can last 1 week to 2 months, with a preference for shorter Iterations
迭代可以持续 1 周到 2 个月,但建议使用较短的迭代
# User Stories Content 用户故事内容
VERY IMORTANT – Likely on the Exam
- “As A,” “I Want,” “So That” format
“作为一个”,“我想要”,“如此” 格式 - Acceptance Criteria (what the product owner will be testing the User Stories for)
验收标准(产品负责人将测试用户故事的内容) - Meta data (who created the User Story, the date the User Story was created, the state of the user story, etc.)
元数据(谁创建了用户素材,创建用户素材的日期,用户素材的状态等)- This is how far along in the process the User Story is.
这是用户故事进行中的过程。 - As an example (only – the flow will be different in every company): Waiting, investigating, detail design, coding, unit testing, integrated testing, and approved by the Product Owner.
作为一个示例(仅 – 每个公司的流程将有所不同):等待,调查,详细设计,编码,单元测试,集成测试,并得到产品负责人的批准。
- This is how far along in the process the User Story is.
# Burndown Chart 燃尽图
How to use The Sprint Burndown
# User Stories Observations 用户故事观察
- The duration of a User Story is always less than 1 iteration
用户故事的持续时间始终小于 1 次迭代 - User stories contain a lot of information
用户故事包含很多信息 - Refined by the team prior to committing them to an iteration
在将团队提交迭代之前,由团队进行完善 - Prioritized by the Product Owner
产品负责人优先
Following the Scrum cycle should be a habit. To learn more about forming habits you can read (optional): The Power of Habit: Why We Do What We Do in Life and Business, January 7, 2014
遵循敏捷周期应该是一种习惯。要了解有关养成习惯的更多信息,您可以阅读(可选):习惯的力量:我们为什么要在人生和商业中做
# How to decompose User Stories
如何分解用户故事
# Story Points 故事点
- The dev/test team mutually applies a story point estimate to all user stories, especially those that will likely be in the next iteration
开发 / 测试团队将故事点估计相互应用于所有用户故事,尤其是那些可能在下一次迭代中出现的故事 - A relative sizing of “user stories”
“用户故事” 的相对大小 - Modified Finocchi sequence: 1,2,3,5,8,13,20,100
修改后的 Finocchi 序列:1,2,3,5,8,13,20,100These numbers are near the official Finocchi sequence numbers, but not exactly.
这些数字接近于官方 Finocchi 序列号,但不完全相同。 - The idea is from “20” and beyond, the User Stories are so big:
这个想法来自 “20” 及更高版本,用户故事是如此之大:- They should be decomposed
他们应该分解 - Rounding the story point value to “20” and ”100” gives the correct impression that the estimate is far from exact.
将故事点值四舍五入为 “20” 和 “ 100” 会给人以正确的印象,即估计值远非准确。
- They should be decomposed
Here is a great video on story points:
有关故事要点的精彩视频:
4 Things that compose a Story Point 构成故事点的 4 件事
- Relative size based on perceived:
相对大小基于感知:- Effort
努力 - Duration
持续时间 - Complexity
复杂 - Risk
风险
- Effort
# Story Points: Why? 故事要点:为什么?
- A history will be created as to how many story points a team actually works iteration over iteration
将创建一个历史记录,说明一个团队在迭代过程中实际工作的故事点数 - After about 3 iterations, a new scrum team should have a pretty good idea as to how much work they can safely take in, based on story points.
经过大约 3 次迭代,新的敏捷团队应该基于故事点,对自己可以安全地从事多少工作有一个很好的主意。 - Once a team has an idea of how many story points it can take on during an iteration, this is called “Velocity”
一旦团队知道在一次迭代中可以处理多少故事点,这就是 “速度” - Velocity, when used as a maximum amount of story points a team can commit to during an iteration, will keep people working at a sustainable pace, most of the time
速度,当用作团队在迭代过程中可以承诺的最大故事点时,将使人们在大多数情况下以可持续的速度工作 - Scrum teams are to work at a “sustainable pace.” This means they can see their families because they are not working tons of over time all the time.
敏捷团队将以 “可持续的速度” 工作。这意味着他们可以看到自己的家人,因为他们一直没有长时间工作。
# INVEST: A criteria for all User Stories所有用户故事的标准
- Independent
独立 - Negotiable
面议 - Valuable
有价值 - Estimable
估计 - Small (At most, one iteration long)
小(最多一次迭代) - Testable
可测试
# Acceptance Criteria 验收标准
- Part of a User Story
用户故事的一部分 - Written by Product Owner and refined by the team during “Backlog Refinement”
由产品负责人撰写,并由团队在 “待办事项细化” 期间进行细化 - Can easily be converted into test-cases
可以轻松转换成测试用例 - Every User Story has Acceptance Criteria
每个用户故事都有接受标准
# Metrics 指标
- Commitments made/missed
作出 / 未履行的承诺 - Story points accepted vs velocity
故事点被接受与速度 - Velocity trend
速度趋势 - Scope changes during sprint
冲刺期间范围的变化 - Resource utilization
资源利用率 - Defect leakage
缺陷泄漏
# The Scrum Process 敏捷过程
# Itegration Events 迭代事件
# Demonstration 演示
- Once per iteration
每次迭代一次 - It is a time to:
现在是时候:- Show off all the completed work to the Product Owner at one time
一次向产品负责人展示所有已完成的工作 - Get any last minute approvals
获得最后一分钟的批准 - Product owner could get some new ideas
产品负责人可能会得到一些新的想法
- Show off all the completed work to the Product Owner at one time
- It is best if the Team holds a practice Demonstration before the actual Demonstration to work out any last minute kinks before the Product Owner sees them at the actual Demonstration
最好的是,团队在实际演示之前进行一次实践演示,以在产品负责人在实际演示中看到它们之前解决所有最后的纠结。 - This may stimulate new ideas in the Product Owner’s mind.
这可能会激发产品负责人的新想法。 - Time boxed
装箱时间
# Daily Standup (DSU) 每日站立
- Daily
日常的 - Same time
同时 - Same duration 15 minutes Daily Stand Up + 15 minutes for issues
持续时间 15 分钟,每日站立时间 + 问题的 15 分钟 - Can schedule to meet at another time for more involved issues
可以安排在其他时间开会以解决更多相关问题 - The agenda for each person is: “What I did yesterday”/”What I’ll do today”/”Any impediments”
每个人的议程是:“昨天我做了什么” /“今天我要做什么” /“任何障碍” - For a face-to-face environment, team members actually stand for the entire DSU
对于面对面的环境,团队成员实际上代表着整个 DSU - Keeps everyone up to date as to what the team is doing (transparency)
使每个人都了解团队的最新动态(透明性)
# Retrospective 回顾
- What went right
正确的事 - What could be improved next time
下次有什么可以改善的 - Best if improvement items are within team’s control
最好的改进项目在团队的控制范围内 - Good focus points: Quality, scope, relationships, commitments (kept and missed), processes, tools etc.
良好的重点:质量,范围,关系,承诺(保留和遗漏),流程,工具等。 - Should NEVER be used to punish people for mistakes!
永远不要用来惩罚别人的错误!
# Definition of “Done” & “Done-Done”
The team defines what done (a complete) user story is, in their social contract. Typically this will mean the coder and tester have completed their work, and the product owner has approved it.
团队在其社交合同中定义完成的用户故事(完整的故事)。通常,这将意味着编码人员和测试人员已经完成工作,并且产品所有者已经批准了该工作。Good Scrum Teams create a “social contract” for themselves. It defines their social norms (how they behave with respect to each other), coding standards, conflict negotiation process, etc.
优秀的 Scrum 团队会为自己创建一个 “社会契约”。它定义了他们的社会规范(彼此之间的行为方式),编码标准,冲突协商过程等。“Done – Done” typically means the User Story was accepted by the product owner, and, delivered into production.
“完成 - 完成” 通常是指用户故事已被产品所有者接受,并交付生产。Typically related to approval of acceptance criteria in User Story by Product Owner
通常与产品负责人批准用户故事中的验收标准有关
# Scaling Scrum & Kanban
# Scrum of Scrums
- Typically attended by scrum masters (but others are invited as needed)
通常由 Scrum 主管参加(但根据需要邀请其他人) - This is the first layer and simplest way to start scaling Scrum.
这是开始扩展 Scrum 的第一层和最简单的方法。 - Dependencies between Scrum Teams are discussed and resolved
讨论并解决了 Scrum 团队之间的依赖关系 - Deal with issues that are faced by more than 1 team on an effort
处理一个以上团队所面临的问题 - Typically weekly or bi-weekly
通常每周或每两周一次 - Track cross-team impediment resolution
跟踪跨团队的障碍解决方案