Skip to main content
Data Governance Basics

Field Names That Read Like a Menu

Let's be honest: most data dictionaries are dead on arrival. Someone builds a spreadsheet with 200 rows, shares it once, and nobody looks at it again. But it doesn't have to be that way. A data dictionary can actually be useful—if you design it like a menu. Menus aren't just lists of ingredients. They're curated, they're readable, and they help you choose. The same principle applies to field names: clear descriptions, practical examples, and a layout that makes sense to a human. Who Needs to Own This Dictionary, and When Do You Decide? Every team touches field names eventually The data dictionary is not an IT artifact. It's the shared language between a salesperson typing cust_id into a CRM and an analyst joining it to CustomerID in the warehouse. Both think they mean the same thing. Until the join fails.

Let's be honest: most data dictionaries are dead on arrival. Someone builds a spreadsheet with 200 rows, shares it once, and nobody looks at it again. But it doesn't have to be that way. A data dictionary can actually be useful—if you design it like a menu. Menus aren't just lists of ingredients. They're curated, they're readable, and they help you choose. The same principle applies to field names: clear descriptions, practical examples, and a layout that makes sense to a human.

Who Needs to Own This Dictionary, and When Do You Decide?

Every team touches field names eventually

The data dictionary is not an IT artifact. It's the shared language between a salesperson typing cust_id into a CRM and an analyst joining it to CustomerID in the warehouse. Both think they mean the same thing. Until the join fails. Or worse—it succeeds, silently, and the revenue number ends up off by a factor of ten. I have watched a marketing team spend three weeks reconciling a campaign report because opt_in meant Boolean in one system and a timestamp in another. They weren't sloppy. They just had no owner to say: this field means this, exactly this, from today forward.

The decision on who owns that dictionary matters more than which tool you pick. Wrong order—tool first, owner later—is how you get a carefully formatted wiki page that nobody updates after month two. That sounds harsh, but it's the pattern I see again and again.

The cost of delaying the decision

Every week you wait, the problem compounds. New fields appear in dumps, old ones get repurposed, and nobody writes it down. The catch is that delaying feels free. It's not. Each undocumented field is a small tax on every future query, every onboarded analyst, every cross-team meeting where someone says “let me check what that actually stores.” That tax compounds quietly, then surfaces as a single catastrophic mistake—like the time our finance team pulled price from the wrong table and reported a gross margin of 112%. That number was nonsense, but it took three days to prove it.

Delaying also hardens bad habits. Once a team has invented five different spellings of created_at, they get territorial about their version. Ownership becomes a political fight instead of a logistics question. You want that fight early, when the dictionary is still 40 fields, not 4,000.

“Nobody wants to own the field name dictionary until the day a bad join costs them their bonus.”

— data engineer, after explaining a three-day reconciliation to a slacktivist CEO

So the right moment to decide is now—before the next schema change, before the next export lands in a shared drive. Not “when we have time.” That moment doesn't exist.

A quick exercise to force the conversation

Grab five people from different teams. Give them the same list of ten raw field names, no definitions. Ask each person to write what they think it means. Compare results. I have run this in four companies, and the answers match maybe 30–40% of the time. That mismatch is your dictionary’s first draft and your ownership mandate in one go. Someone has to reconcile those answers—that someone is the owner.

Start with the busiest person you can find, because they feel the pain fastest. Or the most detail-oriented one, because they will keep the glossary alive past the honeymoon. The title doesn't matter. The willingness to say “this field means this, full stop” does. That's the entire job description. The rest is just formatting.

Spreadsheets, Wikis, or Code Repos: The Actual Options

Spreadsheet-as-dictionary

Most teams start here. One tab for table names, another for column definitions, a third for owners. You can sort, filter, and chase down gaps with a quick glance. The trap? Spreadsheets go stale the moment someone forgets to update them. I have seen a marketing analyst query cust_id while engineering renamed it to customer_identifier two sprints ago — nobody noticed for three weeks.

Version control is the sore spot. Two people editing the same sheet leads to overwritten cells and silent contradictions. The catch is that a spreadsheet rewards convenience, not discipline. Great for a 10-table startup, brutal for anything beyond fifty columns. No audit trail, no review workflow, no way to stop someone from formatting a date column as text. Again.

Wiki page vs. static document

A wiki feels more official. You get history, comments, and a semi-structured navigation tree. Someone can append a note like "deprecated — use order_total_net" right next to the offending field. That beats a PDF handout, honestly. But wikis invite a different failure: people treat them as suggestion boxes, not source-of-truth. The page grows, sections contradict each other, and the last person to touch it was an intern in June.

