三流プログラマが脱三流するために書くブログ

PHP, オブジェクト指向プログラミング, デザインパターン, リファクタリング, DDD, 関数プログラミング, etc.

13. 新人プログラマを育てる環境について

概要

いま仕事で関わっている複数の会社で、4月に新卒社員が入社してくるらしいです。 が、どちらの会社も小さな会社であるし、それほど教育システムが充実しているわけではないので、ちょっと心配になっています。 なので、最低限これだけはやっといた方がいいよねっていう部分と、当の本人がどこまで環境 (会社) を活用できるか、みたいなところをとりとめもなく書いておこうと思います。

三流プログラマとして長く業界で生きてきた身としては、あそこでもうちょっとなんとかしてたらもうちょっとなんとかなってたかもなぁというポイントがキャリアの初期にいくつかあったような気もするので、1〜3年目くらいまでのスパンで、ターニングポイントがどの辺なのか、どう振る舞えばいいのか、って辺りにも言及したいです。

1. 会社側に求められる最低限の振る舞い

育てる側の最低限やれそうなことを3つ挙げてみます。

  1. 技術書を躊躇なく与える
  2. メンターをつける
  3. 業務時間内に勉強する時間を与える

1. 技術書を躊躇なく与える

会社の所有にして、全額出すってパターンと、本人の所有にして何%か補助を出すパターンがあるかと思います。 どっちもやった方がいいですね。

いまはインターネットで良質の学習コンテンツが無料で手に入ったりするので、書籍でなくても学習は可能ですが、いまでも紙の本の優位性はあると思っていて、「所有している感」が大きい方が、周りに与える良い影響が増すと思います。技術に関心がある、資料の購入に積極的である、という姿勢を見せることは大事かなぁ、と。買ったはいいけど、けっきょくだれも読まない、みたいな状況も発生するかもしれませんが、それは本人たちの問題なので、強制すべきものでもないし (推奨はするべきとは思うけど)、ましてや捨てるのはもったいないので、いつか読まれるときのためにそのまま本棚に飾っておきましょう。

2. メンターをつける

中小企業は教育に割けるリソースが極小だったりするので、研修制度とかあればいい方だし、いきなり実戦投入とかもざらだったりするんですが、世の中には OJT という魔法の言葉が存在しますので、「うちは OJT でやってます」ていう会社は多いですよね (ただし、本来トレーニングというのは強化したい箇所に対して、強化を促すような訓練を施し、結果を見るというステップが必要なので、放ったらかしはやめましょう)。

本当は、社内で定期的に勉強会やら新人研修やらをやった方がいいとは思いますが、時間もやる気もないっていう会社の場合は、せめて、メンター制度はあってもいいんじゃないかなぁと思います。

新人の場合、行き詰ったときにどう回避すればいいのか、壁に当たったときにどう乗り越えていけばいいのかってのが分からず、同じところをぐるぐる回って時間と精神力を浪費してしまうことがあるので、同じ職種の先輩をメンターにつけて、相談に乗ってやることで、そこら辺の無駄を軽減することができます。

最悪1年持たずに辞めてしまうこともあるので、採用コスト無駄にしないためにもやっといた方がいいですよ、という方がより深刻ですかね。

大事なのは、直属の上司はメンターにしない、ということで、別の部署だったりチームだったりの先輩をつけるのが肝要です。ときには上司の悪口を言い合って、ストレスを発散できる環境が大事です。

社内でアサインできる人がいない場合は、外部委託するのもありかと思います (実際、私も仕事でメンター的なことをやっています)。

3. 業務時間内に勉強する時間を与える

新人を最初から即戦力として期待しているようなマッチョな会社は別として、多くの会社では長い目で見ているはずなので、週に数時間、業務以外のことをやっても困りはしないはずです。

きちんと指導者をつけて、課題を出したり添削したりっていうのが難しい場合は、オンラインの学習プログラムがありますから、そちらを利用するといいでしょう。アカウントを共有しておけば、非同期で進捗のチェックも可能です。

