59
©LeanAgileMachine Creative Commons Licence JIT Development with kanban John Stevenson Lean Agile Machine

Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

Embed Size (px)

DESCRIPTION

2011-11-01 | 05:20 PM - 06:10 PMShowing the concepts and techniques of using a pull based system (eg. kanban) to manage development effectively and working towards a just in time development approach. This session covers kanban as a way to visualise your workflow and ensure you are working on the most valuable task at hand. Experiences will be shared from applying kanban at a diverse range of companies.

Citation preview

Page 1: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

JIT Development with kanban

John StevensonLean Agile Machine

Page 2: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Who is John Stevenson

@JR0cket

Page 3: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Goals

Basics of kanban

Visualise your challenges

Page 4: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Additional goal

Page 5: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

What is the problem...

Never enought time

Always more to do

Something urgent comes up

Missed opportunities

Work to do, bills to pay, kids to feed...

Window of opportunity for getting stuff done is limited

Page 6: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

How many hours do you work a

week ?

Page 7: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

How many hours are you productive

per week ?

Page 8: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

What is Kanban ?

● A way to manage dependant events● Make your work visible● Limit your work in progress

Avoiding multi-tasking – its inefficient

● Pull system only work on a task once previous task is complete

● Help work to flow continuously and predictably deliver value

Page 9: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Page 10: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Software projects design

Page 11: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Kanban board - Wall of Facts

Page 12: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Value stream mapping

The (often wide) path to getting things done

Activities that get things done effectively

Page 13: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Let the board show issues...

V1.0.1, V1.0.2, V1.0.3, V1.0.4,

Build 1209Build 1221Build 1301

Page 14: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

How did I build my Kanban

● Started simple with: Plan – Do – Done Used scrap of paper for initial design Built a simple board and started using it

● Evolved into Plan – Do – Check – Act Evaluated deficits in board and enhanced

● Used online Kanban So I dont need to cary a large whiteboard around Useful for distributed teams

Page 15: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Page 16: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Page 17: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Software development

Page 18: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Software development

Page 19: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Is something ready to work on?

● Identify completed work between seperate board lanes

● Spilt the study board lane into two First new lane is doing state Second lane is done / ready

Page 20: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Ready queue

Page 21: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Quick decisions

Having a ready lane show you what you could work on next

Prompts discussion as when something is ready to move from one stage / role to another

Start to see if there is a bottleneck if cards queue up in the ready column

Page 22: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Let the board run

Page 23: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Page 24: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

So What is missing ?

● I have a Kanban board● I am breaking my tasks down into relatively

small chunks

● But I still have far too much to do...

Page 25: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Lets apply the WIP !!!

● To sudy effectively I need to focus● To focus I need to work on 1 thing

at once● To work on 1 thing at once I need:

Work In Progress Limits

Page 26: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

How to decide what is right

Experiment !!

Map to resources

Page 27: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

With one tester resource

Page 28: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

1 tester, 6 devs pairing

Page 29: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Fast feedback across the board

Page 30: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Fast feedback

● Ltd WIP on Columns Board Goals

● Ltd WIP in column gives fast feeback between team roles

They know when there is a hold up Can discuss what the problem is Can try out things to see if it alivates the problem

Page 31: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Predictability

● Ltd WIP● Smaller batch sizes● Consistently sized tasks

Breaking down features, epics, stories

● Smallest responsible change

Page 32: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Let kanban help you be effective

● Work on only on one thing at once● Everyone responsible for priority changes

Even your manager

● If forced to switch, record and reset task to begining

Review ”task switching” overload

Page 33: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Pull system

Page 34: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

What else can we do ?

Page 35: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Drop the Backlog

omnipresent sign of overload Useful for pushing back to the

management Bad for team moral

Tasks flow when team is in tune with value, opportunities are not drowned out

Page 36: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Defining the task card

● Set goal of task● Identify measure to check if goal reached

Code should pass all tests

● Identify resources needed to compete● Identify scope of work

refactor task into multiple cards if too big

Page 37: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Use both sided of the card

Page 38: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Classes of service

Page 39: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Experditing

● Visualisation for a high priority task Big red sticker Experditing lane Record other tasks being blocked

● Review why you get high priority task Consider it a constraint / bottleneck

Page 40: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Experditing lane

Page 41: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

DevOps Goal keeper

Goalkeeper fields all issues

Rest of team allowed to

focus on a (bigger) tasks

Use visual indicator to show

who is the Goalie

Swap goalie regularly

Page 42: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Enhancing the board information

Page 43: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Blockers

Page 44: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Avatars / Calls for help

Page 45: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Pairing

Page 46: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Pairing does not have to be two

Different roles help share understanding of getting work done

Page 47: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Review your effectiveness

Page 48: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Effective daily standups

Avoiding status meetings● Details already there on the wall● Talk about something more useful● Opportunity to improve

What have I learnt yesterday ?

What do I hope to learn today ?

Page 49: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Kanban board - Wall of Facts

Page 50: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Understanding of Value

Page 51: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Understanding your company

Table stakes / foundations

Spoilers Differentiators

Accelerators

Page 52: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Benefits

Page 53: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Summary of Kanban

● Visualse work● Manage WIP● Engage with business

Shared ownership

● Encourage realistic priorities

● Helps you stay sane

● Show you are productive

● Deal with micro-management

Page 54: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Be as creative as needed

Page 55: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

The first rule of kanban...

Page 56: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Thank you

Page 57: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Feedback & Refs

@JR0cket

[email protected]

[email protected]

Please note: Very few bulletpoints were hurt during the making of this presentation

Page 58: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Lessons from Service Desk

● Variation of personal kanban Sticky notes at the side of the keyboard One priority at once Need business reason to change priorities

Record reason and number of times you had to revisit the task

Page 59: Java Tech & Tools | Using a Pull System for Just-In-Time Development | John Stevenson

©LeanAgileMachineCreative Commons Licence

Kanban design for study