Static documents — Word, Google Docs — are worse. They're snapshots, frozen in time. The moment code changes, the doc lies. Worst part is discovery: nobody remembers where the file lives. I have watched a data engineer spend half a day searching shared drives for a field definition that existed in three different documents, all slightly wrong.

Living in your codebase

This one earns its keep. Field names defined in YAML, JSON Schema, or SQL COMMENT statements, checked into version control. Every change gets a pull request, a review, an approval. You get diff history, rollbacks, and a direct link between the dictionary and the code that actually reads the data. That linkage is the real prize — when someone renames a column, the dictionary changes in the same commit. That's a beautiful thing when it works.

Wrong tool, wrong time costs a week of detective work. Right tool, right time costs an hour of setup.

— data lead, mid-sized retail company

Downside is real: the learning curve. Non-engineers — analysts, compliance folks — often find a repo intimidating. They don't want to open a terminal to check whether discount_pct means a decimal or a whole number. So you end up with a secondary view: a generated HTML page or a lightweight table that reads from the same source files. That duplicates maintenance unless you automate the export. And automation is its own project.

What usually breaks first is ownership. A codebase dictionary assumes someone merges changes reliably. If the gatekeeping is loose, definitions drift. But even with heavy process, this beats a spreadsheet. You know what changed, who changed it, and why — even if the "why" takes a follow-up message. That's more than the other two options give you.

What to Look For When You Compare Tools

Edit friction matters more than you think

The best data dictionary in the world is useless if nobody updates it. That sounds obvious, but watch what happens in practice: a new field appears in the API, someone finds the wiki page, and the edit form demands a category, a steward name, and a justification. So they skip it. The dictionary goes stale in two weeks, and you're back to asking the data engineer what cust_type really means. Every extra click between "I know the answer" and "the answer is saved" is a tax on future accuracy.

Not every data checklist earns its ink.

Not every data checklist earns its ink.

What you actually want is the lowest-friction path that still preserves some structure. I have seen teams swear by a plain-text file in the repo because the person who adds fields is the same person who writes code. That beats a fancy tool nobody opens. The catch is that plain text does nothing to prevent typos or conflicting definitions—someone will eventually write user_id in three different formats and call it consistent.

A good test: time yourself editing a definition. If it takes longer than 30 seconds to add a new field with a description, the friction is too high. Shortcuts matter—autocomplete, copy-paste from a pull request, or a simple form that remembers your last steward. The tool should feel like a scratchpad with guardrails, not paperwork.

Version history and approval workflows

You will make mistakes. The question is whether you can see what changed and who changed it. A wiki with no revision history is a liability—someone rewrites a definition, and you can't tell if the change was deliberate or a clumsy autocorrect. Version history is non-negotiable, but approval workflows are a separate decision.

Here is where teams split. Some want every edit approved by a data steward, which sounds safe and is often just slow. The edit sits in a queue for three days, the requester forgets why they needed it, and the workflow becomes a joke in standup. Others allow anyone to edit and rely on weekly reviews to catch nonsense. That works until a new hire defines revenue as "money we made" and half the dashboards inherit the ambiguity.

The middle path is simple: require a steward for new fields, allow free edits on descriptions, and send an automated diff digest to a Slack channel. That keeps the critical metadata—names and definitions—from drifting while letting anyone fix a typo without permission. And if you're comparing tools, check whether "approval" can be scoped by field type. Most can't. That's not a dealbreaker, but it should shape your rollout plan.

Access controls for sensitive fields

Not every field is public. A customer ID, an email address, or a salary column has no business being described in a tool that everyone in the org can browse with their Okta login. The uncomfortable part is that your dictionary will reveal sensitive data patterns—the name of a column often tells you what it holds. That makes access controls part of the security model, not an admin preference.

Look for three layers: who can view, who can edit, and who can export. View-only access for most people is usually enough. Export is the dangerous one—a spreadsheet of all field definitions and descriptions can be exfiltrated or accidentally shared. I would disable export for anyone outside the data team until you trust the tool's audit log. Also, check whether the tool masks descriptions for restricted fields or simply hides them. Hiding is safer.

One more thing that gets overlooked: the search index. If your dictionary tool has a global search, sensitive field names may surface in results for users who can't access the full record. Test this with a dummy field before you commit. The trade-off is real—tight access controls mean fewer people can contribute, and your dictionary loses that "everyone owns it" energy.

A dictionary is only as good as the last edit someone bothered to make. If the tool fights that edit, you lose the definition.

