Googleの開発者といえば世界トップ中のトップと言って良いだろう。その開発者の生産性を測定するための試行錯誤が行われているという。
開発者の生産性
ソフトウェアの重要性が高まる中、企業の多くが高いコストを払って開発者を維持し、彼らに働きやすい環境を提供している。
だが、2022年後半からITベンダー各社は財布の紐を固くする傾向にある。Googleとて無縁ではないようだ。そこで、改めて開発者の生産性にスポットが当たる。The New Stackが「How Google Unlocks and Measures Developer Productivity」としてレポートしている。
そもそも開発者の生産性とは何か。記事によると「この分野は新しい」と前置きした上で、「開発者が一定時間内に一定の作業を行う能力」としている。また、最終的な成果に加えて、それに影響を与える社会的技術的な要因、開発者の体験も調べる。実際、開発者の体験(DevEx)も生産性を高めることが実証されているという。
Googleには、開発者が使うツールやプロセスの効率化を業務とするエンジニアリング生産性チームがあり、約2000人がいるという。
この中に、生産性にフォーカスしたグループがあり、定量と定性の両方から調査をしているそうだ。このグループの半分がエンジニア、残る半分がユーザー体験の研究者だ。以前は社会心理学者や行動経済学者もいたという。
一般的に開発者の生産性測定の出発点はログ解析と言われている。しかし、リサーチを率いるCiera Jaspan氏、Collin Green氏によると、ログにより何をしているのかはわかるが、「なぜ」それをするのかはわからない、とのこと。
その開発作業をどう感じているのか、良いことなのか・悪いことなのかもわからないため、改善の余地があるのかどうかもわからない。重要なのは「質的な面を理解し、開発者の行動を理解すること。流れをどう変えると、その行動がどのように変化するのかを理解すること」だという。
これが5年前のUX研究者の雇用につながる。そして開発者とペアになってもらって、体験を調べているとのことだ。
生産性を何に求めるのか?
開発者体験を容易に調べられる体制に加えて、Googleは生産性を測定するために「スピード」「容易さ」「品質」の3軸を見ているという。スピードでは複数のツールのログを調べているほか、日誌、インタビューなども組み合わせている。
2018年に導入したのが、開発者の満足度調査だ。3カ月に一度実施しているという。技術面の問題はやる気に悪い影響を及ぼす。
そこで「技術面での問題が発生する根本原因を探る」「それに対する解決策や緩和策」の2点について、継続的に調査した。数年間の調査から、生産性に影響する技術面での問題を以下の10のカテゴリに分類したという。
- マイグレーションが必要/マイグレーション中
- ドキュメンテーションまたはAPIが見つけにくい/見つからない/不完全
- テストの質や範囲が良くない
- コードの品質が十分に設計されていない
- 枯れたコードが残っている
- コードベースが劣化している、または標準の変化に追随できていない
- 必要な専門知識がチームにない
- 依存関係が安定していない/急速に変化している/ロールバックしている
- マイグレーションがしっかり行われていないため、2つのバージョンがメンテナンスされていることもある
- リリースプロセスの更新/移行/保守が必要
技術的な問題は、作業に支障をきたすなど深刻になって初めて現実問題として浮上する。また、開発者により対処が異なることもわかった。そこで、組織ごとにどのように克服するのかの進捗状況を見ているという。
これらを紹介しながら、アドバイスとして、開発者の体験と生産性を理解するために、組織の規模と予算に関係なく、自動化され、測定可能な調査、観察的な調査、体験の調査を組み合わせることを勧めている。
Googleでは開発者の生産性は「摩擦やイライラがないエンジニア(環境)と優れた製品を提供すること」に集約されるとしている。