Why Pilots make good Programmers

Why Pilots make good Programmers

Introduction

Have you ever sat at a computer and said “Why did it do that, What is it doing now”?. I sure you’ve heard the joke about the Airbus pilot saying the same thing, right? Truth is it is only doing what you instructed it to do. So who instructs a computer to do a task in a certain way? Well Computer Programmers, Developers, Software Engineers, Coders, Geeks. All the same name for someone who uses punch cards in the old days or types in code to give a computer a set of instructions to complete a given task. This is termed software and the art of writing these instructions is called software development. Software development actually has its root way back to 1948 where a computer scientist by the name of Tom Kilburn from the University of Manchester in England write the first ever program for a computer named the Manchester Small Scale Experimental Machine which was programmed to perform basic mathematical calculations using machine code. It took 52 minutes (yes 52 minutes) to compute the greatest divisor of 2 to the power of 18 (262,144). Just imagine that in the modern world of fast paced readily available information.

The first ever language used to program computers was a language called Fortran orginally developed in 1957 (A staple for engineering students to this day). This followed on by languages such as Pascal, C, C++, and COBOL, all of the languages I learnt to code with when I was starting out my career as a programmer, no I am not that old. Like learning a new spoken language at first it seems daunting, however when learning to code you quickly find that the concepts are very similar to all languages. It is only the syntax that changes between computer languages as with it is the vocabulary and words that change with a foreign language. Same rings true that if you don’t use it you lose it. I stopped coding for almost 15 years and due to COVID I was forced to hang up my wings and dust off the mouse to what I thought was going to be starting all over again. This wasn’t entirely true and is why I felt compelled to write this article.

You see pilots have a very similar mindset and way of thinking to software developers. Okay they may have very different social skills and they may be interested in other leisure and sporting activities but that is a massive generalization of which I hope to dispel throughout this article. So how then Andy, How can I as a pilot start punching code and make the next biggest whizz bang calculator that can divide 2 into 18 in a matter of seconds.? Well lets take a look at a few skills comparison and at the end the article I’ll let you decide.

Logical Thinking

The act of analyzing a situation and coming up with a sensible solution. Similar to critical thinking, logical thinking requires the use of reasoning skills to study a problem objectively, which will allow you to make a rational conclusion about how to proceed. Straight out word for word from Wikipedia. I am big on scenario based critical thinking and developing this as skill which is why when I was instructing I would always run scenarios when there was information to be gathered and a solution to made. A typical scenario is a diversion to an airport of which you have little or no information about. What is the process for doing this? Many airlines have models that they use from FORDEC, GRADE, PILOT, Shoot from The Hip (ok no one actually has that one) and they will all come to a solution that is safe first and efficient next.

Guess what?. When writing software the exact same applies. A business, a client, a mate, whoever will have a problem that they need solved by way of a software solution. The problem is raised and information is gather (business specification) and a solution is found (technical specification) and the piece of code is written and hey presto problem solved. Sounds simple right? So you telling me I can sit behind a computer and type in FORDEC into a terminal console and hit execute and that will solve the worlds problems? Not quite but what I am saying is that the same logical thought process can be translated between both arenas.

Let’s look at an example below of two pieces of C++ code. For the untrained eye they may think What The. Hashtags are used in computer programming too. #include what stream oh man this is beyond, just let me click a button and solve my problems Andy come on. Let me break them down one by one and show you how easy it is . The first snippet of code is a For Loop. Meaning for a certain amount of time or until a until a certain condition is met I am going to run the commands that are between the squiggly line that looks like this {. Sounds similar to anything in flying?

For Loops

#include <iostream>
using namespace std;
int main(){
   for(int i=1; i<=6; i++){
      /* This statement would be executed
       * repeatedly until the condition
       * i<=6 returns false.
       */
      cout<<"Value of variable i is: "<<i<<endl;
   }
   return 0;
}

Output

Value of variable i is: 1
Value of variable i is: 2
Value of variable i is: 3
Value of variable i is: 4
Value of variable i is: 5
Value of variable i is: 6