— data platform lead, after a three-tool bake-off

Finally, ask about bulk import and export. You will migrate from a spreadsheet or an old wiki, and manual re-entry is a guarantee of dropped fields. Most tools let you paste a CSV and map columns to fields—run that test with your actual file before paying for anything. If the import chokes on your messy headers, the tool is not ready for your reality. And when you compare costs, remember that the cheapest option with painful editing loses you a day every time someone has to fix a definition. That day is not free. It just doesn't show up on the invoice.

A Side-by-Side: The Good, the Bad, and the Ugly

A simple comparison table

Spreadsheets, wikis, code repos—each one solves the same problem differently. The spreadsheet is the default. Everyone knows it, everyone has it, and it takes about four minutes to set up. Wikis feel more permanent, more written-down. Code repos are for teams who already live in Git and can't imagine writing documentation anywhere else.

The table below is the honest version, not the vendor pitch.

  • Spreadsheet: fast to start, slow to trust. Permissions are weak, history is messy, and merging two versions is a nightmare.
  • Wiki: readable and searchable, but structure drifts. Six months in, nobody agrees which page holds the source of truth.
  • Code repo: clean versioning and review workflows, but you pay for it. Non-technical folks freeze at pull requests.

Each tool fails at a different seam. Spreadsheets fail when two people edit the same row. Wikis fail when the org chart changes and the owner ghosts. Code repos fail at the moment of onboarding—when a data steward opens a terminal and thinks, I signed up for data governance, not DevOps.

When each option shines

Spreadsheets win when you need a working answer by Friday. A small team, three data domains, nobody overthinking it. I have watched a single-sheet dictionary keep a company alive for two years. Ugly, sure, but it worked.

Wikis make sense once the dictionary becomes a reference document—something people actually read. The search works. The navigation is sane. That said, wikis are a magnet for outdated entries. Someone updates a field name in production, forgets the wiki, and the whole page quietly rots.

Code repos are the pick when governance is already a discipline. Review cycles, changelogs, blame—all built in. The catch is the barrier. Data owners who don't code won't markdown, and no amount of training changes that. Wrong choice of tool here, and the dictionary becomes a graveyard of unmerged pull requests.

The hidden costs nobody lists

Licensing is the visible cost. The invisible one is attention. Every tool demands upkeep: a permission review, a structure cleanup, a migration when the team outgrows it. What usually breaks first is the workflow around the tool—not the tool itself.

You will also spend time fighting the tool's limits. Spreadsheets cap out around a few thousand rows before they lag. Wikis let anyone edit and then you lose the audit trail. Code repos punish a simple typo with a review queue that lasts three days. None of this appears on the price tag.

Field note: data plans crack at handoff.

“The best tool is the one your data owners will actually open. Everything else is a preference for failure.”

Field note: data plans crack at handoff.

— data architect, after three migrations

That's the real trade-off. Pick the tool that matches your team's habits, not the one that looks most professional in a slide deck. Wrong order, and you will spend next quarter explaining why the dictionary is empty.

From Decision to Done: A Step-by-Step Rollout

Start with one table, not a grand overhaul

Pick the messiest table you have. The one where the sales team calls a customer cust_id, finance calls them customerNumber, and the data team quietly renamed the column client_ref last spring. That table is your pilot. Not the warehouse. Not the whole lake. One table.

I have watched teams burn two months building a "complete" enterprise dictionary, only to discover nobody agreed on what complete even meant. Meanwhile, a team that documented twenty columns in one afternoon shipped something usable by Friday. The catch? They started ugly. Their first version had typos, a missing definition, and one argument about whether status meant order state or payment state. It still worked — because people could finally point at something real.

Document fields as you go, don't boil the ocean

Write the definition while you're already in the code. Nobody goes back to document a field they finished three sprints ago — that's fiction. Instead, keep a markdown file open next to your schema editor. When you add a column, you type the name, the meaning, and one example value. Thirty seconds. That's the whole process.

The trick is making it painless enough that lazy people do it. A wiki with a nine-step approval workflow will die on arrival. A shared repo where anyone can push a one-line change? That survives. We fixed our own rollout by adding a validation script that flagged undocumented columns during CI — not as a block, just a warning. Within two weeks, documentation became part of the definition of done. Nobody wrote a policy. The script did the nagging.

What usually breaks first is the "one source of truth" fantasy. Your codebase comments, your BI tool, and your dictionary will disagree for a while. That's fine. Wrong order: demand perfection, then roll out. Right order: release v1, tell people it's v1, and fix the seams as they appear.

Get feedback early and iterate

