読者です 読者をやめる 読者になる 読者になる

Coderetreat in Nagoyaに参加してきた。 #coderetreat

f:id:toyoshi:20120429193240j:plain
4月28日にCoderetreatというプログラマのための練習、学習のためのイベントに参加してきました。

このコードリトリートというイベントは45分を1セットとして6セット、さまざまなルールに従いながらペアプログラミングとTDDで課題に挑戦します。45分という短い時間でテストを書きながら初対面だったり使用言語も違う人と課題に挑戦するというのはとてもなかなかない機会です。頭をフル回転させるため17時にはクタクタになり、懇親会にも参加せずにすぐに帰宅しましたが、プログラミングってやっぱり楽しいと再確認させられる素晴らしいイベントでした。

このエントリではそんなイベントで僕が印象に残ったことをまとめます。

ペアプログラミングは素晴らしい、ただし続けると死ぬ

コードリトリートは基本ペアで課題に取り組みます。ペアプログラミングとは二人一組で、コードを書く”ドライバ”と、それを見ながら指示をだす”ナビゲータ”に分かれてコーディングをするプログラミングスタイルです。
2人で1つのコードを書くので、コーディングのスピードが遅くなりますが、ナビゲータはコーディングをしないのでバグを見つけやすかったり、先に次の設計を考えたりすることができます。またプログラマが手抜きをしにくくなりますのでコードの品質はかなりあがるでしょう。
そして、コーディングには直接関係ありませんが、プログラマ同士が意見や知識を交換するのでプログラマのスキルアップにもとてもいいと思います。

頭の中を共有するのは簡単ではない

今回の課題は6回ともライフゲームの実装でした。
一人で実装するだけなら難しくない内容ですが、初対面の人と一緒に進めるのは難しかったです。
例えばライフゲームならば実装はゲームの盤面からするのか、各セルからするのか最初に考えるのですが、なぜそうしたいのかというのをいちいち相手と合意をとって進めなければならずもどかしく思うことが何度もありました。
普段一人で頭の中で無意識にしている設計をノートに書いたり、口に出したりして説明するのは面白い経験でした。

ピンポンTDDはプログラマの禅問答だ

5回目のセットはピンポンTDDといって
テストファーストかつ、一人はテスト、一人はプロダクトコードしか書いてはいけない」
というルールでした。
それまでもテストファーストだし、コーディングも交互にやってきたので特別新しいこととは思いませんでしたが、いざ始めると全然違いました。僕がテスト担当だったのですが下記のような感じでコーディングを進めます

  1. 僕がセルの生死を訪ねるメソッドのテストを書く => メソッドがないのでテスト失敗
  2. ペアがフェイクを実装 => テスト成功
  3. 僕が別パターンを書く => テスト失敗
  4. ペアがコードを修正 => テスト成功
  5. 僕がさらに別パターンのテストを書く => テスト失敗
  6. ペアがコードを修正 => テスト成功

実際にやってみないと伝わらないかもしれませんが、僕はテストを失敗させようとしてテストを書くし、ペアは最小限の労力でテストを成功させてやろうとコードを書きます。まるで心理を追求しあう僧侶の知恵比べのようであり、お互いの技を受け合うプロレスのようでありました。とても楽しいです。

無料のランチ

f:id:toyoshi:20120429200448j:plain

コードリトリートはランチ付きでありながら基本無料のイベントです。
ランチが無料なのはなんか1000円以上にうれしいですし、イベントの昼飯って結構僕は時間がもったいなくて面倒くさく感じる方なので、会場でそのままランチ食べられるのはいいなと思いました。
※弊社スタンドファーム株式会社もスポンサーをさせて頂きましたが、僕の小遣いが減らない以上は無料に感じるものです

知らない言語に触れる楽しさ

コードリトリートはなぜか使用言語やプログラミングスキルを全然考えてペア組をしてもらえません。
「はーい、ではみなさん自由にペア組んで」
というふうです。普段自分が使わない言語に触れられてとても面白いです。
特に最後は@bleisさんにF#でペアを組んでもらいましたが、関数型の考え方自体が面白くとてもワクワクしました。(@bleisさんありがとうございました)

スポンサーについて

Piano Bar Club Adriana有限会社 スクラッチソフト株式会社 クラフツ らと、弊社スタンドファーム株式会社でスポンサードさせて頂きました。
うちは2人でやっており、来月でやっと1期が終わるような会社です。こういうイベントにスポンサーになるのは初めてだったのですが、Adrianaさんのおかげもあり美味しいランチが提供できてとてもうれしい気持ちになりました。僕自身は名古屋の勉強会に育ててもらって、会社自体も勉強会から発足したようなものですので今後もこうやって地元コミュニティに還元していけたらと思っています。

まとめ

プログラマのスキルが1日でガンガン伸びた! #coderetreat in Drecom powered by AgileShibuyaというエントリでも述べられているようにプログラミングのスキル向上を感じました。
特にTDDやエクストリーム・プログラミングといったところを実践的に学びたい人には良い機会だと思います。

個人的に特に面白かったのは、普段勉強会で合う人達のコーディング力を目の当たりにできたということです。何年も前から知り合いの人でも実際にコーディングしているところというのはなかなか見れないものです。尊敬する人たちのコーディングスタイルや考え方に触れられるのはとてもいい経験になりました。

みなさんお疲れ様でした。またぜひ参加したいと思います。
今回参加できなかった皆様、これはオススメのイベントですよ!