DEV Community

Thomas Mueller
Thomas Mueller

Posted on

The Day Two 747s Collided — And What It Teaches Us About Decision-Making in Software Engineering

March 27, 1977. The weather at Los Rodeos Airport on Tenerife was terrible—fog so thick you could barely see the runway. The airport was jammed with diverted flights, and two Boeing 747s—the largest passenger aircraft in the world at the time—were taxiing on the same strip of asphalt.

One was operated by KLM, the other by Pan Am. Due to a cascade of misunderstandings—ambiguous radio calls, poor visibility, and mounting pressure to depart—the KLM captain began his takeoff roll while the Pan Am plane was still on the runway.

Seconds later, in near-zero visibility, the two giants collided. 583 people died in what remains the deadliest accident in aviation history.

Why It Happened

Investigators didn’t find a single, obvious cause—it was a chain of small human and system failures:

  • Ambiguous communication — The KLM crew believed they had takeoff clearance when they didn’t.
  • Pressure and fatigue — Delays, weather, and crew duty limits created urgency to act quickly.
  • Loss of situational awareness — Neither crew had a complete mental picture of where everyone was on the foggy runway.

The Parallel in Software Engineering

Please reflect: Do you see any parallels to your projects in software engineering?

Most software failures don’t happen because someone makes one giant, obvious mistake. They happen because small misunderstandings and hidden pressures line up just right:

  • A vague Jira ticket leaves two teams implementing incompatible solutions.
  • A release goes ahead because “we’ve already delayed this twice” despite last-minute concerns.
  • An ops team deploys a new release, errors show up in logs and dashboard but nobody reacts because they are buried below the constant noise.

In both aviation and software, decisions made under pressure, without shared context, can have outsized consequences.

Takeaways for Engineers and Teams

  • Make communication unambiguous – Whether it’s code reviews, deployment handoffs, or on-call escalations, confirm the message was understood exactly as intended.
  • Resist false urgency – Pressure can cloud judgment. Pause to recheck assumptions before committing to risky actions.
  • Share mental models – Use runbooks, visualizations, and briefings so everyone sees the same “big picture” before acting.

The Tenerife disaster permanently changed aviation communication standards, introducing unambiguous phraseology like “takeoff cleared” and requiring readbacks. In software, we can— and should— adopt similar clarity and shared understanding in our own high-stakes moments.

I explore the Tenerife accident and other aviation cases in my book Code from the Cockpit, connecting them directly to engineering culture and decision-making. It’s free on Amazon this weekend if you’d like to read more.

Read the full book for free on Amazon

Top comments (0)