Random Thoughts on Leadership & Software Engineering

Aviate, Navigate, Communicate

cockpit

"Aviate, Navigate, Communicate" is a foundational principle in aviation that guides pilots in prioritizing tasks, especially under pressure or in emergency situations. The phrase serves as a mental checklist to ensure that the most critical actions are handled in the correct order.
"Aviate" means maintaining control of the aircraft above all else—ensuring stable flight by monitoring attitude, altitude, and airspeed. No matter what distractions or problems arise, flying the aircraft must always come first. A loss of control can be fatal, so pilots are trained to instinctively focus on this step before anything else.

Once the aircraft is under control, the pilot can move on to "Navigate," which involves determining the aircraft's current position and intended route. This may include consulting charts, instruments, or GPS to establish a safe course or alternate destination.
After navigation is addressed, the final step is "Communicate," where the pilot contacts air traffic control or other relevant parties to report their situation and request assistance or instructions. This structured approach prevents information overload and helps ensure that decisions are made in a calm, logical sequence—even in high-stakes situations.

In software engineering projects we usually have the reverse order:

That is OK for normal phases of a project, since it ensures proper communication and planning happens before we commit to any work.
What I see in critical phases, though, is when the going gets tough, when a deadline or a release looms or when we have to resolve a critical issue we drawn ourselves in communication (you can tell a priject is not going well by the frequency of status meetings with higher management) and rarely get to plan actions or even get down to actions and get ourselves out if a critical situation.
It is a kind of management catatonic spasm that seizes action when danger is clear and present.

So next time when you lead a software engineering project and you face a difficulty remember - aviate, navigate, communicate - let the engineers do their work, check whether the progress is with the right pase and direction and cut down communication to the necessary minimum, so they can concentrate on what matters.