技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

完全Doneの考え方

少しマイナーなのですが、アジャイル開発の手法の一つで「完全Done」と呼ばれる手法(考え方)があります。
これは何かと言うと、「ある作業について完了とする基準を定め、その基準を満たさない限りは完了とみなさない」という手法であり、昨日話した品質の作り込みで役に立つ手法です。
 
中途半端な状態で完了としてしまった作業は、後々手戻りとなって帰ってきてしまいます。
例えば、「ユニットテストが完了するまではチケット完了とみなさず、リポジトリへのコミットも不可」という基準を定めた場合、この基準を満たさないソース(コーディングして机上でレビューしただけとか)をリポジトリへコミットしてしまうと、結合試験等の後工程でユニットテストで見つけるべきバグが顕在化してしまい、試験がストップし、他の開発者に迷惑がかかることになります。
 
この手法はアジャイル開発の手法ですが、開発プロセス関係なく適用できる手法です。
どのようなプロジェクトにあたるにしても、技術者として頭に入れておくべき手法であると思っています。
 
--------------------
 
ちなみに、トランザクションのACID特性の一つとして「原子性(atomicity)」という特性があるのですが、考え方としてはそれに近いので、参考になるかもしれません。
平たく言うと、「原子性」とは「一連の操作が全て完了してコミットするか、途中の操作を取り消してロールバックするか、どちらかにしてください(一部の操作だけが完了しているという中途半端な状態にしないでください)」という意味なのですが、中途半端な状態で放置しないという意味では「完全Done」と同じなので。
担当者引継ぎ・割り込み作業・指摘対応等の影響でどこまでやったかわからなくなってしまった作業があれば、見切り発車で途中から再開するのではなく一からやり直すべきなので、そういった意味でも「原子性」の考え方は参考になると思います。