🐤

エンジニアの育成にどう向き合うか

2022/07/23に公開

はじめに

みなさんは新人エンジニアの育成で悩んだことはありますか。おそらく何かしら悩んだ経験をお持ちの方も多いのではないでしょうか。

私はたくさん悩んだ経験があります。私はこれまで4名のエンジニアをOJTという立場で育成してきました。彼らの性格や得意不得意が様々な中で思うようにいかない場面もあり、日々悩みながら仕事をしていました。

かれこれ4年ほどの期間で、「これは上手くいった」 「これは失敗だった」という経験もそれなりに出来ました。そこで今回は、私のこれまでの経験で学んだことを記事という形でまとめてみようと思います。

技術の習得について

まずはエンジニアとしては避けて通れない、技術を教えるステップについてです。

●最初はとにかく「読んでもらうこと」を意識する

新人エンジニアの場合、プログラミング自体に慣れていないケースもあります。
そういった場合には、まずは「読む」という作業を重点的に行う必要があります。

ドキュメントを読む、コードを読む、仕様書を読む等、これらはとても大事でエンジニアの基本となるスキルです。

コードは読めないと書けないとよく言いますが、いきなり手を動かすのではなく、
まずはインプットするフェーズを十分な時間を確保して行うべきです。

●「ゆっくり」「繰り返し」進める

被教育者の経験が少なかったり、教える側と年齢が離れている(かなり年下など)場合等には特に、
相手にリラックスしてもらうことが大事です。
リラックスして自信を持てる状態になれば、人は最高のパフォーマンスを発揮するからです。

その為には、最初のうちは特にゆっくり作業を進めてもらうことを意識すると良いです。

私は度々新人エンジニアから、「先輩たちの話についていけない」「コードがよく分からない」という相談をもらうことがありました。しかしある時、彼らもゆっくりなら理解できることに気が付きました。
スピード感をもって作業を進めない事で自信を失っているのだとすれば、「ゆっくりやれば自分の手で出来た👍」という経験を着実に積ませるべきだと私は思います。

また技術を学ぶ過程においては、必ず分からないことは出てきます。そういう時にはドキュメントや動画などを繰り返し読んでもらう様にしています。

ドキュメントを読み飛ばしたり、1回で内容を理解しようとするのはあまりオススメできません。繰り返し読むことで新たな発見があったり、初めて理解できることも多いからです。

下記は私が好きなnoteなのですが、ここでも「理解するには時間がかかる」 「早くしようとする者は遅くなる」ということが述べられています。
https://note.com/simplearchitect/n/n388201603a28

●自分から教え過ぎない

これは非常にバランスが難しいのですが、あまり先回りして手取り足取り教えない方が良いと思います。

自律したエンジニアになる為には、分からないことを自分で解決したり、頭をフル回転させて自ら判断する経験が欠かせません。

ある程度エンジニアとして自立してきたなと感じたら、こういった事を考え始めると良いです。

私も最初の方は丁寧に先回りして教えてしまうことが多かったのですが、長期的に見て相手の為にならないと思い、考えを改めました。

新人エンジニアが自身で判断する機会を少しずつ増やせば、それが彼らの中で自信になっていきます。彼らが迷った時はアドバイスをしますが、まずはなるべく考えてもらう様にするべきです。

フィードバックについて

ここではフィードバックについて、私がどのようなアプローチをしていたか書きます。

●最初は特に細かくフィードバックする

私の経験上ですが、新人エンジニアは今の自分がちゃんと成長できているのか不安に思っていることが多いです。彼らの成長具合は彼ら自身にとっては見えづらいようです。

なので定期的に1on1の場を設定する等、特に最初は丁寧なフィードバックを心がけると良いです。
この1ヶ月で出来る様になったことや良かったこと等、ほんの小さな出来事でも細かく伝えるのがオススメです。

フィードバックのペースや方法は新人エンジニアとも相談して、それぞれにあったやり方で進めると良いです。(私の経験ですが、文章の方が後で見返せるから良いと言われたこともあります。)

