Aviation in Software Engineering: Aviate, Navigate, Communicate
One of the most amazing inventions of humanity are the flying machines. Since the inception of flight controls by the Wright Brothers over a century ago, to the longest commercial flight in the world connecting New York to Singapore, humanity has learned a lot about how to make, maintain and operate aircrafts. Why is it that many things done in aviation, which almost always ends up saving lives, isn’t done anywhere else?
Whenever you start learning to fly (for real, in Flight Simulator or for drones), you’ll quickly learn one of the most sacred mantras anyone in the aviation industry memorizes to heart: Aviate, Navigate, Communicate.
This simple yet powerful directive can be summarized as:
- Aviate: maintain control of the aircraft and keep it in the air
- Navigate: find out where you need to go and how to get there
- Communicate: let traffic control and anyone around knowwhat you’re doing and what you’re planning to do
When flying, and specially during moments of crisis, remembering and following this directive has proven to be key for saving lives.
In an emergency, traffic control is there to help in any way and all ways possible (and imaginable): move other planes out of your way, help you find the nearest airport, get a more experienced pilot on the radio, have another plane find you, check if something’s wrong with your fuselage, land on a military base… hell, they might even be able to get a fighter jet to tail you if it’s really necessary.
As a pilot you learn to hate and respect traffic control, but most importantly: you learn to trust them, because they’re not only making sure rules are followed and the sky is safe… they’re there to help you, even if it doesn’t feel like it.
In software there’s always the need to keep everybody in sync: people who decided what to build, the people who build it and (most of the time) the people who will use it. Sounds great in principle but… what if that software has been shipped and something breaks?
When something goes wrong with code that is already out in the wild, you’ll usually see a bunch of people worried. Everybody will want to know what’s going on, why it happened, and when it’ll get fixed. This is where the Aviate, Navigate, Communicate mantra can be very useful: if you picture software as an aircraft, and the development team as the pilot, it’s evident what needs to happen.
When a software company is inevitably under stress due to downtime or critical bugs, development teams should be treated as pilots and managers as traffic control . Radio silence is expected, and unless proven otherwise, it’s good. Everyone else must be able and available to help in any way possible and as requested by developers.
While it can be terrifying for everyone not to know what’s going on, developers’ time should be focused on the aviation mantra:
- Aviate: stabilize the project
- Navigate: figure out how to find and fix the root problem
- Communicate: let everyone know what should be the next steps
Only once the imminent danger has passed, can communication start to take place. No matter what’s going on, anything that is not helping to solve the problem must be treated as noise. The crew must solely focus on the task at hand, and the control tower must only ask what the crew needs and get it for them - not the other way around.
The cool thing about this is you can apply these principles to almost anything in professional and personal life, and as long as the people you’re working with understands and applies them, the organization can work as well oiled machine. Beautiful.
And I’m not just making this up. It’s been applied (somewhat) to real-life, real-software development enterprises: there’s this interesting read from the folks over at Turing that recounts the experience of an Executive Director applying this to their thought process, as a way to simplify the decision making for when the pandemic hit and forced everyone to adapt to the “new normal”.
Applying this idea to software development, project management, lawmaking, accounting, sales, marketing, or many other areas, is probably one of the best things to do to improve the process of handling tough circumstances, improve decision making and, as Reed Hastings probably would agree, trust in the freedom and responsibility of your employees or coworkers… because otherwise, why did you hire them in the first place?