Lean, Kanban, Extreme Programming Flashcards
What is Lean?
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.
Core Principles of Lean
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
Principles of Lean
Eliminate Waste, Build Quality In, Create Knowledge, Defer Commitment, Deliver Fast, Respect People, Optimize the Whole
Key benefits of Lean for Agile Teams
Improved efficiency
Increased quality
Enhanced collaboration
Greater Adaptability
Key Lean Tools and Techniques
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
What is KanBan
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
KanBan Background
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
Benefits of KanBan
Improve productivity
Improve predictability
Increase customer satisfaction
Reduce delivery times
Facilitates moving to a continually improving organization
Creates more functional working relationships across organization
When is KanBan a good fit
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
KanBan core practices
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
Scrum vs KanBan
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.
What is Extreme Programming (XP)
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.
XP Values
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.
XP Pros
Stable system
Clear code
Fast MVP delivery
Less documentation
No overtime
High visibility
Team collaboration
XP Cons
Unclear estimates
Time waste
Not enough documentation
Big cultural change needed
Pair programming takes longer
Co-located teams only
Code over design
XP vs Scrum
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
When to use XP
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.
XP Life Cycle
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
XP Practices
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
Test Driven Development (TDD)
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.
Pair Programming
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
Code Refactoring
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.
Continuous Integration
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.