Code Like a Fighter Pilot
F-16 Fighter Jet (Wilson Hui - https://flic.kr/p/KZaR5V)

Code Like a Fighter Pilot

There are some surprising similarities between developing a software product and being a fighter pilot. This article discusses some lessons software engineers can learn from the cockpit of a jet.

A Pilot Legend

The guy pictured below is John Boyd. He served as fighter jet pilot in the 50’s, then as a pilot instructor for the air force, and later in his career worked in the pentagon as an aircraft design engineer and a military strategist. John Boyd is a legend. He is widely regarded as the best fighter pilot of his time.

As an instructor for the air force, Boyd became known as “40 second Boyd”. He was given this title because of a standing bet he maintained for any pilot who challenged him: starting from a position of disadvantage, he could beat any pilot in a dogfight in under 40 seconds. He never lost even once in all of his years as an instructor.

When he worked in the pentagon, he developed his learnings as a pilot into a model for thinking about combat in general. He called it the OODA loop. At a high-level, this model emphasizes the need for speed and agility in rapidly changing environments to ensure survival.

What is another rapidly changing environment where speed and agility are key to survival? Software development. So how does Boyd’s OODA loop model apply to our jobs developing software?

The OODA Loop

O-O-D-A stands for Observe - Orient - Decide - Act. Boyd asserts that in order to survive in a changing environment, any organism or organization must execute this loop continually. The faster it can execute the loop, the higher its chances of survival. Boyd was a fighter pilot and I think you’d be hard pressed to find any other field where the environment changes faster and the stakes are higher.

In a dogfight, a pilot is moving at hundreds of miles per hour in 3D space. The pilot first observes, “where is my opponent, what is his position and velocity? What kind of aircraft is my opponent flying? What is the weather like?” and so on. The pilot then orients by interpreting the data, “what maneuvers are available to me right now? What does my opponent think I’m going to do next? What are the current set of threats?” Once oriented, the pilot decides, “I will perform the following maneuver in order to take my opponent by surprise,” and finally the pilot acts on the decision. As soon as the loop completes, the pilot starts the next iteration by observing the new state of the environment.

Boyd was successful as a pilot because he executed this loop faster than his opponents. In doing so, he disrupted his opponent’s loop by changing the environment quicker than they could cope with. The opponent’s observations were already rendered obsolete by the orient, decide, or act stages.

OODA in Software Development

At AppFolio, teams think of the sprint cycle in terms of the OODA loop. Each sprint, the team begins by observing input/feedback from the customer. As a team, they orient themselves by interpreting the data based on prior experience, biases, fears, hopes, goals, and a whole host of other factors. This most often takes the form of story grooming. Once oriented, the team decides on a course of action -- sprint planning. Finally, they act on the plan. At the end of the sprint, the team releases what they have accomplished, listens for feedback from the customer, and starts the loop again.

The faster we execute the loop, the more opportunities we have to learn, correct course, and take action. We release a new version of our software to all customers twice a week (and every day to a subset of customers). This is how we win against a changing technology landscape and our competitors. It’s how we collaborate with customers to understand what they really need. At AppFolio, agility is a primary competitive advantage.

You may be an engineer, a product manager, or a UX designer, but your real job is to give your team as many opportunities for learning and success by accelerating the loop. How can you use your particular skills and strengths to achieve this?

Accelerating the Loop

Moving fast is scary and our natural tendency when we get scared is to slow down. I recently taught my son James how to ride a bike. I ran alongside him to keep the bike stable while we got up to speed and then let go. The first few times we tried this he got scared, put on the brakes, and fell over. It was only when he started pedaling faster that he was able to maintain his balance and keep going.

Just like James, we get scared in our projects and put on the brakes. We might block a release while we wait to complete a full round of usability tests. Or we might avoid enabling the feature toggle because we are afraid of hidden corner cases we didn’t think to handle. Think creatively. Ask, “how can we speed up while dealing with our fears?” Maybe we can do something lighter weight than a full set of usability tests to answer some key questions. Or maybe we enable the feature for a subset of customers initially for a short period of time and then press ahead.

Come Fly With Us

In my experience, teams that operate this way really are like fighter pilots. They move with a heightened sense of awareness, catching and correcting issues before they become real problems. Like Boyd, these teams push the boundaries of what seems possible. Counterintuitively, they achieve greater stability and higher quality by moving faster.

I could say a lot more about the OODA loop concept and its relationship to product development -- how speed depends on mutual trust and respect, how these are built within a team, how a “gatekeeper” mindset stops the loop, or how the loop behaves at the point of diminishing returns in a project. These are topics for future posts. Until then, consider joining our team to see what it’s like first hand. We’re hiring great engineers.

Chris Alexander

Founder. Executive. Performance Supercharger for Leaders and their Companies. Business Buyer.

6 年

Great post John. As a former F-14 Tomcat RIO, this resonates with me and mirrors the perspectives and theory I try to bring to bear with the teams and orgs I work with. One additional point to your excellent write-up: the OODA loop is a fractal model, applicable to your daily routine, a pair programming session, or the way a company operates. This is a powerful way to apply the model and find new ways to shorten the loop. Also critical to success: debriefing. If you haven’t (and I suspect you have), check out Chet Richards’ excellent book: “Certain To Win.”

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

John Yoder的更多文章

  • Desktop is the new cloud

    Desktop is the new cloud

    Desktop vs cloud In the beginning, there was desktop software. You went to CompUSA, rummaged through a bin of CDs, went…

  • Making data smoothies

    Making data smoothies

    This article is written for the technically inclined General Contractor interested in how AI is leveraged in modern…

  • Construction is a scavenger hunt

    Construction is a scavenger hunt

    This article is written for the technically inclined General Contractor interested in how AI is leveraged in modern…

    2 条评论
  • Alive at work

    Alive at work

    Back in 2008, a few years into my career, I read an essay by Paul Graham about the nature of working in large…

    5 条评论
  • Ship Your Code Before You Write It

    Ship Your Code Before You Write It

    Customer love Above is a picture of one of our teams in a moment of great achievement. In the front, an engineer is…

  • Are You Finding the Right Software Engineers For the Job?

    Are You Finding the Right Software Engineers For the Job?

    The best engineers "This project will be critical to our success. Let’s get our best software engineers on it…" Maybe…

    6 条评论
  • Programming in Paradise at AppFolio

    Programming in Paradise at AppFolio

    Once a month, I wake up very early, put on a warm jacket, make myself a cup of coffee, and sneak out of the house while…

    7 条评论

社区洞察

其他会员也浏览了