見出し画像

IT企業向け新入社員研修のカリキュラムを考察する【2021】

現在進行形でIT企業向けの新入社員研修を実施中(教える側として)。
まだ全ては終わっていないけれど、忘れないうちにカリキュラムについて個人的に思うベストプラクティスを考えてみる。

ちなみに昨年度実施した研修の振り返りはこちら

昨年書いた振り返り記事を読んでみると、カリキュラムについてはほぼほぼ同じことを思っていたりして、対して改善されてないじゃんと思いつつ。細かく変えた点はあるけれど、期間が決まっていることや、色々や都合から大幅には変わってないかも。来年度また新人研修に関わることができるなら、色々と改善していきたいところ。

*******

扱っている技術と学習の順番は以下の通り。

Webサイトの基礎
・HTML
・CSS

情報処理基礎
・情報処理基礎(ハードウェア、ソフトウェア、ネットワーク、セキュリティなどを少々)
・Linux(VirtualBoxでCentOS環境を構築)

プログラミング言語
・Java基礎(基本構文とJSP)
・Java応用(オブジェクト指向とサーブレット)
・JavaScript(基本的な書き方とDOM操作、イベントなどの話を軽く。1日分だけ)

DB
・SQL
・DB設計(主に正規化)
・JavaとDBの連携(接続方法から、DAO・DTOなどのクラス設計の話)

フレームワーク
・フレームワーク(Spring Boot)

開発工程
・開発工程(各開発工程の話や、開発手法の話、テストケースの作成方法など)

その他
・Git(概要だけ軽く説明。後は個人やグループ開発で使って覚えてねのノリで終わった)

研修の期間自体は3ヶ月程度あるけれど、後半の1ヶ月は個人での開発とグループでの開発期間にあたるため、上記の講義はほぼ2ヶ月で終わらせるイメージです。基本的にはJavaの比重が大きく、7割くらいはJavaの学習期間になります。Java以外の技術についてはほとんど1日〜2日で終わる感じ。Javaはガッツリ触るけれど、それ以外は広く浅くのイメージです。

昨年も同じことを思った記憶があるけれど、JavaScriptとGitとSQLとDB設計はもっと時間を取ってやりたい。Javaは十分すぎるほど時間をとっているけれど、例えば業務系のシステムを開発するのであれば、DB設計やSQLの知識の方が大事なんじゃないかと思う。そしてWeb系の開発するのであれば、HTML、CSS、JavaScriptをもっと時間をかけてやるべきなんじゃないかと思う。Gitでは個人での開発やグループでの開発の時に初めて本格的に触れることになるけれど、みんな使い方を習得するのに丸1日時間を使ったりしている。もっと研修の序盤から使って慣れていく必要があると感じる。また、個人開発やグループ開発でJavaScriptの技術(特に非同期通信やイベント処理)を使う人が多いが、講義であまり扱わないため、JavaScriptの理解に時間を費やす人が多くなってしまっている。

Javaは「プログラムの基礎」「アルゴリズム」「オブジェクト指向」を学ぶという意味では時間をかけてやる意味はあるけれど、逆に言うとその3つを満たすことができるなら、言語はぶっちゃけなんでもいい。もちろんJavaという言語もまだまだ現役で使われていて、進化し続けている言語の一つなので、学ぶことが無駄になることはないけれど、おそらく研修が終わって現場に出た時にJavaを使うことになる人は2割いるかいないかだろうと思います。そう考えるとJavaをどこまで踏み込んで学習するかは難しいところ。

ここからは、現状の問題点を解決しつつ、現時点で理想のカリキュラムの案を考える。

*******

PC操作の基礎
・タイピング
・ショートカットキー
・PC用語の理解
・Excelの基礎
・この辺りは研修が始まる前に自主学習として習得してもらうのが理想的

Webサイトの基礎
・HTML
・CSS
・Git(Git Bashを使って基本操作を覚える。GUIツールも導入して基本操作を覚える。)
・HTML、CSSの課題をGitHubからクローンし、提出は個人個人で別でリモートリポジトリを作成してそこにプッシュしてもらう。以降、演習と課題はその運用で進める。
・VS Codeを使った開発とGit運用にもここで慣れておきたいところ。

サーバーの基礎
・情報処理基礎(ハードウェア、ソフトウェア)
・Web技術基礎(ネットワーク、セキュリティ)
・Linux(仮想環境でCentOSを構築)
・演習と課題(Linux環境にWebサーバーを構築。Gitをつかてリモートリポジトリからクローンし、自分で作成したWebサイトをLinuxのWebサーバー上で表示させる)

プログラミングの基礎
・Javaの基本
・変数、演算、条件分岐、繰り返し、配列
・主に言語に依存しないプログラミングの基本と、アルゴリズム力を鍛える。
・演習と課題(アルゴリズム力を鍛えることを目的にした問題を出題)

Webアプリの基礎
・Formとの連携、画面遷移、JSPの仕組み。
・HTTPリクエストとかHTTPレスポンスとか、GETとかPOSTとか、その辺りを重点的に。
・演習と課題(Webの画面上の入力に応じて処理をして結果をWebで表示するものを多く作る)

オブジェクト指向
・Javaの発展的な内容
・オブジェクト指向
・継承やカプセル化、インターフェースとかポリモーフィズムとか。オブジェクト指向の本質的な部分を中心に。
・演習と課題(デザインパターンを有効に使ったものが作れると良さそう)

Webアプリの基本2
・サーブレット、セッション
・MVCモデル
・JavaScript(DOM操作、イベントリスナー、非同期処理などを中心に。可能ならVue.jsなど、モダンなフレームワークも触れたいところ。3日ぐらい欲しい)
・演習と課題(セッションや非同期通信を使った簡単なECサイトみたいなものが作れると良さそう。)

DB
・SQL(3日は欲しい)
・テーブル設計(2日は欲しい)
・プログラムとDBの連携(ここは知識の組み合わせなので軽く)
・演習と課題(Webアプリの基本で作成したECサイトにDBを連携させる)

フレームワーク
・Spring Boot
・フレームワークを用いた開発に関しては、使って慣れるしかないので、講義ではリフレクション、メタプログラミングなどの、フレームワークを作る上で使われている技術の解説を中心にしたい。
・フレームワークを使うとエラーが多発し、かつエラーがわかりにくくなる。ので、デバッグ力向上のための時間として有効活用したい。
・演習と課題(これまでに作成したWebアプリをフレームワークを使って作り直す)

開発工程
・開発工程や開発手法の話
・テスト工程の話
・スケジュール管理やプロジェクトマネジメントの話

プロジェクト演習
・個人、グループ、それぞれで自分たちの作りたいWebアプリをGitでばあージョン管理しながら作成し、クラウド上にアップする。

*******

以上、研修カリキュラムについての備忘録でした。来年以降研修をすることがあるなら忘れないようにしたい。

サポートいただくとめちゃくちゃ喜びます。素敵なコンテンツを発信できるように使わせていただきます。