XP (エクストリーム プログラミング)


XP (XP Pedagogics: XP 的教育法)

XP (XP Pedagogics: XP 的教育法)


※ プレゼンテーション用資料はこちら

凡例:
本頁内 : 頁内へのリンク
別頁 : サイト内の別頁へのリンク
外頁 : 外部サイトへのリンク

■ はじめに

XP (エクストリーム プログラミング: 以下 XP)」は,ソフトウェア開発プロセスである.だが,最近 XP の書籍を読んだり講演を聴いたりするにつけ,XP は,もっと一般的に物事の見方や考え方,問題の解決法を教えてくれているような気がしてきた.

XP のやり方」は,なんだかソフトウェア開発のみならず,他の面にも適用出来そうな気がするのである.


例えば,

等等.

別の言い方をすると,「XP」というのは,もっと応用範囲が広く森羅万象の様様な場面に適用可能な「メタなプロセス」のインスタンスで,その「メタなプロセス」をたまたまソフトウェア開発に当て()めたもの,という見方が出来るのかも知れない.


最近,ソフトウェア技術の研修や勉強会を企画することが良く有る.これらに「XP のやり方」を試してみている.

幾つかの研修や勉強会に試してみたが,矢張りかなり効果的なようである.


ちょっとここで御紹介してみたいと思う.


従来の研修では,期間や内容が予めきっちりと決められていて,その上でカリキュラムがきちんと作られている.

タイム スケジュールなんかも割りときちんと作られていて,「何日目の何時頃はこの辺り」迄決められていたりする.「講師は,ここでこういう質問をする」「講師は,ここでこんな冗談を言う」迄決められている場合もある (いやマジで).


即ち「ウォーターフォール型」なのである.


このやり方だと,確かにかっちりニーズが合えば「内容の濃い」研修に成るのであるが,実際には問題が起こることも多い.

色色と問題が有る.そこで,XP の方法が使えないか,という訳である.

勿論,ソフトウェア開発プロセスである XP をその(まま)研修に当て嵌められる訳はないので,別の「もっとメタなプロセス」も考えてみた.


(未だ厳密なものではなく.ラフなイメージしか出来ていないが) こんな感じである.


XP を真似したメタ プロセス

このプロセスは次のように定義される.

  1. 顧客」へのプロセスの説明と調整
  2. 顧客」の現状分析 (顧客へ報告され顧客によって承認される)
  3. プロセス」の初期の目標 (スコープ) の設定と顧客による承認
  4. 初期のイテレーション計画と顧客による承認
  5. 複数のイテレーション (顧客へのレビューと顧客による承認)
  6. 顧客」による結果報告・プロセスの評価と見直し

・各イテレーションの頭では,

  1. 現状の分析
  2. スコープの設定
  3. 期間の設定
を行い,これを「顧客」が承認する.

イテレーション中は,

イテレーションの終わりでは,
を行い,これを「顧客」が承認する.

・こうして複数のイテレーションが行われる.二回目以降のイテレーションは前のイテレーションの結果を受けた内容とする.

  1. コミュニケーション
    顧客」と「サーバー」の間のコミュニケーションを特に重要視する.次に複数の「サーバー」同士のコミュニケーションを重要視する.

  2. 継続的な改善
    イテレーション毎にイテレーションは改善され,プロセス毎にプロセスは改善される.改善は目的に対して為されなければならない.

  3. フィードバック
    サーバー」はレビューによって「顧客」からの適切なフィードバックを受ける.また「サーバー」同士はレビューによって適切なフィードバックを受ける.このため出来る限り常にレビューする.

  4. シェア
    サーバー」同士は,互いに情報を積極的にシェア (共有) する.

  5. オープン
    顧客」と「サーバー」,「サーバー」同士,情報は出来る限りオープンにされる (公開される).

  6. コミットメント
    サーバー」と「顧客」は目的に対してコミットする (*1).

  7. モチベーション
    プロセスに関わる者全員のモチベーションを高く保つ.

