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

Limited Red

Joseph Wilk
September 22, 2011

Limited Red

Joseph Wilk

September 22, 2011
Tweet

More Decks by Joseph Wilk

Other Decks in Programming

Transcript

  1. @josephwilk
    Tuesday, 20 September 11

    View Slide

  2. Joseph Wilk
    Tuesday, 20 September 11

    View Slide

  3. Limited Red
    Joseph Wilk
    Tuesday, 20 September 11

    View Slide

  4. Limited Red
    Oh crap
    Joseph Wilk
    Tuesday, 20 September 11

    View Slide

  5. Work In Progress
    Tuesday, 20 September 11

    View Slide

  6. Work In Progress
    Tuesday, 20 September 11

    View Slide

  7. Context Switching is
    Expensive
    Tuesday, 20 September 11

    View Slide

  8. Small Batch sizes
    Large
    batches
    Small
    batches
    Tuesday, 20 September 11

    View Slide

  9. Red == Work in Progress
    Tuesday, 20 September 11

    View Slide

  10. 1 day
    1.5 day
    2 day
    Tuesday, 20 September 11

    View Slide

  11. Why is Red Bad?
    Tuesday, 20 September 11

    View Slide

  12. Limit Red
    Measure Red
    Learn
    Visualise Red
    Tuesday, 20 September 11

    View Slide

  13. Are we
    Professionals?
    Tuesday, 20 September 11

    View Slide

  14. Tuesday, 20 September 11

    View Slide

  15. Tuesday, 20 September 11

    View Slide

  16. Tuesday, 20 September 11

    View Slide

  17. Joseph Wilk
    REFACTORING
    TESTING
    RED TIME
    PAIRING
    Tuesday, 20 September 11

    View Slide

  18. Measuring &
    Visualising Red
    Tuesday, 20 September 11

    View Slide

  19. Limited Red
    Learn and adapt from test metrics
    Tuesday, 20 September 11

    View Slide

  20. Tuesday, 20 September 11

    View Slide

  21. Industrial Logic
    Tuesday, 20 September 11

    View Slide

  22. Industrial Logic
    Tuesday, 20 September 11

    View Slide

  23. Tuesday, 20 September 11

    View Slide

  24. Tuesday, 20 September 11

    View Slide

  25. Fighting
    Red
    Tuesday, 20 September 11

    View Slide

  26. ‣Parallel Change
    ‣Narrowed Change
    ‣Sequence Change
    ‣Graceful Retreat
    ‣Piecemeal Change
    ‣Gradual Change
    ‣Evolved Target
    ‣Unified Methods
    Joshua
    Kerievsky
    Patterns
    Tuesday, 20 September 11

    View Slide

  27. Parallel Change
    class ImageResizer
    def resize(x,y)
    ...
    end
    end
    Tuesday, 20 September 11

    View Slide

  28. Parallel Change
    class ImageResizer
    include ThumbResizer
    end
    module ThumbResizer
    def resize(x,y)
    ...
    end
    end
    Tuesday, 20 September 11

    View Slide

  29. Ship it
    Tuesday, 20 September 11

    View Slide

  30. But....
    Tuesday, 20 September 11

    View Slide

  31. Tuesday, 20 September 11

    View Slide

  32. Tuesday, 20 September 11

    View Slide

  33. Ship it
    Tuesday, 20 September 11

    View Slide

  34. Parallel Change
    class ImageResizer
    if FeatureFlipper.active?(:fast_resizer)
    include FastThumbResizer
    else
    include ThumbResizer
    end
    end
    module ThumbResizer
    def resize(x,y)
    ...
    end
    end
    module FastThumbResizer
    def resize(x,y)
    ...
    end
    end
    Tuesday, 20 September 11

    View Slide

  35. But... Both
    versions!!!
    Tuesday, 20 September 11

    View Slide

  36. Ship it
    Tuesday, 20 September 11

    View Slide

  37. Parallel Change
    class ImageResizer
    include FastThumbResizer
    end
    module FastThumbResizer
    def resize(x,y)
    ...
    end
    end
    Tuesday, 20 September 11

    View Slide

  38. Ship it
    Tuesday, 20 September 11

    View Slide

  39. <%- if @game.player?(@active_user) &&
    @black_player.present? &&
    @white_player.present? %>
    <%= render :template => 'messaging' %>
    <%- end %>
    <%- if @game.player?(@active_user) &&
    @black_player.present? &&
    @white_player.present? %>
    <%= render :template => 'messaging' %>
    <%- end %>
    Narrowed Change
    Tuesday, 20 September 11

    View Slide

  40. Narrowed Change
    class GamePresenter
    def initialize(game, black_payer, white_player)
    @game, @black_player, @white_player = game,
    black_player, white_player
    end
    def show_messaging?(&block)
    messaging_should_be_visible = @game.player?(@user) &&
    @black_player.present? &&
    @white_player.present?
    yield block if messaging_should_be_visible
    end
    end
    <%- game_presenter.show_messaging? do %>
    <%= render :template => 'messaging' %>
    <%- end %>
    Tuesday, 20 September 11

    View Slide

  41. Ship it
    Tuesday, 20 September 11

    View Slide

  42. Narrowed Change
    class GamePresenter
    def initialize(game, black_payer, white_player)
    @game, @black_player, @white_player = game,
    black_player, white_player
    end
    def show_messaging?(&block)
    messaging_should_be_visible= @game.human_player?(@user)
    yield block if messaging_should_be_visible
    end
    end
    <%- game_presenter.show_messaging? do %>
    <%= render :template => 'messaging' %>
    <%- end %>
    Tuesday, 20 September 11

    View Slide

  43. Ship it
    Tuesday, 20 September 11

    View Slide

  44. Sequence Change
    Narrowed
    change
    Remove
    control flag
    Extract
    method
    Tuesday, 20 September 11

    View Slide

  45. Sequence Change
    Narrowed
    change
    Remove
    control flag
    Extract
    method
    Tuesday, 20 September 11

    View Slide

  46. Graceful Retreat
    Shave?
    Please step away from the Yak... Slowly
    Tuesday, 20 September 11

    View Slide

  47. http://www.refactoring.com/catalog/index.html
    Tuesday, 20 September 11

    View Slide

  48. Learning more from Red
    ‣ Smart Continuous integration
    ‣ Failure rate
    ‣ Performance
    ‣ Flickering
    Tuesday, 20 September 11

    View Slide

  49. Tuesday, 20 September 11

    View Slide

  50. Tuesday, 20 September 11

    View Slide

  51. Evil hat
    Tuesday, 20 September 11

    View Slide

  52. Tuesday, 20 September 11

    View Slide

  53. More Books!
    Tuesday, 20 September 11

    View Slide

  54. “To measure is to know”
    Lord Kelvin
    Tuesday, 20 September 11

    View Slide

  55. @josephwilk
    [email protected]
    Kiitos
    Tuesday, 20 September 11

    View Slide

  56. @josephwilk
    [email protected]
    Kiitos
    Green
    Tuesday, 20 September 11

    View Slide

  57. @josephwilk
    [email protected]
    Kiitos
    Green
    Tuesday, 20 September 11

    View Slide

  58. @josephwilk
    [email protected]
    Kiitos
    Green
    Ship it
    Tuesday, 20 September 11

    View Slide