
デリバリー状況を可視化し、アウトプットを最大化する「開発生産性」の重要性
(本記事は朝日新聞テックフェス2024のテクノロジーショーケース第2部の採録です。当日の様子はこちら↓からご覧いただけます)

私はエンジニアとして2013年新卒でグリーに入社し、そこからファインディを立ち上げました。2016年に立ち上げて今9期目で、現在5つの事業をしています。
筋トレが好きで、Xで「筋肉CTO」を名乗っています。特にベンチプレスが好きです。今年7月11日に「開発生産性の教科書」という本を出しました。よかったらぜひご覧ください。

弊社のビジョンは「挑戦するエンジニアのプラットフォームをつくる。」です。事業は、エンジニアの採用(Findy)、フリーランスエンジニアの採用(Findy Freelance)や、今年の1月23日にリリースした、開発ツールのレビューができ、各社のアーキテクチャが見られる「Findy Tools」というサービスを展開しています。

今回は「Findy Team+」というサービスを含めて、開発生産性についてお話します。こちらはエンジニア組織の見える化を行うサービスです。

「生産性」という概念はいろいろな所で定義されていますが、投入した資源に対して得られた成果がどれぐらいかというものです。式で表現するとアウトプットをインプットで割ったものが生産性です。
開発生産性とは、一概に定義することが難しく、組織・チーム・個人によっても違うと思います。例えば、開発チームが効率的に作業を進め、新しいアプリケーションを短時間でリリースすることを指す人もいます。あるいは、仕事の優先順位を設定して時間の使い方を最適化し、タスクを迅速に完了させることを指す人もいます。

しかし、アウトプット/インプットで一定の表現はできます。まずアウトプットは、開発されたコードの行数、解決されたバグ・イシューの数、リリースされた機能や修正の数、提供された価値、ユーザーの満足度、売上などです。インプットは、実際に人がどれくらい費やされたかや、開発にかかった時間、予算、それを作るに当たっての教育や育成のコストが挙げられます。

開発生産性は、生産性をレベル1~3の3つのレイヤーに分けて考えることができます。レベル1は仕事量の生産性で、決まった時間にどれだけの量の仕事を終えることができたかで、特に開発チームがメインの部分です。レベル2は期待付加価値の生産性で、決まった時間でどれぐらいの価値が期待される仕事ができたかです。これぐらいのストーリーポイントでこれぐらいのインパクトがありそうだ、という期待の生産性の部分です。レベル3は実現付加価値の生産性で、決まった時間でどれぐらいの価値が実現できたかで、事業部門全体の売り上げやKPIに関わってくる部分です。

開発生産性を向上させて顧客に価値を届ける、つまりアウトカムをどう増やすかを考えると、デリバリーとディスカバリーの2つの側面があります。どちらも大切ですが、後続にデリバリーすることができないと、ディスカバリーができない(新しい発見の数が増えない)という状況になります。デリバリーを最大化することが前提の上で、成果(ディスカバリー)にコミットしていくことが大切になると思います。もちろん場合によりますし、簡単にチャレンジできない環境にある人もいると思います。全てがこうです、と言いたいわけではありませんが、多くの場合デリバリーを大切にしていくことがポイントです。特にどうやって、より早く多くの仮説検証を回していくかが重要になります。

エンジニアの皆さんは聞いたことがあるかもしれませんが、「推測するな、計測せよ」というキーワードが非常に大切であると思います。ではどうやって計測するかというと、「Findy Team+」というサービスがあります。いろいろなチーム、組織において開発革命が起こるような状況をもっと作っていきたいと考えております。特にブラックボックスだった開発生産性というものを見える化していきたいとの思いで、プロダクトを作っています。

GitHub、GitLab、Backlog、Bitbucket、Jira、Slackなど様々なサービスがあり、それらと「Findy Team+」は自動でデータ連携をして生産性の可視化を行います。プロセスのボトルネックを簡単に特定できて、データドリブンで最適な改善アクションを実行し、生産性向上を実現するために、改善に向けた手厚いサポートを受けながら、チームとして成長できます。

生産性の概念でFour KeysやSPACEフレームワークがあります。Four Keysは仮説検証をいかに早く多く回せるかという開発チームのパフォーマンスを計測する指標です。SPACEに関しては、開発者体験をより良くしていく事がその組織のアウトカムに影響する、ということが分かってきています。実はモノを作るだけではなく、開発生産性や開発者体験を上げていくことが、これからますます重要になるのではないかと思います。

「Findy Team+」を、朝日新聞社さんは実際にどのように使っているかを簡単に紹介します。課題として、古いシステムとの互換性問題、機能追加した時に事故が起こりやすい状況、検証作業に時間がかかっている、レビュープロセスが弱い、などがありました。「Findy Team+」を導入して自動化テストを型推論で安全なトレース・デプロイができるようになり、CI/CDを導入して開発プロセスも改善しました。またテンポのよい開発によって、安全性も両立しながら、顧客価値に繋がるような開発ができるようになり、デプロイの頻度を増やし、数を2倍に増やすことを半年で実現しました。顧客に価値を提供できるようになってきた、という点が大きな改善ポイントです。

つい先日、弊社の開発生産性が優れた組織を表彰する「Findy Team+ Award2024」で、朝日新聞社さんを「Organization Award 開発生産性スコアが非常に優れた組織」、として表彰させていただきました。改めておめでとうございます。

より多くのイノベーションをより早く創出して、開発生産性を改善、向上していくうえで、いろいろな職種の人たちと「つながる」ことが重要なポイントで、それができてこそユーザーに価値が届くと思います。どうしても博打要素が強いものは出てきてしまうので、より健全に、より早く正しい失敗をしてすぐに改修できる状態を作ることが開発生産性であると思います。素早く小さく失敗して、計測して、それをデリバリーできる環境がものすごく大切です。もしこれからチャレンジしてみたいという方がいらっしゃいましたら、ぜひいろいろな方を巻き込みながら取り組んでいただけたらと思います。