clement13.net
Original photo: Une mêlée de rugby sur un terrain brumeux, vue d'ensemble
Description
Une mêlée de rugby sur un terrain brumeux, vue d'ensemble
Source
auteur non indiqué · original page
Licence
PD Public domain
Original photo, unretouched. The background is a version of it stylised by the site.

Scrum Applied to Data, BI, and Datamarts

You will know how to adapt Scrum to a data / BI / datamart project: write data stories, plan exploration spikes, define an Increment across a source → ETL → model →…

Guide≈ 31 min readCheckedCheck doneFacts, figures and references were checked against the sources cited in the page.Written with AI assistance; sources are cited at the bottom of the page. An error? Report it via clement13.net.Reading
In short
  • You will know how to adapt Scrum to a data / BI / datamart project: write data stories, plan exploration spikes, define an Increment across a source → ETL → model → report chain.
  • You will know how to build a data Definition of Done (quality, acceptance testing on figures, performance, security, documentation, replayability).
  • You will know how to balance data sprints and visualization sprints, manage data debt, source dependency, and test datasets.
  • You will know how to frame the data Product Owner role and organize business acceptance testing on figures.
  • You will get a strengths/weaknesses table and /5 fit ratings of Scrum for data, with an AI section.

Illustrative running example (anonymous). A SQL Server datamart fed by a field sales force application (SFA), with multilingual Power BI reports, versioned in TFVC and delivered as installation kits. The figures provided are illustrative orders of magnitude.

On this page

Level: 🟢→🔴

🟢 Novice — Why Scrum and data rub against each other#

Scrum was born from software development, where you can deliver a small functional increment in two weeks: one feature, one screen. Data has three differences that create friction (see Project Management Fundamentals: data-specific characteristics):

Friction Why Impact on Scrum
Value lies in trust in the figures A correct screen with wrong figures is harmful The DoD must include reconciliation
Data is state, not just code A code deployment produces nothing until data has been (re)loaded The Increment contains code and data
Dependency on uncontrolled sources Source schema, quality, and schedule are outside the team's control Sprints are disrupted by external factors
Long processing time A consolidation can take hours The feedback loop is slower
Discovery is required You don't know whether data exists or is usable until you've looked at it Spikes and a discovery backlog
Interdependent layers Source → staging → dimension → fact → measure → report Difficulty slicing vertically
Irreversibility and history Overwriting data can be impossible to undo Safeguards for backup and replay

This friction does not make Scrum inapplicable. It requires adapting slicing, DoD, planning, and the PO role — that's the purpose of this file. Alternatives and complements (CRISP-DM, DataOps, Kimball for modeling) are in Methods Specific to Data Projects; the overall comparison is in Comparison of Project Management Methods.

💡 Expert tip

In a BI project, most of the actual effort happens before the report: sources, cleansing, modeling, business rules. Ralph Kimball suggests that ETL alone often absorbs about 70% of the time and resources of a data warehouse (practitioner estimate, not a universal rule; the exact share varies by project). The client, meanwhile, only sees the report. A Scrum approach that measures only “pages delivered” misses most of the work and value.


🟢 Novice — What is an Increment in BI?#

The Guide requires a usable Increment (Scrum, the framework (Scrum Guide 2020)). In BI, “usable” means: a user can make a decision based on a reliable figure. That requires a minimal vertical slice through the entire chain.

Field SFA(source)StagingCleansingand rulesDimensions + Factsstar schemaSemantic modelmeasures, relationships, RLSReportPower BIUser: decisionon a RECONCILED figureextraction / interface
Hover over or tap an element to read its details.

Increments at different levels#

Increment level Content Usable by… Value
Technical (data only) A loaded and tested fact table The team, a SQL analyst Low on its own, but a risk milestone
Semantic (measures) DAX measure validated on a sample The analyst, advanced user Medium
Reporting Report page with reconciled figures Business users High
Product (kit) Installable, documented version Clients, operations High at product scale
✅ Good practice

In each Sprint, target at least one “small end-to-end usable figure” — one indicator, a reduced scope (one region, one month), but real from source to screen and validated by the business. That's the BI walking skeleton. 3 clients × 1 full month is better than 100% of clients without a reliable measure.

🧪 Example

Sprint 1 of a sales datamart. Sprint Goal: “A regional manager in the pilot region sees March revenue by customer, equal to source revenue down to the euro.” Delivered: extraction for the pilot region, one sales fact table, one customer dimension, one revenue measure, one minimal page, one reconciliation test, one signed acceptance testing note. Nothing aesthetic, everything real. Sprint 2: extend to all regions, add months. Sprint 3: add filters, language, design.


🟢 Novice — The multidisciplinary data team#

