いつクリはてブロ

いつになったらクリエイティブするの?

アジャイル開発の「ドキュメントはいらない」の意味を考えてみた

今回のまとめ

単行本派のことを考える優しさが必要って話。

実際にXPっぽい開発をやって分かった事

実際にエクストリーム・プログラミング(XP)っぽい開発をやってみてるんだけど、改めてよく言われる「ドキュメントはいらない」という文句について考えたことがある。
@さんと二人で開発をしてたんだけど、ピーク時はお互いコミット合戦になっていて、刻一刻とコードが加筆修正されていった。
にもかかわらず、お互いに作業領域が被らないように進めつつ、何をやっているか把握し続けていた。
もちろんお互いドキュメントなんて書こうともしなかったんだけど、その状態を維持できたのは何故か。

で、これは週刊連載されている少年漫画に似ていると思った。
読者と作者が同一だったりするのでうまい喩えじゃないかもしれないけど。
毎週掲載される漫画の1話分は、数分で読める。
開発中に毎週漫画を読んでいれば、当然だがストーリーは全て把握できる。

だが、単行本派はそうじゃない。
この場合の単行本派はクライアントだったり追加で投入された人員だったりする。
単行本は10話くらい収録されているので、追いつくのに時間がかかるし、読んでも忘れやすい。*1
これが一冊だったらいいが、開発の場合それが100冊とか200冊になることも少なくない。
そうなると、Wikipedia程度でいいからあらすじや登場人物紹介が必要不可欠になってくる。
それがドキュメントだ。

結局ドキュメントは必要か?

「ドキュメントはいらない」「ソースコードがドキュメント」というと聞こえはいいが、それが通用するのは週刊派だけで、単行本派が絡んでくるとそうじゃないということを忘れてはいけない。
逆に、週刊派の仲間内だけでやってるのであればどんどんドキュメント無しで進めていいと思うけど、2,3週読み飛ばすだけで追いつけなくなるので、ちょっと親切なコメントやメモ書きは常に残しておいた方が良い。
今回の場合、それらの実現に以下のwebサービスがすごく役立ってくれた。*2
Free source code hosting for Git and Mercurial by Bitbucket
youRoom
Pivotal Tracker - Simple, Agile Project Management Software & Team Collaboration


この辺の考え方に関して、「テスト駆動開発やYAGNI原則を採用することで〜」というような説明はよく目にするが、直感的ではない。
実際やってみて、私は「ドキュメントはいらない」をこういう風に解釈した。
割といいように解釈されがちなこのフレーズ、他の方はどうなのか知りたいです。

*1:面白い漫画やアニメ、夢中になって一晩で見たけど3日後には頭からすっかり抜けてるという経験、誰でもあると思う

*2:ステマじゃないよ!