Branch

Controlled Vocabularies

Human dan

I'm interviewing for a senior engineer position and would like to do some light interview prep. The team I'd be joining is migrating and modernizing a legacy application. That application is used by organizations around the world, so it is key that the migration is smooth and painless.

Responsibilities

  • Support legacy data migration efforts
  • Prepare and validate customer data for migration
  • Execute and monitor data load activities
  • Investigate and resolve migration related activities
  • Implement fixes and enhancements to migration tooling and related application code
  • Deliver minor user interface improvements to support migration workflows.
  • Conduct code reviews and ensure code quality standards
  • Solve complex technical problems and identify practical solutions
  • Collaborate with stakeholders on migration priorities and outcomes

Qualifications

  • 4+ years of software dev experience
  • Python (Django): Strong experience building and maintaining server-side applications. Comfortable with Django management commands, ORM bulk operations, transactions, and service-layer patterns. Experience with the data migration domain (ETL, data mapping, checkpointed jobs) is a plus.
  • Data migration and ETL: Hands-on experience moving structured data between systems. Familiarity with XML/CSV parsing, metadata schemas, controlled vocabularies Controlled Vocabularies You are here
This branch begins here Controlled Vocabularies
Human dan

What are examples of "controlled vocabularies"?

AI gpt-5.6-terra

Controlled vocabularies are predefined, governed sets of allowed values used to keep data consistent across records, systems, and organizations. Rather than allowing free-text input like "urgent", "Urgent", "HIGH PRIORITY", or "ASAP", a system requires one approved value such as high.

Common examples:

  • Status values
  • draft, active, inactive, archived
  • pending, approved, rejected

  • Priority levels

  • low, medium, high, critical

  • Country and region codes

  • ISO 3166 country codes: US, GB, DE, JP
  • Subdivision/state codes such as US-CA

  • Languages

  • ISO language codes: en, fr, es, de
  • Locale codes: en-US, en-GB, fr-CA

  • Currency codes

  • ISO 4217: USD, EUR, JPY, GBP

  • Date and format identifiers

  • A defined set such as ISO-8601, MM/DD/YYYY, DD/MM/YYYY
  • In practice, migrations should generally normalize dates into one canonical format rather than retain a format label.

  • Product or account types

  • individual, business, nonprofit, government
  • standard, premium, enterprise

  • Document or record classifications

  • invoice, purchase_order, contract, receipt
  • public, internal, confidential, restricted

  • Industry-standard domain vocabularies

  • Healthcare: ICD-10 diagnosis codes, SNOMED CT concepts, LOINC lab-test codes
  • Libraries/archives: Library of Congress Subject Headings, Dublin Core metadata terms
  • Geography: GeoNames identifiers
  • Education: standardized subject or grade-level codes

  • Internal organizational vocabularies

  • Department codes: ENG, FIN, HR, SALES
  • Migration source-system labels: legacy_crm, erp_v2, manual_import
  • Data-quality disposition values: valid, needs_review, invalid, unmapped

In a migration, controlled vocabularies matter because legacy systems often contain inconsistent free-text values. A migration pipeline may map variants into canonical target values:

PRIORITY_MAP = {
    "urgent": "critical",
    "asap": "critical",
    "high priority": "high",
    "med": "medium",
    "normal": "medium",
    "low": "low",
}

A senior-level answer would also mention what happens when a value is not recognized: do not silently guess. Record the original value, flag or quarantine the row, report it clearly, and use an agreed mapping or stakeholder decision before loading it into the target system.

Explore conversation