解決が困難な技術負債を抱えるプロジェクトにアサインされた時の見積もり

以前アサインされたプロジェクトで、非常に厄介な技術負債を抱えるプロダクトのソースコードに出会いました。概要としては、ほぼ全画面でインスタンス化され、Viewのレンダリング時にその画面とは関係ない変数も更新される悪しきグローバル変数置き場のようなものがある状態でした。
プロダクト規模は比較的大きいので、その時点で解消して行くのでも結構大変ですが、チームでは機能開発に比重を置いており、リファクタリングに時間を割くフェーズはかなり先になりそうでした。
ただ、このまま機能開発を続けて行くと、技術負債の解消はどんどん難しくなるため、上手く案件で触った画面については、解消していこうと思ったのですが、そうすると、機能開発のための見積もりの工数では到底納まらなくなります。
皆様のご意見など是非是非お聞きさせていただきたいです。
1年前
view数 162

    回答を投稿して企業にアピールしましょう!

    Q&Aで投稿された回答は、
    企業側に表示されるプロフィールにも投稿履歴として表示されます。

    Offersにログイン・新規登録して、気になるテーマやトピックを話してみよう!

    \回答があります!/

    • Shinobu Hayashi

      エンジニア

      1年前

      技術的負債の困難な点としては文字通り "負債" であり, 開発の過程で積み上がってしまうものであり放置するとどんどん膨れ上がってしまう点にあると思っています.

      私も今関わっているプロダクトで機能開発をチームとして進めながら技術的負債の解消も行なっているのですが, そんな中で得られた tips を共有しますね.

      まず技術的負債の解消, には 3 つのフェーズがあると考えています. まず最初に理想像, あるべき像を定めること. 次に手を動かしコードベースに散らばる技術的負債を解消し理想像に近づけていくこと, そしてここには負債である以上ある程度工数を取る必要が出てきます. そして最後に, 同じ技術的負債を再度積まないための, 文化づくり, ルールづくり, この三つがあります.

      私の経験則でスムーズな解消の仕方としては, 理想像を定めた後に次に負債を解消していくのではなく, 負債を再度積まないための文化づくり, ルール作りを次に行ってから負債を解消していく, というものです.

      負債の予防で言いますと, あるべき像とどのように開発をしていくべきか, というのをドキュメントに書き起こし文化としてチームに敷衍させていく, というのもありますし, それを縛るための lint ルールなどをコードベースに適用し CI/CD で機械的にチェックすることも手段として理想的でしょう.

      この進め方のいい点としては, 文化を定着させるための期間が長いこと, 負債解消後の理想像についてチームメンバーからのフィードバックも先に得られること, 機能開発によって新たに負債が積まれていって負債解消とイタチごっこになることを防げることが挙げられます.

      そして質問者様の置かれてる立場において有用な点としては, おっしゃる通り「負債を解消していくフェーズ」は人海戦術で範囲が膨大なのと, ある程度やってみないと工数の予測が困難なのですが, 「予防策を張るフェーズ」はドキュメントを作る, lint ルールを作る, などシンプルなため工数が膨れ上がりにくく予測が容易な点にあります.

      なので質問者様の場合ですと, 「負債を解消していくフェーズ」までは工数に含めず, まず「予防策を張るフェーズ」までを工数に含め進めていき, ベースラインを整えるところまでをやると工数に収まりスムーズに進められるのではないかと感じました. その後, 「負債を解消していくフェーズ」を別途工数をとってやるなり, 理想に共感したメンバーと進めていく, など柔軟な戦略が取れていくかと思います
      view数 51
      • 1
      • 1