Upgrade to Pro — share decks privately, control downloads, hide ads and more …

技術的負債を返し続ける取り組み

akki
May 29, 2021

 技術的負債を返し続ける取り組み

akki

May 29, 2021
Tweet

More Decks by akki

Other Decks in Technology

Transcript

  1. 技術的負債を
    返し続ける取り組み
    PHPカンファレンス沖縄
    2021/05/29
    @akki_megane
    ~ あなたのPHPのバージョンいくつですか?~

    View full-size slide

  2. 自己紹介
    名前:秋葉 誠一
    好きな技術:PHP、Vue.js、Serverless
    会社:ROXX
    趣味:スノボ、サバゲ、野球、アロハシャツ
    @akki_megane

    View full-size slide

  3. あなたのPHPは?
    ## サポート期限
    - 7.2 2020/11/03 (サポート終了)
    - 7.3 2021/12/06
    - 7.4 2022/11/28
    - 8.0 2023/11/26

    View full-size slide

  4. あなたのPHPは?
    バージョンアップするご予定はありますか?
    更新されてないライブラリやフレームワークはありませんか?
    直したい実装はありませんか?
    技術的負債に苦しんでいませんか?

    View full-size slide

  5. 技術的負債
    手抜き、ハック、重複などなど、開発速度と期日の名の下に、私たち
    は数々の狼藉をコードベースにコミットしている。技術的負債とは、そ
    うした狼藉が時間と共に積み重なったものだ。
    君のコードは、常に何かしらの負債を書かている(負債がまったくない
    というのは、新しいことや、これまでとは違うことに取り組もうとしてな
    いってことだ)
    かつては楽しくて気軽でシンプルだった作業が、辛く困難で複雑なも
    のになって初めて、人は自からが技術的負債を抱えすぎてしまったこ
    とに気づくんだ。
    引用 アジャイルサムライ

    View full-size slide

  6. 技術的負債
    - 更新されないVersion(言語、FW、ライブラリ)
    - 実装が現実と乖離している
    - 非推奨機能を使った実装
    - あのときは最高だと思った設計
    - 過去の自分をしばきたいコード
    - いつか直すと思っているあのバグ
    - etc,etc

    View full-size slide

  7. 技術的負債
    負債がまったくないというのは、新しいことや、これまでとは違うことに
    取り組もうとしてないってことだ
    プロダクトが生き続ける限りは、負債を負い続けるということ
    負債は負うということは、返済する必要があるといこと

    View full-size slide

  8. 技術課題リファインメント

    View full-size slide

  9. 前提条件
    - 継続的な開発であるか
    - スクラムに則った開発であるか
    - スプリントベロシティが計測できているか

    View full-size slide

  10. リファインメントの説明
    リファインメントの活動を通じて、選択に必要な透明性を獲得する。 プ
    ロダクトバックログアイテムがより小さく詳細になるように、分割および
    定義をする活動である。 これは、説明・並び順・サイズなどの詳細を
    追加するための継続的な活動である。多くの場合、属性は作業領域
    によって異なる。 作業を行う開発者は、その作業規模の評価に責任
    を持つ。 開発者がトレードオフを理解して選択できるように、プロダク
    トオーナーが開発者を支援することもできる。
    引用 スクラムガイド2020

    View full-size slide

  11. 技術課題リファインメント
    STEP1 課題を見つける
    - よくないコードを見つけた
    - バージョンアップ情報があった
    - DB正規化したい
    見つけた課題を技術課題バックログに起票します
    新機能のバックログとは別に専用のバックログを作ります

    View full-size slide

  12. 技術課題リファインメント
    STEP2 リファインメントする
    内容の詳細化、分割、優先順位決め、見積もりする
    誰がやってもいいようにするために
    優先順位決めは大事、チームとして何を大切にするかはチームごと決め
    よう

    View full-size slide

  13. STEP3 実施
    スプリントプランニングの際に、ベロシティポイントを一定の割合で技術
    課題に割り当てる
    新規開発とは別軸の優先順でやることを決める
    起票した人間がやるとは限らない
    (弊社だと大体10% + 手が空いたら優先的にやる)
    ※ベロシティポイント = 1スプリントでチームが提供できる価値のポイント
    技術課題リファインメント

    View full-size slide

  14. STEP4 繰り返す
    継続して習慣化する、1回だけでは変わらない
    プロダクトが開発される続けるかぎり負債は溜まっていきます
    継続的に早い段階での負債の返済をおすすめします
    技術課題リファインメント

    View full-size slide

  15. - 新規の開発とは別軸の優先順位になる
    - 負債の可視化し、優先順位がつけられる
    - 誰か特定の人がやっているという状況をさける
    - いつかやるではなく仕組みでカバーする
    技術課題リファインメントの利点

    View full-size slide

  16. - 継続的に開発をするうえで技術的負債は必ず発生する
    - 負債は早い段階で返済しないとどんどん辛くなる
    - 負債を可視化しよう
    - 新機能の開発とは別軸の優先順位をつける
    - 負債の返済を開発のサイクルに組み込み習慣化する
    - 後は継続あるのみ
    まとめ

    View full-size slide

  17. ROXX 開発メンバー募集
    https://speakerdeck.com/roxxrecurit
    宣伝

    View full-size slide

  18. ご清聴ありがとうございました
    沖縄に行きたかった

    View full-size slide