Transcript for:
Why Agile Works

why does this stuff work it's pretty easy count dracula did you tell them they're supposed to laugh count dracula in bram stoker's dracula novel called appropriately dracula stoker called the vampires the undead undead meaning they were neither living nor dead we have a similar type of system that we call unordered now unordered that's what my son normally says when i ask him to clean up his room it's in it's in this state in between it's not chaos but it's not order interesting thing about this on it's not simply a negation it's a statement of fact that it is moving towards a certain direction the undead are neither living nor dead they're moving in the direction of becoming dead an unordered system is neither ordered nor chaotic it is moving towards the direction of order the order is emergent in it there's a similar word in england uh sorry in english uh that i like to use it's the uncomfort zone we feel uncomfortable about something now this uncomfort zone happens to be the zone between comfort and panic now you know when somebody panics you can't do anything with them they revert psychologically to a very primitive behavior pattern of fight or flight and the the uncomfort zone is also known as the learning zone it's the zone that you have to get into to actually have any change occur interesting thing is when you get into that zone this is where your higher cognitive processes start the problem that we suffer with is that you know we've been around for a couple millennia or more and we still have this tendency to go into panic mode when we get scared and it's only afterwards when we calm down that we realize we didn't need to do it that way this happens because of the dinosaurs now way back when our thought processes were so that we realized we had to be able to run away from the dinosaurs in order to survive it's only afterwards that we were trained we see dinosaur danger run only afterwards did you realize you didn't have to run faster than the dinosaur you just had to run faster than the guy running next to you right and this is where you get them back into this comfort zone so the reason i'm saying this is just so to get warmed up here but there's a couple of other reasons too if we look at the types of systems we have we have these ordered systems and we have these unordered systems let me show an example of an ordered system excuse me hi uh can i bother you for a second can you turn these lights on higher wow good turn them off oh turn them on again please now turn them off now i'm going to ask him to turn him on again how many of you know what's going to happen raise your hand okay i'll turn them on again but not all the way this time i don't want to be blinded great thank you now all of those who put up your hands congratulations this is your first lesson you've now learned to predict the future this is what we mean by an ordered system an ordered system has causality has caused an effect you do something something happens which means this type of system obeys rules so we have this nice little box in here we have a system we can understand the cause and effect and it obeys rules uh let's leave that box open for right now how often do you think i could ask him to turn that light on and off this is the problem we right and this is the problem that you're having developing software also is that you're dealing with people and people don't like to obey rules right about the most we can get out of this side are some heuristics for behavior one of the heuristics i know is that if i do this too often he's going to give up but before he does it he's going to turn the lights on very high right order systems two kinds lead to different ways the way you view the world influences the way you react to it and the way you act in it now if you believe that the world is ordered and that the agents the actors in this world obey rules this really makes things simple this is a domain that mr taylor worked a lot on optimizing at the beginning of the 20th century and various people in the process of business process re-engineering and also others worked on optimizing and saying you know there's a way we can plan if we know everything in the future and we can constrain the actions of the agents because they obey rules or we can get them to obey rules we can do something like waterfall waterfall is a fantastic method waterfall is one of the best methods known if you can predict your causality and you know that the agents in your system obey certain rules if you can't get that he's still up there he's hiding you this is a very mechanistic view of the world here this view goes more into the uh direction of biology saying that okay we don't deal with agents who obey rules we have to put analyze and understand certain heuristics for behavior this is the beginning of the movement known as systems thinking god is a bit further the big shock came in the 1980s where people started realizing oh this is another word to get people to wake up slime slime mold did you know that in the year 2000 takahashi nakagaki a japanese scientist whose name i really had to practice a lot to be able to pronounce actually got slime mold to solve a maze put slime or the beginning of a small labyrinth put food at the end and the slime mold made its way through the labyrinth and found the food now slime mold it doesn't is not an ordered system there's not the the top slime who tells the other slimes what to do right slime mold slime do coordinate and they do communicate with each other by means of pheromones pheromones are smells and these pheromones are excreted from slime molds mouths and back ends and there are about 20 different smells and i really wonder who did that research now the problem is we are not slime mold with the exception of some managers i know but but slime mold and other things here got people to start thinking that well maybe there are types of systems whose behavior is not determined by this top slime but by the actions and interactions of agents themselves obeying a certain set of rules who through their interaction set up the causality for the system so this causality emerges give an example uh birds birds fly it's now getting cold so birds will migrate which means they're going to fly down and lay on the beach until it's time to come back which is something i wish we could also do right now how do birds migrate we all know that they call up the airport and they put in a flight plan and they get their weather report and they sit down with a for a briefing with their representatives and discuss which bird has seniority so they can fly towards the front of the flock and also have a discussion about how long they have to fly before they have to take their union mandated break right now birds for some reason haven't realized this yet so birds fly flocked according to three basic rules rule number one don't crash crashing is like really bad that hurts rule number two fly at the same speed so if you see there's nobody else around you you might want to take a look back and slow down a little bit but if you see the rest of the flocks in front of you you better start flapping your wings rule number three fly towards the center of the flock so you don't get lost now if you fly towards the center of the flock but avoid crashing you end up flying in parallel these are the rules that govern how birds flock this is great because when you do this you can start building mathematical models and there are people at the santa fe institute in new mexico who started doing exactly that building mathematical models for predicting behavior of complex systems now one of the things that these mathematical models have brought us is the current financial crisis because there's something wrong here too that's the big m and the problem is that as i said we are not slime mold we are not ants we are not birds we do not think rationally actually we only think rationally if we are autistic think about it also interesting latest one of the latest studies i read said the the two university programs of study with the highest degree of asperger's syndrome and other partial autism syndromes are computer science and economics which also says a lot about the financial crisis we do not think rationally our subconscious brain is not optimized for information processing we're optimized for pattern matching we use a first fit pattern matching based on past experience first fit not best fit that's because of the dinosaurs remember that you have to think find whatever behavior pattern will get you out of there as quickly as possible it's only afterwards that you realize oh i just had that outrun the other guy so you use the first fit pattern matching based on past experience and then this is rationalized in what's known as the context of the dominant discourse that you're in which means that this is done subconsciously then when you come in the morning to the office and you present the decision you've made you can say i made this decision based on an in-depth analysis of all material that was available to me at the time or you could say i had a dream and a frog told me now both of which are equally valid rationalizations of this subconscious process but obviously if you want to keep your job i keep quiet about the frog right these are a number of reasons why we figured out not only do the systems happen because of the interaction of the agents so we find ourselves up here but people don't like to obey rules now this brings us in the field of what we call social complexity here there are some big problems that misunderstandings that people have had in the past about these fields and one is the fact that correlation on the time axis implies causality that if two things happen one after the other that the first cause the other this is one of the big mistakes that comes here one of the big mistakes that comes up here on this side is saying that a simulation equates to predicting by simulating the behavior of a system you can predict the way it happens next now with ordered systems we also he vanished i think he gave up on me no actually he's he's i think he's on skype right now but let me give you an example for a complex system because complex systems are one of the real reasons that why agile works something that we all know a party imagine you're going to have a party now if you do organize a party the way you organize a project here i guess you would you know get all the party sponsors together and have a number of meetings a large number of meetings to discuss the objectives and the goals of this party you would invite all participants to come at a certain point of time at which time they will be presented with a powerpoint presentation for the kickoff saying what the objectives of the party are and making them realize that their further success which means being invited to other parties is dependent on them achieving these objectives right and then you would analyze behavior in a post mortem post-party post-mortem which is when you clean up the bottles and what you learned would be put in the best prod best practices database for use for other people to organize their parties because you can know everything in the future right actually no my parties work a little bit different first thing you do is draw a line okay my bedroom my single malt whiskey collection they're off limits and then you provide a number of attractors beer music and you support patterns that emerge that are good you see people dancing you turn up the music and you suppress patterns that are bad get out of my bedroom so if we look at it one of the things that complex systems have as one of their prime characteristics is something we call retrospective coherence now retrospective coherence that's a big term uh if you want i can write it down because you can impress people when you when you say that retrospective coherence is about think about you had a party you had a successful party so you sit down and you want to have another one bring me into consult i'm pretty cheap when it's about parties and talk about what made this party a success it was a people it was music it was a food and drink so what are we going to do next party we're going to invite exactly the same people right we're actually not invite they must be there because we knew it is exactly this group of people that made the party a success okay so music we can start optimizing now you can save that money that we spent on a dj so we wrote down all the songs we had now we have this playlist on the ipod all right so we press start and we lock the ipod away because you know the problem that people have at parties somebody always comes up wants to change the music we can optimize that way and then everyone who comes to the party will get a printed script with exact timings now i'm swiss so i can get you a good deal on these watches right exact time is to tell people when they have to eat and drink things now how many of you think that this party is going to be a success raise your hands no takers on that oh this is what we call retrospective coherence interesting thing about complex systems is that they have causality right but since causality happens through the actions and interactions of the people at the party at the end you know how you got there but if you start at the same place again you can't guarantee that you'll get to the same point again and that's the challenge and the mistake that people make like this is prediction does not equate even prediction one to one by actually doing it once already does not equate sorry simulation does not equate to prediction okay the other thing that people miss is saying well unless it was the music and it was the people and it was a food and drink at the end that's all you see what you miss is the fact that the people yes it was the fact that you saw that one lady sitting all alone in the corner and you walked over and talked to her and stood her up and introduced her to another people right and the fact that the music you saw that nobody was dancing so you turned on the music louder and got a couple people to start dancing and food and drink it was the fact that you were always looking because you're a good host and made sure there's enough beer enough to eat there what's happening was you were making while the party was going on making these little corrections and if you're a good host you probably start instinctively doing these regular rounds just going around checking everything's okay making whatever little corrections are necessary then another round another little correction until at the end you get to where you want to go because in the beginning you can't know what a successful party is going to be at the end you'll know if you have one or not but you can't define what success is going to be so this is one of the challenges we have one of the reasons agile processes work is because they implement this let's do us a little thing and see if it works let's start some boundaries right bedroom single malt whisker off limits and let's start doing some little iterations little circles try something first see if it works it does good let's do more of it if it doesn't let's make some corrections and go on and on because essentially what we're doing at the beginning we don't know what's going to make our product a success we don't know what we're going to be able to do and we haven't done anything so essentially as the party goes on we are validating our definition of success what we think will make this party a success we're validating that by actually doing it and what we're doing while we're having a party is converging we're getting a clearer view of what we have to do to make it make it a success while actually implementing it at the same time the model that's often used inspect and adapt is wrong inspect and adapt is wrong it's wrong in implementing agile processes it's wrong in doing things in an agile way and it's some a misunderstanding that has led to a number of agile projects going bad this is funny today i get to talk about why agile projects work next week if you want to meet me in munich i'm talking about why agile projects fail this is sort of part two of this and that's going to be a shorter talk but inspect and adapt is missing a major thing i've seen a lot of agile projects ones that have been success and ones that haven't now whether this is binary success or failure is another thing we'll leave out but on a lot of projects i've seen that have failed they've done exactly that they've done inspect and adapt inspect means buy one of those books and read it okay adapt means then you take the things out of it that you think are cool that won't put you outside your comfort zone and just do those so you're adapting the process and then you wonder why it doesn't work apply inspect and adapt apply says get out there and actually do it this is one thing i miss there's one thing i love about small talk small talks an interactive interpreted language you get the uh pop-up menu there you have one of your menu items says do it now there's a reason why a lot of these good ideas come from people from the small talk community we're confronted with do it every day so do it try something get that empirical evidence get proof that something works or that it doesn't and yeah if you can't know it in advance there's a risk that it won't work so what you need to do so that agile works it's not fail safe there is no one fail-safe way to do this if you cannot have a fail-safe method you must have a safe fail environment this is one of the most important attendance that we have if you can't know in advance that what you're going to do is going to be successful you have to find a way to minimize the risk that doing something wrong will endanger your project one of the big challenges we have is let me tell you that another way how much time do i oh i still have some time back in 1961 the american author joseph heller wrote a book which is probably one of the major works of american literature of the late 20th century and this book was about a group of air force pilots in the second world war now these were air force pilots that didn't deal with germany they were the ones that were out in japan and stuff and uh the problem that they had was as air force pilots during the war their job was to fly missions and drop bombs and kill people which they had moral and ethical problems with doing they also had a problem with the fact that while they were flying those missions as people on the ground were trying to shoot them down which is also bad for their health now the way this book is about the way they dealt with it uh which involves large quantities of alcohol and sex which makes it an interesting book but uh not the reason for me telling the story the story is they're the name of the book and the bottom line of the book is something that you all should remember the book was called catch 22. anybody heard of catch-22 a catch-22 a catch or a hook since these fighter pilots didn't want to fly these missions they wanted to get out of military service during the war there's one way to get out of military service and that's to be declared insane but if you're in the war and you want to get out of military service you are definitely not insane right and that was a trick there was no way to get out of it and there's a catch there and there here is our catch 22. we are expected to know exactly what the right thing is to do at every time right that's our expected expertise that's our market value that's what we're getting paid for to know what the right thing is to do in advance of doing it but we are in a situation in what's called a socially complex domain where it is proven impossible to know in advance what the right thing is to do the only way to get out of that is to get away from techniques that are optimized for knowing things in advance and move on to techniques which say we can learn we cannot expect things to be known in advance and we cannot expect them to stay the same way that's why agile works it provides us the lightweight framework for a safe fail environment a big challenge another challenge that we have is because we're so afraid of this stuff okay let's try another question i remember from cathy's asking you this morning there are a number of you here who are developers right put up your hands now if your boss is in the room put your hands down so okay so i see a couple guys here who your developers and you got out so your boss isn't here so let's try this one your boss comes to you and says look take a look at this i need you to do this and i'm going to come back in two hours and you tell me how long you need for it and take a look at it read through the specs and stop saying okay probably about a week or so okay so two hours later your boss comes in and says did you take a look at it how long do you need to do it what do you tell your boss three weeks is it actually you're probably the most honest man i don't know i know a couple companies who'd like to have your cv then they really want your cv so this is the thing we laugh at this right why the problem that people have is because we realize that we can't know things in advance but still we're supposed to leads to the problem that we have that one thing that most of you are getting very good at is avoiding responsibility actually the bigger the company the more the company is optimized for people to avoid responsibility one of the best ways to do that is meetings i honestly believe the purpose of meetings is to avoid responsibility because as long as you're sitting in a meeting you're not actually doing something you can be held responsible for on the other side having worked with self-organizing teams i don't want to get into the definition of self-organization right now but what you sort of imagine is being self-organizing teams part of the purpose of doing that exercise is getting people to take responsibility now that's challenging that's not something you can just shift from one side to the other so let's take a look at responsibility for a while i have a couple minutes here there's a ladder of responsibility and this ladder starts when you know when you ask your kids who made that mess on the floor or when you ask your wife where are my car keys or when you ask your development team who broke the build what's the first thing that happens denial hey it wasn't me no not me there must be somebody else no i didn't do it i wasn't even there at that time once you realize that you were there stuff oh next thing it wasn't me tommy did it oh yeah or the cat did it that's always a good experience the cats can never defend themselves and or your wife says no i didn't do you must have done it you must have forgotten where your keys are maybe they're if they're lucky my wife says maybe they're out in the car if they were in the car i wouldn't have locked the car with them or a development team was no it was it was the other guys they they were the last ones to check in right blame someone else next step once you once you get caught on that justify well it always happens on friday because that's why we have the problems with bandwidth or you know what always happens once if you gave me that and didn't give it to tommy and you know it always happens when you feed the cat or something like that it's something wrong in the world when you get people past that the next step shame that sort of them okay no it was me now shame is an interesting point which you have to get to because here is when this decision process starts once you shame somebody enough they will often opt out of the system i don't want to be in a team that embarrasses me like this if you can get people to grow up over the shame barrier obligation okay i guess somebody's going to have to work on it i'll come in on the weekend and fix the build and all of you sitting at home drinking beer can think of me while i'm sweating here in the office and oh right only after you get past this do you get to the step of somebody actually saying yeah the box stops here only there do you get to the point of actually saying yes i did it i take responsibility for it personal development this is part of growing up some people grow up other people just get old unfortunately that wasn't meant to be a joke but sometimes when you get people laugh it hurts less so why does agile work because we deal with systems where we can't know things in advance where the main vectors of our systems figuring out what we need to do how we need to do it and who we need to do it with right requirements technology people are either unclear or changing can't be nailed down it brings us to the type of system where we can't predict the future and where we have to have some way of working that lets us eliminate the amount of work that we have to do that we want to waste okay so there are three questions that i teach my the people i coach and these are the first things if i can't teach them the one right way to do things if i can't teach you the one right way to do things what i can teach and what i'd like to leave you with are a couple questions to ask first diagnostic question number one when do you want to know you have a problem after two weeks in a six-month project or after two years in a six month project right make things transparent small iterations right if you don't know what you're supposed to build for your customer if they're not sure about it uh you better find that out pretty quick before you bring it out on the market right so second question how much are you prepared to throw away how much pre-planning investment are you prepared to do at the risk that you're going to have to throw things away because the market around you is changing your customers are changing your competition is changing how much do you have to invest a lot of times you have to invest a lot it doesn't even have to do with the project but has to do with giving somebody out there the pseudo feeling of control or security fixed price there's a lot of estimates think about it an estimate for you know for a budget is like a weather report right i can tell you the weather tonight it's going to get dark tomorrow it's going to get get brighter again but there's you know might might rain might not next week it's going to be a little bit colder but on the 3rd of march 2009 will be exactly 19.7 degrees with a 30 chance of rain your estimates are a weather report and anybody who tells you elsewheres is bullshitting you so what do you need some basics that's what i think i'm going to end this with rule number one we don't make mistakes well i do sometimes we don't make mistakes we learn most of the problems we have are because we are brought up in a culture where we were punished for making mistakes all right uh now how many of you how many ride a bicycle all right it's good even with this the gas prices are going to go back up so get back in practice and think about how you learn to ride a bicycle your father put these help wheels on the side and then mine used to he was nasty he used to do in the night while i was sleeping he'd move him up so the next day somehow they moved up a little bit they get higher and higher and then eventually it was at the point where he could just take him off so your father put you on the bike and pushes you down the street and you go for about two meters and you fall normally on your right hand side and then you start crying and your father the nice man he is comes to you and picks you up and says you stupid idiot you'll never get that right how many of us were punished for making mistakes why do you tell your boss three weeks when you know it's going to be one right this can be different excuse me for a second i'm gonna get that thomas watson gentleman who founded ibm once had a manager who screwed up a project screwed up really bad cost ibm something like 15 million dollars and this was before the bush regime so the dollar was actually worth something back then this man was called into watson's office and was very afraid and watson you know came up to us and said i'm fired aren't i and watson looked at him and said actually we've just invested 15 million in your training and i would like to have a better return on investment than that this man went on to become one of the best managers ibm ever had we don't make mistakes we learn we have to get into a culture of learning we cannot know things in advance we have to set up a safe fail environment a learning nurturing environment second whoever has the risk makes a decision risk all right you tell your boss three weeks because you know what's going to happen he comes in and says no you only have a week's time to do it right whose risk is it yours who makes a decision he does that's one of the biggest problems we have people making decisions for things for which they have no risk and no responsibility one of the major problems in our industry that we have developers saying oh this would be cool and customers and managers saying well this is how long you have to do it and we know that about the managers talking but think about the developer side the developer says well this would be this would be really cool we have to have this in the product and if you don't believe me think back to 1994 when that one man by microsoft said you know what would be really cool executable email attachments where that brought us whoever has a risk makes a decision and third point and i firmly believe this if it's not fun you're doing something wrong why do we get into this business did we get in to become famous no do we get them to become rich they were earning more than the guys at mcdonald's yeah yeah guys we get in because of the chicks why no we did it because there's something fun about this and it's interesting in my work i get to see in to a lot of companies you see in the good and unfortunately the battle companies and i think i've never seen so many abusive dysfunctional relationships as in the workplace if our private relationships were that bad our divorce rate would probably be around 90 percent but we put up with that just because it's work but other similar things happen some people if if you don't get it at home you look for it someplace else and there is a word for affair in our business it's called open source software why do your best developers spend their nights spend their weekends working for free on projects why are you losing all of that energy all that power all that creativity what does she have what i don't have fun fun why do i still work on open source projects i really don't need to but it's because of the fun fun has a couple parts have to identify with something have to understand why yes this makes sense understand why to the point where you say yes i commit to this and this is where i get back to what i told you at lunch uh the problem if you're working on how can you commit to two or more projects there is no such thing as part-time commitment there's part-time availability there's no part-time commitment yeah uh identifying with something and being willing to take the responsibility i think this is a good idea i see that something's necessary and yes i will do it and that's what's missing actually that's about all you need everything else is just a practice just an implementation of one of these basic ideas that comes up and i think that's exactly the 45 minutes that i was supposed to talk thank you [Applause]