Let look at a more classic case for pilots using their logical brains. The If Else statement is a classic options based assessment of a situation. If I divert to Airport A this will happen, if I divert to Airport B, I might get tea and biscuits. Let’s dissect this statement and see its output. A variable is declared and given the value of 66. Then the question is asked if the number is less than 50 or not. Which is why the second { is executed (sounds harsh). Reverting huh.

If Else Statements

#include <iostream>
using namespace std;
int main(){
   int num=66;
   if( num < 50 ){
      //This would run if above condition is true
      cout<<"num is less than 50";
   }
   else {
      //This would run if above condition is false
      cout<<"num is greater than or equal 50";
   }
   return 0;
}

Output

num is greater than or equal 50

Functions

Have a go at this one yourself and see if you can follow it. It excepts a parameter (n) and then returns the Fibonacci sequence up to the n number of terms. Eg if you n = 10 then the out out would be:

Enter the number of terms: 10
Fibonacci Series: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

Code Snippet - Fibonacci Sequence.

#include <iostream>
using namespace std;

int main()
{
    int n, t1 = 0, t2 = 1, nextTerm = 0;

    cout << "Enter the number of terms: ";
    cin >> n;

    cout << "Fibonacci Series: ";

    for (int i = 1; i <= n; ++i)
    {
        // Prints the first two terms.
        if(i == 1)
        {
            cout << " " << t1;
            continue;
        }
        if(i == 2)
        {
            cout << t2 << " ";
            continue;
        }
        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
        
        cout << nextTerm << " ";
    }
    return 0;
}

Ok so how does this relate to pilots being good computer programmers? Well lets look at some of the skills that makes a good programmer and see how they relate to being a pilot and see how they may be transferable

Willingness to Learn

Technology is constantly evolving, new concepts in software development, new technologies from block chain, AI, Machine Learning, to new languages are constantly changing. A willingness to learn is also a trait that a pilot must have. Rest on one’s laurels while progress happens around him/her can be seriously detrimental to both fields. Pilots are constantly updating their skills are in fact tested on them regularly.

Problem-solving skills

A good programmer thrives on findings ways to make something work. A complex function or class that will solve their issue will consume them until solved. Faced with a complex task and something that is outside of the SOPs for a pilot is akin to a programmer solving their issue. Logical thinking, Calm under pressure, Gathering as much information as they can and executing a task are certainly transferrable between fields.

Supreme Communication Skills

One of the main reasons that IT projects are delayed or incorrect functionality is presented is that the developer doesn’t fully understand the problem. A good programmer is able to clearly understand the problem, break them into hypothesis and propose solutions coherently. Same goes for a pilot in that the lines of communication and analyzing the information presented are critical in making decision. A lot of these decision are based on the time available, however having a clear and concise understanding of the problem is critical to the outcome.

Positive Attitude

The difference in quality of a program can sometimes not be known to the user. Sounds crazy but its true. So how can this be, surely there is only one way to instruct a computer to do something, well what if I told you there is multiple ways to code the same solution from linear programming to object oriented programming. A lot of this comes down to the attitude of the developer. A good developer cares about the success of this application and will go the extra yard and do it right. Same rings true for a pilot in that sure safety always comes first followed by efficiency and commercial considerations. There is also a number of ways in which a pilot with a positive attitude to a flight can contribute to the success of that flight. Not taking additional fuel when not needed, caring about OTP, displaying a positive attitude to the team are all facets of a positive leader.

Good Time and Task Management

An intrinsic value instilled in a good programmer is work ethic and reliability. Being able to disseminate tasks, priorities code modules that need to be written, and ensuring delivery on time are all necessary skills of a developer. Again a pilot needs to have the same skills to ensure a safe and efficient flight. There is a model I used for both flying and programming that worked well for me. The Four D’s. Do, Defer, Delegate, Drop

Deep and Broad Technical Experience and Knowledge

Programmers use a standard way of writing code aptly name coding standards to ensure ease of other programmers knowing what they have written and being able to easily follow and debug code. A good programmer will be highly proficient in a number of languages and be able to draw on this knowledge and experience to achieve a good outcome. Pilots are the same in that being able to get the best out of a situation requires solid technical knowledge of the aircraft they are flying or the regulations of the state in which they are flying.

Big Picture Focus

Programmers will focus on a task and complete the code required to solve the problem. A good programmer will have a big picture of how this code relates to the application that is being developed. Same rings true for pilots, not focusing solely on one thing but seeing further on how the impact of what they are doing will impact the operation makes for a good pilot. For instance when an ECAM of an EICAS message has been resolved I would always sit there and bring up the status page and ask myself the question, “What is the biggest problem with the problem we have now?” This would get me to think of the big picture for instance a Hydraulic issue doesn’t really effect me in flight as I have redundancy built in but it does effect the decision on where I am going to land because I need additional landing distance.

Team Player

Programmers are renowned for working independently on the problem they face, however what makes a great programmer is one that has the ability to help others, Encourage other programmers and teach from from their own experience. This is also true for pilots. The team player in the cockpit is one that is willing to help out where needed (getting the load sheet done when the other pilot is busy). Instilling a sense of open team work allows the pathways of communication which is crucial in a successful and enjoyable cockpit environment. Same for when you are a programmer working in a team of developers on a large scale development project.

What Would I Do?

Well I not suggesting you go out and do a 4 year Computer Science degree if you want to go back and fly planes when all of this blows over. If you want to then that’s great and please don’t let me stop you, come back and teach me a thing or two its been too long. If you want my advice on a few short course and languages to learn well here is my recommendations for the different technologies getting around

Languages

iOS Apple Development (my favorite) - Swift, Objective-C.

Android - Java, Java Script

Both Android and Apple - Flutter Dart

Web Based Development - Java Script, NodeJS

Databases - SQLite, MongoDB, Firebase

Basic - C, Pascal

Machine Learning and AI - Python

Courses

Udemy - London App Brewery courses in Python, iOS, Flutter, Web Development

Code Fundamentals:

https://www.codecademy.com/catalog/subject/code-foundations

Online Code Emulators

www.codepen.io

Conclusion

If there is one thing that this COVID saga has taught me is that aviation is not as stable and secure as it once was. The uncertainty of employment and the possibility of this happening again has forced a lot of pilots to think about other ways of generating an income to support themselves and their family. I have been contacted by a lot of colleagues in this very position and have asked me about what it takes to become a computer programmer. I am not surprised by this at all as many have seen the transferability of their skills already but don’t know how to make it happen. There is a lot of really good groups of pilots out there up-skilling, side-skilling, new-skilling. One in particular is FCOM to Dot Com is doing some great work in connecting like minded pilots and exploring this very concept.

I am a huge advocate for diversification and more so now more than ever. If you are thinking of taking up a new skill while your resting your wings until this all passes, which it will it can’t not, then check out a couple of course I have recommended, many of which I have completed myself. Have a go and look at the code fundamentals and try things out for yourself see where it takes you, why not, what have you got to lose from trying.

Please feel free to reach out to me if you need any guidance on transitioning into this field. I do enjoy it, I enjoy solving problems and I enjoy the challenge of finding a solution to others problems. I am heavily focused on Digital Transformation and App Modernization two fields that look at processes and how they can become more efficient by way of software development. If anyone has an contacts that need help in these areas please drop me a line.

For my pilot colleagues transitioning into other fields or indeed wondering how we are all going to get back into the industry that we all love then reach out to www.aeroassess.com I can’t rate them highly enough for career advice, Kathryn and Karien have been a huge support for me.

Happy Coding and Happy Landings

Andrew Barsby.


David Jacobs

Business Owner and First Officer Embraer 135/145 -Legacy and Captain C208B and Fleet Manager

1 个月
赞
回复
Naab Assun??o

First Officer A32F | Latam Airlines

3 å¹´

I'm passing through the same situation! Great article!

Thomas Duffy

Senior First Officer B737 - Synthetic Flight Instructor SFI/TRI

4 å¹´

I was unfortunate enough to finish my pilot training in March 2020 and inadvertently started looking for something else to study in the meantime... I found coding! In particular, JavaScript with some html and CSS and it's been such a wonderful and fulfilling distraction from the grim realities of 2020. I think I did start to notice some correlation between the two subjects, I just couldn't put my finger on what it was... Glad I didn't have to after reading your article as you've comprehensively described it all here. Thanks for taking the effort to write it, it's a great read and has really made me feel I'm on a good track.

赞
回复
Ricardo Scheidegger

Virtual Reality Specialist at HundredAbove

4 å¹´

Excellent article Andrew! Looking forward to work together on some project!

要查看或添加评论,请登录

Andrew Barsby的更多文章

社区洞察

其他会员也浏览了