

- Description
- Une mêlée de rugby sur un terrain brumeux, vue d'ensemble
- Source
- auteur non indiqué · original page
- Licence
- PD Public domain
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 →…
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
- 🟢 Novice — Why Scrum and data rub against each other
- 🟢 Novice — What is an Increment in BI?
- 🟢 Novice — The multidisciplinary data team
- 🟡 Practice — Writing data stories
- 🟡 Practice — Data exploration spikes
- 🟡 Practice — A Sprint across the source → ETL → model → report chain
- 🟡 Practice — Data Sprints or visualization Sprints?
- 🟡 Practice — The Data Definition of Done
- 🟡 Practice — Test Data Sets
- 🟡 Practice — Dependency on Sources
- 🟡 Practice — The data Product Owner
- 🟡 Practice — Business acceptance testing on numbers
- 🔴 Expert — Data debt
- 🔴 Expert — Replayability, idempotence, and history tracking in the Sprint
- 🔴 Expert — Migrations, model versions, and kits
- 🔴 Expert — DataOps coordination and governance
- 🔴 Expert — When is Scrum the wrong choice for data?
- Strengths and weaknesses
- Metrics: fit ratings /5
- AI contribution
- See also
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.
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.
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 |
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.
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.
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#
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:
- Pull technical work from a consumer story (“see revenue by customer” pulls the customer dimension).
- 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.
- 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).
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;
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.
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#
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.
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.
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 |
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
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.
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#
- Versioned reference set with its expected values (customer X's revenue in March equals Y); these values are the figure non-regression test.
- Anonymization / pseudonymization before any use outside production; do not move personal data to a test environment without legal basis and access control.
- Edge cases documented and covered: merged customer, credit note, currency, time zone, language, extreme value, truncated history.
- Dedicated environments: acceptance testing is not done on an environment that keeps changing under your feet.
- Evolution: when the source changes, the reference set is consciously refreshed, with visible diff and validation.
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 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.
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) |
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.
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#
- Prepare: frozen reference dataset; scope; expected outcome (named source of truth: source system, accounting statement, validated Excel file).
- Run automated checks (reconciliation SQL); record gaps.
- Explain each gap: bug, different rule, dirty data, calendar difference (invoice date vs shipping date), rounding, time zone.
- Decide with the PO: fix, accept (with traceability), or document an intentional difference (“our revenue excludes credit notes of type X”).
- Sign off: acceptance testing sheet (date, scope, version, results, reservations, signatory). This protects the team and builds trust.
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.
“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#
- Make it visible: “debt” items in the Product Backlog, labeled, with cost of delay (what it costs us each month).
- 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.”
- 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.
- Non-worsening rule: any change in a fragile area improves at least one point (boy scout rule).
- Repay first the debt that blocks a priority objective.
- Measure: age, number of items, time spent on workarounds.
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.
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.
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.
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#
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#
- Framework and practice: Scrum, the framework (Scrum Guide 2020), Scrum in Practice, Project Management Fundamentals.
- Dedicated methods and comparison: Methods Specific to Data Projects, Agile and Lean Methods (Manifesto, Kanban, XP, Lean, Shape Up, DSDM, SAFe, DevOps…), Comparison of Project Management Methods, Choosing Your Method and Hybridizing.
- Delivery: CI/CD: Continuous Integration and Continuous Delivery, CI/CD for data: foundations, datamarts, pipelines, and reports, Pitfalls and good practices in project management (cross-functional summary).
- Tools: VCS and SQL/BI data, Azure DevOps / TFS, Project Metrics and Reporting.
- Matrices: Maturity Matrix — Data Project Management (PD), Lead Time and Industrialization (DataOps), Maturity Matrix — BI Tool/Application Development.
- Power BI reporting: Cross-Cutting Power BI Good Practices, Power BI Reporting Project Checklists.
- Glossary: Glossary.
✻ Written by Claude Sonnet 5.5