Falsehoods programmers believe about aviation
Nature and Purpose of “Falsehoods” Lists
- Many comments see this as part of the broader “falsehoods programmers believe about X” genre: a way to surface hidden assumptions that quietly bake bugs into systems.
- Others stress they’re best used as design and test inputs: each bullet should suggest unit/integration tests or schema constraints to reconsider.
- There’s debate about tone: some perceive a “you’re dumb for not thinking of this obscure edge case” vibe; others argue the article is neutral and that calling out non‑obvious edge cases is important, especially for users off the “happy path.”
Aviation Is Messier Than Naive Models
- “Flights take off and land at airports” fails with bush planes, seaplanes, heliports, informal strips, rivers, lakes, golf courses, hospital pads, etc.
- Flights don’t always have schedules (private, charter, medevac, ad‑hoc returns) and can divert multiple times, even back to the origin.
- Gates, runways, and airports move, are renumbered (e.g., due to magnetic drift), or get reused identifiers. Bus stops and train stations can get IATA codes; even a Martian crater has an ICAO code.
- Altitude is not straightforward: barometric vs true, AGL vs MSL, negative airport elevations, and ADS‑B typically broadcasting only barometric altitude.
Identifiers, Codes, and Data Modeling
- No single time‑invariant aircraft ID exists; combinations like manufacturer + model + serial are used, but even those can be ambiguous or change.
- Tail numbers, registrations, and 24‑bit transponder addresses can all change or move between airframes; engines are separate, swapped components.
- Call signs can change mid‑flight (e.g., when the “Air Force One” condition ceases).
- Programmers discuss schema patterns: surrogate vs natural keys, UUIDs vs composite temporal keys, and modeling airport codes/names/locations as versioned time series.
- A prominent example: reassignment of a live IATA code between two active airports broke widespread assumptions.
Humans, Systems, and Edge Cases
- Several comments frame this as “map vs territory”: aviation practices evolved long before software, so real-world conventions don’t match neat schemas.
- Programmers tend to assume uniqueness and immutability because machines require strict rules, but human systems don’t reliably supply them.
- Some argue the real lesson is: assume “everything changes, nothing is unique,” be wary of over‑constraining data, and expect that rare cases will dominate support and debugging effort.