参加:TDD Boot Camp 東京 1.6
エンジニアを育てる仕事をしているはずの自分が本当に必要なことを知らず、そして伝えていないような気がずっとしていました。
大事なことを探すべく、現役プログラマでもないのに参加してきました。
午前だけとはいえ、デブサミのスライド「プログマが知るべき、たったひとつの大事なことがら」を拝見(僕は仕事の都合で参加できませんでした)して以来尊敬している、id:t-wada さんに会えるというのも理由のひとつでした。
※実際は日程を調整して午後、そして懇親会までも参加してくださいました。
概要
-
- 日程:2011 年 7 月 31 日(日)
- 場所:ニフティ株式会社 セミナールーム
- 主催:id:pocketberserker さん
いつものように id:absj31 さんが"圧倒的な"まとめを残されているので、詳しくはそちらをご覧頂ければと思います。
感謝!
僕は主に、自分の感想を記したいと思います。
午前
午前中は和田さんの講演、およびペアプロで TDD を行うデモでした。
実は、TDDBC 1.5 の ust を見ていた(午後から娘の保育園の行事だったので途中まで)ので、一度は聞いた内容でした。
しかし、直にお話を伺うと心への響き方は全く違うのだなと実感しました。
正直なところ、エンジニアの幸せな環境づくりを考える身として、お話の全てに心を打たれていました。
その中で特に強く印象に残ったのが、
完璧主義の呪い
でした。
「完璧な設計ができるまで実装を始めない」、それって「勉強してからやってみよう」とか「力をつけてから勉強会に参加しよう」とかと本質は同じ。これまでの僕がまさにそうでした。
一歩を踏み出してみなければ、何も変わらない。
今は少しずつ変わることができている、と思います。そして、若者たちに熱意を持って伝えることができていると思います。
午後
前半、後半に分けてのペアプロでした。前半、後半とも制限時間後にレビューを実施します。
お題は、簡単な連想配列というか Key-Value Store 的なものです。
仕事柄、プロダクトコードを書くこともなく他人と一緒に作業をすることもなかったので、非常に新鮮でもあり足を引っ張らないか心配でもありました。
蓋を開けてみると、そんなことを考えている余裕はありませんでした。初対面だけれども、意見を交わしながらどんどん進めることとなりました。
ペアプロ前半
まず、ペアプロのテンポに慣れるのが大変でした。
午前中の実演では本当にめまぐるしいスピードでドライバとナビゲータが入れ替わっていましたが、なかなかそこまでリズミカルには行きません。二人でウンウン唸る時間も結構長いです。
ただ、TDD を実践してみて、この時点でも以下の点は実感できました。
テストを先に書くことで、仕様の曖昧さに気付く
文章で書かれた仕様だけでは、内部でどんなデータの持ち方をしようかとか、引数と戻り値をどんな型にすれば使いやすいか等しか考えが及びませんでした。
でも、テストを考えることで「null をキーとして追加したら?」「取得する際に、指定したキーのデータがなかった場合は?」などに気付き、TA の方々に確認することができました。
開始時点では、「単純な仕組みだし、これなら別に TDD でなくてもすぐにできそうだ」と思っていた節がありましたが、やはりこのレベルでも必要ですね。
ペアプロ後半
前半とはペアの相手を変えて実施します。
内容は、前半の課題を引き続き。そして、お決まりの?仕様変更です。
前半と比べて、だいぶ慣れてはきました。
ただ、ふと気付くとナビゲータ役を長く続けていたりと、むしろ形が崩れていたかなというのが感想です。
そして、仕様変更には対応することができませんでした。
無念。
仕様変更の際にテストコードまで書き換える必要があるのは、実装を公開しているということ
これが、ここではよくわかりました。
最初のユーザは自分
という考えに則り、利用者側の扱いやすいインタフェースで設計したつもりでしたが、まだ甘かったようです。
懇親会
Boot Camp の熱気そのままで熱く語り合いました。
個人的には、若い人たちのマインドが素晴らしいと感じました。
主催者の id:pocketberserker さんや F# での解答例を披露されていた id:bleis-tift さんなど、精力的に活動されている非常に若い人たち。
日本は、まだまだ捨てたもんじゃないです。
2 日前の第 17 回 G* ワークショップの際、ぜひ話してみたいと思っていた id:kyon_mm さんとも話すことができました。
やはりとても謙虚で前向きで、素敵な方でした!