frozenrails2011

58
@josephwilk Tuesday, 20 September 11

Upload: joseph-wilk

Post on 11-Nov-2014

1.539 views

Category:

Business


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Frozenrails2011

@josephwilk

Tuesday, 20 September 11

Page 2: Frozenrails2011

Joseph WilkTuesday, 20 September 11

Page 3: Frozenrails2011

Limited Red

Joseph WilkTuesday, 20 September 11

Page 4: Frozenrails2011

Limited RedOh crap

Joseph WilkTuesday, 20 September 11

Page 5: Frozenrails2011

Work In Progress

Tuesday, 20 September 11

Page 6: Frozenrails2011

Work In Progress

Tuesday, 20 September 11

Page 7: Frozenrails2011

Context Switching is Expensive

Tuesday, 20 September 11

Page 8: Frozenrails2011

Small Batch sizes

Large batches

Small batches

Tuesday, 20 September 11

Page 9: Frozenrails2011

Red == Work in Progress

Tuesday, 20 September 11

Page 10: Frozenrails2011

1 day

1.5 day

2 day

Tuesday, 20 September 11

Page 11: Frozenrails2011

Why is Red Bad?

Tuesday, 20 September 11

Page 12: Frozenrails2011

Limit Red

Measure Red

Learn

Visualise Red

Tuesday, 20 September 11

Page 13: Frozenrails2011

Are we Professionals?

Tuesday, 20 September 11

Page 14: Frozenrails2011

Tuesday, 20 September 11

Page 15: Frozenrails2011

Tuesday, 20 September 11

Page 16: Frozenrails2011

Tuesday, 20 September 11

Page 17: Frozenrails2011

Joseph Wilk

REFACTORING

TESTINGRE

D TI

MEPAIRING

Tuesday, 20 September 11

Page 18: Frozenrails2011

Measuring &Visualising Red

Tuesday, 20 September 11

Page 19: Frozenrails2011

Limited RedLearn and adapt from test metrics

Tuesday, 20 September 11

Page 20: Frozenrails2011

Tuesday, 20 September 11

Page 21: Frozenrails2011

Industrial Logic

Tuesday, 20 September 11

Page 22: Frozenrails2011

Industrial LogicTuesday, 20 September 11

Page 23: Frozenrails2011

Tuesday, 20 September 11

Page 24: Frozenrails2011

Tuesday, 20 September 11

Page 25: Frozenrails2011

Fighting Red

Tuesday, 20 September 11

Page 26: Frozenrails2011

‣Parallel Change

‣Narrowed Change

‣Sequence Change

‣Graceful Retreat

‣Piecemeal Change

‣Gradual Change

‣Evolved Target

‣Unified MethodsJoshua Kerievsky

Patterns

Tuesday, 20 September 11

Page 27: Frozenrails2011

Parallel Change

class ImageResizer

def resize(x,y) ... end

end

Tuesday, 20 September 11

Page 28: Frozenrails2011

Parallel Change

class ImageResizer include ThumbResizerend

module ThumbResizer def resize(x,y) ... endend

Tuesday, 20 September 11

Page 29: Frozenrails2011

Ship it

Tuesday, 20 September 11

Page 30: Frozenrails2011

But....

Tuesday, 20 September 11

Page 31: Frozenrails2011

Tuesday, 20 September 11

Page 32: Frozenrails2011

Tuesday, 20 September 11

Page 33: Frozenrails2011

Ship itTuesday, 20 September 11

Page 34: Frozenrails2011

Parallel Changeclass ImageResizer if FeatureFlipper.active?(:fast_resizer) include FastThumbResizer else include ThumbResizer endend

module ThumbResizer def resize(x,y) ... endend

module FastThumbResizer def resize(x,y) ... endend

Tuesday, 20 September 11

Page 35: Frozenrails2011

But... Bothversions!!!

Tuesday, 20 September 11

Page 36: Frozenrails2011

Ship itTuesday, 20 September 11

Page 37: Frozenrails2011

Parallel Change

class ImageResizer include FastThumbResizerend

module FastThumbResizer def resize(x,y) ... endend

Tuesday, 20 September 11

Page 38: Frozenrails2011

Ship itTuesday, 20 September 11

Page 39: Frozenrails2011

<%- 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

Page 40: Frozenrails2011

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 endend

<%- game_presenter.show_messaging? do %> <%= render :template => 'messaging' %><%- end %>

Tuesday, 20 September 11

Page 41: Frozenrails2011

Ship itTuesday, 20 September 11

Page 42: Frozenrails2011

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 endend

<%- game_presenter.show_messaging? do %> <%= render :template => 'messaging' %><%- end %>

Tuesday, 20 September 11

Page 43: Frozenrails2011

Ship itTuesday, 20 September 11

Page 44: Frozenrails2011

Sequence Change

Narrowed change

Remove control flag

Extract method

Tuesday, 20 September 11

Page 45: Frozenrails2011

Sequence Change

Narrowed change

Remove control flag

Extract method

Tuesday, 20 September 11

Page 46: Frozenrails2011

Graceful Retreat

Shave?

Please step away from the Yak... Slowly

Tuesday, 20 September 11

Page 47: Frozenrails2011

http://www.refactoring.com/catalog/index.html

Tuesday, 20 September 11

Page 48: Frozenrails2011

Learning more from Red

‣ Smart Continuous integration

‣ Failure rate

‣ Performance

‣ Flickering

Tuesday, 20 September 11

Page 49: Frozenrails2011

Tuesday, 20 September 11

Page 50: Frozenrails2011

Tuesday, 20 September 11

Page 51: Frozenrails2011

Evil hat

Tuesday, 20 September 11

Page 52: Frozenrails2011

Tuesday, 20 September 11

Page 53: Frozenrails2011

More Books!

Tuesday, 20 September 11

Page 54: Frozenrails2011

“To measure is to know”Lord Kelvin

Tuesday, 20 September 11

Page 55: Frozenrails2011

@josephwilk

[email protected]

Kiitos

Tuesday, 20 September 11

Page 56: Frozenrails2011

@josephwilk

[email protected]

Kiitos

Green

Tuesday, 20 September 11