<HOME> ― <XP (エクストリーム プログラミング)> ― <XP (XP Pedagogics: XP 的教育法)>
XP (エクストリーム プログラミング)
XP (XP Pedagogics: XP 的教育法)
- 初版 : 2002年07月10日
- 改訂1版 : 2002年07月15日
- 改訂1.1版 : 2002年09月04日
- 改訂1.2版 : 2003年07月15日
- 改訂1.3版 : 2003年12月17日
※ プレゼンテーション用資料はこちら
■ はじめに
「XP (エクストリーム プログラミング: 以下 XP)」は,ソフトウェア開発プロセスである.だが,最近 XP の書籍を読んだり講演を聴いたりするにつけ,XP は,もっと一般的に物事の見方や考え方,問題の解決法を教えてくれているような気がしてきた.
「XP のやり方」は,なんだかソフトウェア開発のみならず,他の面にも適用出来そうな気がするのである.
例えば,
等等.
別の言い方をすると,「XP」というのは,もっと応用範囲が広く森羅万象の様様な場面に適用可能な「メタなプロセス」のインスタンスで,その「メタなプロセス」をたまたまソフトウェア開発に当て嵌めたもの,という見方が出来るのかも知れない.
最近,ソフトウェア技術の研修や勉強会を企画することが良く有る.これらに「XP のやり方」を試してみている.
幾つかの研修や勉強会に試してみたが,矢張りかなり効果的なようである.
ちょっとここで御紹介してみたいと思う.
従来の研修では,期間や内容が予めきっちりと決められていて,その上でカリキュラムがきちんと作られている.
タイム スケジュールなんかも割りときちんと作られていて,「何日目の何時頃はこの辺り」迄決められていたりする.「講師は,ここでこういう質問をする」「講師は,ここでこんな冗談を言う」迄決められている場合もある (いやマジで).
即ち「ウォーターフォール型」なのである.
このやり方だと,確かにかっちりニーズが合えば「内容の濃い」研修に成るのであるが,実際には問題が起こることも多い.
- 研修後の顧客満足度が今一であったりすることが良く起こる.でも研修期間は終わってしまっているのでやり直すことは困難.
- 受講者のレベルに合わせた内容にすることが難しい.
- 問題が起きてもスケジュールを変更しづらい.
色色と問題が有る.そこで,XP の方法が使えないか,という訳である.
勿論,ソフトウェア開発プロセスである XP をその儘研修に当て嵌められる訳はないので,別の「もっとメタなプロセス」も考えてみた.
(未だ厳密なものではなく.ラフなイメージしか出来ていないが) こんな感じである.
■ XP を真似したメタ プロセス
このプロセスは次のように定義される.
-
「プロセス」
- 問題を解決する工程を「プロセス」と呼ぶ.
- 「プロセス」は「解決すべき問題」を解決することを目的とする.
-
「解決すべき問題」
- 「解決すべき問題」は「顧客」の「求める状況」と「顧客」の「現状」との差.
-
「顧客」
- 「プロセス」によって「解決すべき問題」を解決してもらい,その対価を支払う.
-
「サーバー」
- 「プロセス」によって「顧客」の「解決すべき問題」を解決し,その対価を受け取る.
-
「スコープ」
- 「プロセス」の任意の時点での目的のことを「スコープ」と呼ぶ.
-
プロセス全体は次のように進められる.
- 「顧客」へのプロセスの説明と調整
- 「顧客」の現状分析 (顧客へ報告され顧客によって承認される)
- 「プロセス」の初期の目標 (スコープ) の設定と顧客による承認
- 初期のイテレーション計画と顧客による承認
- 複数のイテレーション (顧客へのレビューと顧客による承認)
- 「顧客」による結果報告・プロセスの評価と見直し
-
「イテレーション」
- 「プロセス」は幾つかの期間に分割される.分割後の各期間を「イテレーション」と呼ぶ.
- イテレーションは「スコープ」と「期間」を持つ.
・各イテレーションの頭では,
- 現状の分析
- スコープの設定
- 期間の設定
を行い,これを「
顧客」が承認する.
・
イテレーション中は,
-
毎日,作業の始めに進捗報告を行う (スタンドアップ ミーティング).進捗報告では
が報告される.
・
イテレーションの終わりでは,
を行い,これを「
顧客」が承認する.
・こうして複数の
イテレーションが行われる.二回目以降の
イテレーションは前の
イテレーションの結果を受けた内容とする.
-
「価値」
「プロセス」を通じて,以下の「七つの価値」を重要視する.
-
コミュニケーション
「顧客」と「サーバー」の間のコミュニケーションを特に重要視する.次に複数の「サーバー」同士のコミュニケーションを重要視する.
-
継続的な改善
イテレーション毎にイテレーションは改善され,プロセス毎にプロセスは改善される.改善は目的に対して為されなければならない.
-
フィードバック
「サーバー」はレビューによって「顧客」からの適切なフィードバックを受ける.また「サーバー」同士はレビューによって適切なフィードバックを受ける.このため出来る限り常にレビューする.
-
シェア
「サーバー」同士は,互いに情報を積極的にシェア (共有) する.
-
オープン
「顧客」と「サーバー」,「サーバー」同士,情報は出来る限りオープンにされる (公開される).
-
コミットメント
「サーバー」と「顧客」は目的に対してコミットする (*1).
-
モチベーション
プロセスに関わる者全員のモチベーションを高く保つ.
上記「七つの価値」は,互いに強く補強し合う.
例.
- オープンにしていれば,コミュニケーションが取れフィードバックも受けられる.シェアも行われる.モチベーションも上がり易い.
- モチベーションが高ければ,コミュニケーションも積極的に取られる.
- コミットメントがないと,モチベーションを保てないし,高い質のコミュニケーションも難しい.
- 継続的な改善は,フィードバックがなければ出来ない.
(*1) 但し,体育会系の“ノリ”は避けたい.
例.
プログラマ X : 「…という訳で,つまり,納期を守るためには,優先度の低い機能を
スコープから外す必要が有ると考えております.どうお考えでしょうか」
上司 Y : 「ガッツで頑張れ.皆がベストを尽くせばきっとやれる筈だ」
-
「プラクティス」 (メタ プラクティス)
「プロセス」を通じて,以下の「プラクティス」を実践する.
- 良い環境
- チーム全体
- 明確な目標
- 常にレビュー
- 常にフィードバック
- 適度なペース
- ルール厳守
- 最適な手法
- 共通の言葉
■ XP (XP Pedagogics: XP 的教育法)
この「XP (XP Pedagogics: XP 的教育法)」は,上記「XP を真似したメタ プロセス」のインスタンスである.
以下のような感じである.
-
「受講者」: 研修によって技術や知識を習得する.
-
「顧客」: 研修の依頼者.研修の成果に対しては通常対価を支払う.社内顧客であることも有る.
例.「受講者」自身.「受講者」の上司.
-
「マネージャ」: 研修を運営・管理する.通常対価を受け取る.
「受講者」の研修終了後の習得度と研修開始時の習得度の差が研修の成果ということになる.
「顧客」は,研修開始時の「受講者」の現状を識り,また,研修終了後に「受講者」が現状からどうレベルアップする予定か報告され,これを承認する.
そして,研修終了後には「受講者」がどうレベルアップしたか報告を受け,これを承認する.
「マネージャ」は依頼を受け,研修のスコープ通りに研修を運営・管理する.また,「マネージャ」は常に研修の内容と進み具合を「顧客」に報告する.
また,研修の内容・進捗状況は Web 上等で出来るだけ公開される.特に「顧客」に対しては常に公開される.
- 「マネージャ」による「受講者」や「顧客」への研修全体のプロセスの説明と調整
- 「受講者」各自の現状分析と顧客への報告 (例.テストや自己分析)
- 「受講者」各自の目標 (スコープ) の設定と顧客による承認
- 初期のイテレーション計画と顧客による承認
- 複数のイテレーション
- 「顧客」による受け入れテスト
- 「受講者」や「受講者」による結果とプロセスの評価 (アンケート等による) と改善
-
全研修期間をイテレーションに分ける.各イテレーションの期間は一週間から一箇月程度.
各イテレーションは次のように進められる.
-
イテレーションの頭
- 「受講者」各自が,現状を報告する.
- 「受講者」各自が,そのイテレーションの目標 (イテレーションの終わりにはどのような成果が上がっているのか) を決定する.(*2)
- これらの内容は「顧客」に対して公開される.
-
イテレーション中
- 毎日の始まりには,進捗報告が行われる.内容は以下の通り.この内容は「顧客」に対して公開される.
- 昨日何を習得したか
- 今日は何を習得する予定か
- 何か障害となることは起きていないか.
-
イテレーションの終わり
-
成果のレビューを行う
- 「顧客」の見ている前で「受講者」は成果を発表・アピールする.
- 「顧客」はレビューを見てこれを承認するかどうか決定する.
(*2) 目標は明確でなければならない.例えば,「C++ のクラスの使い方をマスターする」では駄目.「C++ のクラスとクラス関連の機能 (継承,仮想関数,演算子のオーバーロードは必須) を使って従業員名簿の作成が出来るように成る」のような明確な目標とし,成果のレビューでは「現にそれらの機能を使った従業員名簿を作って見せられ」なければならない.
-
次のことを実践する (プラクティスのインスタンス).
-
良い環境
-
机の並べ方
- 机は参加者同士の顔が見えるように並べよう.講師役の人が居る場合は,受講者全員の顔がなるべく均等に講師役の人に向くようにして,更に受講生同士もなるべく顔が見えるように.
-
空調
-
部屋を暗くしない
- 薄暗くすると,参加者同士の顔が見えにくいし,あっと言う間に眠くなること必至.プロジェクタ等はなるべく明るいやつを用意するべし.スクリーンが見づらいと疲れるから.
-
視聴覚教材
- 耳からだけでは非効率的.視覚からの刺激も併用すれば何倍も学習効果が上がる.
-
リラックス
- 最初や毎日の始めには,直接研修内容と関係ない話をしたりして気持ちを落ち着けよう.全員が一度発言してみよう.始めにアイスブレイクの為のゲーム等をやってみよう.休憩時間にはリラックス出来る音楽を掛けよう.部屋の隅にテーブルを置いてお菓子 (のど飴なんかが良いかも) や,お茶,出来ればコーヒー サーバーを置いておこう.
-
チーム全体
-
名前を覚える
- 参加者全員がお互いの名前を覚えて名前で呼び合わないと.初対面なら,全員の名札を用意しよう.先ずは,自己紹介をし合って,名前を覚えるためのゲームをやろう.
-
自ら学ぶ
-
互いに尊重
- 受講生も講師役の人も互いを尊重し合おう.少し位,今の研修で進み具合が遅いからって,その人自身は常に尊重されるべき.学習が進まないのは多分その人のせいじゃない.
-
明確な目標
-
常にレビュー
-
全員参加
- 何も講師役を一人に決めて,その人だけが話し続ける必要はない.受講者は,勇気をもって自分が習得したことを他の受講生に教えよう.考え違いが有れば,皆がフィードバックをくれる.
-
常にフィードバック
-
アイ コンタクト
- 話をする時,話を聴くときはなるべく相手の目を見て.話が理解出来ているとき,理解出来ていないとき,納得出来たとき,出来ないとき,リアクションが有るとベター.頷くだけでも良いし.
-
質問・発問
- 質問 (受講者からの問い掛け)・発問 (講師役の人からの問い掛け) は,時間を決めずに随時.
-
こまめなフィードバック
- 参加者はお互いに気付いたことが有れば,指摘し合おう.遠慮はしないで.
-
適度なペース
-
継続可能なペース
- 一日辺りの時間を増やし過ぎない.多分 6,7 時間が限度.それに,一時間に一度位は休憩も取らないと.
-
ルール厳守
-
時間厳守
- 時間を守らないと,モチベーションが下がる.講師役の人の遅刻なんてもっての他.
-
最適な手法
-
様様な手法
- 手法には色色なものが有る.「講義」だけが研修の方法じゃない.「実習」や,「ブレーン ストーミング」,「グループ ディスカッション」,「パネル ディスカッション」,「ケース スタディ」,「デモンストレーション」に「ロールプレイ」,沢山有る.最適なものを探そう.
-
先ず概要から
- 小さな一纏まりに入る前毎に,その概要を確認して.
-
こまめな復習
- 小さな一纏まり毎に,学習内容を一度振り返って.
-
共通の言葉
-
例え話
- 抽象的な概念を伝えるには,抽象的な説明に加えて具体例をあげるのが効果的.
-
語彙
- 少しずつ参加者全員で通用する専門用語を増やして会話に使っていこう.その概念を正しく理解する近道.間違って使った人がいたら素早いフィードバックを.
■ 終わりに
この XP (XP Pedagogics: XP 的教育法) は,短期集中型の研修には向かない.或る程度の期間を設けて,じっくりと勉強を進めていくのに向いているような気がする.
これ迄,この方式で幾つかの研修を進めて来たが,中中良い.何より参加者の参加意識が高まる.
「XP のやり方」ではモチベーションが高まり易い,という大きなメリットが有るように思う.逆に,もしモチベーションが高くなかったらうまく行かない,という面も有ると思う.
又,その他のメリットとして,
- 研修の準備が研修前に集中せず,研修期間全体にばらける.
- イテレーション毎にそれなりの成果が出せる.
- イテレーション毎に適宜研修内容をレベルアップしていける.
- 顧客や受講者の新たな希望に合わせられる.
という面も有る.
IT 業界には,「ドッグ・イヤー」という言葉が有るが,XP 等も含め日日技術は進歩して行く.毎日のように新しい技術書が出版され,選ぶのに困る程である.
技術者として食って行く者は,常に学び続けて行く必要が有るのではないかと思う.そこが多分技術者としての喜びでも有る訳なのだけれど.
技術を売りにしている企業も同様に,今後も新しい技術をどのように取り込んで行くかは大きな課題ではないかと思う.
今後ますます「教育」が大切に成って来るのではないだろうか.
私は,自分が周りの人達と共に「如何に学んで行くか」ということを今後も考えて行きたいと思う.
■ Web サイトの御紹介
教育パターン関連の Web サイト
* フィードバックを歓迎します.
* フィードバック先: fujiwo@shos.info
フィードバック & 御質問を下さった方が有りました.ありがとうございます.
御質問にこちらでお答えさせて頂きます.
-
Q. 開発手法の XP でさえ中中受け入れてもらえない日本の場合,顧客にそのような XP 的な教育方法の提案をしても,柔軟なカリキュラムであるが故に中中難しいのではないか.特に商用のコースのような不特定多数の人を相手にする場合には.
A. 仰る通り,難しい面が有ると思います.私の場合は,社内顧客なので,なんとか成っているのかも知れません.
唯,私は XP 的な (商用の) 研修を受講したことが有って,それはとてもために成り且つ楽しい研修でした.
XP の精神にも関係するかと思いますが,基本的に重要なのは,「顧客にとっての価値」を最大にすることだと考えたりしています.
ソフトウェア開発の場合でも言えることではないかと考えますが,全て顧客の言う通りにすれば,「顧客にとっての価値」が最大に成るか,というと,必ずしもそうでない場合が有ると思います.全て顧客の言う通りにしたのに,何故か「顧客満足度」が今ひとつだった,という経験は無いでしょうか.
顧客にメリットを説明し,納得してもらうことで「お互いが幸せに成れる」ことが有るのではないでしょうか.現実は中中難しいですけれど.
Copyright © 1997-2008 Sho's Software
<HOME> ― <XP (エクストリーム プログラミング)> ― <XP (XP Pedagogics: XP 的教育法)>