Show the draft to the three people who complain the loudest about data messes. Not your manager — the actual analysts who write the SQL. Their reaction tells you everything. If they say "this helps," you're on track. If they say "you forgot what region means in the EU table," you just saved yourself a sprint of rework.

One question to ask yourself at the end of week one: can a new hire find the meaning of churned_at without asking three coworkers? If yes, you win. If no, adjust the format — maybe your definitions are too academic, maybe the search is broken, maybe nobody knows the dictionary exists. That last one kills more initiatives than any technical problem.

  • Block thirty minutes before your next sprint planning to add five fields.
  • Appoint one owner per table — not per dictionary, per table.
  • Delete entries nobody uses after sixty days. A graveyard of old terms confuses more than an empty page.

The rollout ends when your newest hire stops asking "what does this mean?" in Slack. That's not a metaphor — that's the actual test. Everything else is ceremony.

What Happens If You Skip This or Choose Badly

Duplicate columns and the 'what does this mean' emails

The first sign of trouble is almost always the same: someone asks you, in a slightly apologetic tone, which version of the customer count is the real one. You check the spreadsheet. There are two columns, both labeled "total," both holding different numbers. One of them rounds up. The other doesn't. Nobody remembers why.

That question costs you ten minutes. The follow-up costs another twenty. Multiply by every report your team produces each month, and you're not losing hours anymore — you're losing a full workday, every single week, on the same conversation. I have watched teams burn an entire sprint just reconciling what should have been a trivial figure. The fix is boring. The absence of the fix is not.

Worse is when the duplicate columns multiply. Someone adds "net_rev" to one sheet, "Net Revenue (final)" to another, and "NETREV_FINAL_v2" to a third. They all point at the same business metric, but each one carries a slightly different rounding rule or a forgotten filter. Your data dictionary would have caught that on day one. Without it, you're choosing which version of the truth you want to believe, and you will usually pick the one that flatters your forecast.

"The spreadsheet is not the problem. The absence of a shared definition is the problem, and the spreadsheet is just where that absence shows up."

— a former colleague, after her team shipped the wrong quarterly numbers

Conflicting definitions across teams

Marketing counts a lead as anyone who fills out the form. Sales counts a lead as only those who have budget and authority. Both teams produce dashboards. Both dashboards say "new leads this week." The numbers differ by a factor of three. The meeting about which one is correct takes ninety minutes, and nobody changes their mind.

The real cost is not the meeting. It's the decisions made after the meeting, based on whichever number felt more convincing in the moment. If sales underreports, you under-hire. If marketing overreports, you over-spend. Either way, the organization is steering with a broken compass, and it doesn't even know the needle is loose.

Most teams skip this until a customer-facing report contradicts a finance statement. That moment arrives with an email to the CEO, and suddenly, everyone cares about definitions. Too late — the dictionary should have been the foundation, not the emergency repair. The catch: once you rush a dictionary together in a panic, you bake in the confusion you were trying to fix, because nobody has time to question the labels.

The long-term cost of inconsistency

Short-term, you lose hours and patience. Long-term is worse. Every dataset you ever build assumes that "revenue" means the same thing everywhere. When it doesn't, the joins get messy, the pipelines get patched, and the patches get their own patches. I have seen codebases where the same field has three different names across five tables, and the only person who knew the mapping left the company eighteen months ago.

Odd bit about warehousing: the dull step fails first.

That's the worst outcome: institutional amnesia. Your data still exists, but its meanings have drifted so far apart that nobody trusts the system. The reports get ignored. The spreadsheets come back. The cycle restarts, only now with a warehouse and a dashboard tool, which just makes the misinformation move faster. Wrong data at speed is not an improvement.

Odd bit about warehousing: the dull step fails first.

The ruthless trade-off is this: building the dictionary takes three days, maybe five. Skipping it costs you a day per week, forever. There is no scenario where the math favors ignorance. And if you pick a terrible tool — some wiki the team never opens, or a repo nobody can write to — you get the same outcome as having nothing at all, just with a slightly more respectable UI. Fix the process, not the platform, or you'll just be documenting your own confusion.

Quick Answers to the Questions You're Too Embarrassed to Ask

Isn't our database schema enough?

Your schema tells you a column exists. It doesn't tell you what the column means. A field labeled status could be anything—order state, account flag, or something a contractor added in 2019 and never documented. That silent ambiguity is exactly where data quality goes to die. I have watched two senior analysts burn three days each because one read active as "live subscription" and the other read it as "has ever logged in."

