Pick a day and pick a topic.
Gather people.
Gather food and snacks.
Have fun!
Recommendation: Start with a code retreat
Code Retreat Core Concepts
45 minutes of pairing TDD on Conway's Game of Life
15 minutes of meta conversation
Rotate partners
Code should be considered "throw away"
Reasons to do a Code Retreat style event
More professional experience outside of coursework
Chance to practice your skills
Chance to teach/learn
More "ah ha!" moments
Useful tools for a Code Retreat
Most useful workflow you'll gain up front:
$ git init
$ git add .
$ git commit -am " this code does x"
$ git status
$ git diff
Less "Oh no I lost everything"
Less "I just want to get back to when my code worked"
Less copy paste rename "snapshots"
Less fear of experimentation
More obvious what changed
More recovering from mistakes quickly
1 driver
1 navigator
2 keyboards and mice
Switch regularly
Use a clock - Pomodoro! is pretty useful for 5-10 minute intervals
Write a test, switch, implement, write a test, switch
Play nice :-)
Teach/learn
:-/ "I'd rather just work alone, I work better that way"
:-( "Ughhhhh, I've been stuck for 4 hours"
:-) "Let's talk this out"
Write tests first
Use framework for the language you want to use
Explore behavior at a low level
Build confidence in your implementation
Avoid slow/painful setup to test behavior
Minimalist sample for ruby:
$ gem install rspec
$ cd path/to/project
$ rspec --init
$ rspec
describe ObjectUnderTest do
describe '#function_under_test' do
it 'has some behavior' do
# assert here
expect ( 1 +1 ) . to eq ( 2 )
end
end
end
Less "Why isn't this working the way I want?!"
Less print everything and rerun the application
Less stepping through with debugger blindly
More "Let's test just this one part and verify our assumptions"