BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Agileプロジェクトでどうやって知識を伝達する方法

Agileプロジェクトでどうやって知識を伝達する方法

原文(投稿日:2009/8/18)へのリンク

知識の伝達を特徴づけるのは、文脈についての理解を、1つの単位(個人や、チーム、部門、組織)からもう1つの単位へ転送することだ。ほとんどの組織では理解したことを文書化するのに多くの時間を費やしているので、知識の伝達過程は円滑で効率的だ。Agile開発は文書作成を推奨せずに、“包括的な文書よりも動くソフトウエア”を重視する。Steve Bockman氏は一連の興味深い実験を行い、Agileプロジェクトで知識を伝える最適な方法を探り出そうとした。

この実験でSteve氏が試したのは、風変わりな紙飛行機についての知識を3つの方法で伝達することだった。 彼が使ったのは次の3つの戦略だ

  • 文書化 - 被験者に紙飛行機を作るための説明書(作り方が22ステップで記述されている)を与えました。

  • リバースエンジニアリング - 被験者に完成した紙飛行機を与えました。飛行機の作り方を生み出すために、被験者はこの紙飛行機を研究しました。

  • メンター制度 - “チーフデザイナ”が順に紙飛行機を作るのに従って、被験者もいっしょに複製しました。

8人の被験者に対して、上記の各シナリオを5分づつ実施した。結果は驚くべきものだ。

ドキュメントを参照しながら紙飛行機を完成させたのは12.5 %の人だけだった。リバースエンジニアリングで完成させたのは25%で、なんとメンター制度では100%の被験者が完成させたのだ。

この実験結果が示すのは、知識の伝達や共有方法として、健全なコミニュケーションや指導が有効だということだ。Steve氏は、この実験結果は定期的なコミュニケーションとフィードバックに基づくソフトウエア開発にとっても価値を持っている、と言う。氏によれば、

例えば、私は開発者で、あるデータをユーザインターフェイスにバインドする方法を見つけ、実装のためにそのコード書きます。そして、この方法は一緒に働いている他の開発者も身につけたいと考えているパターンを具現化しているとします。もしあなたが私と一緒に働いている開発者だったら、次のうちどれが好ましいでしょう。 (a)そのパターンについて私自身が書いたドキュメントをもらう。(b)そのコードがどこにあるか教えて、あなたが自分の力で見つけられるようにする。(c)新しいデータセットを対象にしてそのパターンをあなたとペアになって実装する。

Young Ye氏とRoyce Fay氏は、非対称なペアプログラミングによる知識の伝達による効率的な知識の伝達を提唱している。この方法の要点は開発者同士のペアプログラミング以外にも、開発者とドメインのユーザでもペアプログラミングを行い得るということだ。しかし、文書よりも強力な人間同士の関係から生まれるストレスが再発してしまう。

ペアプログラミングの効果としてよく知られているのは、素早く知識を共有し伝達できる点だ。この点に賛成して、Alan Skorkin氏は言う。

私の考えでは、ペアで仕事をすることは有機的な知識の伝達にとても役に立つと思います(”ペアで知識のシェア”という言葉を皆さんの詩心に捧げます)。これは重要なことだと思います。大規模なシステム開発ではこれ以外の知識伝達方法は存在しないからです。

このように、知識の共有方法として最適なのはコミニュケーションやメンター制度などで一緒に作業をすることだという考えは、一般的になっている。文書も少しあれば役に立つかもしれないが、文書だけに頼った知識の伝達が生むのは限られた利益だけだ。

この記事に星をつける

おすすめ度
スタイル

BT