ソフトウェア開発をしているとプロジェクト途中に新規メンバーが入ってくることはよくあります。途中参戦したメンバーがプロジェクトに早く馴染めば馴染むほどプロジェクト全体の進捗が早くなります。
そのためにはプロジェクトに必要なスキルや知識を数日から数週間程度で教育する導入教育が非常に重要になってきます。
実際にプロジェクトで実施してみて、過去一うまく行ったのでその手順を紹介します。
導入研修の目指すゴール
- 技術力の底上げ
- プロジェクトメンバーとしての一体感
- 相互の性格や作業のクセの理解
前準備
メンバーが来てから準備を始めると準備が終わるまで新メンバーが暇になって時間がとてももったいないです。メンバーが来る前に簡単でもよいので色々と用意をしておきます。
確認&準備するもの一覧
- メンバーのアサイン期間の確認
- プロジェクト資料の確認と作成
- 資料の読む順と重要度を決める
- 導入教育の計画
詳細
メンバーのアサイン期間の確認
メンバーがプロジェクトに入る期間を確認します。この期間が長ければ長いほど導入教育で早期に知識を獲得してもらうことで教育に対してのコスパが良くなります。
大体の目安としてはひと月以内なら軽く資料を見てもらう程度の教育、ひと月以上ならしっかり教育します。
プロジェクト資料の確認と作成
プロジェクトに関する資料の確認と作成をします。資料があれば、新メンバーの質問に対して資料を提供することで説明の時間を省けます。
資料を作成する時間がないと言う方は新メンバーが入ってきてからのことをイメージしてください。
自分がお客様への資料やプログラムを作っているときに話しかけられて、作業を中断して説明させられるのと新メンバー向けの資料を作る時間を今とって開発中は邪魔されないのどちらが良いか考えてください。
それでも資料作成の時間がないと言う場合は、既存の資料をリスト化して新メンバーに渡したり、あなたの作業を録画したものを渡すだけでも助けになります。
必要な資料は下です。
- プロジェクトの背景と今までの遍歴(プロジェクト計画書と会議議事録)
- アーキテクチャ、DB資料
- 開発規約
- プロジェクトのルール(朝会の時間や場所など開発のルール)
- 環境構築手順と開発手順
特に重要なのが環境構築手順と開発手順です。プロジェクト内で長く作業をしているとプロジェクトルールと一般的なルールが曖昧になってきます。
手順を作ることでプロジェクトルールと一般的なルールのすり合わせを行い、新メンバーは手順を見るだけでプロジェクトルールに困らずに作業をすることが出来ます。
これは誰にでも出来るようにコマンドや操作単位で細かく書くことが重要です。
例えばgit cloneコマンドですら知らない人は知らないので手順に「作業フォルダでctr+右クリックをしてコマンドプロンプトを起動する。コマンドプロンプトでgit clone リポジトリURLコマンドを実行する」と書く必要があります。とても面倒ですがこちらの作業を中断されないために必要です。
資料の読む順と重要度を決める
資料をたくさん作ったとしても新メンバーが理解できなければ意味がないです。理解を助けるために資料を読む順番を決めて、各資料の重要度を判断します。
読む順番をプロジェクトの概要から詳細へ徐々に細かくすることで理解の判断を助けます。特に具体的なものが分かりやすいので抽象的なものから具体的なものになるように物語を示してあげます。
各資料の重要度は「しっかり理解する」「流れと単語だけ覚える」「何が書いてあるかをふんわり見てみる」の3段階に分けて資料の濃淡をつけてあげて読む時間を短縮してあげます。
余裕があれば次の資料もあると便利です。
- 言語とフレームワークの説明
- 使用ツールの説明
調べたらわかることですが、同じフレームワークでもプロジェクトのアーキテクチャにより結構違います。
導入教育が必要なレベルの人であれば、プロジェクト特有の書き方なのかフレームワーク特有の書き方なのかがわからずに開発をしても手戻りを発生させてしまいます。
導入教育の計画
資料説明、資料読解、模擬開発の各3つを何日でやってもらうかを計画します。新メンバーのスキルが分からない状況であれば、新人程度をイメージして計画することで期限が過ぎることを防ぎます。新しいプロジェクトに入って最初の仕事で間に合わないですと報告させると新メンバーのテンションも下がりますのでギリギリの計画にしないように気を付けましょう。
本番
メンバーが入ってきたら、前準備で作った資料を使って説明していきます。新メンバーとのコミュニケーションが重要になってきますが、こちらも作業をしながらになるのでつきっきりになって教育するのが難しいです。基本的には1日に1回の質問会とレビューを通して教育していきます。
導入教育手順
- プロジェクトとプロジェクト資料説明
- 模擬開発
プロジェクトとプロジェクト資料説明
どんな資料でも読んで100%理解できる資料はありません。資料を使ってプロジェクトの説明をする時間を取ります。その説明時に下のことを注意してください
- 資料の場所を共有する
- 質疑応答を受け付ける
- プロジェクトの既存メンバーをいじる or いじられる
資料の場所を共有しておくことで、新規メンバーが後から見直したくなった時に探す時間がなくなり直ぐに見直すことが出来ます。
質疑応答を受け付けてもほぼ質問は出ません。質問が出なくても聞き続けることで質問しても良い雰囲気を作ります。既存メンバーとのいじり・いじられることを入れることで気楽に質問が出きる雰囲気を感じて質問のハードルを下げることが出来ます。
模擬開発をする
プロジェクトでの進め方を体感してもらうために模擬開発を新規メンバーに依頼します。
進め方は次の通りです。
- タクスを分解する
- タスクの進め方を考える
- 仕様書やソース作成
タスクを分解する
プロジェクトによりますがタスクを割り振られたら、自分が進めやすいようにタスクを分解すると思います。分解の粒度がプロジェクトにより結構違うので、新メンバーにタスクを分解してもらい、レビューします。例えば画面作成タスクを入力フォーム、入力チェック、表示に分解するイメージです。
なるべく細かくすることで新メンバーの言語やフレームワークの理解度が読み取れるので細かくすることをおすすめします。
タスクを進め方を考える
おそらく開発手順の資料に書いてある内容と同じになると思いますが、タスクの進め方を新メンバーに考えてもらいます。レビューや資料の作成タイミングがプロジェクトにより異なるので、そこを重点的にレビューします。
仕様書やソース作成
考えた進め方を元に仕様書作成やソースを作成してもらいます。レビュー単位は分解したタスクの単位でやります。開発規約を見たばかりで、まだ慣れていないのでそこら辺を重点的にレビューします。
レビューの有無にかかわらず、1日の質問会と進捗の確認をすることでより質問をしやすい空気を作ります。
やってはいけないこと
やってはいけないこと一覧
- 作業を焦らせない
- 質問を適当に対応しない
- 残業時間を管理する
詳細
作業を焦らせない
進捗を気にしすぎて作業を焦らせると、既存コードやネット上のコードを理解せずにコピーして満足してしまったりメンタルがダウンしてしまう可能性があります。
普段の開発時間との差を淡々と伝えたうえで、作業を早くするコツや作業を早くするための施策(回数をこなすなど)を次に一緒にやろうと伝えます。一緒にやるのが重要です。
質問を適当に対応しない
質問があった時に適当に対応すると作業が詰まったり、邪険にされたと感じられてしまうのでちゃんと対応します。忙しくて今できない時は、ちゃんと時間が作れる時刻を伝えて待ってもらいます。他には自分では答えられない質問が来たときは質問に答えられる人に自分が新メンバーと一緒に聞きに行くことで大切にされている感も出します。
残業時間を管理する
周りが仕事をしているのに導入教育をしていると言う状況は、考えている以上に劣等感や焦燥感を感じてしまいます。そのような状況の中、導入教育のタスクが遅れるとさらに追い詰められて遅くまで残業をしてしまいがちになります。
プロジェクトの風土が残業を許さない状況であれば、この導入教育でちゃんと意識改革するうえでも、残業はしないように調整をします。
最後に
過去一うまくいった導入研修と言うことで色々な手順を書きました。自分のところに来る人は何故か新人やメンタルアウトした人が多いので導入研修で技術の底上げを行いつつ見守っている感を出さないといけないので苦労しました。
自分自身、作業が早いから実現できている面もあると思いますが周りの導入教育に関する理解が大きくて時間を取ってもらえたのも良い点だったと思います。