TDD Boot Camp 名古屋(2日目)に参加しました

TDD Boot Camp名古屋の2日目に参加しました。

2日目はレガシーコード(=テストコードのないプログラム)改善体験ワークショップということで、午前中はid:t-wadaさんのライブコーディングによるデモ。午後は言語毎にグループに分かれて改善実践ワークを行いました。

僕はC++のグループに参加しました。id:kaorun55さん(昨日はペアプロ、今日は題材のご提供、ありがとうございました)の提供してくださった香ばしいレガシーコードを題材に、そのコードの仕様化、リファクタリングと機能変更を行う、はずだったのですが...現実はレガシーコードのように厳しいですね!時間が足りなくて、既存クラスの一部の仕様化と変更ができるに留まりました。

僕が感じた最大の難しさは、グループとして行動することの難しさです。この難しさ、以前も感じたことがあると思って、それがなにか考えていたのですが、さっき思い出しました。これ、三年位前に名古屋アジャイル勉強会のXP入門ワークショップで行った、4コママンガをグループで製作するワークで感じたことと、同じです。同じとはどういうことかというと、ある程度描ける人なら、4コママンガを描くのに、そんなに時間はかからないです。一人で描いていいなら、別段なんでもない。そうじゃなくて、グループで、タスクを洗い出して分担して、それらをつなぎ合わせていくことが難しい。そのためにタスクかんばんを使ったりふりかえりを行なったりして、学びを得るというワークなのでした。

今回はお題がTDDですが、難しさは同じです。これまでのパラダイムでは、コードを書くという行為は、非常にパーソナルなものです。使うエディターやキーバインドは通常個人の自由だし、インデントスタイルや命名センス、それらは最終的にはある程度あわせるとしても、そのときそのときは個人に属するものと考えられています。しかし、TDDはプログラミングを時間軸方向に構造化してしまい、さらにペアプロ(今回だとさらにグループワーク)として共有化してしまいました。このパラダイム変更は大きくて、そうそう容易にものにできないのだと思います。今から、なにを目的に、どの部分を、どんなふうに仕様化しようか。それはなんの目的のための工程のどの部分なのか。どこをどんなふうに改修しようか。それはどんな目的のための、取り組みのどの部分なのか。そういったこと、一人作業なら、自分のなかで考えを持って行なえばいいだけのことなのですが、グループワークとなると、ひとつひとつを意識あわせしないと、簡単に迷走状態になってしまうのです。

ただし、ペアプロやグループワークで行うTDDが、必要もなく面倒なだけの行為なのか、というと、そうではないと思います。ペアプロ、TDDともに、アジャイルのコンセプトにあるように、フィードバックを得るチャンスを最大化しようとしているのです。そうでなければ、道を誤ってしまいかねない、ということです。それだけの潜在リスクを、これまでのプログラミングの仕方では、抱えたままにしているのだと。そのリスクの存在を、ペアプロやTDDの難しさが示しているのだと、考えるべきなのだと思いました。

今日のワークでは、僕の参加したグループは、途中で話し合いを持ち、目的(どのような機能変更をしたいのか)を踏まえて、仕様化する範囲を見定め、その上で改修を行うように、軌道修正することができました。他のグループの方も、おなじようなことをされていましたし、そういうことを明確にして、共有しながら進めることが、大切みたいです。レガシーコード改善をチームで行なうこと(仕事で行うなら、個人プレーということはないですよね)の難しさを実感することができたのは、よかったと思います。


そういえば、昨日のTDDの概説で和田さんが、コミック「スティール・ボール・ラン」のお話をされていて、このコミックは才能と努力の相克の物語だ、これが、ハッカーでない普通のプログラマである私たちが、アジャイルやTDDで、様々な課題や困難に立ち向かっていこうとするのと重なる、というようなことを言っておられました。そして以前、角谷さん(昔和田さんにアジャイルコーチを務めてもらった、と伺っています)も、普通のプログラマがチームで勝つためのアジャイル、ということを言っておられたような記憶があります。お二人が伝えてくださったことが、今回のワークで自分も少しリアルに感じることができたように思います。

TDD Boot Camp名古屋に参加できて、よかったです。中心になって企画をたてて進めてくださったid:bleis-tiftさん、講師を務めてくださった和田さん、参加してくださった皆さん、どうもありがとうございました。

僕は名古屋アジャイル勉強会のスタッフとして運営のお手伝いをさせていただきました。今回のふりかえりからの気づきやアイデアが、それが次回以降のTDD Boot Campに活かされるといいな、と思います。次のTDD Boot Campは、九州は佐賀での開催が計画されていると聞きました。ぜひ有意義な学びの場が開かれて、多くの人があらたな可能性を見つけられますように。