Coderetreat in Tokyo 2ndに参加してきました #coderetreat

4/14に開催されたCoderetreat in Tokyo 2ndに参加してまいりました。

■イベント告知■
http://kokucheese.com/event/index/28931/

■togetterのまとめ■
http://togetter.com/li/287731

イベント告知ページにもありますが、この会の趣旨は

「Coderetreat は、プログラマのための練習、学習のためのイベントです。
同じ課題をペアプロで実装しながら、プログラミング、設計、テストなどの技術を学びます。 」

というものです。
以下のルールでペアプログラミングを6セット行うという武者修行的なものです。
(武者修行は言いすぎかな(^^;)
 【ルール】
 ・与えられたお題について、ペアプロを行う。
 ・1セッション45分間とする。
 ・セッションが終わるごとにペアは毎回変わる。
 ・書いたコードはセッションが終わるごとに削除する
 ・セッションが終わった後に振り返りをする

お題は前回同様「ライフゲーム

自分が扱える言語はPHPと、かなり怪しい感じではありますがJavascript
どちらもTDDが行えるようにPHPUnitqunitの準備だけは整えてある状態。
そして、肝心な自分のスキルというとTDDもペアプロの経験もまったくない!という
ある意味、とんでも状態からの参加です。
本当はcorderetreatの前に、1度でもペアプロを別に行ってみたかったのですが
やんごとなき都合上(ただ、仕事が終わらなかっただけですが)で叶わず。
それでも、きっと大丈夫だ!と思い込んで当日を迎えました。

実際に行ったセッションとその感想

以下、当日行ったセッションの簡単な感想です。
皆さんすごい方ばかりでしたので導いてもらうばかりで恐縮でした。

■1回目
ペア:@gohmoriharaさん 言語:php
PHPUnit、TDD自体に私が不慣れだった事もあり、コードを書くことについてはあまり進まなかったですが
考え方とか、そういう話を小さな単位でじっくり考えさせてくださったので大変助かりました。
ペアプロ、TDDとは関係ないですがvimの使い方(このキー使えるよ!)などをいろいろと教えてくださり
違う意味での気づきや得るものもとても多かったです。

■2回目
ペア:@hosaka893さん 言語:Javascript
1回目同様・・・というよりもさらに不慣れだったのでほとんど進まずでした。
とにかく、qunitの扱いとテストコードの書き方になれることに必死なセッションでした。
根気よく、@hosaka893さんがお付き合いしてくださったので本当にありがたかったです。
このセッションで、コードを書いて、テストを動かすというところまでできました。
ここでも、ペアプロ、TDDから外れた部分でも得るものがとても多かったセッションでした。

■3回目
ペア:@yujioramaさん 言語:php
3回目から、コードを書く際の制限がつき始めました。
制限ありでの最初の制限はXPで実施!という制限でした。
一つ一つの制限に対して@yujioramaさんが丁寧に説明してくださったので理解しやすかったです。
後、教え方が上手だったからか、1回目と比べて、少しですが先に進めることができました!
ただ「ちゃんとペアプロしていますか?」という指摘を受けたので、
その点についてはだめだったのだろうなぁと思っています。

■4回目
ペア:@teyamaguさん 言語:php
今回のコードを書く上での制限はf文、配列禁止!という自分の中ではかなりのとんでもルールでした。
ただ、ライフゲームの次世代に行くまでのコードをこの3セッションの間で書くことができていなかったので
制限を無視して、ひとまず次世代につなげていこう!というありがたい提案をいただきました。
(@teyamaguさん、ありがとうございます!)
そんな感じで制限のことは考えずに、次世代につなげていくところまで頑張ろう!という意気込みで進めました。
なので、コードとしては次世代に進めるところまでは書けた感じです。

■5回目
ペア:(ごめんなさい、名前を失念してしまいました) 言語:Javascript
今度の制限は「ピンポン」ともうちょっとあったようですが、これだけならできそうかも!という感じでした。
私がテストコード、一緒に行った方が実際のコードを書いていく・・・というパターンで進めました。
ただ、最後の最後でjavascriptでのペアプロ実施。
お互いに、うんうんうなりながらコードを書いていた気がします。
進みは正直、3回目、4回目の方がよかったですが、導いていただくではなく自分で考えることが多かったので、
何気に一番頭を使い、得るものも多かったのかもしれません。

■6回目(?)
最初はfishballをやろう!という話だったと思いますが、
6セッション目はペアプロは行わずにsmalltalkの講義!という流れに。
私自身smalltalkのコードには触ったことも見たこともなかったので話を聞くだけで精一杯の時間でしたが
色々なものがあるのね〜。と時間があったらやってみたいと思いました。
ただ、前の5セッションの疲れがあったのか、本当に聞くだけで精一杯。。。スミマセン。

振り返り

最後の振り返りで私が書いた付箋の内容と、思ったことについて書いてみます。

■面白かったこと・・・「ペアプロ、TDDができた」
 これはもう、今日の今日までまともにペアプロ、TDDをしたことがなかったので今回はこれに尽きます。
 実際に行ってみて、大変というよりも楽しい!という感じでした。
 ただ、やっぱり経験がなかった分、至らない点が多かったので、少しずつ改善をしていければと。

■おどろいたこと・・・「まったくやったことがない言語でもペアプロができるということ」
 実際に参加するまで、どんな言語の人がいるかわからない。
 きっと猛者ばっかりだからついていけなかったらどうしよう。
 この2点が実際に参加するまで悶々と考えていたことです。
 ペアになった方には最初に正直に「本当にぜんぜんできないのです」とお話させていただきました。
 皆さんまったく触ったことがないのに、phpjavascriptペアプロをしてくださるという展開になりました。
 本当にありがとうございます。皆さんには頭が下がります。
 触ったことがないといいつつも、なんとなくペアプロが成立しているかの用に感じてなんだかすごいなぁと思ったのが
 驚くという意味では一番大きかったです。

■明日からやること・・・「実務でも、できるところからテストコードを書いてみる」
 折角、覚えたことや得た知識は業務にもいかして生きたい!と思う気持ちが強い方なのでやっぱりこれに尽きます。
 今日始めて経験したので、いきなり業務でがっつり・・・!というのは難しいと思っているので
 テストコードを架けそうなところから、少しずつ書いていくことをしてみたいです。
 この話をしたときに「テストコードを書くためにまたテストを書くことにならないように」と指摘を受けたので、
 その点にだけは特に注意して行こうと思います。

所感

会場に着くまでは正直、戦々恐々としておりました。
前日もtwitter上で、不安を吐露しておりました(^^;
自分ができないことには変わりはなかったのですが、それでもすんなりと参加することができました。
これも他の参加者の方やスタッフの方、何よりもファシリテーターの@haradakiroさんのおかげです。
まだまだ至らない点ばかりで、今回の経験でどこが成長したのだろう?とぱっと見ではわかりづらいかもしれませんが
自分の中ではいくつか(・・・といいつつ、実は結構いっぱい)気がついた点があったので、まったく0ではなかったと思っております。

最後になりますが、ファシリテーターの@haradakiroさんをはじめ、スタッフの方、会場提供をしてくださいましたグロースエクスパートナーズ株式会社様にはたくさんの感謝の気持ちでいっぱいです。ありがとうございました。

また次回、あればぜひ参加させていただければと思います。