インターン生を独り立ちさせる(ドラフト版)
はじめに
筆者について
片手で数えられる程度のインターン教育経験。
特別教育手法に長けているわけではない。
想定されるインターン生
独学レベルのプログラミングの経験あり。
実際のプロダクトの開発経験なし。
(上記に当てはまれば新卒生・未経験エンジニアと読み替えても良い)
ゴール
タスクを振ったら一人でこなせるレベルまで持って行く。
インターン生を知る
社員と違ってインターン生は気軽に採用されやすいので突然「明日からインターン生が来るからよろしくね!」というパターンがままある。
まずは相手を知ることによって今後の方針と対策を練る。
- 大学と専攻
- 経験言語と期間
- 学習に使ったサービスや本
- 身につけたい技術
- 英語力
- 巡回している/お世話になっている技術系サイト
などを聞いておく。
会社と開発体制を知ってもらう
- プロダクトを使ってもらって全体像を把握してもらう
- 開発で使っているサービスやツールを(担当範囲でないものも含めて)知ってもらう
セキュリティ
- パソコンのセキュリティには気をつけてね
- 開発中のプロダクトの情報はSNSとかに漏らさないでね
- ソースコードを友達とかに見せないでね
- ユーザーの個人情報はマジで漏らさないでね
調べ方を知ってもらう
Google is your friend.
わからないことがあったらまずググる習慣をつけてもらう。
ググり方はググってね。
ググり方 site:qiita.com - Google 検索
ドキュメント
- 社内ドキュメントを一通り読んでもらう
- 公式ドキュメントのありかを知ってもらう
本を読んでもらう
体系的な知識を身につけてもらうために本を読んでもらう。
本人のスキルにもよるが業務で使うものの「実践入門」的なポジションの書籍が望ましい。
余力がありそうであれば「リーダブルコード」や「プリンシプル オブ プログラミング」「ハッカーと画家」のような実務に直結しないがエンジニアのスキルの底上げになりそうなものも併読してもらうと良い。
プロダクトコードを書いてもらう
ここは意見が分かれるところだと思うが、(内容をあまり理解してないとしても)チュートリアル程度のものをこなした経験があるのであれば、お勉強のためのコーディングの課題を与えるより実際のプロダクトコードを書いてもらった方がスキル向上になるし、本人のモチベーションの維持にもなると思う。
開発環境構築
開発環境は2〜3日かけてでも最初にきっちり整えてた方が良い。
生産性もなくハマりどころが多く一番つらいところではあるが、あとからアレも足りてなかったとかコレも足りてなかったとかでダラダラと構築するのは気力をそぐのであまり良くない。
linterなどのチーム開発では必須だが個人開発ではあまりお世話にならないツールについては特に重点的に理解してもらう。
エディタ
特別なポリシーがない限り教育者のエディタに合わせてもらうのが良い。
(ただし教育者がvim、emacs使いである場合はこの限りではない)
Git/GitHubに慣れてもらう
gitコマンドやSourceTree、GitHubのIssue、Pull Request、Review、git-flowのようなブランチ運用方法などの使い方や流れに慣れてもらう。
このあたりは学ぶというより使いながら慣れてもらった方が良い。
英語/エラー文に慣れてもらう
赤い文字の英語でまくし立てられたとしても決して恐れることはなく、大抵のことはググれば解決することを知ってもらう。
stackoverflowの英文はまるごと翻訳に突っ込むとコンピューター用語まで日本語になってわけがわからなくなるので、まずは単語ベースで訳すと良い。
デプロイしてもらう
実装した部分は本番環境でうまく動いてるかな?
ちゃんと動く機能を作れた君は今日から立派なエンジニアだ!
Discussion