エンジニア評価方法を公開してみる
みなさまこんにちは、こんばんは!エアークローゼットでプロダクト開発の責任者をやっている市塚です。
この記事はエアークローゼットのアドベントカレンダー2023の10日目の記事となってます。
前に僕らのプロダクト開発組織がどんな組織なのか紹介する記事を書いたのですが、今回は様々な企業が悩んでいるであろうエンジニアの評価方法について、僕らがどう考えてどんなやり方をしているのか公開しちゃおうと思います。
エンジニアの評価って難しい。。。
営業組織だったら、「売上いくら上げたか」「契約の成約が何件あったか」みたいな分かりやすい成果指標がありますが、エンジニア組織の場合、その分かりやすい成果指標がないことがほとんど。
自分が関わったプロジェクトの成果で評価って考え方もあると思いますが、ある機能開発のプロジェクトでCVRが劇的に改善したときの各エンジニア個人の貢献度を図るっていうのもハードルが高い。
そのプロジェクト仮説自体の筋が良くてたまたま成功することもあるし、逆にエンジニア的にはめちゃくちゃ良い設計・実装しているけど仮説が外れてて全然成果に繋がらなかったってこともよくある。。。
良いエンジニアを真っ当に評価する方法をいろんな企業がいろんなやり方を試しているところなのかなと。
なので、我々エアークローゼットではどんな考え方を元にどんな評価をしているのかを知ってもらって、どんな組織なのかを改めて知ってもらいたいなと思ってます。
大切にしている考え方
エンジニア個人としての成長
エンジニアの成長は会社の成長と直結していると考えています。エンジニアに限らずではありますが、一人ひとりの能力、適正を把握して能力と実績に応じた適切な目標設定/評価をしたいと思っています。
そのため、MBOによる目標設定を実施して、評価基準や目標設定はエンジニア自身と協力して設定します。エンジニアが自らの目標に納得し、それに向かって努力することが、評価の健全な基盤となると思っています。
会社と個人の成長の紐付き
会社が登りたい山と個人が登りたい山の擦り合わせをするのが評価の目的の1つだと思ってます。
同じ「山を登る」という目標だとしても、エベレストを登るのか、富士山を登るのか、高尾山を登るのかで全然やることが変わってきます。
個人が高尾山に登ったから評価してほしいと思っても、会社としてはエベレストを登ることを求めているのであればそれは評価できません。
そのため、僕らの目標設定はSMARTの法則に則って、誰が見ても明確な目標になることを心がけています。
エンジニア評価基準
上記の考え方を踏襲して、僕らが現時点で実際に行なっているエンジニア評価基準は大きく3つあります。
ストーリーポイントによる成果の評価
アジャイル開発の見積もりでよく使われる手法であるストーリーポイントを僕らの開発現場でも導入しています。
(ストーリーポイントを詳しく知りたい方は書籍『アジャイルな見積りと計画づくり ー価値あるソフトウェアを育てる概念と技法』を読んでみてください。)
要はある機能を開発するにあたって、「〇〇日かかります」っていう見積もりの代わりに「〇〇ptかかります」っていうポイントでその開発の規模や難易度を表現しています。
実際にはざっくりしたポイント見積もり段階と、詳細なポイント見積もり段階の2段階に分けているのですが、評価として使っているのは詳細な見積もりの方になります。
ptの大きさはいうなれば「お客様にどれほどの価値提供をできているか」という相対的な成果基準になるので、そのptを短い期間でより多くアウトプットできたかどうか(いわゆるベロシティ=速度)を成果の1つとしてみています。
ここでストーリーポイントを知ってる方なら「ストーリーポイントって評価に使っちゃいけないんじゃないのか」という疑問にぶつかると思います。まさにその通りで、そこは議論を色々重ねたところでした。
ストーリーポイントを評価に用いる問題点
開発者がptを過剰に見積もることでptがインフレする
ベロシティを上げる簡単な方法は、開発者が結託してptをちょっと多めに見積もることです。そうすると、実態は変わってないのにptだけが膨れて、もはやストーリーポイントの信憑性が崩れて意味が無くなっていきます。チーム内の相互の助け合いが無くなる
自分の速度が評価に直結している場合、究極チームの生産性が下がっても自分の生産性が良ければ評価されることになります。そうすると、入ってきたばかりのメンバーやジュニアなメンバーの育成に時間を使うより、自分のアウトプットに時間を使った方が良いと考え、チーム内で助け合う作用が無くなっていきます。
僕らの解決策
CTOが全設計に入る
僕らの開発組織では、全部のプロジェクトの設計レビューにCTOの辻が入っています。 エンジニアの設計力向上を一番の目的としてCTOのレビューを通しているのですが、結果としてこのプロジェクトはこのくらいのptになるという基準も最終的にCTOが目を通すことになるのでptを過剰に見積もるということを防ぐことにもつながっています。 もっというと、「こういう設計にしたらこんなにポイントをかけなくても同じことが実現できる」みたいに、ポイント(=工数)をかけずにビジネス上実現したいことを実現する意識もそこで鍛えることになっています。ストーリーポイントの評価を全メンバー一律に適用しない
ストーリーポイントによる評価は問題点がある一方で、自分がどれだけアウトプットを出せるようになったかを定量的に測る良い指標だと考えています。
特にジュニアな時期ほどこのストーリーポイントで成果を見ることは分かりやすく成長を実感できるので、ジュニアメンバーの評価はこのポイントによる評価の割合を高めに設定することが多いです。
一方で、ある程度力が付いてきたエンジニアに対しては自分自身の生産性もそうですが、チームの生産性に目を向けてほしいので、自分が見ているチームやメンバーの生産性向上を目標にしてもらってます。 そうすることで、結果的にチームの生産性を最大にする力が働くようにしています。
スキルマップに基づく行動の評価
ストーリーポイントで速度を評価しても、その実装したコードの品質が悪くてバグを産んでいたらどんなにスピーディな開発をしても意味がありません。
どのレベルのエンジニアがどのくらいのことをできて欲しいのかを、大きく設計力・実装力・コミュニケーション力に分けて言語化したスキルマップを用意しているのですが、それが実現できているのかCTOが評価しています。
具体的には3ヶ月に1回、全メンバーのPullRequestをCTOが見て、各個人にフィードバックするということをやってます。今はエンジニアが20人弱くらいの人数なので、CTOが直接見れているというのも、ベンチャーの良いところなのかなと思います。(CTO自身は大変そうですがw)
エンジニアリングの量を評価するのがストーリーポイントで、エンジニアリングの質を評価するのがスキルマップに基づくCTO評価になります。
チーム課題解決の成果の評価
プロジェクトの中で提案から設計・実装・テスト・リリースまでが主にエンジニアに担ってもらってる仕事ですが、お客様向けの開発だけじゃなく、チーム課題への取り組みも担って欲しい役割になります。
そのため、リーダーレベルからその時のチームの課題をチーム方針として設定されるのですが、それに対してどうアプローチするのかを考えて目標に入れてもらっています。
例えば、今はメンバーが増えてバグの発生率がこれまでよりも高くなってしまっているのがチームとして課題感があるところになってます。そこに対してts化を進める、テスト項目のマスタを整理するみたいな目標をおいて、チームとしてのレベルアップに寄与したものを評価に組み込むってことをやっています。
まとめ
今の僕らでいうと、「ストーリーポイントによる成果の評価」「スキルマップに基づく行動の評価」「チーム課題解決の成果の評価」が大きな評価項目になってます。
エンジニアのレベル・期待値によってこの評価項目の割合を変えたり、具体内容が変わったりしますが、大枠はこのフレームワークの中でやってます。
ですが、この評価方法が最適だ!これ以上なものはない!と思っている訳では無く、現時点で僕たちが考えうる最善なのではないかと思う基準で評価しているに過ぎません。なので、もっと良い方法が見つかったり、会社のフェーズが変わったりしたらより良い制度に変えていかなければならないと思っています。
ここら辺をもっとディスカッションしたい、情報交換したいという方がいればぜひ@richizukaまでご連絡ください!
最後に、まだまだエンジニア・デザイナーの方も積極的に募集中ですので、興味がある方はぜひこちらの採用特設サイト"エアクロクエスト"も見てみてください。
それではここまで読んでいただきありがとうございました。
みなさま良いお年を!