研修コースをはじめて企画する人向けにレクチャーする機会があるので,まとめてみた.
新人研修を検討する時期なので,これからはじめて研修を企画しようとする人に何かしら考えの整理に繋がればうれしい.
研修もプログラム
プログラムを考えるとき,IOがあってから処理を考えるように,研修も同じように考えられる.
- Input: 受講者のスキル・知識の前提
- Output: 受講したあとの到達目標
- 処理: 研修プログラム
(個人的にはカリキュラムやアジェンダというよりプログラムと今後言っていきたい)
また,プログラミングにおける制約条件(マシンスペックやOS etc.)も,研修では,
- 期間
- 1日の許容時間
- 場所(リモート/オンサイト etc.)
- 環境(ネットワーク環境や電源,受講者のPCスペック etc.)
- お金(予算,テキスト,トレーナー etc.)
などの項目に置き換えることができる.
ちなみに,プログラミング同様,制約条件から考えたほうが考えが進むと思う.
サンプルプログラム
初心者向けJavaオブジェクト指向プログラミングの習得という研修を考えてみる.
- input: コンピュータの中身を知らない人と定義
- 初心者、初級者の定義は本当に難しい一方で, コースを案内する側は使いたい
- output: サンプルクラスを継承してオリジナルのプログラムが作れるレベルと定義
- この習得という言葉も曖昧性を生み出すことが多い
- 処理
- プログラムが動く仕組み
- コンピュータの種類
- コンピュータの仕組み
- OSの仕組み
- プログラミング言語
- 開発環境
- Javaの世界
- Javaの構文
- オブジェクト指向の世界
- Javaオブジェクト指向プログラミングのテクニック
- 演習
- おわりに ~デザインパターンの小話
段階的詳細化
どんな巨大なシステムでもWBSで分割してやるように,新人研修という比較的長期にわたる場合も,同じように考えられる.以下はサンプル.
- output: どんな部署にいっても一通り戦力になる
- 処理:
- サーバーサイドプログラミング
- クライアントサイドプログラミング(Web/モバイル)
- データベース
- OS等のシステムインフラ
- ネットワーク
- セキュリティ
- チーム開発プロセス(設計,CI,コードレビューなど)
- 開発マネジメント(スクラムなど)
ここからさらに段階的詳細化.
- データベース
- DBMSのアーキテクチャ
- SQL/DML
- DBAのやること
- バックアップとリカバリ
- テーブル設計
- 計測とチューニング
- NoSQL
で、さらにSQLを段階的詳細化してというように繰り返し、このSQLのようなレベルがワークパッケージとして考えられる.
なお,プロジェクトの見積もり同様,実質的な所要期間や費用の見積もりは,このワークパッケージ単位で考える.
研修プログラムにおけるアルゴリズム
プログラミングにおけるアルゴリズムと同様に,研修プログラムもある程度パターン化できることがある.ちなみに,定量化して効果を計測してはいないので,以下は完全に私の主観.
なので,色々こういうパターンがあるよ,など知見が貯まると更に良いなぁと思う.
なお,クイックソートなどの名前はまだない.
(アカデミックに教育を研究している人なら,ちゃんと定量的に証明して,名前も付けてそうなので,指摘してもらえるとうれしい)
演習は講義の2倍のコスト
講義で聞いても使えるレベルには至らないので,実用系であれば,必ず演習をすることになるのだが,それは講義に使った時間の少なくとも倍以上の時間を割くと良いよというもの.もちろん,理想論なので,あとは宿題でやってね,ということで切り上げるのが常道.
まとめて演習は危険
バッチ処理のように全部講義をして,まとめて一気に演習をやるなど考えられるが,だいたい朝にやった講義は,その日の終わりには忘れているケースが多く,出来る限り,しょっちゅう演習するほうがよい.
事前学習は2割が前提
期間等の制約から事前学習をするケースがあるが,事前学習を完全にこなしてくるような意識高い人は,全受講者で2割いれば良い方だよ,というもの.受講前提がマストになる場合は,事前のテストをやってクリアした人だけが参加できる,というように厳密にしたほうが良い.(だから入試は必要なんだねと思う)
内容をわからない人に合わせるか,分かる人に合わせるか問題
これは完全に,その研修コースのオーナー(研修担当者というより部長などの決定権者)の考え方による.特に企業での研修は,スキルの平準化を研修目的とするケースが多く,研修で落第者が増えてしまうと負債 になるため,わからない人に合わせるケースが多い.(社員の時間を割いているので,少しでも回収したいし,新人研修の場合は試用期間であってもNGを出すことは,結構勇気がいる)
ちなみに,オーナーから,分かる人にあわせてくれと言われても,わからない人が多数の場合,それに合わせるトレーナーが多い.(アンケート結果が悪いと,どうやっても次の機会に差し支えが出るのと,精神衛生上もやりづらい)
スコープは広めに取ると死ぬ
研修プログラムとは完全に別な話だが,これもあるあるなので入れておく.これはコースを考える人で,さらにそれにより利害を受ける人が特にハマりやすい.(例えば,研修コースで受講料を取る場合や参加人数が評価対象になる場合など)
これは書籍でも同じようなことが起こるのだが,例えば,
- コース名: Essential Java
- 概要: 現場の必須ワザをマスターできます
- 時間: 2時間
このようなコースは,曖昧さが原因となり,必ずアンケート結果はズタズタになり,二度と開催できなくなる.
コースを考える人はどうしても,いい感じのタイトルと参加制約(場所や拘束時間)を下げるなどして,スコープを広く取って参加者を多く集めたいので,初心者層も中級者も狙いたくなる.
まとめ
研修コースもプログラムとして考えると,整理しやすいよということと,研修プログラムにも定番アルゴリズムがあるよということを書いた.
特に研修プログラムの定番のアルゴリズムはどっかでまとまっているとうれしいなぁ.