Agility is all around us these days, but the origins of Agile programming and Agile marketing lie in the Korean War and the work-up to invading Iraq.
Lisa Morgan recently wrote that “Most software organizations are some version of Agile” here on the Software Quality Matters blog.
If you glance at Amazon, you'll find well over 100 books on “Agile” something:
- Agile programming.
- Agile marketing.
- Agile management.
- Agile systems administration.
So, what is Agile?
Agile is a set of principles and values that have come to be employed in business and computing. But their origin lies in the Korean War, in the lessons learned and taught by John Boyd.
John Richard Boyd (January 23, 1927 – March 9, 1997) was a United States Air Force fighter pilot and Pentagon consultant. He graduated from the University of Iowa and, after serving in Korea, was assigned to the USAF Weapons School (Nellis AFB, Nevada), where he soon became head of its academic division. He was called "Forty Second Boyd" because he had a standing bet as an instructor pilot that beginning from a position of disadvantage, he could defeat any opposing pilot in air combat maneuvering in under 40 seconds.
He was moved to the Pentagon to execute the mathematical analyses supporting the McDonnell-Douglas F-15. According to Robert Coram, Boyd's biographer, at various times Boyd was called the “Mad Major” and at others “Genghiz John.”
During the early 1960s, Boyd and mathematician Thomas Christie created the E-M (energy-maneuverability) theory of aerial combat. It became the standard for aircraft design.
Boyd's key concept was that of the decision cycle or OODA loop, the process by which an entity (either an individual or an institution) reacts to an event. In the OODA loop (for observe, orient, decide, and act) Boyd hypothesized that all intelligent organisms and organizations undergo a continuous cycle of interaction with their environment. According to his idea, the key to victory is the creation of situations wherein one can make appropriate decisions more quickly than does an opponent.
Boyd breaks this cycle down to four interrelated and overlapping processes through which one cycles continuously:
- Observation: the collection of data by means of the senses
- Orientation: the analysis and synthesis of data to form one's current perspective
- Decision: the determination of a course of action based on that current perspective
- Action: the physical playing-out of decision
I'll get back to Boyd in a bit, but first, let's look at just what “Agile” means today. The “Agile Manifesto” [2001] (in part) reads:
Welcome changing requirements, even late in development. Agile processes harness change forthe customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Another source says “Agile Development is an umbrella term for several iterative and incremental software development methodologies.” This has come to be credited to Winston Royce by some: “Agile methodology is an approach to project management introduced by Dr. Winston Royce” though the Wikipedia notes that this conclusion “was mistakenly drawn.” Royce was an important software and management figure, but neither “waterfall” nor “agile” are in his 1970 paper.
But we can see that whatever area we call “agile,” we are applying the OODA cycle to the process. The important thing is frequent reexamination and reevaluation of what we are doing and where we are heading. We must employ and operate in our ever-changing world by having flexibility in our goals (a change in project requirements?) and our processes.
In his brilliant and frequently-cited paper “Destruction and Creation” (U.S. Army Command and Staff College, September 3, 1976; reprinted in Coram, pp. 451-462), Boyd cites Goedel's incompleteness theorem, Heisenberg's uncertainty principle, and the Second Law of Thermodynamics as the foundations for his approach.
The first tells us that no consistent set of axioms completely prove all the truths about relations within the system. The second of the "uncertainty relation" between the position and the momentum (mass times velocity) of a subatomic particle, generalized to the notion that we can't be certain of both position and velocity simultaneously. The Second Law of Thermodynamics tells us that heat cannot move from a colder to a hotter body (Clausius, Mechanical Theory of Heat, 1867) – that entropy in a closed system is increasing.
Boyd employed these concepts into his cycle, stating that in order to maintain an accurate or effective grasp of reality one must undergo a continuous cycle of interaction with the environment geared to assessing its constant changes. This continual OODA cycle thus instantiates Clausewitz' “No battle plan survives the first encounter with the enemy.” The crux in battle as in business is continual attention to the cycle; linear adhesion to a fixed plan leads to disaster.
Boyd's approach – a several-hundred slide presentation entitled Discourse on Winning & Losing – was presented as “Patterns of Conflict” at the U.S. Marines Amphibious Warfare School in June 1980. The next year he presented it to Dick Cheney, then a member of the House of Representatives. In 1990 Boyd moved to Florida because of declining health. But he is credited for largely developing the strategy for the invasion of Iraq in the Gulf War of 1991.
We shouldn't be taken aback that military research has been so widely adopted. Babbage, in the 19th century, received support from HM Government; Mannheim's slide rule in France was sponsored by the French artillery; and, of course, the network over which you are reading this was a project of the U.S. Department of Defense, the ARPAnet.
Robert Greene has written that the OODA cycle was "deeply relevant to any kind of competitive environment: business, politics, sports, even the struggle of organisms to survive" (February 24, 2007). He's right, and it's important for those of us involved in agile computing and related fields to recognize it.
See also:
[dfads params='groups=937&limit=1&orderby=random']