改修や保守のような業務につかせている人の場合は、自力でアプリケーションを作らせてみるっていうのもアリですね。経験が浅いとどうしても視野が狭くなりがちで、改修案件しかやってないと、そこしか見ない癖がついてしまうので、インフラから UI まで、全体を見る癖をつけるために、1本自分ひとりで仕上げるっていう経験はすごく大きいと思います。いまなら、たいていの基礎情報はググれば無料で手に入るので、つきっきりでだれかが教えなくても、進めていけるんじゃないでしょうか。

2. 本人がどこまで環境 (会社) を利用できるか

ここからは育てられる側の視点です。

  1. 社内でできる人を探して仲良くなる
  2. 偉い人に色々ねだる
  3. 存在感を高める

1. 社内でできる人を探して仲良くなる

OJT でやっていると、まったく成長に寄与しないことばかりやらされることがありますが (実際はそんなことなくて、どんな仕事からでも学ぶことがあると思います)、できるプログラマから話を聞くだけでも、成長の道筋を教えられることがあるので、そうした人を見つけて、ランチ行くとか飲みに行くとかするといいと思います。

仲良くなったら、コードレビューとかやってくれるようになるかもしれませんし。

問題は、仕事ができるっていうのと、人にものを教えるのが上手い、というのはまったく別のスキルなので、この人何言ってるか分かんないな、って思ったら別の人を探してください。

2. 偉い人に色々ねだる

これはけっこうさじ加減が難しいと思うのであまりおすすめはできないですが、私が新人の頃、よく社長に社内制度やら環境やらに文句を言って変えてもらったことがあって、けっきょく組織はトップダウンで動かすのがいちばん手っ取り早いので、ここぞというときには偉い人に直接掛け合うのが最も効果的だと思います。

社長は忙しいので、愚痴るだけでは時間の無駄になってしまうので、エレベーターピッチ的に何が問題でどこを変えるとどういう効果が期待できる、というのを理路整然と簡潔に話せるように準備しておきましょう。

やりすぎると、最悪社内で村八分になったりするので、あまりおおっぴらにやらない方がいいのと、提案するという基本姿勢を守ることです。

3. 存在感を高める

社内で自分の存在感を高める、というのは意外と重要で、周りが気にかけてくれるようになりますし、困ったときにも相談に乗ってくれやすくなります。

コミュニケーションの対象をチームの外に広げ、社外での活動もし、自分をアピールしていきましょう。

ちょっとずうずうしいかなっていうくらいの態度でいいんじゃないかと思いますが、出る杭は打たれるってこともあると思いますので、その辺を覚悟しておくといいでしょう。

入社二年目に rm -fr / して伝説になった知り合いがいますが、彼はいま大変出世しています (あんまり関係ないけど、伝説作るのもアリって話です)。

ターニングポイント

社内のイベントだけでいうと、あんまり機会がないかもしれませんが、そういうチャンスがあったら逃さないようにしましょう。

  • 新規事業がスタートするってなって、やりたい人いる?っていうアナウンスがあったら真っ先に手を上げる
  • 社内でクロスファンクショナルチームを立ち上げるからできる人は参加してってアナウンスがあったら真っ先に手を上げる

度胸が大事ってことでしょうか。私の場合は、PHPの経験がないにも関わらず、PHPの仕事があるよって言われたときに手を上げたのがターニングポイントになりまして、Javaに見切りをつけたかった当時の状況を鑑みるとあれはいい判断だったな、と思います。

社外のイベントだともうちょっと色々あって、

  • どっかのイベントで登壇するチャンスがあったらLTでもいいから発表する
  • 同じような境遇の人を見つけたら実際会って話してみる (勉強会で知り合った人とかTwitterで知り合った人とか)
  • ロールモデルになるような人を見つけたら話を聞いてみる

私が新人の頃 (15年近く前ですが) はインターネットにこれほどまでに情報が溢れていたわけでもなく、connpass のような社外活動を支援するようなサービスもなかったので、運任せだった部分もあって、ずいぶんと遠回りしてしまった感がありますが、いまはそうした環境がすごく整っているので、積極的に利用していくといいんじゃないでしょうか。

まとめ

育てる側は、放ったらかしはやめましょう。 育てられる側は、社内のリソースに頼らずに活動の領域を広げていきましょう。

といったところでしょうか。

もう育てられる側に戻ることはありませんが、育てる側にはいつだってなる可能性があるので、常日頃から考えておきたい課題だと思いました。