上記「七つの価値」は,互いに強く補強し合う.

例.


(*1) 但し,体育会系の“ノリ”は避けたい.

例.
プログラマ X : 「…という訳で,つまり,納期を守るためには,優先度の低い機能をスコープから外す必要が有ると考えております.どうお考えでしょうか」
上司 Y : 「ガッツで頑張れ.皆がベストを尽くせばきっとやれる筈だ」
  1. 良い環境
  2. チーム全体
  3. 明確な目標
  4. 常にレビュー
  5. 常にフィードバック
  6. 適度なペース
  7. ルール厳守
  8. 最適な手法
  9. 共通の言葉


■ XP (XP Pedagogics: XP 的教育法)

この「XP (XP Pedagogics: XP 的教育法)」は,上記「XP を真似したメタ プロセス」のインスタンスである.

以下のような感じである.

受講者」の研修終了後の習得度と研修開始時の習得度の差が研修の成果ということになる.


顧客」は,研修開始時の「受講者」の現状を識り,また,研修終了後に「受講者」が現状からどうレベルアップする予定か報告され,これを承認する.

そして,研修終了後には「受講者」がどうレベルアップしたか報告を受け,これを承認する.

マネージャ」は依頼を受け,研修のスコープ通りに研修を運営・管理する.また,「マネージャ」は常に研修の内容と進み具合を「顧客」に報告する.


また,研修の内容・進捗状況は Web 上等で出来るだけ公開される.特に「顧客」に対しては常に公開される.

  1. マネージャ」による「受講者」や「顧客」への研修全体のプロセスの説明と調整
  2. 受講者」各自の現状分析と顧客への報告 (例.テストや自己分析)
  3. 受講者」各自の目標 (スコープ) の設定と顧客による承認
  4. 初期のイテレーション計画と顧客による承認
  5. 複数のイテレーション
  6. 顧客」による受け入れテスト
  7. 受講者」や「受講者」による結果とプロセスの評価 (アンケート等による) と改善

イテレーションは次のように進められる.

(*2) 目標は明確でなければならない.例えば,「C++ のクラスの使い方をマスターする」では駄目.「C++ のクラスとクラス関連の機能 (継承,仮想関数,演算子のオーバーロードは必須) を使って従業員名簿の作成が出来るように成る」のような明確な目標とし,成果のレビューでは「現にそれらの機能を使った従業員名簿を作って見せられ」なければならない.


■ 終わりに

この XP (XP Pedagogics: XP 的教育法) は,短期集中型の研修には向かない.或る程度の期間を設けて,じっくりと勉強を進めていくのに向いているような気がする.


これ迄,この方式で幾つかの研修を進めて来たが,中中良い.何より参加者の参加意識が高まる.

XP のやり方」ではモチベーションが高まり易い,という大きなメリットが有るように思う.逆に,もしモチベーションが高くなかったらうまく行かない,という面も有ると思う.


又,その他のメリットとして,


という面も有る.



IT 業界には,「ドッグ・イヤー」という言葉が有るが,XP 等も含め日日技術は進歩して行く.毎日のように新しい技術書が出版され,選ぶのに困る程である.


技術者として食って行く者は,常に学び続けて行く必要が有るのではないかと思う.そこが多分技術者としての喜びでも有る訳なのだけれど.

技術を売りにしている企業も同様に,今後も新しい技術をどのように取り込んで行くかは大きな課題ではないかと思う.

今後ますます「教育」が大切に成って来るのではないだろうか.


私は,自分が周りの人達と共に「如何に学んで行くか」ということを今後も考えて行きたいと思う.



■ Web サイトの御紹介

教育パターン関連の Web サイト


フィードバックを歓迎します.
フィードバック先: fujiwo@shos.info


フィードバック & 御質問を下さった方が有りました.ありがとうございます.

御質問にこちらでお答えさせて頂きます.