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

Ship It Faster With Kanban (PHP Benelux 2015)

44a352b02a91a9e841da7533bc5d9b8e?s=47 Josh Butts
January 24, 2015

Ship It Faster With Kanban (PHP Benelux 2015)

Scrum is so last-decade. 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 value to the business 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.

44a352b02a91a9e841da7533bc5d9b8e?s=128

Josh Butts

January 24, 2015
Tweet

Transcript

  1. Ship It Faster With Kanban Josh Butts PHP Benelux 2015

  2. About Me • Over 10 years of “pro” PHP •

    VP of Engineering at Offers.com • Austin PHP organizer • Taught several PHP classes • github.com/jimbojsb @jimbojsb
  3. None
  4. かんばん

  5. Kanban

  6. An abbreviated history of Kanban • Originated inside Toyota manufacturing

    - 1940s • Designed to manage inventory & component production • Inspired by grocery store inventory management • Applied for business / software process by David J. Anderson ~2005-2007
  7. What problems does Kanban Solve? • “Just In Time” production

    • Flow control • Incremental change management • Communication through visualization
  8. 3 fundamental principles of Kanban • Start with what you

    do now • Agree to pursue incremental, evolutionary change • Respect the current process, roles and responsibilities
  9. 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
  10. 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
  11. 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
  12. 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
  13. Lets talk about processes you already know…

  14. Release& Review& Implement& Priori2ze& Plan&

  15. Plan% Plan% Plan% Define%Sprint% Build% Build% Build% Release%

  16. 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%
  17. How do we create order from this apparent chaos?

  18. 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
  19. Build a Kanban Board!

  20. 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'
  21. 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
  22. None
  23. None
  24. None
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. This fast-moving fluid process will change your life.

  31. None
  32. Focus on pipelines instead of deadlines

  33. Focus on features instead of releases

  34. Intermix big and small scope items with ease

  35. Eliminate wasteful estimation

  36. Complete process transparency

  37. Shift priorities instantly, without mutiny

  38. Non-acceptance is not wasteful

  39. This makes for happy engineers!

  40. 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
  41. None
  42. 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
  43. Resistance to Kanban • “We already do Scrum, and it

    works fine” • “We can’t enforce deadlines with this” • “But Billy is our scrum master….” • “What about our release manager, what will they do”
  44. 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
  45. 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
  46. My Kanban Promise: We will break things. And then we

    will fix them.
  47. Questions / Discussion?

  48. Feedback • https://joind.in/13172 • josh@joshbutts.com • @jimbojsb