こんにちは、 @kz_morita です。
普段データエンジニアリングをスクラムの体制で行っています。データエンジニアリングといいつつ dbt をもちいてモデルを開発する様なアナリティクスエンジニアの様なこともやっています。
やっていくなかで、スクラムにおける完了の定義が非常に重要だと最近感じています。
完了の定義とは、プロダクトの品質基準を満たすインクリメント(成果物)の状態を示した正式な記述です。
- 目的:スクラムチーム全員が作業の完了基準を共有し、透明性を確保すること。プロダクトバックログアイテムがこの定義を満たして初めて「インクリメント」として認められます。
- 重要性:完了の定義を満たさない作業は、リリースもスプリントレビューでの提示もできず、プロダクトバックログに戻されます。組織標準がある場合はそれに従い、なければチームが独自に策定。複数チームが同じプロダクトに関わる場合は共通の定義を作成し、全開発者が準拠する必要があります。
この定義により、インクリメント同士の相互運用性や品質が保証されます。
現状私のチームでは完了の定義がないです。そのため各メンバーで品質についてばらつきが出やすい構造になっています。 とくにデータを扱うので、データが正しいことを
- どのように
- どうやって
- どのレベルまで 確認すべきかと言う点を毎回議論しなければならず、非常に非効率です。
また本来であればデータ検証のフレームワークを一定用意するなどして、効率化を測りたいのですがこの辺りも各開発者が独自でクエリを書くなどしてデータ確認を行っています。
もちろん、dbt の data tests や unit tests は活用してますがデータの整合性やデータのドメインに特化した正しさの検証というところはまだ人に依存している部分が多いです。
このあたりを効率化することで、データエンジニアリングの生産性を向上させたいと考えています。
まずは、完了の定義をチームで作成し、品質基準を明確にすることから始めたいと思います。その後その確認手段を楽にするための方法を考えていきたいなと最近考えています。