未経験者を対象としたIT技術研修について
この記事について
この記事では、私がソフトハウスの新入社員向けに制作・実施を担当した研修プログラムを紹介したいと思います。
IT業界では「実務経験」が重視され、未経験者の就職のハードルが高いと言われています。そんな中で、IT業界に転職してきた人たち(未経験者)に対して「実際の開発に役立つ」「実務に近い経験ができる」研修とはどういうものか、ということを考え、この研修プログラムを作りました。
この記事はその概略を説明したものです。
研修で取り扱っていた内容には、技術的な目新しさはないと思いますが、私自身の開発経験から、特に未経験者には必要だと思われるノウハウをピックアップして構成したものです。
当時の研修の題材は「Access VBA」でした。これは、「データベース」「プログラム開発環境」「画面設計」などを同時に学べると考えたからです。また、当時はVBAを使った受託業務も、一定数あったいう事情もあります。
(研修全体としては、他にSQL、Excel VBAなどもありました)
なお、私が研修に携わっていた期間は2015.5~2019.3で、インターンを含めて約60名の方が研修を修了され、約50名の方がエンジニアとして就業されました。
この研修の後、そのままVBAやデータ解析関連の仕事に就く方がおられた一方で、その後にASP.Netの研修を経て、その分野の仕事に就く方もおられました(そちらの研修については私は担当していません)。
研修内容について
①基礎研修
一般的な「プログラミング言語研修」としての座学と演習が中心ですが、「データベースの基礎」「機能を少しずつ積み上げる」「異常系の考え方」「テストの考え方」などのポイントを押さえることで、「実際の開発に役立つスキル」を身につけることを目的としていました。
②応用研修
より実践に近い内容として、(新規開発ではなく)「改修」の技術を得るためのもの(仕様の分析、改修仕様の設計、利用者レビュー、テスト)、上流工程の一部(要求ヒアリング、フロー設計、利用者レビュー)などの研修を行っていました。
③報告、スケジュール立案
上記の演習を通して、自分の状態を管理・報告すること(進捗状況や問題点の把握)、工数を見積もること、スケジュールを計画することなどを求めていました。もちろん、最初からできるものではありませんが、演習の過程で「自分が何をしているのかを理解する」「仕事の全体像ややるべきことを把握する」ことができるようになると、報告や見積もりの精度が上がっていきます。
研修内容の概略:基礎研修
「プログラミング言語の書き方」を学んでもらうだけでなく、以下の点も含めて指導していました。
なお、演習には区切り(マイルストーン)を置き、その時点で(演習の)成果物を(講師である)私がレビューしていました。
①データベース
ビジネスアプリケーションは基本的に「データを扱うもの(=データベースをいじるもの)」であるという考えのもと、研修カリキュラムはまず「データベースの基礎」から始めました。また(VBAの研修と並行して)SQLの研修(演習)も行っていました。
②機能を少しずつ積み上げる(小さく完成させてから、大きくしていく)
演習課題については、まず機能を限定した上で、機能を追加していきました。また、その際に「穴をあける(貫通させる)」ために、次のような「機能を絞る」という方法も指導していました。
③異常系処理
「異常事態」の部分は、課題で想定されていることに加えて、以下の点から「研修生が自分で考える余地」も残しておきました。
その場合は、以下の3つの視点から研修生に考えてもらいました。
また、これらの処理を「再実行可能性」という観点から考えてもらいました(例えば、不可逆的な処理をまとめて、その前に「検出」処理を置く)。
④テスト項目の抽出
単体・結合テストと機能テストについて、テスト項目の抽出と実際のテストを実施してもらいました。。
この二つが未経験者には区別がつきにくいようでしたので、ここではそれぞれ
という視点で項目を挙げてもらいました。
研修内容の概略:応用研修
基礎研修の終了後には、次の研修を行っていました。
これらの演習については、演習の「場」を実務の状況にできるだけ近づける(再現する)ことに重点を置いていました。
例えば、(講師である)私が(プロジェクトの)リーダーとなって(後述するような)スケジュール管理やレビューを行い、また研修性には進捗や問題点などの報告を求めていました。
※実際の演習は、これ以外にもあります。
①改修の演習
実務では、新規開発だけでなく、「改修」作業も発生します。そのための演習を行いました。
演習の内容は、実際の改修プロジェクトで使っていた技術をベースにしています。
演習の内容は、完成したアプリケーションに指定の機能を追加改修する、というものです。
ここでは条件を悪くするために、ドキュメントはユーザーの「取扱説明書」のみで、プログラム内のコメントはすべて削除していました。
この状態で、次のような手順で演習を進めました。
これらの各ステップは、講師のレビューを受けてから次に進みます。特に 【4.改修仕様設計】のレビューに関しては、講師がお客様役となり「お客様に仕様を説明する」という研修も行いました。
②上流工程の一部の演習
実務未経験者が最初に担当する開発工程は「下流工程」(製造、テスト)だと思います。そして、一旦実務でその工程に入ってしまうと「お客様の要望」に直接触れる機会は極端に少なくなります。
そこで、「お客様の視点で考える」ということを体験してもらうために、(実務に入る前の段階で)「上流工程」の設計の一部を担当してもらう研修を行いました。これはまた、下流工程で「上流工程から渡される設計書」を見る目を持ってもらいたい、という意図もあります。
この研修の内容は、業務パッケージの設計開発の中の上流工程で、実際に行っていた過程の一部を切り出したものです。
演習は次のステップで進めました
講師は各ステップでレビューを実施するほか、お客様(に扮した)ヒアリングや説明の場では、お客様の立場からの「確認・説明不足の点への質問(指摘)」も行います。
この演習は「未経験者向け」ですので、最初から「一人で」設計できるとは限りません。ですから、2~3人でペアを組み、ホワイトボードを使いながら検討を進めてもらいました。また、ペアが複数あるときには、相互レビューを行うこともありました。
このステップでは、特に【3.フロー設計】がお客様にとっての使いやすさに大きく影響します。
例えば、「データベース(台帳)」に「追加、検索、更新、削除」する、といった(非常にシンプルな)アプリケーションであっても、次に挙げるような業務においては、それぞれ中心になる機能が異なってくるため、お客様に適した(便利な)「機能の流れ(画面遷移)」も変わってきます。
ここに着目して、妥当なフローを検討します。
また、追加の要望を出すこともあります。
報告、スケジュール立案
上記の研修を通じて、研修生に対しては
をお願いしていました(②は応用研修から)。
これらも実務において必要になるスキルですが、未経験者にとってハードルが高いものです。
ですから、研修の過程では「見積もりのための技術」なども含めて指導も行っていました。
(例:遅れの原因が作業時間確保ではなくスキルに起因する場合は、遅れが拡大することを予測する、など)
もちろん、最初から正確な見積もりは難しいですが、演習を進める過程で「自身のやっていることの把握」「作業の全体像とやるべきことの把握」ができるようになると、精度が上がってきます。
まとめ
以上のように、「実際の開発に役立つ」「実務に近い経験ができる」研修というものを考えて、
という研修を行ってきました。
なお、私は現在、この研修を実施する立場にありません。また、現在のIT業界で、エンジニア向けの研修としてVBAを扱うことが、ビジネスとして成り立つのかどうかもわかりません。ただ、この研修で目指していたものは、VBAだけでなく他の言語での開発でも役立つかもしれないと思っています。