技術的負債の分類 (2018)
(technology.riotgames.com)技術的負債の分類
紹介
- Bill "LtRandolph" Clarkは、LoL のChampionsチームのエンジニアリングマネージャーであり、技術的負債に深い関心を持っている。
- 技術的負債は、将来の開発者にコストをもたらすコードやデータと定義される。
- この記事では、Riotで経験したさまざまな技術的負債の種類と、社内で使用しているモデルを紹介する。
メトリクス
技術的負債を評価するために、3つの主要な軸を使用する: 影響、修正コスト、伝染性。
影響
- 技術的負債がプレイヤーと開発者に及ぼす影響。
- バグ、欠落した機能、予期しない動作など。
修正コスト
- 技術的負債を修正するのに必要な時間とリスク。
- 単純なエラーは数分で修正できるが、深く根付いた問題は数週間または数か月かかることがある。
伝染性
- 技術的負債がどの程度広がりうるか。
- 他のシステムとの相互作用、データのコピー、新機能の実装に影響する。
負債の種類
ローカル負債
- システム内部でのみ問題が発生し、外部には影響しない。
- 例: JarvanのCataclysm。
Cataclysm メトリクス
- 影響: 1 / 5
- 修正コスト: 2 / 5
- 伝染性: 1 / 5
マクガイバー負債
- 2つの相反するシステムが、その場しのぎで結合されている場合。
- 例: C++の
std::stringとRiotのAStringクラス。
std::string vs AString メトリクス
- 影響: 2 / 5
- 修正コスト: 3 / 5
- 伝染性: -2 / 5
基盤負債
- システムの深い部分にある前提が、システム全体に影響を及ぼす場合。
- 例: LoL のluaスクリプト言語の使用。
BlockBuilder Lua メトリクス
- 影響: 4 / 5
- 修正コスト: 4 / 5
- 伝染性: 4 / 5
データ負債
- 他の種類の技術的負債の上に大量のコンテンツが積み重なり、修正が難しく危険になっている場合。
- 例: BlockBuilderスクリプト言語のパラメータ名バグ。
パラメータ名バグ メトリクス
- 影響: 2 / 5
- 修正コスト: 2 / 5
- 伝染性: 4 / 5
要約
- 技術的負債を評価する際には、影響、修正コスト、伝染性を考慮する必要がある。
- 伝染性は技術的負債が広がる可能性を示し、これを無視すると大きな問題になりうる。
- 技術的負債は、ローカル負債、マクガイバー負債、基盤負債、データ負債の4種類に分類できる。
GN⁺のまとめ
- この記事は、技術的負債の種類とその評価方法を説明することで、開発者がより良い意思決定を行えるよう支援する。
- 技術的負債の伝染性を強調し、問題を早期に解決することの重要性を強調している。
- 類似した機能を持つ他のプロジェクトとして、Dota 2 と Overwatch がある。
1件のコメント
Hacker Newsの意見
インターフェースはデザインにおいて最も重要な要素の1つであり、慎重に検討すべき
創業者の負債は、創業者たちが速く優れた技術を提供するために生み出した負債である
この記事がエンジニアリングマネージャーによって書かれたことに驚く
技術的負債の分類について議論されている
技術的観点から見て素晴らしい記事
技術的負債を説明するのに "Contagion" を使っている
技術的負債は、将来の開発者がコストを支払わなければならないコードやデータと定義される
「ローカル負債」を一般的な状況で技術的負債とは呼ばないだろう
複数のスタートアップで働いた経験がある
短期的な利益のために技術的負債を意図的に引き受けることがある