close
プログラミング クラウド Microsoft Azure 情報処理資格 基本情報技術者 IT基礎 応用情報技術者 開発・設計方法 オブジェクト指向 内定者・新人研修 プログラミング基礎 アルゴリズム コンピュータ数学 内定者研修 新人研修 ヒューマンスキル プロジェクトマネジメント プレゼンテーション リーダーシップ 組織マネジメント ネゴシエーション ロジカルシンキング Java UI/UX HTTP JavaScript基礎 情報処理資格 ネットワークスペシャリスト ネットワーク インターネットルーティング応用 IPアドレス データベース応用 SQL応用 パフォーマンスチューニング データベース設計 ER図 概念設計(データベース) 論理設計(データベース) IT資格 Linux基礎 OS・システム基盤 セキュリティ TCP/IP OSI参照モデル データベースセキュリティ ファイアウォール 標的型攻撃 SQLインジェクション ネットワーク基本設計 CCNA Cisco プロジェクトマネジメント資格 情報処理資格プロジェクトマネージャ 情報処理安全確保支援士 人事給与 財務会計 管理会計 簿記 生産管理 在庫管理 ERP バランススコアカード 情報処理資格 ITアーキテクト 情報処理資格 ITストラテジスト 情報処理資格 ITサービスマネジメント 情報処理資格 システム監査 PMBOK® PMP® プロジェクト計画 WBS リスクコントロール ITIL ITサービスマネジメント 要求定義 要件定義 見積手法 ビジネスインダストリ 業種・業界知識 業務知識 提案力 ソフトウェアテスト基礎 情報処理資格 データベーススペシャリスト ハードウェア基礎 外部設計(基本設計) 内部設計(詳細設計) データベース基礎 SQL基礎 RDBMS 物理設計(データベース) C++ Ruby MVC基礎 Webアプリケーション開発 JavaEE Javaプログラミング応用 フレームワーク MVC応用 Spring フレームワーク ソフトウェアテスト応用 テスト手法 JUnit スマートフォンアプリ開発 Androidアプリ開発 C# 基礎 C# 応用 負荷テスト Javaプログラミング基礎 ソフトウェアテスト コーチング メンタリング HTML/CSS サーバー構築 仮想化技術 KVS (NoSQL) アジャイル スクラム ファシリテーション C言語 ITパスポート JSTQB データサイエンス 単体テスト ユニットテスト キャリアアップ インターネットルーティング基礎 パケット解析 LAN構築 データベース データサイエンティスト トレンド 障害対応 インフラ監視 HTTP/2.0 コンピュータサイエンス VPN ネットワーク物理設計 データベース障害 JavaScript モダンJS (Modern JavaScript) 応用 MVS応用 バックアップ/リカバリ 分散処理 Hadoop Hive Python AI 深層学習(DeepLearning) CentOS Linux応用 Zabbix シェルスクリプト Infrastructure as Code Windowsサーバー基礎 内部設計 Docker DevOps Windowsサーバー応用 NginX chef Ainsible ロジカルライティング R テスト自動化 Jenkins Git 継続的インテグレーション (CI) バージョン管理 Vagrant 要求分析 Redmine 継続的インテグレーション(CI) 継続的デリバリー (CD) ヒューマンリソース管理 Web API マイクロサービス コミュニケーション 業務知識/業界知識 マーケティング 語学 AWS 法務 IoT ビジネスマナー OJT 業務効率化 表計算ソフト オフィスソフト コンプライアンス フロントエンド Subversion PHP 関数型プログラミング Laravel モダンJS (Modern JavaScript) 基礎 Android Studio 機械学習 iOSアプリ開発 ぷプログラミング React 次世代高度IT人材 共創 IPA Raspberry Pi Xamarin スクリプト言語 GoF CUI VBA 資格 ビジネス文書 jQuery 研修参加レポート マネジメント OSPF テーブル設計 アンガーマネジメント クリティカル・シンキング PDU 経営改善 Pマーク 問題解決技法 サイバー攻撃 エンジニア 参加してみた エンゲージメントマネジメント 労働関連法 新人育成 ネットワーク構築 情報セキュリティマネジメント デザインパターン リファクタリング マルチスレッドプログラミング ベンダーコントロール Modern JavaScript 冗長化 VLAN インフラエンジニア チームビルディング テストケース リーダブルコード セキュリティ入門 ネットワーク入門 Node.js npm gulp ビルドツール Python入門 冗長化入門 インフラ実機演習 プロジェクト管理 Active Directory ネットワーク管理 コンテナ 正規化理論 Haskell 品質管理 OpenStack シンギュラリティ DBA中級 プロトコル UX 基本設計 FinTech トラブルシューティング 並列処理 見える化 PMO ロジカルコミュニケーション Deep Learning インデックス設計 超上流工程 BGP Excel C-CENT Selenide プライベートクラウド アセンブラ コンピュータ基礎 工数見積 CCENT 法律知識 失敗から学ぶ プロジェクト失敗事例 PDCA プログラミング入門 非エンジニア向け 4Biz DNS セルフマネジメント 片付け術 サーバーダウン サーバー タイムマネジメント GO言語 プロダクトマネジメント プロダクトマネージャ LVS ロードバランサー 負荷分散 仮想通過 犯罪心理学 情報漏えい SEカレッジ導入事例 IT研修を聞いてみた 会社規模 (100~300名) IT研修制度を聞いてみた CentOS7 開発環境構築 数字力 財務 IT人材 UI Machine Learning Go言語 (golang) データマイニング 統計学 新人教育 やり直し数学 RDB つながる工場 モチベーション WebSocket WebWorker HTML5 CSS3 Bootstrap 微分・積分 システム設計 決断力 LAMP環境 トレ担 教育研修担当者向け ルーティング Linux入門 図解術 目標設定 試験対策 インタビュー技法 Vue.js ブロックチェーン 会社規模 (~50名) DHCP 仕掛け学 BSC 財務諸表 自己分析 RIP スタティックルート バッファオーバーフロー DoS攻撃 システム開発 会社規模 (~99名) Wireshark パケットキャプチャ 管理職研修 部下育成 ワークあり 文章力 情報システム部門向け プロジェクトリーダー プロジェクトマネージャ 塗り絵 リスク管理 法改定 会社の仕組み Chainer AI人材 会話術 会社規模 (~25名) テスト技法 組織規模 51名~99名 組織規模:~199名 [組織規模]199名まで 組織規模 199名まで 組織規模199名まで 会社規模199名まで 会社規模49名まで 会社規模99名まで アプリ開発 サーバサイドJava 営業知識 Cloud 栄養学 基本コマンド ウォーターフォールモデル ヘルスケア 論理設計 ニューラルネットワーク ハンズオン UML 顧客ヒアリング マウスで学ぶ Apache EC2 Lightsail M5Stack DevSecOps プロジェクト成果 画像認識 チャットポット コマンド レビュー 基本用語 自動構築 LPIC-1 サーバーサイドJavascript キャリア形成 ワークライフバランス インバスケット テック用語 GitHub Windows エディタ 教養 令和時代 RESTful API 物理設計 会社規模300名以上 データモデリング サーバーサイドJava Webサーバー基礎 Webサーバー応用 Watson IBMWatson Learning Topics OS モバイル コンテスト トレーニング手法 アーキテクチャ 人材モデル インフラ CI/CD Infrastructure as a Code チーム開発 制度づくり Special_Intro AI市場分析 研修ロードマップ 仕事術 デジタルトランスフォーメーション 財務分析手法 情報整理 PowerPoint 新しい研修 オンライン研修 見どころ紹介 統計分析 ディープラーニング G検定 情報処理技術者試験 販売管理 C# テスト計画 Linuxサーバー WEBサーバ構築 http/2 Postfix イーサリアム プロジェクト・メンバ 正規化 パケット実験 作業分解 トラブル調査 ネットワーク設計 Windows server 2016 ネットワーク機器 DX 管理職 最新動向 ポストコロナ時代 IoTデバイス マイコンボード センサ サーバー仮想化 仮想ルータ WAN インターネットVPN 若手エンジニア ITプロジェクト 人事面談 DX人材育成 Java基礎 ZAP 脆弱性診断 NWサービス構築 イノベーション・マネジメント ネットワークセキュリティ ストレッチ

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


2020-05-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 で有名な「変化を抱擁せよ」というスローガンは、何も開発だけに言えることではなく、研修にもおいても非常に重要な要素であると考えます。

午前免除 FAQ

タグ一覧