Being Lean Agile
by Agile Practices
Prakash M Pujar
What session contains
What is Lean
Agile Practices that influences Lean
Lean
The core idea of Lean is to maximize the customer value
Lean is to eliminate / reduce non-value added activities (AKA wastes)
Agile process is Lean by its nature
Adopt GAAPs (Generally Accepted Agile Practices) -make the Agile further Lean
Lean Principles
Specify value in eyes of the customer
Identify the value stream and eliminate waste
Make value flow at the pull of the customer
Involve and Empower employees
Continuously improve in pursuit of perfection
What is Value?
Adopt agile practices, eliminate non-value added activities
Agile Practices
Generally accepted agile practices that influenced to
eliminate non-value added activities :
Backlog Grooming
ACDD
Refactoring
WIP Limit
Backlog Grooming
Attain “Definition of Ready” state
Backlog Grooming
Backlog Grooming - once per sprint
Identify the Stories of next Sprint prioritization by PO
Create / update the Stories if not created for prioritized features
Add / Update the acceptance criteria for story
Identify the dependencies to meet the acceptance criteria of story
Time boxed activity
How Grooming influenced in Lean
Grooming done in previous sprints
Attain “Definition of Ready” for next sprint
Helps to resolve the dependencies before sprint
planning : Eliminates any waiting time
Waiting time is Non-Value Added activity
ACDD
Acceptance Criteria Driven Development
ACDD – Acceptance Criteria Driven Development
Inherited by TDD – Test Driven Development
AC consists of set of test scenarios i.e. positive, negative, NFRs
AC indicates what exactly PO expects
Test scenarios signifies the behavior of a feature
Story is claimed to be complete if AC is met
Easily it is adopted – No sprint rituals required
ACDD
ACDD - in Sprint Cycle
Features are being developed against AC
How ACDD influenced in Lean
Satisfies the requirements of PO
The AC has multiple sections with all possible
scenarios covered - reduces the occurrence of
defects
Defects are the Non-Value Added activity
Code Refactor
On the way to “Continuous Refactoring”
Re-factoring
“Refactoring is controlled technique for improving the code/design of an existing code base without changing the features it implements”
e.g.
2X2 + 10X re-factors to 2X (X+5)
Refactoring is changing the internal logic without changing its behavior
Benefits of Refactor
Improves the design of software
Makes software easier to understand
Helps to find bugs
Helps to program/code faster
Writing Tomorrow’s code today
When to Refactor ?
Add / update feature
Fix a bug
Code review
After completing these activities, think of Refactor for a minute !
Add/update the feature
Complete implementing new feature by adding updating methods Look for the opportunities in the code being touched while
updating
How to Refactor ?
Fixing a defect:
Follow three steps (RGR method) while fixing
defects:
STOP : Something not working, hence the defect
GO : Go for fixing the defect; feature is working at the end
DO REFACTOR : Do the re-factor around the fix of this defect
How to Refactor ?
Code Review:
Complete the code review
Review for opportunities for Refactor
REFACTOR : Do the re-factor. Park it for later
How to Refactor ?
How Refactoring influenced in Lean
If refactoring is not addressed at the right time, then it
becomes a technical debt
As today’s technical debt is tomorrow’s waste
Effort required to address tech debts
Rework is Non-Value Added activity
WIP Limit
Limiting Work in-progress activities
A Kanban practice to restrict the count of working
activities
The “In-Progress” is split into “Under Development”
and “Under verification” columns on Scrum boards
Restricts the accumulating of working items
Start Finishing, Stop Starting!
Use of WIP Limit
How WIP Limit influenced in Lean
WIP limit restricts the increase in the count of number of
working items
Pile of working items increases the waiting time to
complete them
Waiting time and inventory are Non-Value Added activities
Being Lean Agile – The Benefits
Before being Lean Agile Being Lean Agile
Use of CI is another key
factor
Live data from Value Stream Mapping of a Scrum Team
Thanks