Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Just-In-Time Software Manufacturing (True North PHP 2016)

Josh Butts
November 04, 2016

Just-In-Time Software Manufacturing (True North PHP 2016)

Kanban is a method of managing processes that was originally pioneered in the automobile manufacturing industry in Japan. The Kanban method for managing software projects lowers the barrier to shipping working code and dramatically reduces the project management overhead for engineers participating in the process. In short, Kanban allows engineers and product groups to deliver real value at a very rapid pace, while still maintaining some sanity. Kanban is an excellent complement to the technical aspects of a continuous delivery process. We'll learn what Kanban means to your team, how to get started transitioning to it, and how to avoid common mistakes.

Josh Butts

November 04, 2016
Tweet

More Decks by Josh Butts

Other Decks in Programming

Transcript

  1. Just-In-Time Software Manufacturing
    Josh Butts

    True North PHP 2016

    View full-size slide

  2. About Me
    • VP of Engineering at Offers.com
    • Austin PHP organizer
    • I play competitive Skee Ball
    • github.com/jimbojsb @jimbojsb

    View full-size slide

  3. かんばん

    View full-size slide

  4. An abbreviated history of Kanban
    • Originated inside Toyota manufacturing - 1940s
    • Designed to manage inventory & component production
    • Applied for business / software process by David J.
    Anderson ~2005-2007

    View full-size slide

  5. What problems does Kanban Solve?
    • “Just In Time” production
    • Flow control
    • Incremental change management
    • Communication through visualization

    View full-size slide

  6. 3 fundamental principles of Kanban
    • Start with what you do now
    • Agree to pursue incremental, evolutionary change
    • Respect the current process, roles and responsibilities

    View full-size slide

  7. Start With What You Do Now
    • You can start this today
    • No sweeping changes
    • No heartburn for managers
    • Start with step 0, figure out how to get to step 1

    View full-size slide

  8. Agree to pursue incremental change
    • Incremental change lowers resistance
    • Keep building products while you build process
    • You won’t get it right the first time
    • Everyone can afford small changes

    View full-size slide

  9. Respect the current process
    • Your current process is not 100% broken (I hope)
    • People fear change
    • Gain support, manage expectations
    • Be aware of emotional resistance

    View full-size slide

  10. Encourage leadership at all levels
    • Kanban is about continuous improvement (“kaizen”)
    • Everyone can improve the process
    • People who execute it daily understand it best
    • Solicit new ideas from all levels

    View full-size slide

  11. Lets talk about processes you already know…

    View full-size slide

  12. Release&
    Review&
    Implement&
    Priori2ze&
    Plan&

    View full-size slide

  13. Plan%
    Plan%
    Plan%
    Define%Sprint%
    Build%
    Build%
    Build%
    Release%

    View full-size slide

  14. Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%
    Plan% Priori)ze% Build% Accept% Release%

    View full-size slide

  15. How do we create order from this apparent chaos?

    View full-size slide

  16. Visualize the workflow
    • You need some sort of Kanban Board
    • Can be post-its or notecards
    • Lots of great software out there
    • Commit to moving the cards real-time
    • Communication flows from the board
    • Honest & Transparent

    View full-size slide

  17. Build a Kanban Board!

    View full-size slide

  18. Pending'
    Task'1'
    Task'2'
    Task'9'
    Task'11'
    In'Progress'
    Task'3'
    Task'4'
    Review'
    Task'5'
    Deployed'
    Task'6''
    Task'7'
    Task'8'

    View full-size slide

  19. Kanban Board Basics
    • Items are “pulled” from left to right
    • Set limits on key columns
    • Columns are ranked in absolute priority order
    • If items become blocked, move on to the next one
    • Everyone can see immediate absolute and relative priority

    View full-size slide

  20. Mange the Flow
    • Goal is constant output from the process
    • Watch for bottlenecks
    • Measure facts of the system
    • Use metrics to improve choke points
    • Make policies explicit

    View full-size slide

  21. Limiting Work-In-Process
    • Enforce constraints on the length of columns
    • How many tasks can one person actually do
    • Board must actually reflect status for effective
    communication

    View full-size slide

  22. What metrics should you track?
    • Length of time an item is in a given state
    • Actual time spent on an item
    • Items exiting the process, per day
    • Number of blocking or dependent items encountered
    • Calendar time from beginning to end for items

    View full-size slide

  23. How to move from Scrum to Kanban?
    • Keep your sprints, but review stories as they are completed
    • Remove sprint durations
    • Review progress
    • Define workflow columns & steps

    View full-size slide

  24. Kanban enables continuous feature delivery
    • Features are defined and built as incrementally as possible
    • Automated tests can provide evidence against regressions
    • Acceptance of a shippable product is done in feature context
    • When features are accepted, they can ship

    View full-size slide

  25. This fast-moving fluid process will change your life.

    View full-size slide

  26. Focus on pipelines instead of deadlines

    View full-size slide

  27. Focus on features instead of releases

    View full-size slide

  28. Intermix big and small scope items with ease

    View full-size slide

  29. Eliminate wasteful estimation

    View full-size slide

  30. Complete process transparency

    View full-size slide

  31. Shift priorities instantly, without mutiny

    View full-size slide

  32. Non-acceptance is not wasteful

    View full-size slide

  33. This makes for happy engineers!

    View full-size slide

  34. Upgrade your infrastructure for added benefits
    • Strive for a one-click deployment
    • “Hotfixing” is a thing of the past
    • Ditch your version numbers
    • Fail Forward
    • If you can’t deliver code to production fast, you’ve created a bottleneck

    View full-size slide

  35. Implications on your VCS model
    • I believe git-flow is too heavy for Kanban
    • Ditch your develop branch
    • Every item on the board is a feature branch off master
    • Master is golden
    • Recommend using a pull request process

    View full-size slide

  36. Where Kanban may not work
    • Short client projects with one deliverable
    • Businesses that are driven by hard external deadlines
    • Software that is hard to release / deploy

    View full-size slide

  37. Learn From My Mistakes
    • When we designed our board, we had too many columns
    • Things tend to languish in the middle
    • It’s easy to fall into a trap of too many “status columns”
    • Don’t forget to iterate

    View full-size slide

  38. My Kanban Promise:
    We will break things.
    And then we will fix them fast.

    View full-size slide

  39. Questions / Discussion?

    View full-size slide

  40. I’d love your feedback:
    joind.in/talk/209ba

    View full-size slide