1日6セットもペアプログラミングするなんて、しんどいわー、しんどいわー、と思ってた @HIROCASTERでございませう。
というイベントに参加して来ました。
結果としては、Ruby x 1 / JavaScript x 3 / Smalltalk x 1 という5セットペアプロしました!
Coderetreat とは?
このイベントは1日中集中して、ソフトウェアの開発と設計にフォーカスして練習するためのイベントです。
仕事を片付けなければならない通常の仕事であるプレッシャーから解放して、徹底的に練習する機会を提供することで、スキル(プログラミングや高度な設計など)に非常に有効的なことで知られています。
モジュール設計、オブジェクト指向などの基本原則を改めて、練習することによって、将来にわたって変更コストを小さくする“エレガントなコード”を書くスキルを磨くことが出来ます。(ソフトウェアのテストを書くのは基本なので、身につけていない人はとても鍛えられる事になるはずです)
具体的には、コンウェイのライフゲームをペアプログラミング(2人で1つのコンピュータを使ってプログラミングする)で1日に5〜6回も毎回違うペア同士で、プログラミングをします。これによって、学びを得ます。
コンウェイのライフゲームとは?
まずは、下記の動画を見てください。
簡単に説明すると、セル(マス目)のまわりのセルが何個死んでいるかによって、次のフェーズで、そのマス目が生きるか死ぬかが決まります。
自分を中心として、まわりの8マスが
- 1個以下しか生きていない場合は、死亡
- 2個生きていると維持
- 3個生きていると誕生
- 4個以上生きていると死亡
というのが基本ルールです。
ペアプログラミングでは?
上記の基本ルールを前提にして、規定されていない内容はペア同士で決めて実装をおこなっていきます。
例えばセルの壁側では、どういう動きをするのか?セルの個数は全体でいくつにするのか?などなど。
ペアプログラミングは、45分1セットとして、5分の休憩をはさんで、また、45分のセットをはじめます。
コードを消す
45分の1セットが終わると書いたコードは必ず消します。
次のセットでは、新しいペアの人と、どうやって作っていくのかを話し合いながら、ルールを決めて実装していきます。
これを実際におこなうことによって、どれぐらい実装したコードをまた一から実装し直すことができるのか実感できるようになります。
つくりなおすことによって
ソフトウェアを作り始めて、初期の実装や設計にミスを犯しながらも、再実装するコストをリスクと考えて、再実装しないで、むりやりつくりあげる経験をしたことのある人もいるのではないでしょうか。
そういったことも、今回のようにどれぐらいのサイズであれば、十分に再実装できるのか実感を得ることが出来ます。これは、プログラマとして大きな経験となるはずです。
また、実装アプローチを複数試すことによって、多くの気づきを得ることが出来ます。
感想
1日に6回もペアプログラミングをおこなうことは、とても疲れます。ですが、僕の実感では予想以上には疲れませんでした。それ以上に多くの気づきを得ました。
ですが、本当に疲れます。過去に1日に何度もペアプログラミングをおこなった経験があるので、そうとう疲れると予想していたのです。
全くパラダイムの違う言語としては、Smalltalkにチャレンジしました。ほとんど文法がわからない状態でしたが、なんとなく数行書ける程度には知識を得ました。
このときが一番疲れました。頭をフル回転してやるのです。そして、すごく大きな事を学びました。こんな事ができるのか!全然、違うな!という気持ちでした。
そして、自分が知っている言語で、プログラミングをすると、ソフトウェアの開発を支配している感覚が得られて、プログラミングの楽しさを再認識できたのです。
Agile渋谷でもやる
主催しているコミュニティ「Agile渋谷」でも、Coderetreatをやろうと思います。
- 会場提供スポンサー
- ランチ・お菓子スポンサー
をおこなって頂ける企業がいたら、ぜひ、お声がけください。
こういったノウハウや経験のあるプログラマがいる企業は今後、成長の天井が変わってくるかもしれません。
30代前後の経験あるプログラマほど、こういうイベントに参加すると、貴重な経験を得るのではないかと考えます。