講師は見た! 上手くいった IT 新人研修(2)未経験でもモダンITを1ヶ月で使いこなす


2020-03-19
本特集について
新人研修には新人、研修担当者だけでなく、経営陣、講師、配属先、トレーニングベンダなど多くのステークホルダが取り巻きます。
そして厄介なことにステークホルダごとに思惑が異なり、なかなか新人研修で満足のいく結果は収めにくいものです。
この「新人研修のふりかえり」特集では、受講者 - 研修担当者 - 研修ベンダの間で、バランスを取る「講師」に上手くいくコツを探って頂きました。

特集記事 第 2 弾として執筆いただいたのは 米山 学 さんです!まずは前編として、「上手くいった研修」から。

新人研修の概要

対象企業 システム開発
対象の新人 IT未経験者が 6 割
研修期間 1.25 ヶ月
受講人数 10 名 1クラス

IT 未経験者が 6 割は普通ですが、期間が 1.25 ヶ月 ですので、条件としては厳しいものでした。

普通は無茶に思われる研修カリキュラムを提示

では、そういった条件の中、研修方針としては、IT 未経験者に「モダンな IT 」を身につけてもらう、という普通は「無茶」に思える研修カリキュラムを提示しました。

ここでは、なぜ、そのようなものを提示したのか、そして、どのような技術に取り組んだのか、ご紹介します。

モダンな技術が今やスタンダード

現代のインターネット・サービスを中心とした IT 技術の移り変わりは非常に速く、数年どころか数ヶ月前の技術でさえ陳腐化する可能性があります。

実際に、かつては圧倒的だった Java とその周辺技術も、今や JavaScript や Python といった言語が人気を博しています。

また、システム・アーキテクチャにおいてもトレンドは大きく様変わりし、

オンプレ
fast_forward「クラウド・ネイティブ」
Web アプリ
fast_forward「モバイル・ファースト」
モノリシック
fast_forward「 REST 」や「マイクロサービス・アーキテクチャ」
サーバ所有・運用
fast_forward「サーバーレス・コンピューティング」

といった変化を避けて通ることはできなくなりました。

IT 未経験向けでもモダンな技術を全面採用

プログラミング言語
Java, Python, JavaScript
サーバ
AWS ( EC2, Lambda )
サーバサイド
サーブレット/JSP, Node.js, Flask ( Python )
フロントエンド
React.js, Vue.js
データベース
RDBMS + NoSQL ( MongoDB, Redis )
リポジトリ管理
Git / GitHub

そういった背景を踏まえ、この研修では習得するプログラミング言語としてJava 以外に JavaScript と Python という 3 つの言語を採用し、研修環境は最初から AWS の EC2 上で動かす Linux や Lambda を活用した Web サービスの関連技術を中心にカリキュラムを構成しました。

開発言語に加え、データベースに関しても従来型の RDBMS だけでなく MongoDB や Redis といった NoSQL DB も取り入れました。

サーバーサイドの技術では サーブレット / JSP だけでなく、Node.js や Python の Flask なども採用、フロント・エンドでは JavaScript の React と Vue を使用しました。

開発演習のシステムは新人たちが決める

最後の 3 人チームによる総合演習は完全な自由課題とし、実際に自分たちが面白いだろうと思う「 Web を使ったアプリケーション/サービス」を企画・要件定義・設計・実装まですべてを通して構築してもらいました。

基本的には研修で学習した技術を組み合わせて構築すればよいのですが、学習していない技術を自分たちで調べて採用しても構わないとして、必須要件はシンプルに、

  • Java, JavaScript, Pythonという 3 つの言語をすべて使用
  • AWS にデプロイ
  • マイクロ・サービスを作成
  • API でそれらのサービスを連携させてアプリケーション全体を機能させる

ということだけを決めました。

おそらく多くの研修講師や運営実施側は、これだけの内容をこの短期間でこなすのは無理だと考えるでしょうが、実際には我々が想定しているよりも新人はうまく乗り越えるものです。

ただし、そのためには、カリキュラムは徹底的に無駄を排除して必要なことだけにフォーカスすることと、限りなく新人の「自発性」に任せた研修の実施が必要となります。

無茶なカリキュラムで上手くいったのか?

こういった研修を実施し、最終的にどういった結果になったのか紹介します。

アプリケーションを開発し、現場・経営陣からも評価される

何をもって上手くいったと言えるかは、研修の目的や、重視するポイントによって大きく異なるため一概には言えないでしょう。

しかしながら、新人の半数以上がプログラム未経験もしくはそれに近い初心者であったことと、わずか 1 ヶ月ちょっとという短い研修期間にもかかわらず、最終的に自分たちだけでサービスの要件定義から設計・実装までを行いアプリケーションを完成させることができたことを評価すると、十分に「上手くいった」と言えます。

そして成果発表においても、現場のエンジニアやマネージャー、役員の方からアプリケーションの質に対して全体的に非常に高い評価を得たというのは、何よりもシンプルでわかりやすい「成功」と言えると思います。

どんなに知識を学習したところで、実際に動く本格的なシステムやアプリケーションが作ることができなければ、その知識には意味がないのですから。