The schema is the skeleton. The dictionary is the muscle and skin—it explains why the bone sits there, which teams can touch it, and which definitions are actually trusted. Without it, you get bones arranged by accident.

What if we have no data team at all?

Then start smaller. A dictionary for five crucial fields is better than a perfect dictionary for none. You don't need a data architect or a dedicated steward to make this work; you need one careful person who asks "what does revenue mean here?" and writes down the answer in plain English.

The pitfall is overengineering this from day one. Teams with no data team usually have no dictionary because they think the project demands governance committees, approval workflows, and a shared platform. Wrong. A shared spreadsheet with three columns—field name, definition, and owner—beats an unused enterprise tool every time. What usually breaks first is momentum, not infrastructure. Keep it scrappy, keep it visible, and let it grow as your questions do.

Update it every time someone asks a definition question twice. That's your trigger. Twice means ambiguity is spreading.

The dictionary should change less often than your schema—but more often than your org chart.

— note I keep pinned above my own desk

How often should we update the dictionary?

Not monthly. Not quarterly. Update it when a definition changes, when a field gets repurposed, or when a new field goes live. Calendar-based reviews produce tidy timestamps and stale content; event-based updates produce a tool people actually trust. The catch is that "event-based" requires someone to notice the event.

That someone is usually an analyst who just got burned by a wrong interpretation. So make the fix cheap: a comment, a one-line edit, a quick ping in the team chat. If updating feels like filing paperwork, nobody will do it. If it feels like correcting a typo, it becomes a habit.

For the love of process, don't schedule an annual "data dictionary audit" and call it done. That's how dictionaries die—they ossify into irrelevant relics that everyone ignores but nobody deletes. Here is a blunt rule: if a field has not been referenced in six months, either archive it or fight to delete it. Dead entries create noise; noise kills trust.

What happens if you never touch it after launch? The dictionary slowly drifts from reality, people notice, they stop checking it, and you're back to guessing what status means. Honestly—that drift is the real enemy. Not the initial build, not the tool choice, not the owner. Just the slow decay of attention. Set a reminder for six weeks after you launch, review what broke, and adjust from there. That single review usually saves the whole practice.

The Bottom Line, Without the Bells and Whistles

A clear, no-hype recommendation

Skip the fancy data catalog tools. Skip the AI-powered auto-classification. Buy a wiki — or open a shared spreadsheet if you’re under twenty people — and start listing field names today. That’s the whole strategy. The tool matters less than the act of writing things down in one place where everyone can look. I have watched teams burn three months evaluating software while their customer address field stayed named cust_addr_2 in one system and shipping.street in another.

The catch is that boring tools get abandoned fast. A wiki with three pages of definitions dies quietly. The fix is not better software; it’s making the dictionary part of your code review checklist. When someone merges a pull request that introduces a new field, they add it to the list first. No exceptions. That single rule keeps the dictionary alive without anyone “managing” it.

“You don't need a governance committee to agree on what ‘user_id’ means. You need a place where the answer survives longer than the person who knows it.”

— senior data engineer, post-incident retro

Your first step this week

Pick the five fields that appear in every report — likely customer_id, order_date, status, amount, and email. Write down what each means in plain language. One sentence. Then list which system is the source of truth. That’s it. Twenty minutes of work.

Most teams skip this because it feels too small to matter. The truth is that five definitions will immediately surface arguments nobody knew they were having. Your finance team calls it net_revenue. Your product team calls it gross_take. They're the same number, but every cross-team report has been reconciling them manually for years. Wrong order — you should have caught this before the schema froze.

Why starting small beats waiting

Waiting for the perfect governance framework is just procrastination with better stationery. Start with the messy spreadsheet. It will be ugly. It will have conflicting opinions about date formats. That discomfort is the point — it forces the conversation while the damage is still small, before you have forty tables depending on ambiguous names.

What usually breaks first is not the documentation itself but the trust in it. Someone updates a definition without telling anyone. The fix is a change log column and a ten-second mention in the weekly sync. Honestly—that’s the entire infrastructure requirement.

One concrete pitfall: don't put the dictionary in a code repo unless the whole team lives in pull requests daily. Analysts won't open GitHub to check a column meaning. They will guess. And guessing is exactly what you're trying to kill. Keep it where the people who need it already work.

So here is the action: this week, write the five definitions. Next week, add the next five. In a month, you have a working dictionary that already prevents more errors than any software rollout ever would. And when you outgrow the spreadsheet, migration is trivial — you're exporting rows, not reconstructing wisdom from memory.

Share this article:

Comments (0)

No comments yet. Be the first to comment!