$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

どのようにエンジニアの目標設定を行うか

以前 ゴールを決め目標を決める・解決案ではなく質問する - コーチングの学習で学んだこと - $shibayu36->blog; で、「ゴールを決め、現在位置とのギャップを考え、目標を決める」と良いということをまとめた。イメージとしては以下の図の通り。

f:id:shiba_yu36:20161023134206j:plain:h250


しかし、前回の記事だと具体的にどのようにエンジニアの目標設定を行うかイメージが湧かない。そこで、もう少し具体的に最近どのようにやっていたかを書いてみたいと思う。


僕がメンティーと目標設定を行うときは、以下のフローを辿っている。

  • なんでも良いのでゴールのイメージを明確にする
  • 現在の自分とゴールのイメージのギャップを考える
  • ギャップを埋める目標を考え、アクションを定める

ちなみに今回は、チームの成果達成のために個人の目標を決めるのではなく、エンジニアのスキル向上の目標を立てるという前提で書いていく。

なんでも良いのでゴールのイメージを明確にする

まずはいろんな質問や会話をしながら、メンティーが今後どうなっていきたいかなどのゴールイメージを明確にする。


この時に僕はよく以下のような質問をしている。

  • 2~3年後にどういうエンジニアになりたいか(なりたい姿を決める)
  • 1年後にどういう仕事をしていたいか(やりたいことを決める)
  • 最近自分が課題に感じていることあるか(課題を明確をする)
  • 自分がこの半年でどういうことやりそうか やる予定のことを明確にする

もし長い目線で考えることが得意そうな人なら、「2~3年後にどういうエンジニアになりたいか」のような質問をし、なりたい姿を明確にしていく。エンジニア像はどういう決め方でも良く、例えばビジネスも分かる・チームを率いることができる・専門スキルが突出しているなどの能力ベースで話しても良いし、社内のこの人・社外のこの人みたいな誰になりたいかベースで話しても良い。

なりたいエンジニア像がはっきりしない場合、次は「1年後にどういう仕事をしていたいか」という質問をし、やりたいことを明確にしていく。例えば、3人くらいのチームを率いるようなリーダーの仕事をしていたいとか、機械学習のスキルを活かせる仕事をしていたいとか、フロントエンドよりの仕事をしていたいとか、そのようなものがありえるだろう。

やりたいことがはっきりしない場合、次は「最近自分が課題に感じていることあるか」という質問をし、メンティーが今感じている課題を明確にする。例えば最近自分の成長が鈍化しているのような自分に対する課題や、社内でデータベースの知識があまり共有されていないのような周りを見た時の課題などがありえるだろう。

課題もあまりなければ、次は「自分がこの半年でどういうことやりそうか」という質問をし、これからやる予定のことを明確にする。例えば、この半年は新サービスの立ち上げをやりそうとか、パフォーマンスが重要な仕事をしそうとか、そういうものがありえるだろう。


このあたりの質問をしていき、「なりたい姿・やりたいこと・課題・これからやること」のどれかが明確になれば、それをひとまずのゴールにできる。ゴールの例としては

  • なりたい姿 : 2~3年後にこの人のようになる
  • やりたいこと : 1年後にこの仕事をやっている
  • 課題 : 半年後にこの課題が解決している
  • これからやること : 半年後、○○というタスクをうまくやり遂げている


例えば機械学習の得意なエンジニアと目標設定をするなら

  • 2~3年後にどういうエンジニアになりたいか
    • 専門スキルの機械学習を発揮し続けられるようなエンジニア

のように、ゴールを決められるだろう。


これでひとまず簡単なゴールを決めることが出来た。

現在の自分とゴールのイメージのギャップを考える

ゴールイメージが明確になると、現在の自分との比較ができるようになる。そこで続いては、現在の自分とゴールイメージとのギャップを聞いていく。質問例としては以下のようなものがある。

  • 2~3年後にこの人のようになるために、自分は今どのようなスキルが足りていないのか
  • 1年後にこの仕事をやっているためには、どのようなことが必要か
  • 半年後にこの課題を解決するために、どのようなことが必要か
  • ○○というタスクをうまくやり遂げるために、どのようなスキルが必要か


先程例に挙げた「専門スキルの機械学習を発揮し続けられるようなエンジニアになりたい」というゴールの場合

  • 専門スキルの機械学習を発揮し続けられるようなエンジニアになるために、どのようなスキルが足りていないか
    • 機械学習のスキルを発揮するには、まずベースとなるアプリケーション開発技術が必要
    • しかし、まだサーバーサイドからフロントエンドまで一貫して自分一人で開発はできていない
    • これまでサーバーサイドは行えているが、フロントエンドの経験はほぼない
    • そこで、フロントエンドもある程度できるようにする必要があるのではないか

のように会話していくと、「一機能をサーバーサイドからフロントエンドまで一貫して自分で開発できるスキルがない。特にフロントエンド。」といったギャップが見えてくる。


これでゴールと現在位置とのギャップを明確にできた。

ギャップを埋める目標を考え、アクションを定める

ゴールとギャップが明確になったので、あとはゴールに必要なギャップのうち一つ(もしくは複数)を選び、目標とそれを達成するためのアクションに落とし込むと良い。

僕は基本的に、今後その人が自分で考えていろんなアクションを取れるように、目標の方は柔軟に捉えられるようにしている。逆にアクションの方はかなり具体的になるように、「SMART」の法則で作っている。「SMART」というのは、具体的(Specific)で、計測できて(Measurable)、達成可能で(Achievable)、現実的で(Realistic)、期限が明確である(Timed)というものだ。


例えば先程の、「一機能をサーバーサイドからフロントエンドまで一貫して自分で開発できるスキルがない。特にフロントエンド。」というギャップがあるなら、例えば以下のような目標とアクションを作ることができるだろう。

  • 目標: 半年後までにサーバーサイドからフロントエンドまで含めて一機能を作る経験をする
  • アクション1: 1か月後までに、使っているJSフレームワークのAngularJSの知識を付けるため、それについて書かれた書籍を最低1冊読む
  • アクション2: 2か月後までにAngularJSを使ってTODOアプリのような簡単なアプリケーションを一つ作る
  • アクション3: 上司にフロントエンドの技術を学んだことを伝え、大きめな一機能を上から下まで担当させてもらえるよう提案する
  • アクション4: 半年後までに、任された一機能をやり遂げる


これで目標と、それに対応するアクションプランを決めることが出来た。

まとめ

今回は、自分がエンジニアの目標設定の面談をどのように進めているかについて具体的にまとめてみた。もちろん場合場合によってやり方は変えるのだけど、基本的には今回のような考え方でやっている。他にもやり方があれば教えてもらえればと思う。