Ruby Coding Dojo

30
Coding Dojo RailsWayCon 2010 Michael Mahlberg & Jens-Christian Fischer Mittwoch, 2. Juni 2010

description

Introduction to a short Coding Dojo that MMahlberg and I held at the RailsWayCon 10

Transcript of Ruby Coding Dojo

Page 1: Ruby Coding Dojo

Coding DojoRailsWayCon 2010

Michael Mahlberg & Jens-Christian Fischer

Mittwoch, 2. Juni 2010

Page 2: Ruby Coding Dojo

Warning

Mittwoch, 2. Juni 2010

Page 3: Ruby Coding Dojo

Audience Participation

Mittwoch, 2. Juni 2010

Page 4: Ruby Coding Dojo

Dojo?Kata?

Mittwoch, 2. Juni 2010

Page 5: Ruby Coding Dojo

http://www.flickr.com/photos/bengarney/3017352943/

Mittwoch, 2. Juni 2010

Page 6: Ruby Coding Dojo

it‘s not about rails

http://www.flickr.com/photos/chris_gin/2490980153/

Mittwoch, 2. Juni 2010

Page 7: Ruby Coding Dojo

Kata 形

• Form

• Choreographed pattern of movements

Mittwoch, 2. Juni 2010

Page 8: Ruby Coding Dojo

Dojo 道場

• The Place of the Way

Mittwoch, 2. Juni 2010

Page 9: Ruby Coding Dojo

But Why?

Mittwoch, 2. Juni 2010

Page 10: Ruby Coding Dojo

Mittwoch, 2. Juni 2010

Page 11: Ruby Coding Dojo

Mittwoch, 2. Juni 2010

Page 12: Ruby Coding Dojo

Mittwoch, 2. Juni 2010

Page 13: Ruby Coding Dojo

Mittwoch, 2. Juni 2010

Page 14: Ruby Coding Dojo

Kata - Form

• Allows you to practice

• Allows you to free your mind of tediousness

• Muscle Memory

Mittwoch, 2. Juni 2010

Page 15: Ruby Coding Dojo

Different Katas

• Problem Solving Kata

• Tools Kata

Mittwoch, 2. Juni 2010

Page 16: Ruby Coding Dojo

Problem Solving

If can‘t think of at least 3 solutions,you haven‘t yet understood theproblem

– G. Weinberg

Mittwoch, 2. Juni 2010

Page 17: Ruby Coding Dojo

Tools

The Way of the carpenter is to become proficient in the use of his tools, first to lay his plans with a true measure and then perform his work according to plan.

– Go Rin No Sho

Mittwoch, 2. Juni 2010

Page 18: Ruby Coding Dojo

Now that we have covered the theory

Mittwoch, 2. Juni 2010

Page 19: Ruby Coding Dojo

Coding Dojo

Randori Style

Mittwoch, 2. Juni 2010

Page 20: Ruby Coding Dojo

Rules

• Choose a problem (Actually, we have chosen)

• Pair programming - Driver / Navigator

• Test Driven

• Red-Green => Switch Roles

• New Person coming in after 2 cycles

• Time limit (2 Minutes)

Mittwoch, 2. Juni 2010

Page 21: Ruby Coding Dojo

I wrote some codeThrew it awayRewrote it againIn front of other peopleIt was clever codeThey frowned at it

http://bossavit.com/dojo/archives/000792.html

Mittwoch, 2. Juni 2010

Page 22: Ruby Coding Dojo

No Spoilers!

Mittwoch, 2. Juni 2010

Page 23: Ruby Coding Dojo

100 Doors

There are 100 closed Doors & 100 Monkeys

Mittwoch, 2. Juni 2010

Page 24: Ruby Coding Dojo

100 Doors

The first monkey goes through all doors and opens them

Mittwoch, 2. Juni 2010

Page 25: Ruby Coding Dojo

100 Doors

The second monkey goes through every 2nd door, and changes it (open when closed, close

when open)

starting with the second

#2, #4, #6, ....

Mittwoch, 2. Juni 2010

Page 26: Ruby Coding Dojo

100 Doors

The third monkey changes every 3rd door

Starting with the third

#3, #6, #9, ....

Mittwoch, 2. Juni 2010

Page 27: Ruby Coding Dojo

Your Mission

List all open doors

Mittwoch, 2. Juni 2010

Page 28: Ruby Coding Dojo

100 Doors

 ;assume all memory is initially set to 0

inc $1  openloop: inc $200,X   inc $1   inc $1 txa   adc $1 tax cpx #$65   bmi openloop  

Mittwoch, 2. Juni 2010

Page 30: Ruby Coding Dojo

Contact Us

Michael Mahlberg

Consulting Guild AG

@MMahlberg

[email protected]

http://agile-aspects.blogspot.com

Jens-Christian Fischer

InVisible GmbH

@jcfischer

[email protected]

http://blog.invisible.ch

Mittwoch, 2. Juni 2010