Global Day of Coderetreat - Notes from Indianapolis
Our coderetreat in Indianapolis went very well - exceeded my expectations! Of course, it was my first time doing anything with coderetreat, and it was just me: hosting, facilitating, etc. so I really didn't know what to expect. :)
We had 17 people register for the event, and 13 of them showed up. I highly recommend charging a refundable fee to attend - I think it made a huge difference in helping provide that "psychic weight" for people when it came to attending or not. And on the up-side, when people signed up, the signup page let them know that they could get a refund if they wanted, otherwise their $5 signup fee would be donated to the non-profit Interactive Intelligence Foundation which helps at-risk youth, with a focus on technology. (I work for Interactive Intelligence, and they were also our host and sponsor.) Everybody donated their fee, so it doubled as a great way to raise a little money too.
Only a few folks had experience with TDD, and I'm not sure that any use pairing on a regular basis. As someone who has experienced the daunting nature of TDD when attempted by yourself, I tried to focus on it throughout the day (potentially at the cost of other things) because in my experience, doing it with a pair, in a guided/structured environment, can really demystify it and make it approachable. And I would say that it worked - the majority of responses during the closing session were around things learned about TDD and pairing.
We did 6 regular-length sessions with the following focus during each:
1. Getting started, familiarity with the problem space
2. Primitive Obsession (though I didn't call it that) - treating the Universe as infinite and not represented with a huge array
3. Introduction of TDD and exploring abstractions further: polymorphism, no boolean flags, etc.
4. Ping-pong pairing, focusing on expressive names
5. More TDD (ping-pong was a hit, so we kept it going) with a "Tell, Don't Ask" constraint.
6. "Give it your best shot" -- got back with original pairs, in original language, and tackled it again to see how it went this time.
Since I was running around trying to do everything, I tried to balance facilitating with hosting -- for example, we only skyped with Corey for a few minutes at lunch. In hindsight that was a good decision, it would've been too stressful for me to try and connect with other groups. BUT, I did join a common google hangout for a while and just left everything muted, and let it sit there during sessions. I really liked that - people here could get up between sessions and get a "window" into about 5 or 6 international groups at various stages. It was pretty cool to be able to see other people doing the same thing, even if we weren't talking with them.
Overall it was a great time, and everybody stayed engaged for the whole day.
Some summarized closing circle comments:
- new ideas for code/design
- tried some new languages
- learned a new rspec convention
- learned "Tell, Don't Ask"
- learned about working together to design code
Things that surprised:
- surprised to be inspired to get excited (again) about programming
- surprised to never get a fully working system
- surprised how many ways to solve a simple problem
- surprised how many different levels there are to understanding the problem; how certain things are more or less important to other people
- surprised how effective ping/pong pairing is
- surprised how tired they were
- surprised how hard it was to delete the code after each session
Overall it was a great day and I saw a lot of engagement and excitement, and I was very encouraged by the whole thing and enjoyed it. Thanks to everybody involved!