Your Linux Data Center Experts

Notes on Code Retreat

Goal: Talk about my experience at a Code Retreat
In a few minutes, I'm going to ask what you want to hear about.
Code Retreat:
   About the practice of programming.
   Not about producing a program, it's about programming.
   Use a technique for 30 minutes with one partner, then remove and repeat.
   Program like you have all the time in the world.
   It's not practice that makes perfect, it's perfect practice that makes perfect.
About me:
   I'm not a programmer, I'm a sys admin.
Conway's Game of Life:
   Simple rules.
   Complex enough to be interesting.
   Available variations.
Pair Programming:
   Agile development.
   Two developers working together.
   One driver.
   One reviewer and strategist.
   Typically switching roles.
Test Driven Development
   Write tests first
      That way you think about the API and making it testable.
   Write only the code required to pass the test.
   Many different levels of testing, but usually unit.
   Fakes/mocks.
So what would you like me to talk about?

The Experience
   If you finish it, you're doing it wrong.
   Switching pairs every hour.
   Throw away the code and start over.
   This totally proved the value of unit testing to me.
   Be careful of the level of your testing.
      API versus game rules.
   Bill Tucker asked some very good questions:
      Array versus infinitely sized world versus torus world?
      Could that be refactored?
   Exposure to different languages and environments:
      Windowed vi
      Eclipse
      Ruby
      Prolog
      Python
   Test, develop, refactor, test.
      Dictionaries versus sets.
   Be careful about acting like you're under a deadline though.
      One pairing, discussing the API, conceded in order to make progress.

Questions from UCAR presentation:
   How well did the pair programming work?
   How did the test driven development go?
   How do you know how to correctly scope the tests so they are testing
         the right thing?
   Would it be possible to have a shorter code retreat, say 4 hours instead of 8?
   What do you need to successfully hold a code retreat?