また、私は思ったことはなるべくその場で伝える様にしていました。後で「実はこう思ってたんだよね」と伝えるより、お互い思っていることをその場で直接伝える方がスッキリしてストレスも溜まらないと思います。

フィードバックを欲しがっている新人は多いと思います。ぜひ細かくフィードバックしてみてください。
(そもそも人間はフィードバックを欲しがる生き物ですね。私も記事にいいねがもらえたらとても嬉しいです。)

人間はフィードバックを求める
https://comemo.nikkei.com/n/n3fdb2fba8d58

●良いことはみんなの前で、改善点はこっそり伝える

フィードバックに関しては、改善点だけでなく良かったこともどんどん伝えた方が良いと思います。
この時の伝え方ですが、良いことはなるべく他のチームメンバーがいるタイミングで伝える様にしていました。 誰でもみんなの前で感謝されたらうれしいものですよね。

また、あえて本人以外のメンバーに「〇〇のことが良かった/素晴らしかった」と伝えておくこともあります。 これは「陽口(ひなたぐち)」も呼ばれますが、自分へのポジティブなメッセージを間接的に聞くというのは直接的に聞くよりも本心に近いフィードバックとして受け止めてもらいやすいと思います。

一方で、改善してほしい点については「個別で」「簡潔に」「直接」伝えることも心掛けていました。言うべきことははっきり伝えるのが優しさだと思いますが、伝えるタイミングや方法がかなり大切だと思います。

●フィードバックには指摘の理由も添える

フィードバックを行う際には、「なぜそれを改善してほしいか」等、なるべく理由を添える様にした方が良いです。

ただ「〇〇は良くないから直してほしい」というだけだと、なぜそれがいけないことなのか相手に伝わっておらず、フィードバックを受けた側は、「納得していないけど、言われたからやる」と思っていることがあります。
これは正しい方向に改善してもらう為には非常に良くない状態です。なぜなら考えることを放棄しているからです。

お互いが納得して前向きに進んでいく為にも、丁寧に背景や理由を含めて伝えるべきだと思います。
フィードバックの対象者が正しく理由や背景を理解すれば、「自ら考えて」改善に向けたアクションを起こしてくれる様になります。 これは非常に重要なことです。

●双方向のフィードバックを意識する

フィードバックというと、被教育者に一方的に伝えるものと捉える方もいるかもしれませんが、私はフィードバックは「双方向」であるべきだと考えています。なぜなら育成している側も試行錯誤しながら進めていて、間違ったことをしている可能性があるからです。

育成する側も完璧な方法で進めることはかなり難しいので、被教育者からのフィードバックで「こういう部分は改善してほしい」等の意見があった場合は、まずは受け止めるべきだと思います。指摘された内容を必ず取り入れるべきだとは私は思いませんが、大抵の場合、相手はそれなりに勇気を振り絞って伝えてくれています。 「これはその通りだな」という部分は改善すれば、よりフィットしたやり方に変えていくことが出来ます。

私が尊敬している任天堂の元社長、岩田さんは著書の中で、「人は逆さにして振らないと、こんなにもものを言えないのか」 とおっしゃっていましたが、私もエンジニアの育成をする中でこの事を痛感しました。
だからこそ、勇気を振り絞って伝えてくれた思いにはなるべく応えたいと考える様になりました。

(「岩田さん」の無料公開ページがあったので、ご紹介します。)
https://www.1101.com/books/iwatasan/free/

エンジニア育成の目的を考える

エンジニアの育成というのは、冒頭にも書いた通り上手くいかない事の連続です。
そういった場面に直面した時は、当初の目的に立ち返ってみるのも大事です。

●そもそも組織として成果を出すことが第一

エンジニア育成に悩んでいると、「どうしたら上手く育成できるのか」ばかり考えてしまいがちです。私もそうでした。しかし改めて考えてみると、エンジニアの育成とは、「組織としてアウトプットを出していくこと」を達成する為の1つの手段であることに気が付きます。

