リモートワークで新人が楽しく効率的に成長できたプラクティス


# はじめに

私のチームは、リモートワーク中心の開発チームです。
そのチームに新人が配属された時に、私のチームで行っている新人育成のプラクティスのうち、比較的ユニーク(だと思っている)プラクティスを抜粋して紹介します。
少しでも参考になれば幸いです。


# リモートワークの知見を説明

新人に対して、**チームで行っているリモートワークを快適に行うための知見を紹介**しています。
特に、「今から通話いいですか」をすっ飛ばしてビデオ通話を開始する文化であることを共有します。
詳細は以下を参照ください。

https://qiita.com/kojimadev/items/c211207ede652c2abeb0


# インセプションデッキの説明

インセプションデッキとは、プロダクトづくりに関わるメンバーが各々の意見を持ち寄って共通認識をつくり出すための大事な質問に対してメンバー皆で議論して決めた回答です。
詳細は以下を参照ください。
[インセプションデッキ | Agile Studio](https://www.agile-studio.jp/post/apm-inception-deck)
私のチームでは、以下のテンプレートを利用して作成しました。
[スクラムで使う「インセプションデッキ」のmarkdown形式版テンプレート](https://qiita.com/odekekepeanuts/items/ed491246ed83630bc84d)

特に、私のチームのメンバーは、**プロジェクトの成果を出すことと同じくらい、それぞれのメンバーが発信活動を継続しながら成長したいという価値観を持っていたり、チームで新しいことに対して失敗しても良いからチャレンジしてみることの優先度が高いこと**などの特徴があるので、それを新人に説明します。


# 分報の活用方法を説明

私のチームでは分報を活用しているので、以下の記事を用いて分報の活用方法を説明します。

https://note.com/kojimadev/n/n1a9f5364c630

最初の頃、新人は先輩に声をかけたり、チーム全体のチャンネルに質問を投稿したりすることに、気後れしてしまう傾向があります。
そのように**他メンバにもまだ気軽に話かけられない時期は、なるべく自分のチャンネルで状況をつぶやいてもらい、他メンバも新人の分報は気にかけるように喚起して、困ったことをつぶやいたら、すかさず誰かがフォローする**ようにします。

例えば、新人がそのチームで開発するための環境構築の作業を進める際は、分報で「今やっていること」や「困っていること」をつぶやいてもらうようにします。
そうすれば、他メンバがそれを見て解決法を助言してくれることで早期に問題を解消できます。


# アウトプット勉強会(書籍編)

効率的に成長するために、学んだことをアウトプットする習慣を身につける事は重要です。
**学んだことをアウトプットする習慣を作るファーストステップとしてお勧めなプラクティスが「毎朝15分のアウトプット勉強会(書籍編)」です**。
私は今まで新人10人以上の育成に携わりましたが、この勉強会を実施する前と比べると、実施した後の方が若手が驚くほど成長するようになりました。
新人には、この勉強会のやり方を説明して、指導担当メンバーと2人で実施してもらいます。
詳しくは以下の記事を参照ください。

https://note.com/kojimadev/n/n2b8db01022b3

最初に読む書籍は「報・連・相」に関する書籍にしています。
恥ずかしながら私は、報・連・相についての書籍を読むまで、報告・相談される相手がどういうタイミングでどういう詳細度で報告・相談して欲しいかということを考えたことがありませんでした。
上司に「報・連・相をしっかりやりなさい」と言われても、その「しっかりやる方法」というのが、それまではよく分かっていませんでした。
書籍を読んだ時に、自分がどれだけ「自分本位の考え方」で非効率なコミュニケーションをしていたのかを思い知らされ、それまでの自分の行動がとても恥ずかしくなりました。
報・連・相には、様々なテクニックがありますが、一番大切なのは「**相手が判断するために、適切なタイミングで適切な詳細度の情報を伝えること**」だと思います。
それが伝わる書籍ならどれでも良いと思いますが、書籍を読んだからと言って急にできるようにはなりません。
そこで、アウトプット勉強会で報・連・相の書籍を読むことで、チームで共通の知識として「書籍にも書いてありましたね」と書籍と関連付けながら指導を行うことができ、効率的に「報・連・相」のスキルの成長が期待できます。

その次は「リーダブルコード」という書籍です。
これは、多くの技術者から良い書籍としてお勧めされていますし、実際にこの書籍の考え方は重要であるため、優先して読んでもらいます。
ちなみに、私はこの本を読むまでコメントの書き方すら分かっておらず、それまで自分が書いてきたコードがとても分かりにくいコードだと思い知らされ、とても恥ずかしくなりました。
分かりやすいソースコードを書くためには、様々なテクニックを知っておくことも重要ですが、一番大切なのは「**他の人が読んで分かりやすいように、自分が考えうる最善を尽くすこと**」だと思いました。
その想いを常に持ち続けてコードを読んだり書いたりすることで、色々な人の書いたコードから色々なテクニックを吸収し、より分かりやすいコードがかけるように上達していくと思います。


# アウトプット勉強会(設計編)

アウトプット勉強会(書籍編)で優先する書籍が読み終わったタイミングで、アウトプット勉強会(設計編)を実施します。
**若手を育成するために設計する機会を与えたいけど、業務の都合上、なかなか若手向けに適切な難易度の設計タスクを与えられないという場合にお勧めのプラクティス**です。
詳細は以下を参照ください。

https://note.com/kojimadev/n/nd61dc69dc8a9


# 学んだことをアウトプットする

成長するためにはインプットよりもアウトプットが大事と言われているため、私のチームでは**Slackにアウトプット専用のチャンネルを用意し、そこで学んだことを投稿しあっています**。
詳細は以下の記事を参照ください。

https://note.com/kojimadev/n/nf4acabd952ee

私のチームでは、成長のために、学んだことを記事に書くことも推奨しています(業務時間内で書いてもらっています)。
数年前、私のチームは、私を含めて全員が技術記事を書いた経験がありませんでした。
そしてチームのメンバーは、記事を書く事にハードルや不安がありました。
その状態から、今はチーム全員が記事を毎月書き続けられるようになりました。
その方法の詳細は以下の記事を参照ください。

https://note.com/kojimadev/n/n78afcc213fb5


# 便利ツール・設定

チーム内でよく使われている便利ツールや、ツールの設定方法をチーム内のドキュメントにまとめていて、それを新人に読んでもらいます。

例えば、ツールの設定方法の例として、Slackでチャンネルをセクション分けしたり、[通知のタイミング] の設定を [ダイレクトメッセージ＆メンション＆キーワード] に変更したりなどを紹介しています。

# 暗黙知を動画で説明

配属したばかりの新人向けに、暗黙知を含む知見を教育用の動画として残しており、それを適宜 視聴してもらっています。
たとえば、不具合の原因を具体的に特定していく方法や、ある技術について調査する方法などを動画で実演しています。

学習効果を高めるために、動画を観てもらった後に、そこからどんな学びがあったのかを言語化してもらい、それに対してフィードバックします。

# 新人に対する日々の活動

以下、新人配属してから間もない期間での日々の活動を紹介します。

- 最初は、**チームメンバーが特に用がなくても新人に1日1回ビデオ通話で話しかける**。これにより話しかけても大丈夫そうな先輩という認識を作り、リモートワークで話すことに慣れてもらう。
- 新人に対しても、最初は1日1回以上、ビデオ通話でチームメンバーの誰かに自分から話しかけることを目標にしてもらう。
- 報連相の書籍を「[毎朝15分のアウトプット勉強会](https://note.com/kojimadev/n/nd61dc69dc8a9)」で読んでもらい、早めに報告・相談することの重要性を理解してもらう。その上で、**チームメンバーは新人から相談された時は、快く対応し、そのタイミングで自分から相談してくれた事に対してポジティブフィードバックする**。
- 配属直後は、開発に利用する開発言語などの学習期間が必要であるため、事前に作成したカリキュラムに従って学習を進めてもらう。**その学習の理解度を毎日ビデオ通話で確認してフィードバックする**。
- **配属されてから3ヶ月程度は、ビデオ通話で毎日15分の振り返りを行う**(いつまでやるかはケースバイケース)。振り返りにおいて指導担当者が気を付けることは、今、困っていることを解決するのではなく、今後のエンジニア人生において成長を加速させるための姿勢や考え方を身に着けてもらうための問いかけをすること。例えば、新人が理解したと報告した内容を、実際に説明してもらうとよく分かっていないことがある。それを頑張って言語化してもらうように問いかけて、人に説明するアウトプットを通して本当に理解できたことを実感してもらい、アウトプットの重要性を理解してもらう、など。
- 配属後しばらくは、学習期間が必要で業務に入れないが、実際の業務の様子を知らずに学習を進めることは効率が良くない。従って、**配属初日に、チームのタスクにモブプログラミング(以下、モブプロ)で参加してもらう**。学習した結果の到達点として、チームでどのように仕事を進めるのか理解しておいた方が、学習意欲が高まる(だろう)と想定し、最初に1日モブプロ体験してもらう。ただし、それを強制させては意味がないため、意思確認をする。いきなりモブプロに入っても、用語が難しくて理解できず、しんどい時間になるけど、それでもやりたいか聞いて、自分の意思で選択してもらう。その上で、できるだけドメイン知識がなくても理解しやすいタスク(テストコードの作成など)のモブプロに参加してもらい、チームの皆で各自が意見を出し合いながら楽しそうに仕事を進める様を体験してもらう。
- 最初の学習期間が進み、チームのタスクを担当してもらう際は、**最初のうちはペアプログラミング(以下、ペアプロ)を実施**する。これは、ペアプロでその成果物をどのように考えて作るのかを体験してもらい、その考え方をしっかり理解してもらうため。対象成果物がソースコードであってもドキュメントであっても、同じようにペアプロで考え方を理解してもらうことを優先する。そうすれば、[こちらの記事に書かれているようなレビューで大量の指摘をして大きな手戻りになる](https://note.com/kojimadev/n/nca1236edb002)ことはなく、分からない事や困った事があっても随時質問してもらって解消できる。
- **事前にチーム内で新人育成における重点ポイントを共有**しておく。重点は、チームのタスクができるようになることでなく、ITエンジニアとして今後やっていけるように、主体的に学んだ事をアウトプットして成長し続けるようになるための姿勢や習慣を身に着けてもらうことを重視する。それを重点に育成することを新人にも伝える。
- 新人から技術的な相談やツールの使い方などを質問された時に、ビデオ通話で画面共有してその技術を使った活用例を見せたり、ツールの活用例を実演したりすることで、体験して考え方を身につけてもらう。
- 新人の成果の確認時や毎日の振り返りにて、**必ず1回以上ポジティブフィードバック**をする。
- 新人から質問された時、その質問内容が適切に言語化できていなくても、おおよそ質問内容が理解できることがある。その場合に、こちらで「こういうことですね」とすぐに適切な言語化をするのでなく、**問いかけをして本人に言語化してもらう**ことを通して、言語化能力の向上を促す。

# まとめ

リモートワークでの新人育成は、たくさんの会話とフィードバックを行うことが大切だと思います。

また、**新人に対して、多量のレビュー指摘をすることで、どんよりさせないためのプラクティス**として、以下の記事をITエンジニア向け情報誌「Software Design」に投稿してWebでも公開しています。
よろしければ、こちらも参照ください。

https://note.com/kojimadev/n/nca1236edb002