IT 未経験者が 1 ヶ月ちょっとでキャッシュレス決済に関するサービスを開発

そもそもシステム演習の「お題」を考える研修の企画や設計、運営側の人たちよりも、新人の方がよっぽど今風で実用的かつ斬新なアイデアを持っています。

かれらは決して図書管理システムだとか勤怠管理システムのようなレガシーで陳腐なお題は考えません。

実際に今回、最後の成果発表後に最優秀の評価をもらったチームが作成したアプリは「キャッシュレス」決済に関する便利なサービスであり、会社の役員の方が、自社のサービスとしてきちんと作って売り出したいとまで言わしめたアイデアと完成度の高さでした(過去にはオンラインの対戦型タイピング・ゲームを考え実装したチームもあります)。

従来の研修にはないメソッドを活用

では、なぜ、無茶なカリキュラムでも成果を出せたのでしょうか。大きくは 4 つのやり方 (メソッド) が効いたと考えています。

1. 講師にすべてお任せ

まず、最大の要因として挙げられるのは、講師が提示した(無茶とも言える?)研修内容および方針に対して、クライアント企業が全面的に理解を示し、「すべてお任せ」してくれたことに尽きるでしょう。研修を実施するにあたって、制約はなければないほどよいものです。

多くの場合、それら制約は会社側の都合や理由によるものがほとんどで、「新人」にとっては何の意味もないどころか、「最も効率よくスキルを身に付ける」ことを阻害するものがほとんどだからです。

そういった制約の具体的な例は、次の「上手くいかなかった研修」でいくつか紹介することにします。

2. 教えない

2 つ目の要因としては、いわゆる「教えない研修」「アクティブ・ラーニング」と呼ばれている手法を徹底したことが挙げられるでしょう。

20 年以上、IT 技術の研修講師を務めてきて、いかに新人がスキルを習得できるかに関して試行錯誤を繰り返した結果、辿り着いたのが、どれだけうまく「教えるか」ではなく、どれだけ「教えないか」ということです。

この「教えない研修」をうまく実施できるとどうなるのでしょうか?
新人は「自ら学ぶ」ようになります。

ここで、鈴木克明著『研修設計マニュアル』 ( 北大路書房 刊行 ) から一節引用します。

研修の最も重要なことは、研修を通じて学びの大切さを知り、研修を通じて学びのコツを会得して、あとは自分で学ぶべきことを見つけ学び続けられる人に育てること

- 研修設計マニュアル (鈴木克明著) より引用

研修は講師が受講者に「教える場」ではなく、受講者が自ら「学ぶ場」であること。講師はそれを最大限にサポートするだけに過ぎません。

このような「教えない研修」では、当然ながら研修の中心は講義ではなく、ひたすら「ワークショップ」形式となります。

「ワークショップ」の定義としてアメリカの哲学者・教育者であるジョン・デューイの次の言葉が的確でしょう。

「講義など一方的な知識伝達のスタイルではなく、参加者が自ら参加・体験して共同で何かを学びあったり創り出したりする学びと創造のスタイル」

ワークショップ -新しい学びと創造の場-( 中野 民夫 著 岩波書店 刊行 ) より引用

このような「ワークショップ」形式の授業はアメリカでは「 flip-flop classroom(反転授業)」と呼ばれ、このアプローチを採用する大学も増えています。
(以下は、東京大学大学院、東京工業大学大学院で実施された授業のレポート)

従来、教師が講義で話していたような内容は、生徒は自宅のインターネットで学ぶことができるし、反対に従来、生徒が自宅でやっていた宿題のような課題演習は教室で行うことでより効果的となります。

それは教室で行う演習ではチームで討論したり、教師と質疑応答しながら進めることができるからです。

description実際に米山さんが行った「教えない」メソッド

  1. 5 分~ 10 分のチュートリアルをやってもらいながら同時に説明
  2. チュートリアルの応用課題を与えて各自で実施
    • 自由に皆で教え合うことを OK として活発に意見交換しながら演習
    • ただし「決して答えを直接教えない」ルール
    • 副次的に教わるほうだけでなく、教える方も深く考えるようになった

3. テキストは公式ドキュメントを使う

3 つ目の要因としてはテキストに関することを挙げます。

この研修では書籍はもちろんのこと、印刷された紙のテキストは一切使用していません。なぜなら必要な情報はすべて Web 上にあるからです。

そもそも技術情報では 1 次情報が重要となるため、オリジナルの発信元にあるマニュアルやリファレンスを読むことが大切です。

メモ IT 業界における ” 1 次情報” とは
二次三次と加工された情報ではなく、発信元の情報を指す。例えば、Python であれば、市販などの解説書やインターネット上にある Tips 記事ではなく、Python の公式ドキュメントを指す

そして Web 上のテキストであれば自宅はもちろんスマートフォンで通勤途中にも学習できるし、かさばらず、簡単にコピー&ペーストして新人それぞれがオリジナルのテキストを作ることも容易です。