An autonomous BI team across the full chain brings together the following skills (one person may cover several):

Skill Role in the Increment Risk if missing
Business analysis / data PO Value, business rules, acceptance testing Figures that are technically right but business-wrong
Data engineering (SQL, ETL, T-SQL, pipelines) Loading, quality, historization The model relies on uncertain data
Dimensional modeling Granularity, dimensions, facts, keys Fragile model, ambiguous joins
Semantic development (DAX, tabular model) Measures, relationships, RLS Inconsistent figures across reports
Visualization / UX Readability, usability, multilingual Unused report
Quality / testing Figure tests, non-regression Silent regressions
Operations / security Scheduling, monitoring, permissions Incidents, data leaks

Scrum uses Developers in the broad sense: this includes data engineers and BI developers. When a skill exists only outside the team (central DBA, security team, source owner), every dependent item creates a bottleneck: this is a risk factor to address explicitly (service agreements, reserved time slots, a “liaison” member), or a reason to broaden the team.

⚠️ Pitfall

The “pipeline team” setup (pipeline of teams). Symptom: one ETL team, one model team, one report team, each with its own Scrum, handing work off to the next. Cause: layer-based specialization. Consequence: each Increment is partial, value arrives only at the end, delays accumulate (it's organized “Scrumerfall”). Fix: a product team covering the full chain, or at least a shared Product Backlog and synchronized Sprints. See Scrum in Practice: anti-patterns.


🟡 Practice — Writing data stories#

User stories (Scrum in Practice) apply, with an adaptation: the “I want to…” is often a decision-making capability, and the “so that…” carries the value. You need to add data-specific elements.

Data story template#

Revenue by customer and by month, pilot region

As a area manager,
I want to see net sales (excluding tax) by customer and by month within my scope,
so that I can prepare my weekly visit.

Data
source = SFA invoices; granularity = invoice line; history = 24 months
Rules
excluding tax, excluding internal credit notes; calendar month; customer = sales customer code
Acceptance criteria
  • The pilot region monthly total equals the source total at ±0.00 for the last 3 months
  • A customer with no sales appears as 0
  • A merged customer is grouped under its current code
  • Labels are displayed in French and English
  • The page displays in under N seconds at target volume
Out of scope
other regions, margins
Open questions
how should year-end rebates be handled?

Five types of data stories#

Type Example Visible value? Note
Consumer (the user sees it) “See revenue by customer” Yes The “canonical” story
Source (expose data) “Integrate the customer segment field” Indirect Should be tied to a use case; otherwise justify it
Quality (fix/control) “Detect duplicate customers” Strong indirect Trust value
Discovery (spike) “Assess segment coverage” No Timeboxed; produces knowledge
Technical/operations “Make loading rerunnable” No Justification: risk, debt, cost

The “technical” story in BI: when is it legitimate?#

Pure Scrum avoids stories with no value. In BI, some work is prerequisite and indivisible (creating a shared dimension). Common-sense rule:

  1. Pull technical work from a consumer story (“see revenue by customer” pulls the customer dimension).
  2. If the work supports several future stories (shared dimension, calendar), carry it explicitly with a justification (“prerequisite for 4 Q2 stories”) and limit it to the strict minimum.
  3. Do not let the share of technical stories climb without discussing it in retro (no universal threshold: the team sets its own and recalibrates it).
⚠️ Pitfall

The story “build the model.” Symptom: a 4-week item that remains “in progress.” Cause: modeling is treated as a phase. Fix: model by business process (one fact table, one grain, a few dimensions) according to Kimball logic: one business process at a time, integrated through conformed dimensions — each process is a deliverable Increment. See Methods Specific to Data Projects.


🟡 Practice — Data exploration spikes#

A spike is timeboxed research work whose deliverable is knowledge (a decision, an estimate, a proof of feasibility), not production code. It is the preferred tool against data uncertainty.

Typical data spikes#

Question Deliverable Timebox Resulting decision
Does the source contain the required field, and with what coverage? Profile: % populated, distinct values ½ to 1 day Feasible / needs enrichment / to be dropped
Are the keys unique and stable? Duplicate count, change history ½ day Key choice, need for surrogate key
What data volume at 3 years? Measured growth, extrapolation ½ day Partitioning strategy, import mode
Which loading mode (full, incremental, change data capture)? Prototype + duration measurement 1–2 days Loading architecture
Is the business rule consistent with known business figures? Calculation on a sample matched against a known report 1 day Rule specification
What response time with a model at this volume? Measurement on a large dataset 1 day Import vs DirectQuery, aggregations

Rules for a good spike#

  • Explicit question at the start; exit criterion (“we will know whether…”).
  • Strict timebox (hours or days); if inconclusive, the remaining uncertainty is itself the result.
  • Written deliverable (one page: question, method, findings, recommended decision) archived near the backlog.
  • Disposable code by default: if the spike produced good code, it is rebuilt with the DoD.
-- Spike : profil d'un champ candidat (exemple générique)
SELECT
    COUNT(*)                                             AS nb_lignes,
    SUM(CASE WHEN segment IS NULL OR segment = '' THEN 1 ELSE 0 END) AS nb_vides,
    COUNT(DISTINCT segment)                              AS nb_valeurs,
    CAST(100.0 * SUM(CASE WHEN segment IS NULL OR segment = '' THEN 1 ELSE 0 END)
         / NULLIF(COUNT(*), 0) AS DECIMAL(5,2))          AS pct_vides
FROM stg.client;

-- Unicité de la clé annoncée
SELECT code_client, COUNT(*) AS nb
FROM stg.client
GROUP BY code_client
HAVING COUNT(*) > 1;
✅ Good practice

Lightweight discovery sprint at startup: one to two short Sprints whose Sprint Goal is “we know whether and how we can produce the three priority indicators” rather than “we deliver the three indicators.” The objective is to reduce source uncertainty before committing to a scope.

⚠️ Pitfall

Never-ending spike or spike disguised as development. Symptom: the spike lasts three weeks and produced half a solution. Cause: no timebox. Fix: strictly respected timebox; when it ends, decide (continue, pivot, stop).


🟡 Practice — A Sprint across the source → ETL → model → report chain#

The slicing challenge#

Vertical slicing in BI is difficult because the layers are interdependent: no report without a measure, no measure without a model, no model without data. The solution is to reduce the size of each slice, not the depth: little data, few measures, one page — but the entire chain.

Reduction axis Example
Data scope One region, one month, one customer
Number of measures One core measure before ten
Granularity Monthly before daily
Dimensions Customer before product before channel
Business rules General case before exceptions
Output Raw table before polished visual

A typical two-week Sprint#

J1J2J3J4J5J6J7J8J9J10Planning, sample datasetStaging + cleansing rulesvolume testCustomer dimension + sales factskey and totals testsMeasures + model relationshipsnumber testsMinimal report pagemodel version, documentationAcceptance testing on numbers with businesssigned reconciliationDeployment in acceptancereproducible scriptReview (real numbers) + Retrospective
Sprint goal: “reconciled pilot-region revenue figure.” J = business day in the two-week Sprint.

Each day combines one building block and its test, never “build everything then test everything.” Number tests are written with or before the building block (TDD mindset applied to data), as described in Testing and Reliability of Numbers.

Long-running processing and feedback loop#

When a consolidation or full reload takes hours, the “change → test” loop gets longer. Countermeasures:

Countermeasure Principle
Sample Develop on a representative subset (one customer, one region)
Partial load Rerun only the modified portion; verify before expanding
Integration environments A dedicated development environment, with test datasets, to avoid blocking
Overnight processing Schedule heavy testing the day before so results can be reviewed in the morning
Measure in CPU time, not wall-clock duration Durations fluctuate with shared load: compare in the same environment

These points are detailed on the delivery side in CI/CD for data: foundations, datamarts, pipelines, and reports. For Sprint cadence: if the full test cycle takes more than one day, a two-week Sprint is a reasonable minimum; one week becomes unrealistic unless partial loading is under control.

💡 Expert tip

Separate “light test on every change” from “full test per version.” The first (modified portion, reduced dataset) makes the Sprint viable; the second (full install, full load, end-to-end checks) runs at a lower frequency (before each kit release, for example). Never confuse the two, and never skip the first on the pretext that the second exists.


🟡 Practice — Data Sprints or visualization Sprints?#

A common temptation is to separate Sprints: first “data Sprints” (prepare all data), then “visualization Sprints” (build reports). This is mini-waterfall, where value arrives only at the end and the business side discovers too late that the number is not what it expected.

Approach Advantages Disadvantages Verdict
Data Sprints then visualization Sprints Specialization, possible parallelization No business feedback before the end; surprises; horizontal slicing Avoid as a general rule
Mixed vertical Sprints (each Sprint goes through the whole chain) Value every Sprint; early business feedback; risks handled early Requires versatile people or a cross-functional team Recommended
Two parallel tracks (data moves one Sprint ahead of visualization) Visualization on already validated data Lag; can degenerate into mini-waterfall Acceptable with a value link per Sprint
“Foundation” Sprint at the very beginning (calendar, shared dimensions, infrastructure) Lays the groundwork Risk of dragging on (“Sprint 0”) Acceptable if short (1 Sprint), with a number at the end

When separation is justified#

  • Truly indivisible heavy foundations (e.g., platform migration), to be bounded and tied to a user milestone.
  • Rare specialties split across teams: in that case, synchronize Sprints and share one backlog.
  • Distinct visual exploration phase (UX), upstream, with prototypes on mock data, provided you then validate on real data.
✅ Good practice

Keep the number rule: at the end of each Sprint, the Product Owner can open a report and read a validated real number. If that is impossible for more than two Sprints in a row, the slicing is wrong.

The semantic model / reports split, however, has real technical value: multiple reports consume the same model. In that case, the model is a product with its own backlog and its own versioning (see Semantic Model and Versioning and Industrialization of Reports).


🟡 Practice — The Data Definition of Done#

The DoD drives the quality of a BI project. It must cover much more than “the report displays.” Template to adapt (each row is binary):

Dimension “Done” Criterion Evidence
Functional Acceptance criteria verified Passing scenarios
Data Quality Uniqueness, nullability, referential integrity, and range checks executed and passing; known anomalies documented Control log
Acceptance testing on figures Reconciliation with the reference source on an agreed scope; variances explained; business sign-off Signed acceptance testing sheet
Performance Load and response times measured on the target volume, below the defined threshold Recorded measurements
Security Permissions and role-based filtering (RLS) tested with at least one profile per role; no sensitive data exposed Role-based tests
Compliance Personal data identified, legal basis/minimization verified; retention periods planned Up-to-date register
Replayability The process is idempotent: rerunning does not duplicate or corrupt Double-run test
Historization Behavior regarding source changes defined and tested Dimension change test
Versioning Code, model, scripts in source control; version incremented if needed Change history
Deployment Reproducible script to the next environment; clean install tested Installation log
Documentation Description of objects (metadata), business rules, lineage, release notes Documentation generated or up to date
Multilingual Labels translated and verified in supported languages Translation review
Observability Load logging and alerts; readable errors Processing log
🧪 Example

Reconciliation test (T-SQL) to include in the DoD:

-- Monthly revenue reconciliation between source and fact table (sample: pilot region)
WITH src AS (
    SELECT EOMONTH(f.date_facture) AS mois, SUM(f.montant_ht) AS ca
    FROM   src.facture AS f
    JOIN   src.client  AS c ON c.code_client = f.code_client
    WHERE  c.region = 'PILOTE'
    GROUP  BY EOMONTH(f.date_facture)
), dwh AS (
    SELECT d.fin_de_mois AS mois, SUM(v.ca_ht) AS ca
    FROM   dwh.fact_ventes AS v
    JOIN   dwh.dim_date    AS d ON d.id_date = v.id_date
    JOIN   dwh.dim_client  AS c ON c.id_client = v.id_client
    WHERE  c.region = 'PILOTE'
    GROUP  BY d.fin_de_mois
)
SELECT COALESCE(s.mois, w.mois) AS mois,
       s.ca AS ca_source, w.ca AS ca_dwh,
       COALESCE(w.ca,0) - COALESCE(s.ca,0) AS ecart
FROM   src s FULL OUTER JOIN dwh w ON w.mois = s.mois
WHERE  COALESCE(w.ca,0) <> COALESCE(s.ca,0);   -- expected: 0 rows
⚠️ Pitfall

DoD so heavy that no item is ever “Done.” Symptom: the team works around it by declaring “done except acceptance testing.” Cause: DoD copied from another context. Remedy: progressive DoD: a strict baseline (functional, quality, reconciliation, versioning) from the start, with additional requirements (full-load performance, full accessibility) planned explicitly as hardening stories with a dated objective — and added to the DoD when the team is able to meet them. Never relax a DoD to hit a Sprint.

✅ Good practice

Distinguish between “Sprint DoD” and “Release DoD.” Heavy checks (full install on a clean database, full consolidation, version upgrade test) can be done at the end of a series of Sprints, before each release package. Document this distinction: the Sprint DoD covers the “potentially releasable” Increment, while the Release DoD covers making the product available.

Related themes in the matrices: Data Quality, Acceptance testing and business validation, Security, Privacy, Compliance, Metadata, Lineage, and Documentation, RLS Security and Access.


🟡 Practice — Test Data Sets#

Without representative and stable test data, you cannot test, iterate quickly, or reproduce a defect. Strategy by level:

Level Content Usage Risk
Minimal synthetic set A few fabricated rows, covering edge cases (null, duplicate, merge, accent, long string, boundary date) Unit tests, non-regression, CI Not very realistic
Reference set Anonymized and frozen extract from a real environment, with known expected results Acceptance testing, demonstration, comparison between versions Drift if not maintained; leak risk if poorly anonymized
Large-volume set Replica or generated data at target scale Performance and volume tests Storage and loading cost
Real data (copy) Controlled production copy Final acceptance testing, diagnostics GDPR challenge, access rights, retention period

Rules#

  1. Versioned reference set with its expected values (customer X's revenue in March equals Y); these values are the figure non-regression test.
  2. Anonymization / pseudonymization before any use outside production; do not move personal data to a test environment without legal basis and access control.
  3. Edge cases documented and covered: merged customer, credit note, currency, time zone, language, extreme value, truncated history.
  4. Dedicated environments: acceptance testing is not done on an environment that keeps changing under your feet.
  5. Evolution: when the source changes, the reference set is consciously refreshed, with visible diff and validation.
🧪 Example

Synthetic set of 12 customers covering: one normal customer, one with no sales, one merged, one with a credit note greater than their sales, one with a label containing accents and an apostrophe, one with a future creation date, one exact duplicate, one near-duplicate, one with no region, one with unknown region, one with very high row volume, one archived. Each scenario has its own numeric expected result. This is the project's most cost-effective non-regression test.

🤖 AI

AI can generate plausible synthetic data and edge cases, which is very useful for getting started. It does not guarantee either statistical representativeness or the absence of copied real data that may have been provided to it; never send real personal data to it outside an authorized framework. See AI Contribution.


🟡 Practice — Dependency on Sources#

The source (here, the SFA application) is a third party: its schema, quality, and schedule do not depend on the team. Consequences for Scrum:

Risk Manifestation Treatment in Scrum
Schema drift Column renamed, type changed, table removed Schema test at every load; backlog item created automatically; interface contract
Variable quality Duplicates, out-of-range values Input controls (staging); quarantine for rejected rows; quality indicator in reporting
Unavailability Source under maintenance Agreed windows; degraded mode; do not schedule acceptance testing on those days
Unannounced changes Business rule changes on the source side Product Owner in regular contact with the source owner; monitoring; version review
Access Permissions not granted on time Dependency recorded in the backlog, with owner and date; handle before the Sprint
Unexpected volume Growth, massive initial load Spike; incremental strategy

Treating dependency as an item#

A dependency is not “what blocks an item”: it is a backlog item with its own lifecycle, and one that must be ordered (“get access” must be ready before selecting items that depend on it). Map: source, owner, access mode, change frequency, contact, SLA.

Data contracts#

Formalize a contract with the source owner: guaranteed schema, field semantics, freshness, expected quality, change procedure (notice period), versions. Even lightweight (one page + automated tests), it turns a dependency relationship into a managed relationship. Details: Data Sources and Contracts.

⚠️ Pitfall

Planning acceptance testing while the source is not stable. Symptom: acceptance testing “fails” because of upstream changes, not because of the team's work. Cause: no source freeze or no reference set. Remedy: freeze a snapshot for acceptance testing; document the extraction date; then compare with the live source knowingly.


🟡 Practice — The data Product Owner#

The data PO has the PO responsibilities (Scrum, the framework (Scrum Guide 2020)), with additional requirements. This is generally the hardest person to find, because it requires a rare profile: close to the business, comfortable with numbers, able to arbitrate definitions.

Responsibility Data-specific aspect
Define value What decisions do we need to make better? Which indicators? Which uses?
Arbitrate definitions “What is an active customer?” — one single definition per indicator, validated and published (semantic governance)
Represent the business Speak on behalf of diverse users, without limiting to the loudest request
Prioritize Indicator value × source risk × data effort
Lead acceptance testing Organize reconciliation, sign off or have it signed off
Manage data debt Accept (or not) known trade-offs
Relationship with source owners Negotiate contracts, changes, schedules
Adoption Training, communication, usage monitoring

Where can you find this PO?#

Option Advantages Risks
The business side (a sales manager trained in Scrum) Legitimacy, business knowledge Limited availability, variable data culture
A business analyst / data translator Strong command of numbers and vocabulary Limited authority without a clear mandate
A data product manager Product vision Removed from the field
A pair (business PO + analyst) Complementarity Must remain a single voice (one single accountable person)
⚠️ Pitfall

The “IT” PO. Symptom: the IT team decides the value of indicators. Cause: no available business representative. Consequence: numbers that are accurate but useless, or disputed. Remedy: require a business PO for any value decision; IT advises. See Scoping, Value, and Use Cases and Data Governance and Organization.

💡 Expert tip

Add a indicator glossary to the backlog catalog (definition, formula, source, owner, validation date). Most conflicts between reports come from divergent definitions; a data PO manages the glossary as a first-class artifact.


🟡 Practice — Business acceptance testing on numbers#

Acceptance testing of a BI report is not a screen check: it is verification that the numbers are correct and understood.

The five levels of control#

Level Question Method
1. Completeness Do we have all rows? Source-vs-target counts, by table and by period
2. Accuracy Are totals equal? Sum reconciliation, by dimension (region, month)
3. Business rules Is the applied rule the right one? Sample cases calculated by hand by the business
4. Consistency Do two reports give the same number for the same question? Cross-comparison; one single definition
5. Plausibility Does the number make sense (orders of magnitude, trend)? Business review, comparison with field knowledge

Process#

  1. Prepare: frozen reference dataset; scope; expected outcome (named source of truth: source system, accounting statement, validated Excel file).
  2. Run automated checks (reconciliation SQL); record gaps.
  3. Explain each gap: bug, different rule, dirty data, calendar difference (invoice date vs shipping date), rounding, time zone.
  4. Decide with the PO: fix, accept (with traceability), or document an intentional difference (“our revenue excludes credit notes of type X”).
  5. Sign off: acceptance testing sheet (date, scope, version, results, reservations, signatory). This protects the team and builds trust.
🧪 Example

0.4% gap between report revenue and accounting revenue. After analysis: (a) 0.3% comes from credit notes recorded after monthly accounting close, (b) 0.1% from VAT rounding. PO decision: keep the “invoice date” definition and document the expected gap with accounting (reconciliation sheet). Result: trust is earned through transparency about the gap, not by eliminating it.

⚠️ Pitfall

“Eyeball” acceptance testing. Symptom: “it looks good.” Cause: lack of time, lack of reference baseline. Consequence: defect discovered six months later by a director. Remedy: systematic numeric reconciliation, repeatable on every version (non-regression); the business signs off on numbers, not impressions.

Acceptance testing is effectively a Sprint event, even if the Guide does not define it: include it in the DoD, plan it within the Sprint (days 8–9 in the example above), and do not push it to a final “acceptance Sprint.” The matrices cover this point in Acceptance testing and business validation and Quality and UAT (QUA).


🔴 Expert — Data debt#

Technical debt (Ward Cunningham) refers to design shortcuts that speed things up today and slow things down tomorrow. In data, a related form, data debt, deserves its own tracking.

Debt type Example Interest paid
Model debt Poorly chosen grain; flattened dimension with no history Every new request is a patch
Quality debt Tolerated duplicates, untreated outliers Disputed numbers, acceptance testing time
Definition debt Two definitions of the same indicator Conflicts between reports
Lineage/doc debt No one knows where a column comes from anymore Diagnosis time, fear of changing things
Performance debt Table without indexes, full daily import Load window overflow
Security debt Broad “temporary” permissions Leak risk, audit exposure
Testing debt No automated numeric tests Silent regressions
Version debt Client reports tied to old model versions Compatibility complexity

Managing debt in Scrum#

  1. Make it visible: “debt” items in the Product Backlog, labeled, with cost of delay (what it costs us each month).
  2. Reserve capacity (a fixed share of the Sprint, calibrated based on debt magnitude; there is no established standard); do not depend on a hypothetical “cleanup Sprint.”
  3. Intentional debt: a voluntary and dated trade-off (“we accept full import for the MVP, payback planned in Sprint N”) is better than hidden debt. The PO signs off.
  4. Non-worsening rule: any change in a fragile area improves at least one point (boy scout rule).
  5. Repay first the debt that blocks a priority objective.
  6. Measure: age, number of items, time spent on workarounds.
⚠️ Pitfall

Data debt denied “because the report works.” Symptom: changes take longer and longer. Cause: the model accumulates exceptions. Remedy: address model debt while few reports depend on it; once client reports are tied to the structure, changing it becomes costly (see migrations).

See the matrices topic Technical Debt and Maintainability.


🔴 Expert — Replayability, idempotence, and history tracking in the Sprint#

These properties are not “tested” during acceptance testing: they are designed, so they must be planned as requirements in the Sprint.

Idempotence#

A process is idempotent if running it multiple times with the same inputs produces the same final state as a single run. This is the condition for a replayable load after an incident, and for peace of mind in production.

-- Chargement idempotent d'une dimension : MERGE sur clé naturelle
MERGE dwh.dim_client AS cible
USING stg.client_propre AS source
   ON cible.code_client = source.code_client
WHEN MATCHED AND (cible.libelle <> source.libelle OR cible.region <> source.region) THEN
     UPDATE SET libelle = source.libelle, region = source.region, date_maj = SYSUTCDATETIME()
WHEN NOT MATCHED BY TARGET THEN
     INSERT (code_client, libelle, region, date_maj)
     VALUES (source.code_client, source.libelle, source.region, SYSUTCDATETIME());
-- Rejouer deux fois : mêmes lignes, pas de doublon.

For a fact table: use a “delete window then reinsert” pattern (by period) within a single transaction, or partition swap, rather than “append unconditionally.”

History tracking#

Attributes that change (a customer's region) raise the question of dimension type (SCD type 1: overwrite; type 2: version). Choose early, because late change is costly. The DoD test must verify expected behavior when a change occurs (dataset with two versions of the same customer).

Planning for “replayable” in Scrum#

  • Systematic acceptance criterion: “a double load does not change the result.”
  • Recovery story: “after a mid-load failure, restart leaves no partial data.”
  • Test dataset with late-arriving data events (data arriving after the period).
  • Batch logging (identifier, time, row count) for diagnostics.
⚠️ Pitfall

Testing only the happy path of an initial load. Symptom: everything passes in acceptance testing; in production, the second load duplicates data. Cause: test dataset on an empty database. Fix: double-run testing and loading on an already populated database in the DoD.


🔴 Expert — Migrations, model versions, and kits#

A datamart delivered to multiple clients, in successive versions, is a product: each new version must be able to install on a fresh database and migrate an existing database without data loss. Scrum supports this provided these aspects are treated as Increment requirements, not as “post-processing.”

Requirement Integration into the Sprint
Clean install DoD test: the kit installs on an empty database; control log
Version upgrade Test: install on a database from the previous version; data preserved; versioned migration scripts
Report compatibility Existing reports work on the updated model (or the breaking change is announced, documented, and a migration plan exists)
Column rename / deletion Backlog item for migration: application order (produce first, consume next), coexistence period
Stable identifiers Objects consumed by third-party reports (measures, columns) are not recreated: they are modified in place to avoid breaking links
Release notes Deliverable of the delivery Increment

Product version vs. Sprint#

A Sprint produces internal Increments; a product version (kit) groups several Sprints and goes through a heavier delivery DoD. Do not confuse them or pace versions by Sprint. For version governance and delivery, see CI/CD for data: foundations, datamarts, pipelines, and reports, Choosing Your Method and Hybridizing and, on the tools side, Branching Strategies and Source Control for Data: SQL and Power BI.

💡 Expert tip

Bug fixes on already delivered versions are a separate flow from evolution (current-version backlog). Many data teams handle these two flows poorly within a single Sprint: reserving maintenance capacity and an operating mode (Kanban for the fix flow, Scrum for evolution) prevents urgent issues from ruining Sprint Goals. See Agile and Lean Methods (Manifesto, Kanban, XP, Lean, Shape Up, DSDM, SAFe, DevOps…).


🔴 Expert — DataOps coordination and governance#

Scrum answers “how to organize team work.” By itself, it does not cover:

Need Complementary response
Industrialize loading, testing, deployment DataOps: automation, continuous quality checks, monitoring (see Methods Specific to Data Projects, CI/CD for data: foundations, datamarts, pipelines, and reports)
Govern definitions, access, compliance Data governance, committees, glossary, roles (data owner, steward)
Choose what to build at organization scale Portfolio, data strategy
Frame an exploratory analytics approach CRISP-DM (data mining; iterative cycle of business and data understanding, preparation, modeling, evaluation, deployment)
Model Dimensional modeling (Kimball), Data Vault, depending on context
Operate Support, monitoring, incident management

Touchpoints:

  • Governance ↔ DoD: governance requirements (classification, retention, access) become DoD criteria.
  • DataOps ↔ Sprint: the more automated the checks, the less costly the DoD and the shorter the Sprint.
  • Architecture ↔ Product Backlog: architecture decisions (platform choice) are explicit items, sometimes spikes, with an owner.
✅ Good practice

Write a one-page “team contract” that specifies: owner of definitions, data DoD, quality policy, service levels on sources and reports, bug-fix management mode, and version delivery schedule. It makes up for the Guide’s silence on these topics.


🔴 Expert — When is Scrum the wrong choice for data?#

Situation Why Scrum is a poor fit Alternative
Report support and maintenance (continuous flow of incidents and small requests) Daily shifting priorities; Sprint Goal becomes meaningless Kanban (flow, WIP limits, SLE)
Exploration / data science (uncertain outcome) “Usable Increment” is difficult; research loop Iterative CRISP-DM, timeboxed research cycles; Scrum for the industrialization part
Large-scale migration with known scope Low uncertainty, high schedule constraint Predictive batch planning, with non-regression milestones
One-person team Disproportionate ceremony Personal Kanban; regular reviews with the business
No involved PO / sponsor Value is not steered Fix governance first
Regulatory evidence requirement (audit) Formal documentation required Hybrid: Scrum for execution, documentary traceability integrated into the DoD

This typology is extended in Choosing Your Method and Hybridizing and Comparison of Project Management Methods.


Strengths and weaknesses#

Strengths of Scrum for data Weaknesses / watch areas
Frequent business feedback: you discover early that the number is not the one expected Difficult vertical slicing due to interdependent layers
Value-based prioritization: indicators first by usage Uncontrolled sources that disrupt Sprints
Transparency (DoD, backlog): increased trust in numbers Long processing time: slow feedback loop
Change management: BI needs evolve significantly Model debt is hard to repay once reports are deployed
Self-management: suited to expert teams Discovery: spikes needed, not covered by the Guide
Continuous improvement (retro): leverages number discrepancies Scarce skills (data PO)
Cadence: predictable delivery rhythm Delivery in versions / kits: rhythm differs from the Sprint
Real Increment: avoids tunnel effect Compliance (GDPR, audit) must be integrated through the DoD, not the framework

Metrics: fit ratings /5#

Expert assessments, contextual (see Rating). Context: team of 4 to 8 people working on an evolving enterprise datamart (application source, Power BI reports), with version-based deliveries. Recalibrate for a data science project or a one-person team.

Criterion Rating Justification
Predictability 3/5 Good at the Sprint scale; source uncertainty limits long-term forecasting
Adaptation to change 5/5 BI needs and definitions are constantly shifting; the backlog supports this
Risk control 4/5 Short loops + spikes; security/compliance risks require guardrails in the DoD
Lightweight nature (overhead) 3/5 Ceremony suited to 4–8 people; heavy for 1–2
Fit for data projects 4/5 Excellent for need → number; less natural for pure exploration and support flow
Ease of adoption 3/5 Requires a real data PO and vertical slicing, which takes learning
Scaling 2/5 Multiple teams on the same model create coordination issues (Nexus/LeSS to explore)
Visibility / governance 4/5 Backlog and DoD provide transparency; to be complemented by governance of definitions
Deliverable quality 4/5 If the DoD includes reconciliation and testing; otherwise 2/5

Fit by type of data work#

Type of work Scrum Kanban Predictive Hybrid
Building a datamart from scratch 4/5 2/5 3/5 4/5
Evolving an existing datamart 4/5 4/5 2/5 4/5
Reporting on a stable model 3/5 4/5 2/5 3/5
Support / bug fixes 2/5 5/5 1/5 3/5
Platform migration (known scope) 3/5 2/5 4/5 4/5
Exploration / data science 2/5 3/5 1/5 3/5

These ratings are discussion benchmarks, not measurements: they reflect one practitioner's view of a typical context and do not replace your own self-assessment (Maturity Matrix — Data Project Management (PD)).


AI contribution#

🤖 AI

In data work, AI is both an accelerator (SQL, DAX, tests, documentation) and a risk (plausible but wrong numbers, confidentiality).

Use case Gain Risk Maturity Prerequisites Guardrails
Generate data profiling queries for a spike 4/5 2/5 4/5 Known schema Run in an environment with no sensitive data; review
Generate SQL / DAX reconciliation tests from acceptance criteria 4/5 3/5 4/5 Precise criteria, schema Validate logic and joins; compare with a known number
Generate synthetic data and edge cases 4/5 2/5 4/5 Model description No real data as input; verify coverage
Draft documentation for objects and rules (metadata, glossary) 4/5 3/5 4/5 Code and comments Review by the PO; do not let AI invent a rule
Propose translations for multilingual labels 3/5 3/5 4/5 Business glossary Review by a business-domain speaker; specialized terms
Analyze acceptance testing discrepancies (cause hypotheses) 3/5 3/5 3/5 Anonymized extracts AI proposes, humans verify
Estimate effort for a data item 1/5 4/5 2/5 — Effort depends on source condition, unknown to AI
Decide a business rule or KPI definition 0/5 5/5 1/5 — Forbidden: PO decision, business accountability
Write complex DAX measures 3/5 4/5 3/5 Model, examples Test against a reference dataset; verify filter context

Example prompts:

  • “Here is the schema of my fact table and customer dimension (no data). Write T-SQL validation queries: key uniqueness, foreign key orphans, negative values, out-of-range dates. Explain each check.”
  • “Here are three acceptance criteria. For each one, propose an SQL reconciliation test and an edge case I did not anticipate.”

What AI does not replace: value definition and business rules (PO), signed-off business acceptance testing, accountability for numbers, decisions about accepted technical debt, access governance. Data-specific risks: syntactically correct but semantically wrong queries (bad join multiplying rows, lost filter) producing a plausible number; data leakage if real data is pasted into an unauthorized service; hidden debt from generated code the team does not understand. Rule: every AI-generated test must itself be tested (on a case where the result is known). See AI for Project Management (General Then Data) and AI in Planning and Version Control Tools.


See also#

✻ Written by Claude Sonnet 5.5