what is DPE(Developer Productivity Engineering) 〜DPEとはについて語れるようになりたい〜

DPEについて理解を深めたい。

DPE(Developer Productivity Engineering)とは

まずは一般的な定義について調べた。
Is Developer Productivity Engineering the Next Big Thing in Software?では以下のように紹介している。

Championed by Gradle Inc., Developer Productivity Engineering (DPE) is an approach to increasing software development team productivity that focuses on automation technologies and tools, rather than management metrics and best practices. Specifically, this new software development discipline uses acceleration technologies to speed up the software build and test process, and data analytics to make troubleshooting and software quality assurance more efficient. The aim is to achieve faster feedback cycles, more reliable and actionable data, and a highly satisfying developer experience. And, as DPE dovetails with iterative Agile approaches, it yields faster feedback cycles as well.
Gradle社が提唱するDeveloper Productivity Engineering(DPE)は、ソフトウェア開発チームの生産性を向上させるためのアプローチで、管理指標やベストプラクティスではなく、自動化技術やツールに重点を置いています。具体的には、アクセラレーション技術を使ってソフトウェアのビルドとテストのプロセスを高速化し、データ分析を使ってトラブルシューティングとソフトウェア品質保証を効率化する、新しいソフトウェア開発手法です。その目的は、より速いフィードバックサイクル、より信頼性の高い実用的なデータ、そして開発者の満足度の高い体験を実現することです。また、DPEは反復的なアジャイルアプローチと連動しているため、フィードバックサイクルの高速化も実現します。

上記にGradle社が提唱するDPE(Developer Productivity Engineering)との記載があったため、Gradle社の定義も見てみる。
Gradle社のDeveloper Productivity Engineering Book - Gradle Enterpriseでは以下のように記載されていた。

Developer Productivity Engineering is a discipline of using data and acceleration techniques to improve essential software development processes for greater automation, fast feedback cycles, and reliable feedback.from Developer Productivity Engineering Book - Gradle Enterprise
開発者生産性エンジニアリングは、データと高速化技術を使用して、ソフトウェア開発プロセスの自動化、高速フィードバックサイクル、および信頼性の高いフィードバックを実現するための学問分野です。

この二つを読んでみて、DevOpsの流れを汲んでいるため自明かもしれないが、どちらも自動化やデータ分析、フィードバックサイクルの高速化といったキーワードがあり、SREとも似たものを感じた。
SREはサービスの信頼性を高めるために自動化などのアプローチを適用しているが、Developer Productivity Engineeringでは対象がソフトウェア開発、開発チームの生産性となっている。
SRE自体、DevOpsの実装と紹介されることもあるが、Developer Productivity EngineeringもDevOpsの取り組みを自動化やリーンなどの組織改善、データ分析も活用して、ソフトウェア開発、開発チームの生産性の改善・向上によりフォーカスする取り組みだと感じた。

DPEのスコープ

上記を踏まえると

  • データ分析と自動化などのアプローチ
  • ビルドからテスト、CI/CDまで、ソフトウェア開発プロセスを高速化・効率的にする
  • それによりフィードバックサイクル高速化、満足度の高い開発者体験の実現し、ソフトウェア開発・開発チームの生産性を上げることを目的とする

そしてキーワードとしてはこの辺なのかなと思ってる

  • エンジニアリング
  • データドリブン
  • 開発生産性
  • プロダクトサクセス

なぜDPEチームが必要?

  • 開発者の生産性向上は、多くの場合、暇な時にシニアエンジニアが行う非公式で、リアクティブな仕事となりがち
  • 場当たり的なアプローチのままで良いのか?
    • ビジネスプロセスエンジニアリング(リーン、シックスシグマなど)、製造(総合品質管理、JITなど)など生産性と効率性の向上を目指す専門チームを見かけることは珍しくない
    • 現代におけるソフトウェア開発の重要性を考えると、同じ優先順位であるべきではないか?
  • ROIが明確
  • 平均ビルド時間を数分短縮した場合の年間コスト削減額は簡単に数値化できる
    • cost per engineering minute * average build time reduction in minutes * average number of builds per year
  • コストがペイするのが明確ならリソースをかけて良いのでは?
  • DPEチームが効果的な理由
    • フォーカス
      • DPEチームの存在が会社・組織としての優先事項である事が示される
        • 多くのテックカンパニーはDPE専門チームを設立している
      • 明確なオーナーシップを持たせる
        • 目標と測定基準、また目標達成を少なくとも1人の専任の仕事としてフォーカスさせる
    • 採用競争力
      • 多くの企業にとって採用競争に負けないことはミッションクリティカル
      • 開発体験は人材を確保・引き止めるために重要な要素
      • そのためにもビルド待ち時間やデバッグなど、開発者が好ましくない時間を減らし、より本質的な開発に時間を使えるようにする必要
      • DPE専任チームは上記に対する企業の姿勢を示すもの
    • 相談窓口
      • ツールの情報や業務効率化のアイデア集約し、組織・チーム横断での情報共有やコラボレーションの活性化を担う事もできる

世の中の例

世の中のDeveloper Productivity Team、Engineering Productivity Teamについての記事を読む

まとめ

SREとの関連や比較でももう少しわかりやすく説明できるような気はするが、一旦知りたかった情報についてはまとめることが出来た。
Gradle社によるDPEの定義はビルドの話に寄ってると変に邪推してしまうが、DevOpsやfour keysなどの生産性可視化・改善を含めた(Gradle社の定義的には管理指標の話はスコープ外らしいが…)開発組織の生産性・パフォーマンス改善の取り組みは長期的に優れた開発組織・プロダクト開発を続けるためには重要な取り組みだと思っているので、この領域は引き続き追っていきたい

参考