さらに IT の場合には内容が日々新しくなるため、情報が印刷された時点で陳腐化している可能性もあります。紙のテキストは作成だけでなく内容をアップデートするのにメンテナンス・コストが掛かり過ぎるため、講師の負担も減らすことができますし、その分、個々の新人のサポートや課題作成に充てられます。

インターネット上の情報がテキストであることのメリット

そういったインターネット上のドキュメントに慣れると、Web 上の無尽蔵の情報の中から必要な情報を「検索する能力」を身につけさせることもでき、いまではこちらの能力も重要になります。

玉石混交の情報の中から「正しい情報を識別する能力」そしてオリジナルのドキュメントを読むための「英語力」は現代の IT エンジニアには欠かせないスキルです。

研修の最初から「自分で調べて英語のドキュメントを読む」というアプローチを採用したことによって、新人はわからないことを自分で調べながら実装することに対する抵抗がなくなり、最後のシステム開発演習では研修の中で学んでいない未知の様々な技術を採用して実装できることにつながりました。

description実際に米山さんが Python の研修で使ったドキュメント

余談ですが、話を聞きながらノートを取るようなやり方は、認知科学的に完全に NG とされています。なぜなら、人間の脳はマルチタスクをこなせるようになっているが、こなせることと、それらのタスクのすべてに完全に集中できているかは別の話だからです。

話を聞いて考え、理解することと、ノートを書くことは両立できません。多くの場合、書くことに集中して、大事な部分を聴き逃したり、右から左へと抜けてしまうのが関の山です(「ノートを取る」ことだけが目的となって、まったく内容を理解していない新人を、どれだけ多く見てきたか ・・・)。

 

なお、講師が前で、新人に配ったテキストと同じ内容を読んでいるだけ、あるいは延々と話をしているだけの学校型座学形式は新人からすれば「眠たいだけ」で「習得効率が悪い」時代遅れなやり方であるということは言うまでもありません。

4. ムダを徹底的に排除する

4 つ目に挙げられるのが、「いかに無駄なことを排除して本質的なことにフォーカスするか?」という部分でしょう。

先に述べたように、この研修では非常に広範で高度な技術を短期間で身につけてもらおうとしていました。そのため、通常のプログラミング基礎研修などで行うような内容から、必要でないものを徹底的なまでにそぎ落として進めていきました。

端的に言えば、何を身に付ければ最終課題を想定した「実際に動くアプリケーション」を作れるか?という事だけにフォーカスし、すべてそのコンテキストの中で技術を習得してもらいました。

 

また、様々な技術を個別に分けて学習するのではなく、最初から必要な関連技術も組み合わせながら、常に簡単な動くものを作らせる演習を通じてスキルを習得できるようにしました。

技術以外の部分でも、単に知識を問うだけの「入試」にありがちなペーパーテストのようなものは一切行わず、技術の習得に繋がらないあらゆる作業を排除しました。

description実際に米山さんが研修で使った「同時に複数の技術を組み合わせて学ぶ」演習

Java > SQL > HTML のような単元ごとではなく、Web アプリケーションを開発しながら必要な技術を都度学ぶ

  1. 最初から HTML とプログラミング言語を組み合わせてスタート
  2. 新人開発チームによってデータベースや RESTful API が必要なら課題を実施
  3. 途中必要な AWS や Linux などの知識・操作も都度習得

このやり方で思い出されるのが、近年、非常に話題となり、メディアで取り上げられることも多い 麹町中学校 の事例です。学校教育の中で実施される非常に多くの無駄を排除して成果を上げています。

この研修でも全体の効率化を目指すため、紙のテキストはゼロにし、ムダなドキュメントや作業を生みがちなすべてをクラウドのサービスで運用しました。

具体的には、研修管理に「 Google Class Room 」を使用し、捕捉資料の配布に「 Google Drive 」と「 Dropbox Paper 」を、ソースコード管理には「 GitHub 」を活用しました。

5. 研修カリキュラムは固定しない

最後の要因として「カリキュラムの柔軟性」を挙げたいと思います。

研修全体を通じてある程度の枠組みと必修技術、ゴールは決めていましたが、カリキュラムは一切固定せず、柔軟かつ臨機応変に進めていきました。

新人は人間であり、研修もまた生き物のようなものです。

研修は蓋を開けてみるまで分かりません。事前に想定していたよりも新人全体のスキルレベルが高いのであれば、より高度な内容にシフトしながら進めますし、想定していたよりもスキルレベルが低いのであれば、予定していたカリキュラムを削ってでもゆっくりきちんと教える必要があります。

ひどい研修では分単位でカリキュラムが決められて固定されているものもありますが、カリキュラムは柔軟に変化させることが重要です。

アジャイルの XP で有名な「変化を抱擁せよ」というスローガンは、何も開発だけに言えることではなく、研修にもおいても非常に重要な要素であると考えます。

label 関連タグ label これまでの『特集』の記事一覧 label 著者
米山学

現場で困らないよう、一次情報にこだわったコンテンツと “動かして学ぶ” ことにこだわる人気講師。テックと登山をこよなく愛する。
Java はもちろん、PHP に Python に加え、フロントエンド React や Vue 、AI など最新テクノロジにも対応