Situational Awareness

by breeve 11. September 2010 10:05

I have an obsession with looking at airplane accident reports because my brain has a hard time grasping why pilots crash. Looking at the NTSB reports, I noticed many had unexpected engine failure but the most surprising ones are called controlled flight into terrain. This a nice term for a pilot flying into a mountain.

Of course the pilot doesn’t intentionally fly into the mountain but rather does so when flying in what is called Instrument Meteorological Conditions or IMC. IMC means you are flying blind—visibility is nothing because of clouds—and you have to rely solely on your instruments.

To fly in these conditions a pilot must have an IFR or Instrument Flight Rating. But what commonly happens in these accidents is VFR or Visual Flight Rated pilots accidentally—or shockingly sometimes intentionally—find themselves in IMC conditions. Whether they find themselves there because of overconfident egos or from a quick moving cold front, the result is the same. Either they fly into terrain or loss of control occurs followed by a tight spiral into the ground.

But crashing in IMC is not limited to VFR pilots. Experienced IFR pilots flying in IMC crash also. In both cases, the cause is usually attributed to loss of situational awareness which means the pilot can’t tell up from down or left from right.

And what separates the alive IMC pilots from the dead ones is the alive ones never lose situational awareness. This is accomplished not by super human flying ability but by making little adjustments and always understanding what the airplane is doing. Airplane banks a little to the left; correct with opposite aileron. Airplane losing altitude; correct with more power. Little changes not big drastic ones allow the pilot to know what the airplane is doing.

Just like pilots, programmers must understand what the code is doing at all times and the only way to understand what the code is doing at all times is to make little changes. Make too drastic of a change without fully understanding how the code will react is like closing your eyes for 5 minutes in an airplane in thick clouds and then trying to gain control.

I have seen inexperienced and sometimes experienced programmers make big code changes and get frustrated by having the code react in unexpected ways. The clues usually come by overhearing: “I don’t know why it is doing this” or  “I only changed this one thing and now it is doing this weird thing”. The frustration mounts and in my mind I can see the airplane starting to spiral to the ground. In desperation, they try to solve their problem by making more changes in the hope one will magically work when in reality situational awareness is lost and the airplane is seconds from impact. No amount of yanking on the yoke of the airplane is going to save them or their code.



Powered by BlogEngine.NET
Theme by Mads Kristensen

About Me

I am a Principal Engineer with 16 years experience developing and releasing software products. I started developing in C/C++ then moved into .NET and C#. Currently working in Python/Flask and Docker. Have tech lead multiple projects. I have developed products in Windows Forms, ASP.NET/MVC, Silverlight, WPF, and Python. I currently reside in Austin, Texas.

Own Projects

Pickaxe - An easy to use web page scraper. If you know a little SQL and how basic CSS selectors work, no web scraping product will be easier to use.


FligthQuery - Query FlightAware FlightXml API with SQL


Created ASP.NET MVC forum originally targeting home owner associations but now in use by an investor group.

Currently Reading