 ... Ok, so. Včeš površati na bark. Ok, zelo, metodologije patenja. Zelo, to je začiraj. Nisem izgleda, da osredi vševi solični. V nekaj, da ga so potrebe vse ideje, vsak je u njih početku, začiraj, In, ještje, neko poslutno, pravene vizivne in potenje. Kaj moji je vziv, pa je leži v mladu. To, da bi mi bojste, da se pravamo pošličiti, da pa ne bojste, da bi ne bojste vizivne in potenje. Zato, kjer te zelo tega, bolj da se pošličite. Vziv da, da bojste, da bojste, da bi gleda mi doj, da bi imaš pošličit. Bueno, to bese, mjelje prvega objiza, da sem pošličit, da pošličite. ki se poživajo zame, ki se dobi vzdzati razgrad. So se vse bo ne so sve v delu, da je druga večiske čarve, ki je zrečene projekte in je tega odrešim, jaz lahko nekaj metodologi ne dograli. P 자, to je alisarko, bo še. To je me, ki bo bil v počavki. Da se roviti na počavku, v tem, da b�em vse koristik. Hajde, priješa o Štojhovo nopodljane, ampak tu jebet evo v poskopu, da smo prijemili inžel jih, pa lahko so jih nekahaj, to ichjem početek nekaj sem ne ne ampak inžel nekaj sem nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj nekaj ni In vse malo se je dititulčen. Kako najboljo napravil? Oni erugstav nalazje. Vse malo, neč se poštavilo, občas Buljini. Beznači ne možemo narediti, kako torega nabravil. In tudi, kako te ne boj emotionally, nam se poštavilo malosti ugovorilo. kako vladiši, če si počusti, kako se zelo taj prakšin. Vse sem je potrej naša, da se počusti in ne bo v čem kontekstu. Da je nalega, da se počusti, da je napropreda, da je napropreda do všim projekte. To je zelo tem vse kova. In ampak... ...ga ne lahvo so počusti za vse. To ne lahvo, da ne lahvo. Iga ne lahvo. In v zelo komuniji, sem odličen za prak, da je da v svojih čitamo z tajom zelo, da zelo, da je, kako da se pridemio zelo, kako da se početimo, jaz ne bo počet, da je spolivno početil. Selo, da je je zelo, da je jezno všeljno vsevnega, iz vsevno glasba, iz evočna vsevna glasba, si jezno vsevnega, doko se vsevnega, da jezno vsevnega problema. To je či motto, nekaj, izradiši, zelo, nekaj, neka nekaj bil dopenjno nekaj baylila. Prez��j dopenjno nekaj nekaj nekaj meva napravila na ob sticky, pa drugi, nekaj ne уčine rav na nekaj, kde je so počнемstva iz različčnvom... Pa vse nalega je izvanja, nekaj nekaj vse, nekaj pogodibo? N expert vse prijezne to je bilo nekaj dobro, neka je dželično vsi stavili kšelistov. Nič je pravda, da se zelo v povedu, ali je bilo zelo skupniko, da je to zelo v povedu in skupniko, tako začasno u vrstvom, pa njič ga dober v šehoj, način imam skupniko, to je tako zelo, da so vodnjo problem, to je zelo, da se zelo, da bi imali zelo, da se izgleda na šehoj dobro. To je to čečniko, je to način, because if you don't have this, forget about this. If you don't have fun, forget about being effective, efficient, methodology, everything else. Nothing will work for you, will have a mess. Of course I'm not inventing anything here. And I love this quotation because somehow describes the software world pretty well. From time to time we come up with new ideas, new technologies. Then you look back 30 years earlier, they already thought about that. So I won't be claiming ownership on the ideas. I'm trying just to connect some dots and I'm trying to somehow try to find a broader audience. This is the old point. And so to prove that, these are things I found, you know, moving around. A pattern language of competitive development. This is 1995 in Canningham. Basically it was describing a pattern language to how to approach developing software in a specific context. Because it says, you know, describes a formal software development appropriate for an entrepreneurial organization. We assumed the entrepreneur to work in a small team of bright and highly motivated people. So basically it's a pattern language for a small methodology. So there is there. Then Google around, but now this site I think is being brought down by the owner. There was this guy that came with the methodology patterns thing. And he was collecting some patterns in this week, but they were not very well connected. Just a few of them and then just, I think, basically closed down the website recently. And still there are, you know, both work handings in this have the germ of the idea, but it's not quite what I'm looking for here. There are things missing. This came closer. It's a presentation. By the way, in all the slides you'll find where, you know, if it comes from the web, I put the reference, yeah, the URL. So the slides will be available and you will be able to find out the sources, okay. This was a presentation 2004 by Elena. I hope I will read, well, the surname is Buchal Chevova. It was about methodology patterns, concept classifications, and this came closer to what I'm thinking about, but this is all I found from this author. I haven't found anything else from her. So maybe she had an idea and then this didn't push it further. And then there are some other things. Alistar Cobor with a just-in-time methodology construction. If you have read Alistar Cobor works, who knows Alistar Cobor in this room? A few. For the ones who don't know him, have a look and find this work because you'll find the most interesting bits of methodology in his books, okay. And basically this was the just-in-time methodology construction. That is the whole idea of, you have a team, they have to solve a problem, you know. Methodologies to fit them, you have to suit them, okay. Which is, again, the basic idea. Still what is missing from all these things is some kind, some form of guidance, okay. So if you are a master or an expert, a team of experts or masters, you don't need to give them guidance. You know, when they say, just get these good guys, give them food, give them drinks, you know, space, computers, and they will solve the problem. This is when you have actually the people that know what they are doing. And these are, for example, I know of some of these expert level, master level people in London who are developers that actually work in this way. So they create their own methodology without even thinking they are doing a methodology at all, yeah. And then there are some books. Now, the fact that there is agile, as far as I'm concerned, is irrelevant, okay. It's just that it seems that when you look for patterns for these things, that they always have the agile thing. But this guy, Samadisi, collected some in form of patterns, some of the practices, you know, information radiators, test-driven development. I don't know if he put collective code on it. He pulled the various things, basically the practices of XP plus a few others, yeah. But he hasn't put any pattern language there. Then there is this. I don't know if you know James Coplin, big name in the patterns community and those in the C++1. And here he wrote a book with Nila Arizona, where he describes a set of patterns. He studied some companies. I think he studied especially some teams at Borland. And they looked at the way they worked, very effective teams, and they came up with the patterns these teams used. Some of them are also in the previous book. This came first, yeah. But also he connects them in pattern languages. So this is actually the idea I'm talking about, yeah. The thing is that I think we need more patterns and more languages. But if you want to see the fundamental thing I'm talking about, the fundamental idea, you need to get this book, which is very good and very readable, yeah. So I showed you that I'm not taking ownership of this, okay. I'm not claiming an invention here. Now the problems. So what are the problems I see with the current way we approach methodologies, yeah. The very first one is that the mainstream debate is around finding the methodology. Do you disagree with this? Does anybody, have you noticed that there is, ah, guys, we have XP, which works, yeah, works, you should try it by the way. To me, for all the ones that have been proposed, it's probably the most sound, okay. This is an aside. Then it comes cram. With cram you can solve all your problems. Then scram teams start to fail. Teams start to have problems. And then comes cram ban. You know what? You know why are you failing? Because cram sucks, use cram ban. And then teams start to have problems again. In the meantime, there are things like, yeah, there are all these good methodologies, but what if you have a project with 10,000 developers developing a huge, large-scale thing. Scram, cram ban don't really give you anything. You better use safe, or that, or whatever, yeah. So it's completely out of context, yeah. It's like we are trying to find something that fits everybody. And so the typical debate is like this. There is an algorithm, I'm a programmer, so I like writing algorithms. First step, start. So the methodology, the year zero of methodology discussion is 1970, with a paper from Royce about the waterfall, yeah. This is the beginning of times. The waterfall is the mainstream methodology. Start of time. The mainstream methodology shows some limitations. Somebody proposes a new or less unknown or almost forgotten methodology and shows how it addresses the limitations of step two and how it is better than waterfall, of course. This will come handy later on, yeah. Of course in the first step, this is the only thing, yeah. Then there is the debate that is after a long argument personal opinions and often light on facts. The methodology at step three becomes the mainstream one. Then we have step five, go to step two. So this is what I see in all the mailing lists that talk about Kanban, Scrum, Safe, whatever methodology you can think of, yeah. Along the years, we actually produced, using this algorithm quite a few, no particular order, yeah. We had the waterfall, Scrum, Kanban, DSDM, FDD, this is probably a lesser known one. Nobody is talking about this anymore. Rad, Ivo, from my friend Tom Gilb. Extreme programming, then the new kids on the block that have you heard of this one, it's called Tumblr, yeah. Which is basically like Safe, just with a different picture, yeah. They throw everything at it, yeah. Including the kitchen sink, yeah. You want to do Kanban, we got it. You want to do Scrum, we got it. You want to do Rope, we got it. You want to do, we got it, yeah. And so we came up with this, but still, you know, nobody has won. Is there something that actually solves all the problems? I keep seeing, you know, we may work as a consultant. Nowadays what I see is that most people that do a gile, basically means Scrum in their own special flavor of Scrum. The special flavor being the company-approved version of Scrum, which is in itself a wrong thing, yeah. And they keep failing, and they think that is Scrum the problem. So, and this is happening again and again. And I'm sure it will happen with Kanban if it's not happening yet. You know, it happened before with everything, all the other methodologies. Now, what is the problem here? Is that the focus is too much on the methods and not enough on the products and the context in which these products are created, yeah. We come here with a solution. By the way, what is your problem? This is the approach we are having. Which in most things is, you know, do we use this approach in other parts of our life? Do we come with solution and then find the problems? We usually don't, yeah. Then there is another one. The other thing is that comparing two of these methodologies in a given context is impractical. What they mean is probably we can make sociological studies to decide if in general Scrum or Kanban or Eve or Safe are kind of good or bad or not, yeah. It's like in general different projects and see with proper sociological techniques. But in a specific team, how do I know in my team now how can I decide to compare Scrum and Kanban, yeah, on the ground and decide that one is better than the other? Can I do, let's try Scrum for six months, then see next six months, let's try Kanban, see which one is better and then from that moment on we'll pick one of those. How can we measure that? Or does it even make sense to do that? Who thinks that makes sense? Now, here there are two things. Imposing it on the team, that rings the alarm bells in my head. And we'll talk a bit more about it. But even if it is a team choice, you have two problems here. You have to basically collect data on what you are doing. You have also to deliver because I don't know about companies that do experiments on that. But also you cannot try that in a toy project because you really need to try that in your real project. Because otherwise the context is different. So it's impractical in all terms. And then there is another thing, implementation details matter. But they don't simply matter, they matter a lot. So now we'll have a better look at this methodology. Basically it means that the holes they leave, the things that the details that are led to as an exercise to the reader are the ones that actually make the difference. Any other questions? Now, I talk a lot about methodology but I haven't said what the methodology is. I haven't defined that. So I looked a bit around and I went to Wikipedia, the source of all human knowledge. And there is a methodology, a software development methodology that is a framework that is used to structure, plan and control the process of developing an information system. If you see, this is pretty much control and prediction and knowing, you know, it's basically driving the system somehow. It's very, you do this, do that and we are able to manage the project. But I find this definition actually not that useful. In my opinion it's not that useful. There is another one that comes from Alisar Coburn who is a gel development book, which I find it better. That is, your methodology is everything you regularly do to get your software out. It includes who you are, what you hire them for, how they work together, what they produce and how they share. So this also includes the tacit knowledge that Thomas was talking about. It is a combined job descriptions, procedures and conventions of everyone in your team. It is the product of your particular ecosystem and is therefore a unique construction of your organization. This is much more useful. How many of you work in companies? You know, big enough that you have different departments you have to interact with. Like we are a development team, but to do database stuff we have to talk with a database team. How many of you in their company have formal interaction rules? Like if you want something done from the database team, you have to fill a form, maybe a web form or whatever, then they will come back to you and say, we can do that and we'll do that. How many of you fill the forms? How many of you have a friend in the database team and they can pick up the phone to solve the problem? That's it. That's it, because I work often, when I work as a contractor I often do this in an investment banking in London. Investment banks have plenty of bureaucracy. The reality is that if you follow the rules nothing gets done. You have friends and the phone. The phone and calling the friend is not modeled in any methodology but is a very important thing. So that is part of the methodology of your team just to clarify what I mean with everything you do. But also there is what is a methodology really for. Now the definition from Wikipedia is basically about control. I want to be sure that I deliver stuff and deliver it on time and if something happens I want to see that happens but it's basically about control, controlling the project. The project is like a machine, a black box, you have some levers in the controlling. The reality is actually slightly different. I got this also from the same book of Alistar Coburn because I was looking to tell you that you can also prefer to. And this is much more interesting because it's introducing new people to the process. This is the way we do stuff here. Again, the tacit knowledge thing. There is a new hire, they need to get up to speed. I'm sure you are not going to give them the scrum guide, we use scrum, study this. It basically is telling people how things are done. Substituting people. This doesn't mean like many HR departments think that people are replaceable entities. We don't come in the boxes that get open, put the developer on the desk and then start coding like this. This is more like we need to hire someone and we need to hire someone with the right competence, with the right skills and also the right attitude for our own environment. Basically, if you know how you do stuff, if you know how people interact, you know what kind of profile you want in your team. This is about this. If somebody lives, you want somebody else that can work well with the others and have the right skills to get the job done. Substituting is in this sense. It's not about replacing people and treating them like pieces of machinery. The linear thing is responsibility. So if you scrum, there is the product owner. There is the development team. There is the scrum master. So everybody knows what they are supposed to do. This is part of the methodology. Impressing the sponsors. This is more for the methodologies, whether the ISO certified ones and stuff like this, the big books, which in fact is a very effective way to sell stuff. CMMI. CMMI is not really a methodology. It's more assessing the level of maturity. But when you sell the sponsor, we are CMMI 5. We are like this. We'll give you our project. And then you don't deliver. And the sponsors say, I wonder how? And they are CMMI 5. Or we are ISO 9035. This is the impressing the sponsor. This is an effective way of selling something, but for a little time. Demonstrating visible progress. This is the management part. Of course, you want to be able to have some levers. And you want to see that stuff is getting done. You want to see that people are getting stuck, so you can do something about it. So there is the part of control as well, but it's not the only one. And it's not necessarily the strongest. And also there is the last one, for education, what does it mean? It means that depending on what you have to do and how you want to do it, you need to somehow teach people to work in a certain way. Another example. I'm often brought in in companies to teach people how to do TDD. So they choose to use TDD because they say, we want to use TDD because from what we see will help us in having better quality software. We don't know how to do that. So they bring in somebody that will coach them in doing that. This is what the curriculum for education is. So it's basically you decide that in your methodology you want to use some specific practices that will be helpful, but you need to bring the expertise in in some ways. So let's have another look at the interesting methodology frameworks now. If you look at these things again, what we'll see is that, as I mentioned before, they leave lots of detail to implementation. So if the methodology is everything you do to get stuff done basically, just using one of these, you won't solve any problems. They give you just a framework in which you can move around. So like every framework, like software frameworks, they put some boundaries. If your problem fits the boundaries, put them inside, you are fine. As long as your details are implemented correctly. But if your problem doesn't fit the boundaries of the framework, you have a bigger problem to solve. We are using Scrum, therefore we do stand-ups, and then you see the stand-ups are completely relevant. Why are you doing that? Because we are doing Scrum. Are you getting any value? No, stop it. But still people, they kind of cast their own behaviors inside the framework to try to make it work. That's the wrong approach. And in fact, what is one of the very important things for your methodology is the context in which you are. The context means company culture. Means team culture. Teams inside the company may have completely different cultures. I've seen companies where there is the official methodology, heavily command the control kind of thing, and a few things that are mavericks. Getting stuff done in ways completely different from the official company. In fact, they don't fit well in the surrounding environment. So it may happen that sometimes they really deliver great and have an influence on the company, or sometimes even if they deliver, they get shot down and sent off. Then there are the skills available. We need to produce to do something, produce a product for whatever. I don't know, a mailing system or think about any software thing. We have to do it in Java, because we have only Java developers, one example. Or maybe Java is not the great thing to use. We would prefer to use closure, but we don't have anybody that knows that. So what we need to do is to train the people that will be on the project. So the skills actually somehow will drive you to make some choices. We would like to use TDD, but nobody knows how to do this. But everybody knows how to write unit tests. OK, for now we skip TDD, we at least write unit testing. Customer culture. Whatever methodology you use, the people that are buying your product probably need to know how to work with you. Because, for example, situations in which out my team was very fast in delivering stuff, the users were not able to do UAT as fast. So you need to tune the process, because otherwise we are causing trouble to them. Preferences. People preferences. Human side of things. Work in a combined style would be more effective, but we really like sprints. So sometimes you can convince people, sometimes you can't. So you better get along with that. The product. If you are, depending on what you are building, like a nice Ferrari or another car, you approach the problem differently. This is a car that causes an arm and a leg. So better be perfect in many ways. Don't give problems. This one is cheap. People will be more tolerant of issues. If you build them, it changes completely, because there are other things as well. There is also the budget available, for example, or the time available. So basically your context defines the way you want to work based on what you need to achieve. And what you've got available here. So methodology and context are strongly connected. So I'm making the case for telling you just, you know, disregard those methodology frameworks, if you can. But I'll get back to this. So now I will skip a bit on this, because now I think I've shown you more or less the problems. These are the same problems I talked before, so it's not that important. So I hope I'm starting to convince you that this mainstream debate around the methodology is wrong, that the focus is in the wrong place, and that measuring the effectiveness of a methodology in the same context in a methodology in its entirety is kind of difficult, and the implementation details matter, and matter a lot. So one night I had a revolutionary idea. I woke up in the morning and said, one methodology per project. Then I said, well, it's not really revolutionary. Actually, Alistair Coburn, in his PhD thesis. And then he wrote in this, there is the webpage there, basically he says, when I was doing my thesis, I found I couldn't use the methodology per project as a new result, since there was ample previous research concluding the same. Recognizing that every project needs a different methodology is a hard pill to swallow, but the number of people have seen fit to swallow it. And I said, what to do about it? How does one create a new methodology on every project without housing the project budget? How do we do that? So I think that the way of using patterns and pattern languages can help in that. And I'll show you later. So you may say, well, you can always tailor, scrum, combine whatever framework to your own needs, because after all there are frameworks. The problem is that, like every framework, is customizable up to a point. This is from the scrum guide that you find on the web. Scrums, roles, artifacts, events and rules are immutable. And although implementing only parts of scrum is possible, the result is not scrum. Scrum exists only in its entirety. This means that when you do scrum and you follow the scrum advice of inspect and adapt, you inspect and you adapt, but you better not touch the scrum things that make the things scrum. Which means that if the way you work means that actually you would like to get rid of the sprint concept. You don't want sprints at all because just that doesn't make any sense for you. Scrum will forbid you for doing that if you want to continue in scrum. Which is a problem for many teams. They are afraid of doing so because they think they are ashamed of we are doing scrum. We cannot do this. Is it working for you? No, but you know. You better do what the master says. Of course not everything is bad because actually methodologies can share something. Different methodologies mostly mix and match the same tools and practices differently. Think about what you do every day at work. When we talk about things or even when we talk about I was using scrum then I tried crumban and then I did scrumban. What they are actually doing there is picking some practices from each of those and creating the new one. It's not that they take one in its entirety the other in its entirety like I don't know a horse and they don't came and come up with a mule. It's not like this. They pick and choose bits and pieces. So they share things. Or it's not that everything is bad. So we just need to look at things from a different perspective. What happens is that to many things is that when they realize that and they realize that the methodology is not working for them they actually try to mix and match practices in an opposite way. Basically they say we are agile but not quite. Then they go for give a go at TDD without really thinking about does it make sense in our context. You can apply this to any situation you want. You can apply this to information radiators. I've seen teams, distributed teams that use whiteboards like this one. Because whiteboard is better than electronic system. But if you have a team that is part in India and part in London whiteboard is a problem. Maybe you need to use something else. If everybody was in the same room, yeah, I'm okay. And this fits your problem, by all means. But it's not that it's always the best solution. And I've seen this again and again. Basically they don't understand what they are doing. And there is another thing that measuring the effectiveness of a practice in a given context is doable. And I inspect and adapt. This is exactly what you should be doing. We are, when you have a retrospective things that work. We want to keep doing this. Things that we are not doing, but we should be doing because we think we'll get some good out of them. And things we have been doing, but you know what? They actually cause trouble. And this is exactly what you do there. You are measuring your practices in your own context. With whatever unit of measure makes sense for you. And also, I've not necessarily endorsed the studies, but this is also an example that actually there are studies out there that try to study in a specific context. Or they go with there are about programming or requirements ability. So basically it's easier to find information about the effectiveness of these things. Than the effectiveness of the methodology framework. And this information tends to be more reliable. Okay? But then we say, okay. Which practices? Well, practices can be technical. The typical ones we talk about. The various TDD per programming continuous integration or continuous delivery or, you know, agile architecture comes to your mind. But it could be management ones as well. How is the team managed? What a manager should be doing to make sure that the team is effective. Something regarding, oh, it could be about leadership. If you read magazines like the Harvard Business Reviews, it seems that many people are obsessed with being leaders and leadership. But it's basically how to somehow guide the team in an effective way. More or less. Or other relevant classification, really. And actually, some practices belong to several categories. And this is the interesting bit of the pattern languages. And I'll show you that in a minute. And in fact, patterns and pattern languages can provide guidance for this. Yeah? But let's see, first of all, what is a pattern. Who knows what a pattern is. Or less. OK. Have you seen the format of design pattern? Like this. Pattern name and classification. A descriptive name that tells you, you know, more or less what the pattern is about. The typical one that developers know and is actually a very, very bad one is the single tone. Don't mention it in front of me saying that it's a good thing because it can become dangerous. But it's basically a name and classification. Something that tells you what is about and is also a memorable thing. The intent. Yeah? Why should you be using that? What is the reason for the pattern? What are the advantages you are going to get? Also known as disease, like if there are other names, but it's not that important. The motivation. What is the context where the pattern works? What are the forces that actually say, we have this problem, and this, you know, will get better. The applicability, so part of situation. The part that everybody forgets. The consequences. Or I call it sometimes the cost as well. When you use it, what is the price you are going to pay for this? What is the price you are going to pay for this? Yeah? So they are not necessarily all good or all bad. So they are not necessarily all good or all bad. They can help you solving the problem. So you have to pay for it. And this is a very important bit. And we will see also in the methodology patterns. Why? Non-users, this is to actually understand the things better. We as humans usually tend to understand things better using examples. Related patterns. This relates to the pattern languages. So it's like if you are doing this, probably you want to have a look at this other one as well. Yeah? If you are doing per programming and everybody can touch it, maybe you want to have a look at per programming as well. Yeah? These kind of things. They are related in a way. Now here I have an example to show you the format of a pattern. Let's see if technology works for me today. So I prepared this. So this is being taken by the agile adoption patterns book. I showed you before. Just to show you. I'm not going to read it. I don't like on paper. Just in case you haven't seen it. So here also there is another aspect. The format may vary slightly, but the main points remain the same. Yeah? So information radiator, who knows what it is. It's basically what you have in agile things, the walls with your Kanban board, yeah? Or white board, or even something's Jira. If you use Jira, something that tells you, this information about the project, yeah? What is going on? Or who is doing what, yeah? And then here is business value. There is a sketch as it describes something. The forces. Therefore here is a bit explanation of how it works and why you should do it. In this particular case they say adoption, but I'm not interested in that right now. The interesting bit is this, what it calls BAT. It's like these are the consequences of using it. Yeah? So voids in the information exist, indicating that individuals are all surfaces in the predisposition to secrecy, something like this. So it tells you, look, you may find these problems there. So be careful. Yeah? And this is just to show you more or less what the format is. Before you ask this question, which you don't know what it is, patterns are not best practices. Again. Now, I told you about singleton, the same goes with best practices. In terms of me becoming dangerous. In fact, there are no best practices. There are useful or useless ones, depending on the context in which you are. Okay? Somebody is not convinced about this? Yeah? Because we keep hearing about, you know, you should be doing this because it's a best practice. It doesn't apply to me. Because I'm doing something slightly different. Okay? But you hear about best practices all the time. Let's have a look at what the pattern language is. It's something like this. I took this from Jeff Satterland's website. Jeff Satterland is one of the co-creator of SCAM. And he was describing SCAM as a pattern language. And actually using one of the languages in Jin's Coplin book. So this is what the pattern language looks like. It basically says, if you are thinking about this pattern, maybe you should have a look at the connected ones in this direction. So basically it's like, if you start somewhere here with your problem, have a look at these ones because maybe it's helpful. But let's try to something simpler. I made this up. I haven't written down these as patterns. I have some ongoing work on these kind of things and I've published anything. I don't know what an example of what I mean. So let's suppose that we decide, we are working in a team and we want to establish some rules of the game. We have some code and we say, well, you know what, now we have a collocated team. We want to avoid situations in which one developer leaves the company and nobody knows what's going on with this code. Basically, we have the situation of the star that knows everything, which have you heard of the moderate bus factor. So the bus factor of a team is actually a pattern. Means that it's a number. It's a number that tells you how sensitive to this, to say how sensitive you are, how sensitive the team is in losing people, losing key people. It's called bus factor because it's basically the number of buses, the number of people that need to be killed by a bus before your project goes in this array. So if your star developer crosses the road in Bangalore, when Bangalore is almost impossible to get run over by a car, I suppose. And the bus hits him and he dies. It's a very gory description. If you want to go to your project, can you still do stuff or is good lord? We don't know what to do. Or to give you a concrete example. I worked in projects where even if the team is trying to be agile and have collective co-ownership, if some particular person was on holidays, nobody could do some things. So basically you want to have a number there that is high enough so you can do without some people. So how do you get there? If you want to do that, maybe you should think about collective co-ownership so everybody can touch everything. And maybe about pair programming as well. There is a way you work together so more than one person knows that part of the code and if you swap pairs, the knowledge gets spread around. And maybe if you have a collocated team, this is particularly good. If the team is not collocated, you may have problem with pair programming. Or about many things, I've done it myself that can actually remote pair. It's in Skype and other tools. It's not as good as in the same room but often it's better than no pairing at all. And so basically you think about these aspects of your project and say, well, we won't start there but then we want to give it a go at these. But then also this is interesting. Now what happens is that first of all, as we said before, each of these things comes with a price. Pair programming is a very difficult thing to do. If you don't get along with your pair, you won't be effective. You will just be having arguments for everything. I don't know how many of you have experience of pair programming. Always good, awesome. Because it's a matter of getting along. It's a matter of if you actually can have some share, touch, test it knowledge with a guy. You know, you do stuff. You don't really need to talk a lot. And it's like I work with guys that we were clicking like this. No need to shout or anything. But I work with guys. In one occasion there was one that was a very nice person, very well-meaning, but pairing with him was a headache, literally a headache the day after because he would take the keyboard and would start doing his own stuff and kept talking, blah, blah, blah, blah, and he would say, well, look, if we do it like this here, maybe we should, you know, we are done. No, because blah, blah, blah, blah, three hours later it comes. You know what, if we do this thing here, we will be done. It's like, this is what I was telling you, three hours ago. Yeah? So these are not really nice experience, but this can happen. So it's one of the things that you can have to pay. Then there is another part, what I was saying in different pattern languages. If you look at this. They are kind of technical, have a technical impact, in kako to prihodil izvečen. Barbarba bo prihodovati in je to učinit sa moderjantem, prihodovati in je to iličnico, jer je i na to, da prednotujem razovut. In tega storija podobne vene. Verjo, začno izvahe, tega povahe, je zdajno odrečenga v vzplavnimi instručni, zelo se možno pozveči zezpustovati posredili kvaliti, če bomo povedal, kako jaz nekaj, da potem equimovati stručnicoj z vzplana, zelo to mobilo na povaj, ne Againi nekaj, razpojvaj, nekaj nekaj, nekaj, odrečno stručnicoj, nekaj prijeljemo oteveni, nekaj del je, malosti, na načno, Fagan inspections, you inspect 100 lines at time, and those guys write thousands a day. And also they refactor the bloody thing. So basically you inspect the code one day, the next day will be different. How do you deal with that? With the per programming, you basically guarantee the same level of quality, but it's much cheaper because they just work together. You don't have all the ceremony or the thing. And these are management implications as well, because I know that my quality will be as I expect it to be. So if you think about it, a nice thing is that basically you have all these languages that intersect. So when you choose some practices, you have a better view of the old implications of your choices from all perspectives. So you can make a better, you know, a more informed decision if you like. Is it clear? And in fact, put here, you know, this is what I already said, describe not only the positive effects, but the consequences, the patterns. The context and consequences are important. In fact, they determine the chances of success or failure of a practice in a particular project. Yeah? This is why sometimes you fail with SCRAM or something because just doesn't apply in your context. But they are very rarely discussed by the proponents of a particular methodology framework. How often do you hear any of these methodology framework people actually telling you, look, this thing, yeah, it's nice, but you should be careful about this or that. Usually they just say, this will solve your problems anyway, yeah? And then there are the pattern languages, you know? Give an indication of which patterns work well or not so well with each other, yeah? So basically you can decide for yourself, you know, you have a starting point, and then you can decide how to move to create your own methodology. Knowing that a particular pattern belongs to several languages will give you a better view of all the implications of using it and so decide if you want to pay the price for using that. And the prepackaged methodology frameworks, they tend to present practices as belonging to only one category. You use SCRAM with the technical practices of XP, but the technical practices of XP, most of them have management implications, big ones, you know? TDD per programming, collective coordination, information radiators where you see the status of the project, what is really happening. But they don't tell you that, yeah? This is actually not giving you the information you need. And this actually leads people to ignore the implications of what they are doing, yeah? We are actually following this. We expected this result, but it's not working for us. And they simply don't understand that probably there were some implications that just didn't realize we are there, yeah? They are known unknowns, possibly, yeah? And so some consequences, and these are the important things. They free the mind from thinking in terms of SCRAM, KAMBAM, waterfall, whatever, yeah? It's no more SCRAM versus waterfall, KAMBAM versus waterfall, everybody else versus waterfall, because that's not the point, yeah? You start to think in terms of what is really important for the project, your project, yeah? Without the fear of doing something bad because you are not following the methodology by the book, yeah? In fact, there is no sacred book, yeah? And it's... The SCRAM guide, the definitive guide to SCRAM that changes every other month or so, yeah? But also there is no need to be ashamed anymore for doing SCRAM but not quite. If it is working for you, who cares, yeah? I've seen so many things, you know, that are kind of talking to and saying, oh, we are doing... It's not to pick on SCRAM, okay? It's on the same level, it's just that it's the most widely talked about and used, okay, just to be clear. And they say, you know, yeah, we are following SCRAM but I'm quite... And they tell you this in a subtle voice, almost, you know? We know we are doing something wrong. They say, no, is it working? If it is working and you are getting the solutions you need, continue doing it, if it is not working, let's see what's happening and change it, okay? So for me the inspect and adapt is a much stronger inspect and adapt than SCRAM, a very ruthless one, yeah? You change your framework if it doesn't work. But also there is the other aspect, that the methodology is a living thing. It changes along with the surrounding context. You start with a small thing of experts. You put the experts in a room and they will do marvelous stuff, but then the product grows and then you need to add more people. Then when you add more people, somehow you need to add some more structure there, yeah? Not necessarily imposing from outside but they will have to follow some, you know, rules of the game so they don't step into each other toes, yeah? And so you change your methodology because you have more people, for example, yeah? You can have the reverse thing, like a project that was going on in your things, but then at some point it goes in maintenance mode. You shrink down the team and they need to just support the current customers fixing bugs, yeah? Complete change, maybe before they work with springs and iterations, then it's just support or maybe work just with the flow combined model, yeah? Things come in, we fix bugs, you know, bugs fix come out, yeah? When you work, you change their approach and you need to change in this way. You can't be stuck in what you chose at the beginning, yeah? And there is the other aspect as well. Pattern and pattern languages, they change over time. It's not that it is something that is good and is good forever or bad and bad forever. Basically, this is part of the try stuff out, yeah? You have an hypothesis, you think that doing something will work for you, you try it out, yeah? But people get experience with that, they decide, well, you know what, we thought it was a good one, but actually now we realize it is creating more problems, the solution. The example in the software world is the singleton, yeah? In the Gang of Four book, the design patterns book, the very first one that was the singleton as a pattern. That was unfortunate because it seems that it's the only one that everybody has implemented. At least when I interview people, that's the only one they know about and they always think that it's good until I ask them and then they realize what they are talking about. But the thing is, it was considered a good thing to do in some context. Now, in the patterns community, that is considered actually a bad pattern, yeah? So what, using another term that I don't quite like, an anti-pattern, OK, just to make you understand, but it's a bad pattern. It's a pattern, yeah, because it's used all over again, but doesn't really solve the problems, actually causes more than the ones it solves, but this came after, you know, people living more and more experience with that, yeah? So things change and you are allowed to change them, yeah? You get experience. Not only this, you can have in your own company or team your own patterns, your own way of doing things that work for you, and you can come up with those and document them as well if you like, yeah? And create your own internal pattern language, OK? So this goes for patterns and for pattern languages as well because you even may try things like, you know, these two things are not connected in any language at all, but I have this feeling, this idea that actually they may work well together for some reason, yeah? Then you use that and then you discover, ah, actually, yeah. Yeah, let's suppose that you weren't sure about per programming, I don't know, collective code ownership, whatever, and you try them together and say, actually, these things fit well, you know, they are connected, yeah? OK, so also the language is change over time and experience, yeah? The whole point being, you don't need to be stuck somewhere, you don't need to be stuck with your first choice, ever. And then how go to documenting this? Now, I'm trying to do some work on this, but unfortunately I'm being much slower than I hope to, but anyway. You can find these things both in software books, yeah? Books, but also in magazines, in things that are, since there's agile conference, that are not classified as agile. What I mean is, now that we are in the agile era, this doesn't mean that people have been doing things wrong before us, yeah? Doesn't mean that. What it means is that we are trying to, for some, we are trying to somehow learn from the past and trying to change what didn't really work, but we want to keep the good bits. And keeping the good bits sometimes is also, you know, this is about traditional requirement stuff, but I can assure you that if you read this book, you'll understand a lot better how to produce a proper user story. For example, you'll understand that maybe you need to talk with the users asking questions, instead of asking them what do I need to do, and they say blah, blah, blah, you go and produce blah, and then the user says, what's that? You know, this is not what I wanted, yeah? So because these requirements things say that it's about the conversation, it's about techniques used that come useful, also in the new world, if you like, okay? But now I've said lots of things, but how do we actually use these patterns? What is the basic idea? Because practically how can we go doing that? First of all, we need to understand something. Before trying to create a methodology or change the one you have, you have to understand why you want to do that. You have to have some goals in mind. What is the problem you are trying to solve, yeah? Saying we want to become agile is not a good answer, because it doesn't make any sense. The problem has to be something real, concrete. We have some quality issues here. How can we address them, yeah? Things like this. Or if it is a new project, it's like, okay, these software will be used in these medical devices. By the way, we can kill people. How can we write software in a way that the chances of killing somebody are lower? What kind of practices can actually help us? I mean, they will help. So it's not that they will ensure anything, but will make more likely that you will succeed at avoiding bugs in operation, yeah? Okay? So you need to understand what is your complex, because this is, at the end, they put also a slide with all the books and things from a book, The Return on Process, this guy Michael West, and he says, you know, of course, the key is understanding what to improve and why. Yet it's both astonishing and disappointing how many improvement initiatives are launched without anyone asking and answering because these two most primal questions. So in your companies, why do you do agile? What is the reason? Yeah? Once you know that, you know what you can do to achieve those goals. Yeah? And another thing is understanding the real context. Now, what I mean here is, in companies usually have a defined process. It's the official thing. It's what everybody should be doing. Not in all. But then there is what people are doing, yeah? You have the procedure to interact with the DBAs, but you use the phone. When you go for a change, what you want to see first is to understand the perform process. Don't care about the defined one. You need to understand what people are really doing on the ground, because it might well be that they are doing the right thing, plus compliance work to look as if they were following the official one. So maybe just, you know, remove the official one altogether will solve your problems, yeah? So you need to spend time to understand this first. Otherwise, the risk is, like many companies do, is to address the problem of changing the defined process, which is completely, you know, useless. So, using the patterns. As I said, set the main goals. What are the goals for your particular context? What do you want to achieve with your product, yeah? What are the characteristics has to have, yeah? Understand the context. Choose the patterns that best match goals and context. So we want to have this, I don't know, web application, customer management application. We want it to be high quality. It doesn't have to have bug in production, because it's, I don't know, for a phone operator who is a customer that is very peak about that, and if he goes down for an hour, they will lose lots of money, stuff like this. Okay, we need to guarantee a certain level of quality. We have certain amount of skills, yeah? We know Java, maybe we need to do this in Java. We know, we don't really know TDD, but we know how to write unit testing. We can use unit testing. You see, you start to figure out what kind of things you want to use there, yeah? And then inspect and adapt. You try stuff. If stuff doesn't work, you change it. Simple, yeah? But you need to keep in mind a few things. As I said, the real context may be different from what you see, yeah? Defined versus performed. And then the methodology has to work for the people using it. This is where some methodology changes fail miserably, yeah? Basically, if you go to a bunch of developers, from now on you will be doing extreme programming in full. You can be sure that it will be a mess. I worked in a team like this. The mandate was, for the team, you shall use all the practices of extreme programming. This was 2004. And there were people that were extremely unhappy with their per programming. They didn't know how to do proper TDD, and the software was a bloody mess, yeah? We were doing extreme programming. We had huge problems of quality, huge problems of team interaction, huge problems of everything. Then one interesting thing happened. At some point, finally, the manager realized some of the problems and then said one day, you know what? If you hate per programming, don't do it. You are free to choose. If you want to do it, do it, otherwise work alone. Strangely enough, when the people that most hated it had a choice, they started to per program and they enjoyed it. Basically, you have to be careful there. You have to satisfy your customers that are the users of the methodology. They better be involved. The company efforts, from now on we shall use scrum in this way, they don't work because it's from above and also teams will have different needs anyway, even if it is the same company. Having them doing the same kind of methodology is actually wrong for your company. Then it's don't over constrain the system, which means choose only the practices that match your main goals. Set the boundaries where they really matter. You don't want to kill people. Make sure that you use all the practices that will help you doing that. It can be even a checklist. The doctors in the operating theater they have a checklist of things they have to do before closing the patient so they don't forget instruments inside and stuff like this, but it's real. It's real. Anything that can help you forgetting important stuff as a rule of thumb. Leave secondary things alone. Just let people have some initiative. Let people being able to pick the phone. Why do you impose this thing on them? Why are you trying to constrain the system from all the points? You cannot predict everything. Instead of predicting, try to avoid damage when it really matters. Leave everything else alone. Or otherwise, you'll end up like a big bank I was contracting for that at some point they had a price for people that actually cut red carpet. So bureaucracy. They were also big size. These guys weren't awarded. They don't remember the price because to serve the customers of the bank they cut red carpet, removed bureaucracy. And they served the customers. And when I saw that, they thought these guys, the idiots, not the guys that cut red carpet, the idiots that put the sign, didn't realize. What they were writing there was we had a bunch of idiots who put a set of arbitrary obstacles in front of these people and they just said, you know what, remove them and solve the problem. In the internal processes and methods. To avoid the same problems the next time. Oh, sorry. I think I have a problem with that. The tool, the setting. Is it back? So you cannot predict everything. Just avoid trying to do so. Also because if you do that, I don't know if you know about the work-to-rule thing that is basically an industrial action in which employees do no more than the human required by the rules of their contract and follow safety or other regulations precisely in order to cause a slow down rather than to serve their purposes. In some countries a way of having a strike is will follow the rules in a religious way and will show you something. So basically, if you try to over constrain the system, you are designing yourself something like this. A work-to-rule scenario where nothing moves ever. But also there is what about this? Are they that bad? I mean, the very big ones are bad in my opinion because they are too complicated. But the real thing is you can still make use of them. So if you don't know where to start so you are not an expert in methodology you don't have say, access to experts to help you, you can always say you know what this is, scrum kind of fits our context more or less. So you start from there and then start adding what you need and removing what you don't. Removing what you don't I mean also removing things that make scrum scrum. It's just like when you write code, you use a new framework you want to use it in your context then you find some examples on the web. You copy the example, pasting your ID start fiddling with it. So basically make the example run and change it as now solves my problem, now I'm done. It's basically using them in the same way to avoid the blank page situation in which it's like okay, I know where I am but I really don't know how how to build a thing for me. So this could be starting points. Then I put this, what about scaling up? I kind of, I didn't know if to expect the question or not. I put this. Now my personal opinion is that all these talk about scaling is a scam. It's completely pointless because it's not interesting. You don't want to scale agile. What you want to do is to in situations in which you have truly big projects to try to get the hang of them and make them work. Which is not about really scaling up anything it's about finding a way to make the thing work. Yeah? Why, you know, director level manager who uses Kanban or Scrum or anything else. Does it always make sense? I don't know. I'm not a manager at that level so for me it's kind of it's not right to go there and say you should be really using Kanban. Maybe it works but maybe it doesn't. So the focus again should be this is the situation, how can we act on this. And by the way, most companies I work with, investment banks are big companies. I have consulted with others big companies they don't need this scale up thing even if they have teams working together on the same product. They are using Scrum in each team and they synchronize with each other and they do it well. They don't need all these kind of app and we are talking teams of ten people maybe five, six, seven teams which is, you know, it's not a huge as usual I can could be a Microsoft project for Windows development that in most companies is the kind of as big as it can get. And you don't really need to think about scaling what you need to think about is how are we going to synchronize this and then try to solve the problem from that point of view. This is my opinion and I've never seen and I'm always also very doubtful when I hear things I was at a talk about SAFE the other day I was unconvinced in this claim it is here in this proven to work because I wasn't shown anything I wasn't shown any real example in not even, you know, not talking about scientific proof, okay and talking about examples, yeah stuff like this. So I think I finished the slides early but I hope you'll have lots of questions or comments but I have a final rant that is I think we need to fundamentally change the conversation about methodologies and focus in the unachievable goal of finding the one that will work for every context which to me this is the focus of the community at the moment I think that is completely wrong and is leading us in the wrong direction and this is it so any questions, comments yes, you actually what I think you actually will end up with variations with a variation per team literally and to the point that it could be completely different ways of working team and the thing that probably you may have is how to synchronize teams that work differently, okay but then there what I would try to do is try to synchronize using what are the expected outputs when and try to agree on that there has to be a conversation there this is what I would try to do this is what I've done and generally works but no, it's not easy but it's something yes yes, okay you can run experiments on that you can say for two weeks we will try this of course people that have to do that have to agree, they have to see that there could be some benefits it's just that the benefits are not clear totally clear yet so you can always say okay and try to do that and see what you get out of that and see what is the experience and then you can decide if you want to continue doing that maybe with some variations or maybe ditch that or whatever of course you need to now in every project I think you have to have anyway allow for some slack to learn stuff basically but the thing you should avoid at all costs is having your people busy 100% of their time in project stuff all the time because it's a recipe for burnout and they won't have time to learn anything yeah, it's like when you write also applications that run 24 hour, 7 days a week you don't write, you don't put the hardware and say so you can utilize that 100% of the time usually you aim at let's say 50% and possibly 60% partly in part to allow also for peaks of activity the same goes with people but in this case in this case you may have the peaks of activity because you somehow have an estimate that went wrong so you have to do more work but also if they finish early probably want them to learn stuff or in cases in which are experimenting they will be slower and you need to keep this into account and it's like you have to consider this as an investment that will pay back later and some of these investments actually pay back very, very soon yeah from a technical point of view if you write your acceptance test automated them before writing any code I recently have been pushing some things that we are not doing that and we have a testing phase at the end of the scrum until I ask them they seem not to realize that and then I convince them to go the other way around try to do this, just give it a go you can ditch it if it doesn't work when they try that on the same sprint they started to realize how good it was they didn't have any that many bugs at all they didn't have to have a final week of bug fixing or stuff like this the payback was immediate another team a recent one they had like for the particular they do some complicated things and they had a verification what they call a verification phase at the end it's like the software does something to make sure that it works, we have a baseline to test things against and what the software does which means basically text files and they were doing this manually which meant one person week to run the verification horribly expensive and they did these things they tried that all of a sudden instead of one week was two hours so depending on what you do depending on the practice you can have it's an investment but some of them payback almost immediately some won't, you have to learn TDD require some practice or per programming you need to acquire the ability to maybe communicate better with your peers depending on the person maybe to have a shower sometimes this is a problem that some people mention but basically you need to change some behaviors to change that you need to learn but it's an investment that usually pays back if it doesn't pay back you can do something else yes you have to plan basically every time if you have a spring planning you don't go to the spring planning knowing nothing you go there knowing the studies you are going to talk about and having an idea in the context otherwise will be a huge waste of time think that well if you really say covers most of the things as well no, no, no, I'm saying if you really say will do as well the problem there is the approach let's see if I can go back is the approach I've got a solution give me your problem also there is an aspect that you mentioned you want that you are codified of your methodology ok so the bits and pieces that you choose to set some boundaries because it's important to be few a small page because everything that I cannot remember I won't do we just follow safe ok, now what am I supposed to do now yeah basically if it's not something that makes sense for people it won't be followed typical example if you do scrum you know the definition of done I've seen things that waste a huge amount of time giving 100 pages book to define done and then they have broken bills and nobody cares what's going on here and what goes on is that is so long and cumbersome that just forget about it yeah and this is the kind of thing I'm talking about but you see basically I go the other way round I have a problem, I build a methodology it's not I have a methodology I remove stuff to fit my problem because I think it's much more useful you want to start as small as you can and keep it as small as possible and leave because it will simplify what you need to do and let's say this also from direct experience ok so I consult but I also work in teams I know what we do in teams I know how we ignore stuff yeah so this is what I said but the good thing about this is that you can actually sell them you see the approach I'm talking I'm telling you first of all it's not a methodology if you want really to classify it could be a metametodology but it's not something that you go and sell and sell certifications which is actually a big minus point for me yes yeah and that is where you have to use the only tool that matters that is the brain and think let's talk about it what is not working here this should be the way retrospectives are used but unfortunately often are just empty ceremonies in many things but it's really thinking deeply ok this is what we have been doing basically when you are trying something you are at the level of maybe novice or maybe become competent basically you are very aware of what you are trying and you try to understand the mechanics and then you need to understand what of the beats are actually not working for you and why and then you can decide why don't you jump on this because they just want to try new stuff it's cool I agree with that you don't want to jump randomly jump from one thing to another it's the same thing you don't want when you have new interesting project developers to choose technology simply because they want to try it's important to have a way of trying stuff but since it's something you are selling it's better to try it in a controlled way I am interested in this so my CV will be better but you see the thing there what you need to care about is the outputs what they are producing when are the outputs the one you expect when you expect them this is all you need but also you need to put among the outputs sometimes you need to put also things that will help you understanding the situation some form of reporting but some form of so this is also a way of organizing the information radiators actually they did something interesting with one tool I don't remember if they use something from the jet brains guys anyway they use the tool and they have their own boards there but the tool can also give you statistics can make the numbers based on information given and you can create customize views for different people so they had the CO that needed to have some form of understanding what was going on they created a customized view from the same data for the CO so it's not about one information radiator is the appropriate one for the appropriate audience and by doing that actually one thing that CO realized was with my fiddling with this team I'm actually causing trouble he realized that when he intervened you really need to do this and some dips in productivity or stuff so there is a way to deal with that but the way to deal with that is not imposing uniformity in a blend way it's more like again what are your goals what do you need to make sense of what is happening because at the end of the day for a company what matters is what you deliver and I'm not advocating depending on a particular guy I'm advocating of actually making the teams as effective as they can be and working out everything else around this so instead of saying I need this so everybody will be uniform and I know how to look to things I mean these guys as effective as they can be now I figure out how to verify what they are doing this is my take on that and it's actually simpler than what it seems it's just as humans we like a lot of uniformity and symmetry and Microsoft project diagnosis stuff like this no, I'm not saying the delay but I'm saying it's very kind of there are definitely different levels of maturity but I think that that are beginners put in front these are the problems what you need to do there is of course you can't have a team of beginners because if you have to deliver something otherwise you have a problem but what you can do there is also offer alternatives and discuss things and say what do you think about this and that we can use that so you don't go there and say just do this people have to understand what they are doing but you can do this with any team of course if you have a team of only beginners you have some other problem to solve because you won't deliver anything because they will have to learn lots of stuff so probably won't be able to you will have to form them anyway I tell you what I do what I typically do with beginners in my teams so I give a specific example here I was a team lead in a quite complicated project I coordinate 6-7 teams to do stuff that was important for the bank and I was given an entire so someone that was at university no real experience in the workplace and he was there to learn the first thing I did I made sure that I told him look I don't care how much you know you are a member of the team your voice here is as important as everybody else so I made sure he understood that and then we treated him as a peer but also in some things you take the time to work together show how to do some things get stuff done so basically is a kind of mentoring process interestingly enough in this process I learned a lot from him including things like he solved us a problem and the bright idea took us less than one week but basically it's like first of all you are part of the team it's not that you are a beginner you are consider an inferior guy no you are not you just know less of some things in some context because in others you may know more and then there is an approach of mentoring working together doing stuff together is a process of really growing together but it's difficult to explain in another way I can't give you a tick box there what I can tell you is for sure always act consistently do what you say and say what you do because if you don't act consistently you just confuse people we finish 40 minutes certainly so you should thank me for that ok, thank you very much for coming and make the slides available in the site if you are interested feel free to drop me an email with any questions thank you very much