Why developing software is like flying a fighter jet
John Boyd was a USAAF fighter pilot who went on to become one of the greatest military thinkers of our age. One of the most interesting things about Boyd was that he was a bit of a maverick and not afraid to ruffle a few bureacratic feathers in order to get the job done.
His theories have been highly influential on US military strategy in the latter half of the twentieth century, particularly his Energy-Manouverability theory which models how fighter aircraft move through the air, and an even greater contribution - the OODA loop - which has been adopted across the Army, Navy, US Marines and multiple other militaries across the world.
The OODA loop, also known as the decision cycle, is the process by which an entity reacts to an event. It was developed by Boyd from ideas formed during his early career as a combat pilot and instructor of the F-86 Sabre jet.
F-86 Sabre Jet
Back in the 50s, pilots of these jets would fight each other tooth and nail in simulated air combat over the Nevada desert, twisting and banking in an effort to get on their opponent’s “six”. Razor sharp pilots from across the country would travel for miles to take their shot at the infamous “forty-second” Boyd who had a standing bet that he could reverse positions and take out any opponent in a one-on-one dogfight within forty secodns. He never lost.
Boyd came to realise that all intelligent organisms and organizations go through a continuous cycle of interaction with their environment, which has four stages:
- Observation - the organism gathers data about the system
- Orientation - the synthesis of data into a coherent mental model
- Decision - the determination of a course of action based on this mental model
- Action - the execution of the determined action
As a general rule, in combat the participant with the “tightest” OODA loop will win. In essence he will be able to react to the opponent’s movements faster than the opponent can adjust his attack.
Boyd railed against the idea of military doctine, saying:
You gotta challenge all assumptions. If you don’t, what is doctrine on day one becomes dogma forever after.
He argued that in order for an individual or organisation to become successful, it had to be lightweight, agile in its decision making and iterate quickly to refine it’s mental model of the environment.
This sounds remarkably similar to the goals of the agile software movement. In fact if we read the four tenets we see a startling similarity:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Note that these points explicitly DO NOT describe a doctrine or specific systems or frameworks to be used during development - agile is not Scrum, or XP, or Jira. Note the particular focus on making quick decisions in order to act quickly, getting software in front of users as fast as possible and responding to change prompted by those users’ interactions with the software.
Ironically, agile itself has taken on the trappings of process and bureacracy now becoming “Agile” - a buzzword, doctrine and something you can even get a certification in. In the same way that Boyd was frustrated with senior generals who insisted on following doctrine and a “hey diddle diddle straight up the middle” approach, today we see the same patterns in the software industry, symptomatic of up-front planning and a belief that the environment can be fully documented and controlled.
A user and software put together are an inherently chaotic system, with unpredictable behaviour. If you can’t predict the behaviour of a system, how can you build it?
The only way to win here is fast iteration, making your software malleable to change and re-testing it against its environment (AKA users). This makes your OODA loop tighter, meaning you can go through more iterations in a given time.
The group who are able to do this better than their competition will deliver useful software faster, and will ultimately win.