Where we start
An engineer asked about data state reaches for a system diagram, and a person who runs 38 pharmacies hears an audit. Harbourline's data state is not a diagram yet. It is a set of facts about people and calendars: a till records every sale, a bank settles cards two days later, a bookkeeper exports once a month because the contract says so, a person pastes 38 files into a spreadsheet on Monday, and a copy on one laptop is treated as the real one without anyone having said so. Every one of those facts is a plain question away. The three parts tonight are three kinds of plain question: where each number comes from, how mature the habit around each system is, and who owns, logs in to and reads each box. The build-along draws the answers as the lineage she can correct.
★ What you walk out with tonight. A one-page lineage map for a request you actually have: every number on the pack traced through every system it passes through, each hand-off drawn, an owner, a login holder and a read frequency on every box, the copy somebody has declared real (or the word "nobody"), and the one question you send it with: "which arrow is wrong?". Session 3 puts the same facts on the bench: the one key on the map is worth 4 points on the sheet, and it sits behind the highest trust gate there is.
Recorded, typed, or not recorded
5 min liveThe first data-state question is not "what systems do you have". It is "where does this number come from", asked once per number on the pack. An analyst gets three answers: recorded by a system as a side effect of work, typed by a person, or not recorded anywhere. An engineer needs a fourth, because it is the one a pipeline inherits: exported by a person, on a schedule. At Harbourline that is Priya's 38 CSVs every Monday and the bookkeeper's one export a month, and both of them are calendars you will be building on whether you asked about them or not.
LiveFour origins, and the question that finds them3 min▶
Take the month-end pack and the Monday report and go down them one number at a time. For each, ask the bank's question g05: "How is the report made today? Show me the file, and tell me who builds it." with its teach-back said first: "The current file is the spec. Every step done by hand is a step I have to reproduce exactly before I can improve it." She does not need to know what a source system is to answer. She knows that Priya downloads one CSV per outlet on Monday, 38 files, pastes them into a spreadsheet, and that a macro somebody wrote in 2019 merges them. Six hours.
The four answers carry four different builds. A number recorded by a system arrives on its own, in the same shape every time: sales at the till, one cloud POS vendor, a CSV per outlet, product codes that differ between Singapore and Malaysia. A number typed by a person arrives when somebody types it, in whatever shape they typed: the stock spreadsheet, in three copies. A number not recorded cannot be moved at all until somebody writes it down: supplier orders go over WhatsApp and there is no order table anywhere. And a number exported by a person on a schedule arrives as often as that person and their calendar allow: Priya's Monday files, and the bookkeeper in Kuala Lumpur, who exports once a month.
Say the fourth case out loud when you hear it, because it is the one a pipeline silently inherits. You can schedule a job to run every hour; it still reads a file that changed once a week or once a month. Ask g19 next: "How often does each system get exported today, and by whom?" with "How often a system is read today is a ceiling I inherit until a contract or a login changes it." At Harbourline the ceiling on finance's side is written into a contract: one export a month, and more is a contract change. That is a data-state fact, not a legal footnote, and it is why "pull everything daily" is a sentence you should never say before you have asked.
Self-studyWhy data preparation eats the project, quoted as it stands2 min▶
Two sources are usually run together into one number, and they should not be. In 2014 Steve Lohr reported in The New York Times that data scientists spend 50 percent to 80 percent of their time collecting and preparing data before it can be explored. In 2016 CrowdFlower's data science report found respondents spending 60 percent of their time cleaning and organising data and a further 19 percent collecting it. Two sources, two methods, two shapes of answer: one a range for collecting and preparing together, the other two separate figures. Quote whichever you use as it stands, and never fold them into one cleaning figure taken from the top of Lohr's range, because nobody measured that number.
The point for door 4 is the reason behind both. Preparation time is mostly the cost of the typed, the absent and the exported: reconciling three stock copies, finding out that refunds live only in the accounting system, discovering in week three that the finance export you planned to read nightly exists once a month. Every minute spent asking "where does this come from, and how does it reach you" is a minute not spent in week three finding out the hard way.
The refunds nobody would see. A constructed case, but the shape is common. Asked "where does finance's revenue number come from, step by step?" (g06, with "Two numbers built along two paths usually disagree about timing long before they disagree about truth."), Adeline walked the path: bank settlements into the accounting system, cards landing two days late, cash deposited weekly. Then, almost as an aside, she added that refunds are processed in the accounting system and the POS never sees them. A pipeline that copied the POS nightly into a warehouse would have been on time every night and short by every refund, forever. The number was recorded, just not in the system anyone was planning to read.
Five rungs, as questions
5 min liveOnce you know where a number comes from, the next thing is how mature the habit around each system is: whether it is done the same way each time, whether anyone wrote that way down, whether anyone checks. DAMA-DMBOK's maturity model gives five level names for exactly that. She never hears the names. She hears five plain questions, and you ask them per system, not per company, because one company holds several rungs at once. At Harbourline the till sits well above the stock spreadsheet, and the Monday merge sits at the bottom. The ladder in full depth is in the analyst's session 2; tonight is the engineer's reading of it.
LiveThe ladder, asked per system3 min▶
DAMA-DMBOK, 2nd edition, chapter 15, names five levels of data management maturity: Initial/Ad hoc, Repeatable, Defined, Managed, Optimized. Five, not six: DMBOK has no level 0. The names are the whole of what is borrowed, and they are reported from summaries rather than read from the book. The questions beside each rung are ours, written so a person who runs pharmacies can answer them about her own systems.
Ask them once per box on the map. The till: it records every sale the same way, so it is at least rung 2; whether anything about it is written down is a question you have not asked yet, so you do not place it higher. The ledger export: the bookkeeper sends it once a month by contract, the same way each time, rung 2 on what you know. The stock sheets: three copies in circulation and none declared real, rung 1. The Monday merge: 38 files pasted by hand and a macro somebody wrote in 2019, and the bottom-rung question gets the decisive answer, asked as g20: "When a number in the report is wrong, who fixes it, and does anyone find out?" Priya fixes it by hand in the spreadsheet; nobody is told; there is no record of what changed. Rung 1.
Write the rung beside each system in your notes and never tell her the number. "Your merge is a 1" is a grade, and a grade ends a conversation that was going well. What the reading gives you, as an engineer, is where the pipeline must not start: never copy the lowest rung faithfully and call it done. A job that reproduces the Monday merge on a schedule reproduces the silent fixes too, or loses them, and either way the number changes without a record. The real assessment, with the practices behind each level, is a governance discipline, taught in the Governance 101 course; in a discovery meeting the ladder is an interview aid and nothing more.
Self-studyTwo other frames, one line each2 min▶
Joe Reis and Matt Housley, in Fundamentals of Data Engineering (O'Reilly, 2022), describe companies as starting with data, scaling with data or leading with data, reported here from summaries rather than a page. Harbourline is starting with data: one recorded source, one person who assembles the report, a bookkeeper on a monthly contract, and a request that is really a request to be able to answer an auditor. Whatever you propose should fit a company at that stage, which rules out most of what a platform vendor would propose.
Leandro DalleMule and Thomas H. Davenport, in "What's Your Data Strategy?" (Harvard Business Review, May-June 2017, reported), ask whether a company needs a single source of truth or several fit-for-purpose versions of the truth. Harbourline has both problems by accident: the POS and finance are two versions of revenue built along two paths, and the stock sheet is three versions of one thing with no agreed copy. The frame is useful because it names a choice. A company can decide to run two versions of revenue on purpose, one for Monday and one for the auditor; it should not discover it has.
The silent fix. Constructed, and typical. Adeline answered the rung-2 question about the Monday report with "yes, Priya does it every week", which sounds Repeatable. The bottom-rung question, asked next, got a pause and then "well, if something looks off she just corrects it". Nobody is told, and nothing records what changed. The teach-back for that question says why it matters to an engineer in one line: "A silent fix is a second source of truth. I would rather have a wrong number with a log than a right number with no history." The week you automate the merge, the corrections stop, and the Monday numbers change in a way nobody can explain, because nobody knew they had been changing all along.
Owners, logins, the one key, and the real copy
5 min liveThe last data-state facts are about people. Who can say yes to an export, who can actually log in, how often each box is read, and which copy somebody has declared real. At Harbourline the vendor API has never been used by anyone; the accounting system belongs to an outsourced bookkeeper whose contract allows one export a month; refunds exist only in accounting; three stock spreadsheets circulate and the one Priya treats as real lives on her laptop; and one person, Kenneth, holds the only POS admin login. Kenneth is leaving in January, and she has not told the team.
LiveEvery hand-off is a place the number changes2 min▶
The map starts with one question, g08: "Which systems does one sale touch, from the till to the bank to the ledger?" Say the teach-back first: "Every hand-off between systems is a place a number can change. I am counting the hand-offs." She can answer that without knowing a single technical word, and she answers in order: the till, the bank settlement, the ledger the bookkeeper keeps. That row alone explains most of the two percent: card settlements land two days late, cash is deposited weekly, and refunds exist only in the ledger. Two numbers built along two paths, disagreeing about timing before truth.
Then ask the same question of the Monday side and you get the second row: the till again, 38 CSVs pulled by Priya, her merge, the report. Notice what you do not get. Nobody has told you how a sale on the till ends up as a line in the stock spreadsheet: whether someone counts shelves, types from the till, or copies from last week. Draw that hand-off dashed and label it unknown. A dashed arrow on the map is not a gap in your drawing; it is the next question you ask.
LiveThe key, asked by name, after trust2 min▶
Question g09 has to be asked with a name in the answer: "Who can log in to each of those, and pull an export?" Teach-back: "Access is the first blocker on most data projects, so I ask early and I ask by name." "IT can" is not an answer. "Kenneth can, and only Kenneth" is, and it is the answer that makes you ask what happens in January.
Kenneth's leaving date does not come out on the first question, whatever you ask. On the bench it sits behind a trust gate of 3, the highest on the sheet: she volunteers it only after enough open questions, each with its reason said aloud, have shown you are helping her and not auditing her, and every jargon question you ask on the way takes a point of that trust back. It is worth 4 points on the sheet, as much as the outcome itself. That is why the widest door is not the first one: one outcome question first, the month-end and Monday walk-throughs, the systems and the stock copies, and then the login, by name. Ask it cold and you get "our IT guy". Session 3 shows which meeting orders reach it in 45 minutes.
Self-studyDeclare the real copy before you move it2 min▶
Question g11: "Where do the stock numbers live, and which copy is the real one?" Teach-back: "A file that exists three times has no real copy until someone declares one. I need that declared before I move it anywhere." At Harbourline the answer is three spreadsheets in circulation and one on Priya's laptop that she treats as real. Treated is not declared. Nobody with the authority to say so has said it, which means the day your pipeline picks one, you have declared it for them, silently, and the other two copies keep being edited by the people who think theirs is the one.
The same logic runs through every box. The vendor API is a fact about the vendor, not about Harbourline: it exists and nobody has ever used it, so it is a possibility, not a source. The loyalty data sits with the app vendor and an export costs extra and needs a contract clause (g12: "Owned means who can say yes to an export. That is usually a contract, not a login."). The bookkeeper's one export a month is in her contract. Each of those is a data-state fact with a signature on it, and each sets a ceiling on your pipeline that no schedule can lift.
The API nobody has used. Constructed, and common. The vendor's brochure says the POS has an API, and an engineer who hears "API" starts designing the integration before the meeting is over. Asked plainly who can log in and pull an export, Adeline said Kenneth, and only Kenneth, and that nobody had ever touched the API. Asked whether they had tried to connect the systems before, she said a vendor integration project two years ago stalled the week Kenneth went on leave and never restarted. The API is on the map, in the till box, with "never used" beside it. The one key is next to it. The last attempt already showed where this one would stall.
Draw the lineage from her answers
★ 22 min · everyone writesOne page, drawn by hand, from answers a business person gave in plain words. Take the request you brought from session 1, or Adeline's if you did not bring one, and draw the lineage you will send her within a day of the meeting: every number on the pack, every system it passes through, every hand-off, and on every box an owner, a login, how often it is read and which copy is declared real. Nothing on it is a schema. Every arrow is something she can correct.
List every number on the pack, in her words. Not the tables you would design; the numbers she reads, and who reads them. Each line on this list becomes one row of boxes on the map.
One row of systems per number, in the order the number travels. Ask "which systems does one sale touch?" and write the boxes left to right as she names them. Beside each row, write the question that found it, so you can repeat it next time. Say the teach-back first every time; it is why she answers step by step instead of "from the system".
Owner and login on every box, by name. "Owner" means who can say yes to a change or an export. "Login" means who can actually get in. They are often different people, and one of them is often nobody. Write the name, or "nobody", or "not asked"; never a department.
How often each box is read today, and by whom. This is the ceiling you inherit. Write the frequency the box is actually read, not the frequency you would like, and write the decision it has to reach in time.
Mark which copy is declared real, and by whom. For every box that exists more than once, write the copy somebody with the authority to say so has declared real. If nobody has, write "nobody" in capitals. That box is your first proposal, before any pipeline: somebody declares a copy, and then you move it.
Ask which arrow is wrong. Not a summary, not a proposal, not a data model. One sentence that says what the map is and asks her to correct the arrows, sent within a day while she still remembers what she told you. The arrow she corrects is the one your pipeline would have got wrong.
Declare, then move. A pipeline that copies an undeclared file makes the disagreement faster, not smaller. The map makes the declaration her decision, on one page, before anything runs. Session 5 turns the "nobody" boxes into the first joint project; session 6 folds the corrected map into the one-page brief.
Before session 3
30 min- Draw the lineage for your own request. Every number on the pack, one row of systems per number, every hand-off drawn. Any hand-off nobody has described goes in dashed and labelled unknown; that is the question you ask next.
- Find the one key. Somewhere on your map is a login, a laptop, a contract or a person that a whole row passes through. Mark it. Write down what happens the week that person is away.
- Write the read frequency on every box. How often it is read today, by whom, and the decision it has to reach. Circle any box where the frequency is set by a contract rather than a schedule.
- Bring the map to session 3. The bench prices every fact on it, and you will see which boxes most meeting orders never fill.
Three questions
Clear all three and session 2 gets stamped in your passport.
1 · Three stock spreadsheets are in circulation and Priya treats the one on her laptop as real. Why does a copy have to be declared real before you move it?
"A file that exists three times has no real copy until someone declares one." Treated is not declared. The declaration is her decision, which is why it goes on the map before anything runs.
2 · The bookkeeper's contract allows one export a month, and more is a contract change. Why is that a data-state fact and not a legal footnote?
It is both a constraint and a data-state fact, and at door 4 it is the one that decides your design: "pull everything daily" is wrong before you have written a line.
3 · Kenneth holds the only POS admin login and is leaving in January. Why does that fact only come out once trust exists?
Ask who holds the admin login cold and you get "our IT guy". Ask it after the walk-throughs, with the teach-backs in between, and you get the name and the date. On the bench it is worth 4 points behind a gate of 3.
What this session teaches, and where it came from
Every fact on this page, and its verification tier, is recorded in the course's source map.
Session 2 cheat sheet · pin this
Session 3 puts every box on tonight's map on the bench and prices it. The two-day settlement gap, the refunds that live only in accounting, the three stock copies, the vendor API nobody has used, Kenneth's login: each is worth a number of points on Adeline's sheet, and the order you ask in decides which of them come out in 45 minutes. You also sort the whole question bank by kind, see what the five leading questions put in your notes, and run your own meeting against her.