スクラムを使用したアジャイル プロジェクトに取り組んでいます。
スプリントは行ったり来たりして、マイルストーンを成功裏に達成しました。システムは、現在の顧客の要件を満たすのに十分に機能します。
ただし、開発の多くが将来にほとんど目を向けずに行われたため (代わりに、目の前のスプリントに焦点が当てられていました)、リファクタリングが深刻に必要なシステムが残されています。
これにどのように対処するのが最善ですか?リファクタリング専用のスプリント?
スクラムを使用したアジャイル プロジェクトに取り組んでいます。
スプリントは行ったり来たりして、マイルストーンを成功裏に達成しました。システムは、現在の顧客の要件を満たすのに十分に機能します。
ただし、開発の多くが将来にほとんど目を向けずに行われたため (代わりに、目の前のスプリントに焦点が当てられていました)、リファクタリングが深刻に必要なシステムが残されています。
これにどのように対処するのが最善ですか?リファクタリング専用のスプリント?
はい、時折それらの 1 つが悪いことではありません。しかし、スクラムを使用してアジャイルである場合は、テスト駆動開発 (TDD) に従おうとしている可能性が高く、シーケンスが単に赤-緑ではなく、赤-緑-リファクタリングであることを覚えておくことが重要です。品質の悪いコードは、アジャイル開発ではなく、貧弱なアジャイル開発の成果です。
「完了」の定義はありますか?
コーディングが完了し、チェックインする準備ができたら、チームの「完了」の定義を満たしているはずです。
この定義には、とりわけ、受け入れ基準/コード レビュー/テスト レビュー/合意済みコーディング基準への適合が含まれます。
数回のスプリントの後、コード ベースに本格的なリファクタリングが必要になった場合は、完了済みの定義の見直しをお勧めします。
「完了の定義」の定義に関するスクラム アライアンスの記事を次に示します。
必ずしもスプリント全体をリファクタリング専用にする必要はありません。タスク レベルでも機能します。毛むくじゃらのコードを扱う必要があるストーリーがある場合は、その部分を適切に処理するための一種の前提条件として、そのストーリーにリファクタリング タスクを含めます。そうすれば、機能を進歩させるだけでなく、いくつかのリファクタリングを段階的に行うこともできます。
私のチームでは、通常、リファクタリングスプリントを約3〜4か月に1回開始します。2週間のスプリントを実行することを考えると、これはおよそ7回のスプリントごとに1回のリファクタリングスプリントです。
私は他のスプリントと同じようにリファクタリングスプリントを実行します-厳密に2週間の制限時間。たまに1週間のリファクタリングスプリントを実行することもあります(緊急の事態が発生した場合)。
スプリントのリファクタリングに関する注意:野心的すぎないでください:
これは、私がリファクタリングのガイドとして個人的に使用しているものです。リファクタリングを管理しやすくするだけでなく、やり過ぎたときの良い指標としても役立ちます。
私が働いている場所では、バグと技術的負債に特化したスプリントがあります。物事を改善し、ある程度の継続的な改善の精神を持つのに適しています。
ここで考慮すべきことは、顧客が望んでいるが要求していない機能強化があるかどうかです。顧客は現在のシステムに本当に満足しているように見えますか?それとも、文句を言いたくないほどうまく機能しているだけですか?