ブログ

ryuzeeによるブログ記事。不定期更新

直近開催のScrum Alliance認定スクラムマスター研修のご案内

技術的負債にどのように取り組むか

みなさんこんにちは。@ryuzeeです。

定期的にSlideshareをウロウロして良い資料がないかを探しているのですが、技術的負債に関する分かりやすい資料があったのでご紹介します。

なお、Youtubeに動画もアップされているので、興味あるかたはこちらを参照ください。

以下特徴的なところや役立つところを紹介していきます。

  • 技術的負債とは、現在の進捗のために、将来のキャパシティ(ソフトウェアの開発能力)を犠牲にすることである
  • もうちょっと具体的に言えば、技術的負債とは、ソフトウェアの内部的な問題(見つかっているか見つかっていないかは関係はない)、要求の明確化の欠如、ダメな設計、ビジネスの要求に適していない設計、自動化できるはずの箇所の手動処理などを指す
  • **利子の支払いは時間のムダである。**例えば欠陥を直すのに時間を取られる、要求が明確になった後に再度作りなおす、複雑なコードを理解するために余計な時間を取られる、などなど
  • 技術的負債の悲惨なサイクルがある
    • テストを書く時間がない、リファクタリングする時間がない、設計レビューする時間がない、問題の本質を解決しないで表面的に解決する
    • 結果的に品質が下がる。急いで無理やり直して、やはりテストがない。自動化されていない。設計がダメなまま
    • バグがさらに増える。テストされていないコードの増加、重複コード、タコな設計のコード、リファクタリングされていないコード、チームのモラルの低下、健康被害
    • 付け焼刃な対応によるファイル数やコード量の増加。そして最初に戻る
  • 負債の可能性は右の式で表現できる:(変更頻度×複雑度)÷ 品質のコントロールの度合い
  • 技術的負債にどう取り組むか
    • 実際の症状を見つける
    • なぜそれが発生したのか?なにが原因なのかを確認する
    • 根本原因にたどりつくまで「なぜ?」を繰り返す
    • 自分がコントロールできる範囲になったら直す
    • 影響があって手に負えない場合は全体で方針を決める
    • 以降に負債を増やさないように、品質を作りこむ
  • Chris Sterlingの「Technical Debt Mapping」の手法を使って技術的負債をコントロールする手もある
    • まず主要なアプリケーションのコンポーネントをホワイトボードに書き出す
    • ポストイットに技術的負債を書いて、書きだしたコンポーネントの該当箇所に貼る
    • これらの負債を、「品質向上のストーリー」としてINVESTを意識して記述し、プロダクトオーナーに説明する。その際、価値は投資対効果で記述する
    • プロダクトオーナーはROI等を見ながら優先順位を決める

※ここでの品質はソフトウェアの外部品質ではなく、内部品質を指す。

それでは。

アジャイル開発チーム向けのコーチングや、技術顧問、Scrum Alliance認定スクラムマスター研修などのトレーニングを提供しています。お気軽にご相談ください(初回相談無料)
前の記事 Microsoftにおけるデイリースクラム
次の記事 ウォーターフォールの方が楽ですか?

プロダクト開発で、こんな課題を感じていませんか?

  • 何を作るべきか、順位の決め方が定まらない
  • プロダクトの方向性をチームで共有できていない
  • 開発組織の体制や役割がうまく機能していない
  • 開発プロセスが形骸化し、目的を見失っている
  • アジャイルを導入したが、組織に定着しない

プロダクトマネジメント、組織構造、開発プロセスの課題について、組織全体の視点から支援します。

お問い合わせ(初回相談無料)

契約を前提にした相談でなくて構いません。相談に際して事前の整理や準備は不要です。

Aligned ―プロダクト開発におけるステークホルダーとの関係性の築き方
ダイナミックリチーミング 第2版
Tidy First?
脳に収まるコードの書き方
プロダクトマネージャーのしごと 第2版
エンジニアリングマネージャーのしごと
チームトポロジー
スクラム実践者が知るべき97のこと
プロダクトマネジメント
SCRUM BOOT CAMP THE BOOK
みんなでアジャイル
レガシーコードからの脱却
Effective DevOps
変革の軌跡
ジョイ・インク
アジャイルコーチの道具箱
カンバン仕事術
Software in 30 Days
How to Change the World