 Well, I can't put a word like complexity up on the slides without talking at least a little bit about what definition of complexity I'm going to use. This is closure conge and we all like very finely parsed definitions. So when you talk about complexity, there are a lot of different definitions available. There's an information theoretic definition called Kolmogorov complexity. How many bits do you need to write the program to output the complex system that you're trying to create? Complexity theorists like the folk at the Santa Fe Institute, they like to talk about the number of parts in the system and the richness of their interconnections. Chaos theory people talk about the unpredictability of the results. So the sort of surprise that you get when you actually run the simulation and you see the output and it's sensitively dependent on initial conditions. I'm actually going to sort of discard most of these definitions and say for today we'll use the more or less intuitive definition of complexity. Something that's hard to understand, it's got a lot of stuff and you can't really see how all the stuff is connected. So that's the definition that we're going to use. And to explore this I'm going to start with a story. We've all been here or one of its equivalents. Something that implements the Applebee's interface. TGI Fridays, Chili's, Max and Irma's, Gordon Bearsh, Chachke's, Flingers. One thing you know is on the menu of all of these is this dish, chicken tenders and french fries. I have a seven year old daughter who probably would have starved to death if not for chicken tenders and french fries. Now this dish is on the menu at 90% of restaurants that I go to. Actually I just made that number up but it's almost all of them. Even my local Mexican restaurant El Toro has chicken fingers and french fries on the menu. It's not a very Mexican dish but it helps bring the kids in and the kids help bring the families in. Now anytime something becomes this ubiquitous it kind of becomes invisible. You wouldn't consider it remarkable to find chicken fingers and french fries on the menu at a restaurant. But I actually think it's worth asking how it got this way. Because it wasn't always the case that every restaurant in the world had chicken fingers and french fries on the menu. So we know that these chicken fingers don't actually come from chickens. They come from here. The rise of this kind of food supplier is actually a big change. If you went to a restaurant a hundred years ago the menu was whatever they had killed that day. If someone had come in with a couple of chickens and sold them a couple of chickens then chicken was on the menu until the chickens got eaten. Well we know El Toro doesn't kill their own chickens. And as it turns out Cisco doesn't kill their own chickens either. We have to keep going a little further upstream and we see this kind of uplays. Cisco gets chicken tenders from a warehouse. This is actually a refrigerated warehouse. It's as big as this hotel and it's kept below freezing most of the time. You hope all the time but one never really knows. In a distribution center like this Cisco brings together chicken fingers from wherever they get them from. Together with french fries and bag lettuce, tomatoes, ketchup and whatever else. And then they distribute them out to restaurants. So where we would like to think that our food supply sort of looks like this. You know we've got Applebee's and they get food and they serve food. This is actually not the case. There is a much more intricate network of companies bringing food to that plate. We can look upstream and see suppliers for basically everything. Friar oil, fryer baskets, cutlery, dishes, cleaning products, print shops for the menus, ink suppliers to the print shops for the menus and so on. Many of these don't even touch food. There's an outfit called centralized supply chain services. They manage suppliers in the supply chain for Applebee's. So if you are a supplier it's to your advantage to sign up with these people otherwise you can't get into the market. If you're a franchisee it's to your advantage to sign up with these people because they've got enormous buying power. Now they don't grow food. They don't make food. They don't prepare food. They don't serve food. But they sure manage a lot of it. Like 95 million pounds of chicken. That's kind of a staggering number. It's hard for us to visualize 95 million of anything. So to put it in perspective, 95 million pounds of chicken would make a cube of chickens about the size of this mesa. That's not very appetizing but it's certainly a lot of chickens. This outfit manages the distribution of these chickens and if we start mapping out what the supply chain looks like it looks a lot less like food to Applebee's and a lot more like this complicated distribution network. We've got first tier of suppliers of distributors people who actually put things on trucks. We've got truckers. We've got independent suppliers. We've got a second tier of people who manage all of those services and supply the distributors. We've got a third tier of suppliers that are 10,000 miles away so that we can get grapes and tomatoes in the middle of the winter. We've got a fourth tier of financial services to these people and derivatives on those financial services and parasites upon those. Somewhere out here, way out at the periphery, we've actually got chickens, tomatoes and potatoes. And we've got software developers providing services to all the rest of this. Now the thing is you can go into any business today and play this game. So you can go sit in your coffee shop and look at every single thing in that coffee shop and think about how it got there. Every bit of it goes through some complicated upstream process. Every one of these bubbles has their own upstream supply chain and network. All of this is here to hit that point at Applebee's of serving my seven-year-old daughter chicken fingers and french fries. But there's a downstream as well. So anytime you get waste, you have to dispose of it. But it turns out if you get enough waste, it becomes a resource of its own. So Friar Oil now has an entire industry devoted to the collection of Friar Oil and turning it into biofuel. So there are companies that go out and collect the oil from the restaurants. There are companies that make the equipment that helps the Friar Oil companies collect from the restaurants. There are monitoring tools. So there are mobile tank measuring devices that will send an SMS alert when the tank is sufficiently full that it should be emptied. And there again, there are cell phone companies that supply services to deliver the SMS. And there are software developers who work for the phone company to deliver the SMS. And some of those developers have kids who eat chicken fingers and french fries. So this is this really intricate network on both sides of that particular point of the transaction. And it's radically different than it was just a hundred years ago. So it's worth asking, how did it get that way? To understand how it got that way, we need to go back to the 1970s and 1980s. A pair of companies, these two companies whose names I won't say allowed because they're highly litigious, they have lobbying groups and political ties. And they had found that they were buying essentially all of the corn in the U.S. Now they were buying this corn largely on the basis of positive externalities like subsidies for buying corn that were put in place by the government. And then they had a positive incentive to buy more corn. And as they bought more corn, they got larger subsidies, which allowed them to lobby more and get more subsidies to buy more corn, even though the subsidies were kind of meant for the family farmer. The family farmer hasn't really existed in quite a while. Well, it got to the point where they were buying so much corn that they couldn't sell it all as corn. And they had to start finding other ways to create it and distribute it. Some of you have read books like Food Inc., The Omnivore's Dilemma, In Defense of Food, and so on. Well, so they created products like high fructose corn syrup and sort of created this industry of restaurants to dispose of the corn surplus by feeding it to us and my 7-year-old daughter. In later days, they started lobbying the government to mandate certain degrees of ethanol production from corn just to soak up some more of the market so that the corn prices would go higher. So this is a pretty interesting situation. We've got this complex of government and industry and agriculture. And if you're interested in more of it, Kurt Eichenwald wrote about it in a book called The Informer. It was made into an indifferent movie. This funded the creation of this distribution chain and the restaurant industry and so on. There's just one problem with this explanation. The problem is that the explanation is basically bullshit. As humans, we're biased towards these kind of stories. We're biased to believe narratives. We look for causality in everything. And we look for agency in everything. The attribute of having an intention behind it. We frequently believe that large consequences had to have large actions and negative outcomes must have had nefarious intentions. So we look at complex systems like this and we look at a set of outcomes and we say it must have been designed with intent. We're sort of psychologically hardwired to believe in these things. And we call this teleology. Now I'll caution you that anytime someone tries to explain a complex system with a simple narrative, you're being manipulated. Because complex systems don't arise by design. It's virtually impossible to design a system this complex and have it work at all. We know because we try to design simple systems and they sometimes don't work at all. I'll give you an alternate explanation for how this restaurant system evolved. And it goes something like this. Running a restaurant is a brutally difficult business. Most of them fail in the first three years. So if you start with 100 restaurants like this, starting up in your typical city, after three years, 95 out of 100 of them will be gone. Well, if you start with one chain that hits on an innovation that makes them just slightly more likely to survive those first three years, then after the rest of them die, that chain now makes up a larger percentage of the population. It's much more likely to spread either through deliberate copying or by that chain itself, spreading and reproducing through franchising and so on. So in the next generation, when another 100 restaurants start up, more of them are copying that innovation and after the usual percentage of those die, our innovator, our upstart, becomes more prevalent in the population as a whole. Now, I haven't said that they're any better. I haven't talked at all about the quality of their food. All I've talked about is their ability to survive. And it turns out in a business like this, survival is all it takes to spread your view of the world through the population. I can give you another story that's sort of along the same lines, which is about the very first technological revolution. Way back, the first technology was agriculture. And it happened more or less by accident. Some grass produces more seeds than others. So if you have a certain area of grass and you collect all the seeds from it, more of the seeds are going to come from the plants that produced more seeds. So you take what you've got for seed, you eat a bunch of it, and then you plant the next season, you're planting a larger proportion of seeds that came from plants that produced a lot of seeds. So that fall when you harvest, an even larger proportion of those seeds are going to come from the plants that produce more seeds. And without even trying to, you're breeding for grass that produces more seeds. And give it a few hundred iterations of that, and you have created a dominant and highly productive strain of that grass. And you probably give it a special name, and you build towns and eventually cities around the places where you can grow that. No intention is required in order to create that kind of technology. But what you do set into play are a series of forces. One of them is variation. Some of the grass produces more seed than other. So that's a variation across the population. We are iterating this process. So we're taking all the seed each year and we're replanting a portion of it the next year. And we have a selection effect going on. So the grass that produces more becomes more dominant. If you put these three forces together, you can create agriculture without meaning to. These are three of the forces that create complexity. And I'm going to explore them in a little more detail through the rest of this talk. So variation is just randomness in the outcome of a process. Variation is inevitable. You actually can't prevent it if you try to. Process engineers spend a lot of time and effort trying to get the drill to drill a hole in exactly the right spot. And there are entire books written about how to correct for errors when you find that the spot you've drilled in isn't the spot you meant to drill in. We find variation at every level from microscopic to galactic. Mutations in DNA are, of course, one kind of variation. But we get other variation just from vibrations affecting two things that are near each other. We can see variation across a population where we talk about ergodicity, which is the characteristic that a variation across a population mimics the variation that a single member would have over time. So hard drive manufacturers, for instance, know that their drives fail at varying times, but they can't just test one drive for the 100,000 hours that they're going to operate it. So when they cite a mean time between failure that's like five years, you know they didn't set that drive spinning five years ago. What they've really done is gotten a thousand drives, set them all spinning for a month, and measured how many of them failed in that month. So they're assuming this characteristic of ergodicity, that I can take the one month span of a thousand and assume that's like running one drive for a thousand months. We can look at variation through time, in which case we talk about stochasticity, a process whose outcome is not certain. And this creates an asymmetry with respect to time. This is another one of those things that's so fundamental, it's sort of invisible. We know the past, it happened, we don't know precisely what's going to happen in the future, we only have some probability. The next force is selection. So we have some set of different samples or specimens, and we're picking out which ones we're going to keep, and we're discarding the others. So selection seems like it's obvious and tautological, but it happens at many different scales and levels. So one kind of selection is natural selection, competition for survival. All of us here are the product of tens of thousands of generations of successful badasses who lived long enough to reproduce. So that's saying something, right? Selection operates at higher levels as well or larger structures. So we have some deliberate selection. Every kind of process engineering loop is about selection. We can talk about the Plan-Do-Check Act, or Deming Cycle, and that's a selection. You are selecting which of the variations of your process that you want to keep and enforce, and other variations you're going to stop doing. If you're of the Six Sigma type, you've got the Demaic Define Measure, Analyze, Implement, Control, I think. I can never remember that one. Where, again, we're trying a bunch of different things and we're going to keep some process changes in the hopes that there are improvements and we're going to discard others. I think we also have a type of genotype-phenotype selection that operates on whole companies. So the genotype is like DNA. The phenotype is like the full-grown organism. Within a company, the DNA is the ideas in the heads of the people about how to create a company and what it means to organize a group of people to accomplish something. That organization, the people and their structure and the tools they use, is the expression of those ideas, and so it's the phenotype. And we can say that those get selected for as well. Some succeed, some don't. Hopefully the ones that succeed are the ones that get selected and copied. We've all seen memes as the image macros floating around the net. The original idea of the meme was just an idea that was sort of self-contained, used a human as a host and really wanted to get selected and copied. And so the most successful memes were those that you were most likely to tell to someone else, and so those were the replicators. In fact, I'm going to infect you all with a memetic virus right now. If you don't want to be infected, plug your ears. There is this thing called the game. Some of you just lost. Any time you think about the game, you have lost the game. This is really popular among middle schoolers. Now this meme is in your head. Some of you will feel compelled to repeat it to someone else thereby spreading the meme. So that meme is optimized for selection. The next force is iteration. When we talk about that point between the past and the future, there's an event. Events usually don't happen just once. Sorry, events happen just once, but a process typically continues. And so when we talk about a system, anything that persists long enough to be recognized as a system happens more than once. It keeps consuming inputs, it keeps producing outputs, and it keeps going around this iteration. Typically, a system that iterates faster will tend to adapt to its changing circumstances better than one that iterates slower. This is the entire thesis behind the agile software development and the ODA loop in maneuver warfare. So far these forces are pretty easy to recognize. Anyone who's a student of neo-Darwinianism has probably already seen all of these things. We're now getting to the difficult ones. The ones that people don't like to think about as much are the ones that present larger challenges if you're trying to design systems. Coupling is one of these. So the idea of coupling is that the output of one event in the process is the input to another one. Now coupling creeps in in a lot of different ways. We talk about coupling in our code, but I'm talking about coupling in the more general sense. And I'll give you a couple of examples where coupling can be a real bear. There was an airliner crash that was caused by coupling between the hydraulics and the coffee pot. You probably wouldn't design an aircraft so that its flight control system was sensitive to the coffee pot in the galley. But what happened was this particular coffee pot had an arc in the brewer that basically melted a hole in the coffee pot and spilled coffee down the back of the galley. Now the back of the galley happened to back up to the cockpit and there were a whole bunch of wires flowing through there. The coffee spilling into the bulkhead shorted out the wires, took out the hydraulics and the plane crashed. This is a form of coupling. These two systems that should have been independent were coupled by their shared use of that bulkhead. Another slightly more uplifting example of coupling. And a demonstration that coupling is really universal comes from Saturn. So there is a moon of Saturn way, way out past the most visible rings called Phoebe. Phoebe is being ablated by sunlight. So the solar wind is hitting Phoebe and knocking particles off of the surface. It's a small moon. These particles are forming Saturn's largest and most tenuous ring. It's absolutely enormous. We can't really see it very well, but Cassini has detected it. It's much larger than the visible rings. The material from that moon being eroded away gets more pressure from sunlight and it gets tidal forces from Saturn itself that causes it to slowly spiral inward towards Saturn itself. Before it gets there, some of that material is being swept up by another moon called Iapetus. Iapetus is tidally locked, so it's always facing the same direction, and it's always the same side of Iapetus that's facing into this dust as it's going through its orbit. As a result, Iapetus is dark on one side and light on the other side. It looks sort of like a baseball if you took the two pieces of leather and just colored one in with a Sharpie. Now think about the coupling that's happening here. We've got gravitational coupling, we've got radiation from the Sun, we've got tidal forces, and we've got a pair of moons that are millions of miles apart but are transferring material between them. So I tell you that coupling is everywhere in the universe. We draw boundaries around our systems and say this is inside and this is outside. Those boundaries are an abstraction. It's a model of the system. And we know that all models are wrong even though some are useful. Your system is coupled to everything else. Now it's really hard to design a system that includes everything else in the universe. It's a sort of a dirt-gently approach. So we draw these boundaries and we pretend that the rest is uncoupled. But I was part of a company back in 1998 that had a model of the way the financial system worked that assumed certain things were not coupled. It assumed that the market was an infinite sink for volatility and that the things they were doing didn't affect the market. It turned out they were wrong and they lost something like six billion dollars over a couple of months and had to get bailed out by the Federal Reserve and they were kind of the biggest headline grabbers until Enron took the front page. Thanks, Enron. So coupling is everywhere and whenever you think that you're dealing with an environment that's an infinite sink for energy, for materials, for information, it isn't. The next kind of force is constraint. And this is the one none of us like. Humans do not like constraints. But the truth is that unlimited processes only exist in mathematics. Even in our field in software, there's a limit to the size of the number we can represent. I know we're using closure, we get more digits than everyone else, but there's still a limit, right? There's a finite amount of RAM in that computer. There's a finite amount of RAM plus disk in that computer. It's big, but it's finite. We run into physical limits all over the place. Heat, entropy, bit density, food supply, the amount of energy inputs you can get in. One of the constraints on how big we can build skyscrapers is how large the footprint of the skyscraper is and how many pipes we can get up for water and down for sewage. There's a limit to how tall we can make a building based on how much crap has to go in and out of the building. It's often not the variable that you expect to be a constraint. That ends up being your limiting constraint. It's been said that one of the reasons AT&T invented the computer was to create phone switches because they had these models of people and phone calls. They were looking at how rapidly phone calls were ramping up and projecting that they would need basically 50% of the population of Earth to be telephone operators while the other 50% was ordering pizza. Who's going to make the pizza then? We have a lot of companies that project unlimited compound exponential growth over time. I'm sorry, but these companies are deluding themselves. You can't have unlimited exponential growth over time. If you took a company like, oh, say a large Minneapolis-based electronics retailer, they're projecting 8% year-over-year growth in their sales. Well, if you take that and you match it up against US GDP and the 2.4% that the Bureau of Economic Analysis is predicting, you find that in the year 2117 that company's revenue is going to exceed the entire total of the US GDP. That's probably not going to happen. Actually, somewhere in the 2200s, their revenue would exceed the entire GDP of planet Earth. Also, probably not going to happen. We hit constraints. We talk about information density and Moore's law, but there's actually a limit to the information density of space itself. It turns out if you have a cubic centimeter about that big, much more appealing than a mace of chicken, I think, a cubic centimeter can hold at most 10 to the 66th bits of information. That's actually a law of physics as best we know it. You won't be able to reach that 10 to the 66th because unfortunately, whatever medium you're using to store it will cause that cubic centimeter to turn into a little black hole before you can reach that limit. But the good news is the surface of that black hole can store 10 to the 66th bits. It will make your laptop a little heavier, though. So we've got these five forces. I call them the negentropic dynamics, which is kind of a fun name, but basically these are the things that allow us to persist far from thermodynamic equilibrium. I'm pretty happy about living far from thermodynamic equilibrium. I intend to keep doing it as long as possible. But these are the things that also allow us to temporarily defeat the second law of thermodynamics. The one that says entropy always increases. Right now we have an extremely improbable configuration in this room. The odds of this configuration happening are ridiculously small, but we know entropy is increasing, so something must be happening that's causing us to have this low entropy state right now. And so some people are saying we should regard the sun not as a source of energy, but as a source of low entropy arriving at Earth, and the backside of the Earth is radiating away higher entropy out into space. That's kind of a nice view. I like that as the sun is an entropy sucker and the rest of space is where we dump our entropy. With these five forces, we can start combining them in different ways and seeing what we get. So we might not always have all five of them as the dominant factors. So let's say we're going to look at iteration, variation, and selection. Well, this gives you biological evolution, or it gives you web businesses, where we're very rapidly trying a bunch of different things and most of them die out and the ones that don't die out get done again. Actually, this applies to any business, but it's particularly visible in the web space because, you know, low capital barrier, low legal and technical barriers, and very, very easy to copy good ideas from elsewhere. If we take coupling and iteration, we can get, well, coupling more or less directly, we can get a population explosion. That's not a dirty joke, people. There's a book called The Logic of Failure that talks about experiments with trying to get people to adjust complex systems. And they set up a simulation of an African village that was raising some grain, had some cows, had some disease being propagated by tzitzi flies. Sorry to whoever's on the microphone there. I promise not to say tzitzi flies too often. And they tried getting experts to adjust the parameters of this model and apply interventions. Experts like people who run Doctors Without Borders and other non-governmental organizations. So these people would apply an intervention to this village, like mosquito netting to prevent the spread of disease, which was always followed by a population explosion. Almost everything they did allowed more of the children to grow to adulthood, allowed the adults to live longer, allowed them to reproduce more. Right up until the constraint kicked in, at which point the population explosion was always followed by disease, famine, and collapse. It turns out that people are really awful at intervening in complex systems. We try to apply a single variable intervention. We want more grain, so we're going to raise water from the aquifer to irrigate the grain, and so that grain feeds more cows, feeds more people, and then we run out of water and everyone dies. We want more cows, so we feed them more grain, then we have no grain to feed ourselves and everyone dies. We give medicine so that the children survive to adulthood, they eat all the cows and the grain and then everyone dies. The problem is that the constraint always kicks in and the constraint makes things go nonlinear. So it's very common to see a system that has some kind of smooth exponential behavior up to a point, goes very chaotic and nonlinear, and then typically either collapses completely or snaps into a different stable state for some period of time. This is known in the field as a catastrophe manifold, which is another great name. A catastrophe manifold just means I'm measuring some variable that has one of two possible metastable states that it's going to be in, and I can't necessarily predict in advance which one we're going to land in. If you were to look at the Dow Jones industrial average since about 2008, it strongly resembles a system that's hit a constraint, is in the metastable state, and is getting ready to either collapse or to snap to some new metastable value for a period of time. By the way, this type of system comes up very often when you've got coupled nonlinear partial differential equations. So I'm going to teach you how to solve coupled nonlinear partial differential equations. No, I'm not going to do that. I can't possibly do it justice and I don't have any closure code for it. If we take variation, selection, and coupling, we get something called the Black Scholes formula. Back when I worked for this finance company, I actually reported to the Scholes of Black Scholes. He was my supervisor. I saw him twice in a year that I worked there. He was busy off receiving the Nobel Prize and things like that. So he did a lot of delegation. Black Scholes is the option price and formula that says, if I have a stock and I know that stock is going to fluctuate and if I know roughly how much it's going to fluctuate, then I can take the number of days between now and when some event has to happen with the stock and I can just assume that on day one it goes up by that amount or it goes down by that amount. Then I take both of those outcomes and on day two I say, if it went up on day one, where does it go up from here or where does it go down from here? That's all it is. You'll easily recognize this as a tree laid on its side and they won the Nobel Prize for this because they were the first ones to write it down and they did it all with calculators instead of computers so give them a little credit for that. This option pricing formula allowed this whole range of financial derivatives including the credit default swaps that became infamous not too long ago. So Black Scholes is a product of these forces and occasionally they get together and they produce Black Swans. Black Swan of course being a really unexpected event when all of a sudden things that you thought were not correlated become correlated and all start moving in the wrong direction. Okay, so we've got these forces and I've talked a little bit about how we can combine them and I think when I look at the various methods and processes that I've seen over the years, I think all of them are sort of trying different combinations of responses to these five forces and so a few of them that I'm going to explore here just a show of hands for each one how many people are familiar with each of these methods so we'll start with Lean, either in manufacturing or Lean software. Okay, pretty sizable number, maybe three quarters. How about the theory of constraints? Excellent, it's one of my personal favorites. Agile development. Come on, everybody's at least familiar with it. Some of you just don't like raising hands, I can see. What about Six Sigma? Okay, some of you have had that inflicted. Sorry for that. And finally, Maneuver Warfare. Just a few. This one's excellent for business. Destroy your enemies, just completely annihilate them. So as I've learned each of these over the years, I've found that each one has a certain ring of truth to some aspects to it, and as is suggested by my diagram, I feel that they have something in common. There's something sitting in the middle of these and I can put a name to that. I can label that as complexity theory because I think each of these deals with those five forces but they deal with them differently. They emphasize different aspects. So let's look at these forces and think about how each of these methods responds to them. My purpose in teaching you this is so that you can synthesize your own methods out of these and think about where each of these methods is going to break down in the things that it does not consider. So we'll look at Six Sigma. Six Sigma tries to take advantage of variation in the sense of deliberate variation. So you're going to introduce some variations in processes, measure them, select the ones that work, and then iterate the process. Done well, Six Sigma should result in this cycle of continuous improvement. Six Sigma has sometimes gotten a bad name because people will report a lot of paper gains that don't really show up in the bottom line of the company. And I believe the reason for that is because it doesn't have any way of incorporating constraint and coupling. And so you may report some paper gains that this particular process is now, you know, 180% more efficient, but this process is consuming an input that's not being produced fast enough. And so you can be a lot more efficient, but it doesn't matter, because you don't have any inputs to work on. Or conversely, you can be 10 times more efficient at getting invoices out, and yet the people who pay you still take 90 days to pay. And so you've optimized five minutes down to one minute, and then you wait 90 days to collect the money. You haven't really helped. So by ignoring the coupling and constraint, I think Six Sigma is incomplete. Maneuver warfare is particularly interesting. Not too many of you are familiar with it, so I'll describe a little bit about maneuver warfare. This is an idea that comes from, of all places, an Air Force colonel and flight instructor who for a time actually had a statue in the U.S. Marine Corps Academy. Now, I don't know, some of you may be familiar with rivalry between the services. The idea of having an Air Force colonel in the Marine Corps, kind of weird. What he came up with was this idea that you don't actually need to destroy your enemy's forces in order to win. That in fact it's better to win by dislocating your enemy's forces from the so-called centers of gravity. So if your enemy's forces are way away from the capital and you can get in between them and the capital of the country, then you're likely to be able to take over the capital. This is in opposition to the older idea of warfare that basically said warfare is about the battle and you will win if in the battle you destroy more of your enemy's forces than they destroy of yours. Well, that battle approach was kind of costly. It gave us things like trench warfare in World War I. The idea with maneuver warfare is to sow uncertainty and confusion among your enemies to cause them to unravel in fear by creating ambiguous, threatening, or uncertain situations. You can probably see how this is more applicable to business than like going out with snipers and shooting your competitors. So maneuver warfare takes this notion of coupling and says I'm going to try and create coupling to the environment both vertically through my chain of command and horizontally in the forces in each unit. So coupling to the environment means this is the observe, orient, decide, act loop. Coupling to the environment means observing what's actually going on, attempting to reconstruct an accurate perception of the situation, deciding what you're going to do and then enacting it. Maneuver warfare explicitly aims for nonlinear outcomes and so the idea of coupling and constraint is really central to this whole doctrine. The speed of iteration enters in the decision loop, the OODA loop. And so many people have said that if you can execute your OODA loop faster than your enemy, you are inside their decision loop and you are certain to win. It's not quite as simple as that. Remember simple narratives of complex situations means you're being manipulated. And then the notion of selection applies in selecting your actual objectives. So you don't decide on your initial objective until you've started to contact the enemy and then you flow like water through the weakest points in his defenses. Okay, leaving the battlefield for a while, the theory of constraints is much more about sort of a manufacturing type of process. So that's where it comes from. This is the notion that in any process there is precisely one step which is the constraint. And if that constraint could be increased, you could produce more of whatever it is your process creates. I actually think all of agile development was an application of the theory of constraints under the assumption that software development was the constraint in producing software. In many organizations, we've now removed that constraint, by the way. I've seen development go fast enough that the business actually didn't have any new requirements. It does happen. It's not all that common. More commonly, the constraint moves downstream. So you produce software fast enough that operations can't get it deployed. So you've moved the constraint to operations. Or you produce software fast enough that QA can't get it tested fast enough. You've moved the constraint downstream. At that point, your best option under the theory of constraints is to slow down. Kind of counterintuitive, but it's more efficient for the organization if you stop overproducing your output while someone else is slowed down, or while someone else is the constraint. Some of you have heard me talk about this book by Donald Reinertsen called The Principles of Product Development Flow, Second Generation Lean Something Something. One of the reasons that I like this book so much is that it actually takes account of all five of these forces. So it takes some of the notions from lean manufacturing, lean software development, and so on. And it deliberately uses variation where others try to eliminate variation. Don Reinertsen gives a talk. There's a video from go to Copenhagen where he gave a talk about asymmetric payoff curves. That in summary means if I vary the process output in one direction, I get an increase in payoff. If I vary it in the other direction, I get a decrease in payoff. When you've got that kind of a payoff curve, variation is your friend as long as you're selecting things on the right-hand side of that whole thing. This is as opposed to manufacturing type organizations where lean came from that said variation is always bad because it's always a deviation away from the desired output of the process. Okay, so extracting ourselves from those processes for a few moments. When we talk about complexity, we often talk about complexity as a bad thing. But like I said, I like existing far from thermodynamic equilibrium, and it's complexity that allows me to do that. It's complexity that allows my seven-year-old to get chicken fingers and french fries, which she'll eat instead of enchiladas at El Toro, which she won't eat. So we dislike complexity in our code. It becomes suffocating. It makes it impossible for us to do things. But I'm pretty happy that my body is a complex system. We get resilience in complex systems. We also get really weird failure modes sometimes. I think the essence of it is that complexity defeats our ability to design systems. There's been some work looking at what it would take to create ultra-large-scale software systems. And their conclusions were all biological in nature. They essentially said it's not possible for human minds to design complex systems at ultra-large scale. Well, ultra-large scale when they wrote it meant hundreds of millions of machines connected to a globe-spending network. We're kind of there now. No one brain created it. No one brain can actually encompass it. And so we have to think about complex systems and how we deal with and evolve and live within them. This is difficult because it's complexity that makes our systems tend to kick back and resist our attempts to do things to them deliberately. There's a great book on this subject by John Gall called The Systems Bible. Gall is the person who said inside every complex working system, or sorry, every complex working system began as a small system that worked. I'm going to look at one aspect of how we can deal with complexity in software development for just a couple of minutes. And that's the idea of cues. So cues come up between people when we're handing off work, and of course they come up between machines when we're handing off work there. So cues have the effect of slowing down feedback. We're coupling things together. We're slowing down feedback. We are constraining the throughput of a system. So there's a certain depth to a cue, and for a piece of work to get through the cue, it's got to get through the waiting time and then through the processing time at the end of it. So it slows down the throughput, but it also has the effect of damping variation. So we sometimes think we should eliminate cues and try and get single piece flow through our system. Anyone looking at Kanban for development is looking at single piece flow. But a cue size of zero isn't always a good idea. A cue size of zero will tend to amplify variation and create noise in your system. And this is known both in the theory of constraints and in lean manufacturing. So I actually think you want some cues in place, but choose them carefully and then watch their depth. When we talk about variability, we've got that possibility of an asymmetric payoff curve. And this is being explored by the folks who are doing real options work. Different processes that we've looked at have different opinions on variation. So the theory of constraints says we don't like variation. We don't want to reduce it. Maneuver Warfare says we're deliberately trying to create variation in our own side and in the enemy's side. Agile development tries to deny variation. We're going to create a fixed iteration length. We're going to estimate our cards, and if they're too big, if they're varying too much, we're going to chop them down into pieces that are just small enough that we can be confident in them. Six Sigma is definitely anti-variation, very clearly. Lean generally is anti-variation except for Reinertson. Reinertson interestingly actually targets a 50% failure rate on product development. He says if you have less failure rate than that, you're not creating the kind of variations that could get a reinforcing cycle going that would help you win in the marketplace. That reinforcing cycle would look something like this. We have variation in the processing. Sorry, I'm just going to skip this one. This is the wrong diagram. Ignore the visual. If you have variation in, say, motion of a particle, say we've got a particle in a fluid and we give a slight pressure to move in one direction, we're going to take the random movement that the particle would normally have, the Brownian motion, and we're going to apply a bias to it. When we do that, we can help move it in one direction and we're effectively selecting which of those variations we keep and which ones we damp out. So Reinertson's view on variation is we want to reinforce the positive variations. So I've covered a lot of topics. We've gone through time and space. We've gone out to the size of a galaxy and we've looked at a coffee pot in an airplane. Let's try and synthesize some of this and see what we can apply. One of the key lessons of all of this study in complex system is that dynamic processes do not have goals. There's no objective in a system. There's no target point that it's trying to get to. We are the survivors of tens of thousands of generations of badasses who live to reproduce, but we're not the point of the process. Watch out for the teleological explanations. Watch out for someone who's trying to give you too simplistic a narrative to explain a complex system. We will see increase in complexity as long as we've got that entropy gradient to work on. And anywhere we find an entropy gradient, we will find complexity. And of course, survival of any individual, specimen in one of these samples is not guaranteed. Some people will talk about applying biological methods in software development. Well, what you have to watch out for is that a lot of the variations actually kill the host. So it might not be the right thing to try a hundred different versions of your project and then keep the one that works best. We have an option as humans and individuals to choose which specimen of the organizations we participate in. And so we can move around and survive the demise of one of the organizations. But the organizations are not all guaranteed to survive. We will see a kind of evolutionary process among businesses, ones which are able to change and adapt and take advantage of these forces rather than being damaged by them. We'll continue. And it's probably best for us if we select which ones we're part of. And so with that, I hope you've enjoyed this exploration. I hope you've gotten some interesting ideas, and I thank you all for your time.