近年ではソフトウェア開発で「高い開発生産性」が求められるようになった。企業もエンジニアもそれに向けた様々な取り組みを行っているが、そもそも「開発生産性が高い」とは具体的に何を意味し、どのようにして高められるのかということについての認識がはっきりしていないケースが多く見られる。
開発生産性が改善されれば、プロダクトのリリース時間の短縮や品質の向上が期待でき、企業の採用広報に対しても良い影響をもたらして、エンジニアの働く意欲、組織全体のエンゲージメントを高めることができる。しかし、そのような状況を作り出すことは簡単ではない。本書では、開発生産性を高めるための課題を洗い出し、解決策を提供することが目的とされている。
開発生産性向上について考える上で必要なのが、「プロダクトは何をゴールとしているのか」を明確にすることだ。プロダクトは、作成されること自体がゴールなのではなく、「プロダクトを使ってもらうことで達成されるKPI」や、それによって得られる売上や利益に意味がある。
開発生産性とは、人によってコンテキストが異なり、様々な意味を指し示す言葉であるため、まずは言葉の定義を明確にしておこう。生産性とは、「得られた成果物(アウトプット)÷投入した生産要素(インプット)」として表現できる。ただし、インプットとアウトプットは組織やプロジェクトごとに多様だ。自分たちの組織や開発チームが何をインプット、アウトプットとするのか、何を開発生産性と呼ぶのかを事前にはっきりとさせておく必要がある。
開発生産性の向上は、エンジニアだけが取り組んで進めるものではなく、プロダクトマネジメントや営業など、組織全体で連携して対応しなければならない。組織レベルでの開発生産性の定義と測定方法の共有、継続的な改善が、プロダクトを成功に導くはずだ。
開発生産性のレベルとして、3つの階層を定義することができる。
レベル1は、純粋に作業量の観点からどれだけ効率的にこなせたかという生産性を評価する「仕事量の生産性」を指す。レベル2は、仕事量に加えて、「各施策がプロダクトにどれだけの価値をもたらすか」を考慮に入れる「期待付加価値の生産性」だ。開発組織全体のアウトプットについて、「期待される価値がどの程度リリースできたか」を検証する。レベル3は、売上やKPIなど、具体的な貢献を評価する「実現付加価値の生産性」である。組織全体で、「そのタスクが実際にビジネスの目標に貢献できているか」を見ていく。
レベル1は自分たちだけでコントロールできるため取り組みやすいが、最終的にはレベル3の向上を目標としたい。レベル1とレベル2は、成果や結果を「なんとなく」で定性的に把握するだけでなく、「コードレビューやバグ修正に要する時間」「適切なリソース配分」「施策の優先度」など、数値の推移を定量的に把握することも大切だ。レベル3の開発生産性の改善は、組織全体で職務を超えて取り組む必要があるため容易ではない。「どうやったら全チームで連携してユーザーに価値を提供してKPIや売上を上げられるのか」という「改善するマインド」を、全員が持ち続ける必要がある。
スピードと効率をつねに求められるエンジニアリングにおいて、開発生産性の向上にはいくつかのメリットがある。
3,400冊以上の要約が楽しめる