「自分と同じレベルまで彼を育てる」とか「新人エンジニアとの人間関係を円滑にしなきゃ」と、真面目な人ほど考えがちですが、私はそれは少し違うと思います。

組織として成果を出していく事を期待されて、私やあなたは会社に所属してエンジニアの育成を任されているのですから、「自分と同じレベルになること」や「人間関係が円滑であること」というのは、必ずしも重要ではありません。(もちろん悪いことではないのですが。)

極端な話、自分と同じレベルにならなくても、嫌われていたとしても、組織として求める以上の成果が上がっているのであれば、立派に仕事をこなしていると言えます。

必ずしもそのエンジニアを育成することだけが、組織としての大きな目的を達成する手段ではないので、そういう意識をもつと少し気持ちが楽になるかもしれません。

エンジニアの育成に悩んだ時は、より大きな目的に立ちかえると、やるべきことが見えてくるかもしれません。

それでも上手くいかない時は

「そうは言っても、どうすれば良いか分からず困っている」という方向けに、私がエンジニア育成で悩んだ時に取り組んだことをいくつかご紹介します。

●責任感が強いメンバーにはあえて任せきってみる

なかなか当事者意識をもって仕事に取り組んでもらえないという悩みはないでしょうか。
もし被教育者が責任感が強い性格であれば、思い切って少し難しそうな仕事を任せてみるのも有効な方法です。

先輩が常に近くにいて助けてくれると、たしかに安心感はありますが、いつまで経っても「自分でやらなきゃ」という気持ちになりにくいものです。私自身の経験を振り返ってみても、自分が一番成長できたのは先輩が突然いなくなったり大きな案件を任された時です。

こういう危機感ある状況をあえて経験させると爆発的に成長してくれることもあります。人を選ぶやり方ではありますが、試してみてください。

●その人が最大限パワーを発揮できる場所を見つけて任せる

同じように育成を行ったつもりでも、人によって伸びる部分とそうでない部分は大きく異なります。
ある部分では、当初に期待した水準まで辿り着けていない場合もあるかもしれません。
そのことを必要以上に悲観する必要はありません。

その人にとっての最大限のパワーを引き出すことが育成する側の役目だと思います。
私たちはそれが出来る環境を用意すること、その為の障害を取り除くことは出来ますが、それ以上は本人の頑張り次第です。その人にとっての最大限のパワーを引き出すことが出来れば、十分役割をこなしていると言えるのではないでしょうか。

●周りのメンバーの力を借りる

これはエンジニアの育成に限らず仕事全般に言えることですが、悩んだ時は早めに周りのメンバーに相談した方が良いです。解決にあたって色んな人の知恵を拝借するのはとても有効な手段と言えるでしょう。

この時に1つだけ注意することがあるとすれば、年次が近いメンバーだけでなく、マネジメント経験が豊富なメンバーにも相談するようにした方が良いということです。

年次が近いメンバーにはたしかに気軽に相談しやすいかもしれませんが、マネジメントの経験が豊富なメンバーに相談する事で、より有用なアドバイスをもらえたり、チームとして何かしら動いてくれる場合もあるのでオススメです。反対に良くないのは、ただの愚痴になってしまって解決策が何も生まれない様な相談です。

あくまで私の経験ですが、相談して嫌な顔をする人は少ないので、どんどん相談すべきです。
自分だけで何かを抱えて良いことはほとんどありません。

さいごに

エンジニアの育成はとても奥深く難しいものですが、自分が根気よく取り組んだことは無駄になりません。
私の場合は、育成したエンジニアがチームで活躍している姿を見るととてもうれしいです。

自分が悩んだ経験を思い出しながらこの記事を書いてみましたが、この記事がエンジニアの育成を頑張っている誰かのお役に立つものであれば幸いです。最後まで読んでいただき、ありがとうございます。

Discussion