Lean, Kanban, Extreme Programming Flashcards

1
Q

What is Lean?

A

The core idea is to maximize customer value while minimizing
waste. A lean organization understands customer value and focuses its key
processes to continuously increase it.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Core Principles of Lean

A

Value, Define what it means for customers and how to align processes to deliver it
Value Stream, Map the steps involved to deliver value, from concept to customer
Flow, Create smooth, uninterrupted flow in the value stream, eliminating waste
Pull, Let customer demand drives production, avoid overproduction
Perfection, Continuously improve processes, striving for zero waste and optimal efficiency

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Principles of Lean

A

Eliminate Waste, Build Quality In, Create Knowledge, Defer Commitment, Deliver Fast, Respect People, Optimize the Whole

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Key benefits of Lean for Agile Teams

A

Improved efficiency
Increased quality
Enhanced collaboration
Greater Adaptability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Key Lean Tools and Techniques

A

Visual Stream Mapping (VSM) - Create visual map of the value stream to identify bottleneck and waste
5S Steps - Sort, Set in Order, Shine, Standardize and Sustain
Just-in-Time (JIT) - Produce goods and services only when needed, reducing inventory and waste

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is KanBan

A

A Japanese manufacturing system in which the supply of components is regulated using cards displaying a sequence of specifications and instructions, sent along the production line.

Achieve continuous process improvement where team meets periodically to discuss progress

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

KanBan Background

A

From family of “pull” systems
Pull systems expose bottlenecks
Creates slack in non-bottlenecks
New work is “pulled’ into system
Lean thinking applied to software development
Empirical Process

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Benefits of KanBan

A

Improve productivity
Improve predictability
Increase customer satisfaction
Reduce delivery times
Facilitates moving to a continually improving organization
Creates more functional working relationships across organization

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

When is KanBan a good fit

A

Uneven flow of word
o Large batch transfers
o Unplanned and disruptive requests

Deferred commitment is desirable
o Priorities change frequently
o Constant replanning
o High abandonment

System or workers are overburdened
o Too much work-in-progress
o Stressed workers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

KanBan core practices

A

Visualize what work you do today (workflow) - Seeing all the items in context of each other can be very informative

Limit the amount in progress (WIP) - Helps balance the flow-based approach so teams don’t start and commit too much work at once

Enhance flow - When something is finished, the next highest thing from the backlog is pulled into play after sprint planning meeting

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Scrum vs KanBan

A

Scrum focuses on User Stories and the daily stand-up focuses on 3 questions with fixed iterations/sprints while KanBan focuses of Work Items (eg. user stories), the daily stand-up is focused on flow of work and is in continuous flow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is Extreme Programming (XP)

A

Agile Method where the team works on the software development along with the managers and the customers to produce the final product as fast as possible.

Customer emphasize the most useful features of a given software
product. Developers in turn, based on each successive set of software
upgrades on this feedback while continuing to test new innovations
every few weeks.

Works best among small teams comprised of experienced developers
with a proven track record in communication and management.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

XP Values

A

Communication: Everyone on a team works jointly at every stage of the
project.

Simplicity: Developers strive to write simple code bringing more value to
a product, as it saves time and efforts.

Feedback: Team members deliver software frequently, get feedback
about it, and improve a product according to the new requirements.

Respect: Every person assigned to a project contributes to a common
goal.

Courage: Programmers objectively evaluate their own results without
making excuses and are always ready to respond to changes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

XP Pros

A

Stable system
Clear code
Fast MVP delivery
Less documentation
No overtime
High visibility
Team collaboration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

XP Cons

A

Unclear estimates
Time waste
Not enough documentation
Big cultural change needed
Pair programming takes longer
Co-located teams only
Code over design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

XP vs Scrum

A

XP
* Shorter iterations
* Flexible with the changes
* Focus on technical practices
* Customer determines the order of feature development

Scrum
* Longer sprint
* No changes within sprints
* Focus on managerial aspects
* Self-organized teams that decides what features to work on first

16
Q

When to use XP

A

Manage a smaller team - Because of its highly collaborative nature, XP
works best on smaller teams of under 10 people.

Constant contact with your customers - XP incorporates customer requirements throughout the development process, and even relies on them for testing and approval.

Have an adaptable team that can embrace change - By its very nature, extreme programming will often require your whole team to toss out their hard work.

Well versed in the technical aspects of coding - XP isn’t for beginners. You need to be able to work and make changes quickly.

17
Q

XP Life Cycle

A

Pull unfinished work from user stories
Prioritize the most important items

Begin iterative planning
Incorporate honest planning
Stay in constant communication with all stakeholders and empower the team
Release work
Receive feedback
Return to the iterative planning stage and repeat as needed

18
Q

XP Practices

A

Feedback
* Test-Driven Development
* The Planning Game
* On-site Customer
* Pair Programming

Continual Process
* Continuous Integration
* Code Refactoring
* Small Releases

Code Understanding
* Simple Design
* Collective Code Ownership
* System Metaphor
* Code Standards

Work Conditions
* 40-Hour Week

19
Q

Test Driven Development (TDD)

A

The test-driven development technique (TDD) entails writing an automated unit test before the code itself.

According to this approach, every piece of code must pass the test to be released. Software engineers focus on writing code that can accomplish the needed function.

TDD allows programmers to use immediate feedback to produce reliable software.

20
Q

Pair Programming

A

All production software in XP is built by two programmers, sitting side by side, at the same machine.

While the first developer focuses on writing, the other one reviews code, suggests improvements, and fixes mistakes along the way.

All production code is reviewed by at least one other programmer, and results in better design, better testing, and better code and ultimately a higher-quality software

Faster knowledge sharing

21
Q

Code Refactoring

A

To deliver business value with well-designed software in
every short iteration and continuously improve code.

Refactoring is about removing redundancy, eliminating unnecessary functions, increasing code coherency, and at the same time decoupling elements.

Keep your code clean and simple, so you can easily understand and modify it when required would be the advice of any XP team member.

22
Q

Continuous Integration

A

XP teams keep the system fully integrated at all times. They build
multiple times per day.

Benefit: The developer can catch and fix integration issues sooner.

Continuous Integration leads to
* Higher levels of throughput
* More stable systems
* Higher quality software.