インフラエンジニアの新人教育

私もそろそろ中堅インフラエンジニアのお年頃になってきました。仕事で新人教育をする機会も増えてきていて、いろいろ思うところがあるのでまとめてみます。

教育担当をして分かったこと

「自分でできること」と「他人に教えられること」は違う

自分ができること、というのは、できるようになるまでの過程があってこそ身に付いた技術です。うまくいかなくてドキュメントを読み漁ったり、ネットで検索したり、みたいなの。そうやって身に付けたのと同じレベルの技術をだれか他人に教えるとなると、これが難しい。途中の経過を同じように体験させることはできないし、結果だけ教えるのでは身に付きません。

新人に任せたいけど任せられない

インフラは文字通りいろいろなシステムの基盤になっているものなので、失敗するとそのインフラ上すべてのシステムに影響を与えてしまいます。失敗されたら怖いし、「新人はとりあえず後ろで見てろ!」みたいなことになりがちです。

また、OJTで新人教育をするときには、インストラクターの担当する仕事の一部を新人が担当することになるわけです。そうすると、新人の仕事が遅れる=インストラクターにしわ寄せが来る という図式になるため、新人を細かく管理することになります。しかし、新人に細かく指示を与えれば与えるほど、新人は「この人の言う通りに作業すればいいんだー、ほへー」みたいなことになってしまうんだなー。いつまでもひとり立ちできない、ニートみたいな子が出来上がってしまいます。ベストなのは、新人に担当させる仕事のゴールと制約条件だけ与えて、プロセスは自分で考えさせることなんだろうけど、実務ではスケジュールの都合もあるしなかなかそうもいきません。

本当は新人にいろいろ任せて成長してほしいんですよ!でも本番環境で失敗されるは怖い。にんげんだもの。

じゃあ、どうやって教育するの?

ぼくのかんがえたすごいきょういくほうほう(獅子は千尋の谷に子を落とすメソッド

仮想化環境を使って、適当に苦労させたらいいんじゃない?という教育方法を考えてみました。所要時間は1週間くらいかな。空き時間に少しずつやらせるのもいいかもしれません。

  1. まず、社内ネットワークに仮想環境を準備します。そこに新人専用仮想マシンを作成し、適当なOSをインストールします。インストール時に設定したオプション等は一切記録しません。できるだけいい加減にインストールします。
  2. 次に、職場でよく使われるミドルウェアをインストールします。ApachePHPMySQLみたいな感じで。これもできるだけ適当にインストールします。モジュールとか気にしなくていいです。そのへんのブログに乗ってるconfigオプションをコピペして使ってください。
  3. インストールが終わったら新人に引き渡し、ミドルウェアの設定変更、モジュール追加等の課題を与えます。制限時間は1週間ぐらいとします。そのとき、一緒に会社のセキュリティポリシーやサーバ構築ルールがあれば教えて、それに準拠するようにサーバの設定を変更させましょう。制限時間まで、新人からの質問には一切答えてはなりません。心を鬼にするのです!
  4. 期限がきたら、新人が立てたサーバが要件通りに仕上がっているかチェックします。セキュリティチェックとして、OpenVASやNessusでスキャンするのも良いと思います。

期限が来た頃には、新人はドキュメントの大切さ・保守性の大切さに気づいていることでしょう。また、簡単なことは自分で調べて解決することもできるようになっているでしょう。たぶんね。

というわけで、まとめてみました。この方法はつい最近思いついたもので、実際に新人に試したことはありません。