Agile Project Management with Kanban | Eric Brechner | Talks at Google

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
ERIC BRECHNER: Thank you, sir. [APPLAUSE] We have a little video to that the folks at my publisher asked me to do. But they let me do it anyway I wanted, so I enjoy. I'll give you a little introduction to the book and then we'll get started. [VIDEO PLAYBACK] -I'm Eric Brechner. I'm an experienced developer at an established software company. My favorite C programming book is thin, clear and complete, with plenty of examples. I didn't think life could get any better. Until I found Kanban. After I found Kanban, I joined Xbox and started shipping every day, every week, and every month. With Kanban, there are no milestones, sprints or overhead. Quality happens at every step and you can ship every day. Kanban was built for continuous delivery. I love Kanban so much that I wrote a book about it, Agile Project Management with Kanban. It's thin, clear, and complete, and with plenty of examples. There's even a quick start guide, worksheets to fill out, checklist to follow, and diagrams to ogle. Plus it covers planning and estimation, working within large orgs, adapting from traditional waterfall, and evolving from Scrum. You'll love it, and your team will love Kanban. Get it today from your favorite book purveyor, and I'll throw in increased productivity and quality, and decreased time and cost for as long as you follow the easy steps in these pages. Rejuvenate yourself and your product development with Kanban. Get on board! [END PLAYBACK] ERIC BRECHNER: So, a little fun there. I enjoyed that. A little bit about myself. I've been a professional developer as [INAUDIBLE] mentioned. For a long time I've focused on computer graphics, and then on data flow, and then on image, you know, image editing and things like that. I've done a lot of different things. But the kind of the side-- my side interest has always been on how software development is done. If you ask my wife, I'm a little OCD about how I do things. It's paid off professionally, maybe a little annoying in my personal life. But nonetheless I've just been fascinated by how work gets done, and how to get the most out of every day and the most out of my teams, now that I've been a development manager for the better part of 15, 20 years now. So I-- since I manage my teams, I get to tell them what to do, kind of-- we experiment a lot. So I've experimented with just about every methodology you could think of, everything from pair programming to TSP to various forms of Agile and test-driven development, obviously Scrum. Scrum was phenomenal. I used Scrum with my teams for a good eight plus years. And then finally, I discovered this thing called Kanban, and I've been using it with my teams now for four years. And Kanban is just so dramatically simpler, and yet better. It produces higher quality at a much higher rate than anything else that I've ever used. I've just been captivated by it. It really is the first time in my entire career-- and I've been working since professionally since I was 15 in software-- it's the first time in my entire career that I feel like every minute of the day that my team spends working they're working on actual value going into the product. They're not spending time doing other things that contribute indirectly, but really aren't that related. You know, having all these extra meetings, and all these extra documentation, and all this extra planning. It just doesn't happen, they're just working on stuff for customers. And with Xbox, it's a very, obviously, it's very consumer-facing. We ship to every console every month. We ship online multiple times a day. It's having that kind of methodology at my disposal that has given my team a real advantage. And I can do a lot less-- excuse me-- a lot more with a lot fewer people. My team is an order of magnitude smaller than the other teams that do similar work to mine, and we produce a lot more with a lot of higher quality, which helps me in my annual review. So life is good, and it's so great that I finally decided I'm going to go ahead and write a book about this, because this is just too great. So that's what I'm going to talk about today. Here's the book. We ordered some but unfortunately they didn't arrive on time. But that's what it looks like. It really is that thin. I wrote it with folks like you and your peers, my peers at work, in mind, who don't like spending a lot of time thinking about this, hate the idea of working on process, it's just evil, right? This doesn't feel at all like process, and that's part of it. There's just no overhead involved and it gives us tremendous project management capability. So without further ado, let me talk about it. So the way that I'm going to do this, is I'm going to run this talk using a Kanban board. So I have no slides, I'm just going to run it as a Kanban board. And what we're going to work on today for our product is your questions. So I'm going to track your questions on the Kanban board and answer them. Now I realize this isn't exactly the same as writing software, but I'll draw the analogy as we go and hopefully you'll be able to see that pretty easily. So to start with let's just draw a Kanban board. The Kanban board is the center of this particular approach and there is nothing else. It's not like there's extra things to keep track of, spreadsheet stuff. It's just the Kanban board. So what does a Kanban board look like? It's pretty straightforward, you start out with a backlog. So I'll put the backlog. OK so we started with a backlog. How many people here have used Scrum? Any people use? OK, a fair number of people using Scrum. So you're familiar with what a backlog is. If you use a more traditional waterfall-- like old school Microsoft, and when I was at Boeing and stuff we kind of used old school waterfall-- that would just be a feature list, right? But the backlog is just a list of stuff you've got to do. Typically it's prioritized, it's ordered in some way. So that's the backlog. That's where I'll keep all your questions. And then we have steps. So the next step and in this case I'm answering your questions. The next step here-- normally I'd just say I'd answer the question-- but some questions are kind of big. And that's true in software development as well. The things in your backlog aren't all the same size, some of them may take just a couple of days, but some of them may take a few months. They just come in different shapes and sizes. So you kind of want to break those down into equally sized pieces, and the same thing with questions. You could ask a very complicated question, and you're going to want to break it down into a few different questions. So the next step will be breakdown. All right, and then after that I'm going to answer the question. And then, after that I want to validate that I answer the question, because I'm trying to be a good speaker here. So I don't want to just answer whatever question I thought you asked, I want to make sure I'm answering the question that you asked for. Sound familiar in product development, right? You code up something, but until you get customer feedback, you don't really know what you have. So last step here will be validate. So that's my Kanban board. You see, it didn't take me very long. Our actual Kanban boards are just like this. They're a little bit bigger, it's kind of a small white board, but they're just like this. And they have the same number of steps. We have a breakdown step, some people call it specify because you do a little bit of specking there, just enough to break it down into pieces. Answers, typically implements, and validate is validate. You can obviously name the steps anything you want, and you can have as many steps as you want. This is just an example. So that's it, so we're going to track all our work here. Now we get to the first place where this seems a little different from what many of you who may use boards-- I know a lot of people using Scrum and even Waterfall use boards to track their work-- this is the first step where it really kind of differentiates itself from just regularly using a whiteboard to track your work. Each step has an active and a done column. So each step is broken into two. So we're working on breaking it down, we've finished breaking it down. We're working on answering, it we finished answering it. We're working on validating, we finished validating. So that's a little different with Kanban. And it turns out to be really important in order to use Kanban as a project management technique, rather than just a visualize your work technique. So with each of these steps, we want to be able to specify-- that one of the reasons for having the I'm working on it, I'm done, is to specify what it means to be done. Now I'm not saying that engineers might occasionally cut corners, maybe not get a code review, not do a full bill, not run all their tests, or write the unit disk. I'm not saying that ever happens, but just in case there's someone-- not you, but someone you know-- who doesn't always do all those things, you want to have a check to make sure that they're not just moving things along without actually following through on all of their work. This never happens at Xbox. OK, so what you want here, is you want rules. We call these done rules. You want rules that specify when something is done. So for the breakdown step-- now these rules I'm going to make for these questions. But you can imagine different rules for actual software development. So for breaking down a question, I want to make sure-- it's not going to be broken down unless the question can be answered in like less than two minutes each. So I'll just say less than two minutes, and then I'll know I'm done breaking it down. Because I want the questions to be about the same size, and not take too long. For answering, when is a question going to be answered? Now this is being recorded, it's being streamed, so I'm going to want to repeat the question. So I better repeat, and then I need to answer it, of course. OK so when it's repeated and answered, here we go, past tense, then it's done. So that'll be my done rule for that step. If that were implement, in product development, you can imagine that saying, it's been a code reviewed, it's been unit tested, you've run through all that stuff. Whatever other steps you would normally do to say something's finished being implemented. And then finally for validate, I'm answering questions here. I want to make sure that the questioner is satisfied. Did I answer your question, kind of thing. So for this one it will be questioner satisfied. And then I know I'm done with validate. And that's it except for one other element, which is a little tricky. But before I get to that, I want to make sure that I've answered any questions you have for now. So yes. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: OK so two questions there. One on prioritization and one on due dates, absolutely. And I'll talk about these, obviously, in a lot more detail when I actually answer them, but the two questions there. One was on how do you handle dependencies, and the other question was, how do you handle assigning work? AUDIENCE: In what scenarios does Kanban not work? ERIC BRECHNER: So when not Kanban? Just such a sec. Continuous improvement, I was just kidding. And then there was a second question? Evil, evil meetings. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: We do have a daily stand up. Oh, look, hey, I just did something. So we're running Kanban here, and right now collecting items for the backlog, and there is a question about how often do you have meetings, what meetings do you have. And I just answered it straight out. We just have a daily stand up, but there are no other meetings, that's the answer. There are no Kanban police, no one just marched into this room and put me up against the wall and said horrible things to me. It's not like that, Kanban is just a tool to help you manage your project. You don't have to put all your emails on here. If there's a quick piece of work that's going to take you five, 10 minutes, maybe an hour, you can do that, it's OK. It's all right to just do work as it comes in if you need to. Kanban is here to help you manage work that's going to take a few days, that's more like project type work. But you know there aren't hard and fast rules, and people that are going to make fun of you and say you're doing it all wrong and all that sort of thing. This is a tool to help you work. Any other questions? We might as well-- why don't we go ahead and get started, and then you can ask questions all along, which is by the way, a lot like product development. We're going to go ahead and prioritize everything and start working on it and the new feature requests will come in, in the form of more questions. And we'll just slot those in to our existing priorities. So let's see we've got lots of questions. First step, we want to prioritize them. Let's talk about prioritization, that's going to be my first question. It's straightforward, I don't need to break it down into more than one. I move it over, and now I'm going to answer it. You can move the stickies at any time. Typically it's a whole team, not one person doing this, of course. But you can do Kanban at home, it's called personal Kanban. Anyway, it really is. It just has three columns, a backlog, doing, and done. And that's it, it's very simple. But it's pretty handy, a lot of people like it. Anyway, so for prioritization we're going to put things in order and the team just does that together, based on their shared sense of priorities. They can do it in a daily stand up. So what am I going to do here? Let's see. I definitely want to cover estimation and due dates, because lots of people ask about that. And then when to launch is related to that, and then dependencies are nasty after that. Put those closer to this side. Dependencies, maybe assignments, how large a team, setting expectations. Roles, how about over there? Onboarding time. Oops I lost one. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: I am doing this in order most important down, and then again. And I'm doing it based on my personal preference, because I am in charge. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: Oh, you would do it together at a daily stand up. Again, answering questions straight off the bat. That was a quick one. You could have a quarterly meeting if you wanted to, if it was a major deal. And I talk about that, there's a chapter in the book all about using Kanban within a large organization. I'm currently within the Windows organization, there's 13000 of us in that organization. There's about 8,000 of us that are engineers, so it works well within that framework. But obviously there's more to it when you're fitting into a big team. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: Absolutely, of course, that's what I'm doing right now. This is how you prioritize, so that is how you prioritize. It's not hard, it doesn't involve a lot of extra whatever. It's stickies and you move them around. If you're curious about how you re-prioritize, I have re-prioritized. That's all there is to it. Like I said, Kanban is really simple and really quick. It's why my teams now I have gotten just absurdly fast. Yes? You're absolutely right. So the point that this person was just making was it's a lot easier for me to do it when it's just me. It's harder when you've got a whole team, let alone you're in an organization like 8000 people. So obviously with 8000 people is more involved, and there's a top down and bottom up thing going on. And I describe all that in a lot of detail in the book. I can add that as a question here, if you're interested, on how that works. So large scale. But at some point or another, your individual team has a set of work they need to do. At some point that happens, and you do need to sort it. And what we do is, just have the team together at the daily stand up. It's time to re-sort the work. We do this, well we do it every day kind of as an insertion sort. But sometimes you need to re-sort the whole thing because something has changed. And then just have conversations about what it is, and talk about what the customers need, what the expectations are of executives and partners, and stuff like that. And you reorder it, and you reorder it very much like I did, but obviously it will take you more than the three minutes that I spent. But it wouldn't take you much longer than about 20 minutes. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: Quick question about the daily stand up. How long does the daily stand up take? Some teams do it in less than five minutes. My teams typically use it to socialize a little bit, so they typically take about a half an hour. But that's just personal preference. In terms of how much work it is, it's not a lot of work. Obviously if you are going to redo your whole board that would take a little bit longer for that one. OK. So that is prioritization. Let's go ahead and validate. Did I answer the prioritization question? AUDIENCE: Validated. ERIC BRECHNER: Excellent, all right. OK, now before I move on to estimation, I want to make sure I talk about that last element of Kanban. And it's an extremely important one, although all it is just a number. Next to each step, and it's called a work in progress limit or WIP, work in progress. A WIP limit. And you assign WIP limits to every step. And this is the part, along with the done rules, that really makes this project management. Because until then you could just work willy-nilly and maybe your project's on track, and maybe it isn't. Who knows? Right? The done rules will give you a certain amount of quality assurance, but the actual management of the work, there's not much going on here. You can just see it. So what are the WIP limits? The WIP limits are just a number associated with each step, and they limit the number of stickies allowed in that step. That's it. That's what they do. So the way that I just treated prioritization, I had a WIP limit of one across the board. I just moved one sticky all the way through. But for a team, a larger size team, of course, these WIP limits are going to be a bit larger. One of the questions a lot of people have when they're first using Kanban is how do you set the WIP limited appropriately? What do you use? And for that there's a fairly simple answer. And I have little Excel spreadsheet you can use to calculate this for yourself. You can download it, it's very simple but nonetheless spreadsheets are cool. So here's what you do to set up your initial WIP limits. And then over time, you can adjust them if you're finding that things aren't working quite right. So for the initial WIP limits, one of these steps typically takes longer than the others, often it's the implementation step. Doesn't have to be, but for the sake of argument here, I'm going to say that the answer step is the longest step. That's often the longest step, the implementation step. So I'm going to set that WIP limit first. I'm going to set that WIP limit to be the number of people that are involved in working on it, in my case it's just one. But for a team, let's say you had a team, and it had five developers on it, and some people who were doing the specifications, some people maybe were testing it, maybe the developers also test it. But let's say there were five people who could actually do the implementation step, you would see that WIP limit to five. Make sure they all have something to do, plus a little bit of buffer, right? Because there is some variation in work sometimes you get stuck for a little while and you want to work on something else for a little bit, something like that. You want a little bit of buffer, so maybe add on 50% of that and then you're good. For me, I'm going round up and call this two. So that's going to be my WIP limit. I'm maxed out, I can only have two stickies in that column. And that includes on either side, whether they're done or I'm working on them. I can only have two total. And that's the WIP limit. Once you have the WIP limit set for one column, you then can set the WIP limits for the other columns so they match the pace. And this is where it becomes project management. You want them to match the pace because you don't want to overload the implementation step with specs. You've probably worked on teams before where you do a whole ton of work on all these things you're going to do next. And it just piles up, and then maybe get to it, maybe you don't. Maybe you get to some of it, and by the time you've done some of it, you realize the first part, the rest of it was just wrong. And you need to start over, and you've wasted all that time. Not a complete waste of time, but kind of a waste of time. You don't want to overload things. You want to break down step to kind of match the pace of the answer step, and likewise with validate. You want the speed at which you can validate things to match the pace the speed at which you can implement them. So you set the WIP limits for these other ones to match that pace. And for me, and the minimum WIP limit is one, so for me I'm just going to take that one, one. Because those are a lot faster, I can just set those as one. For your individual team, calculating these throughputs is fairly straightforward. And like I said, I have a nice little spreadsheet for those people who don't even want to do the division and stuff, it will calculate it for you. So that's setting those WIP limits and that's what I'm going to follow as I go through the rest of these questions. And that's everything, by the way, that's all of it. There's not really a lot of extra complexity, except of course, there is subtleties to how you do some of these things that people have asked about. So let's start with estimation. So estimation, a lot of people struggle with estimation whether they're using Kanban or some other method. I'm going to break this down into two different things. One is how fast you are. And then another is how many tasks. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: I'll get to that. OK so my estimation step has now become, or my estimation question has now become these two questions. And I'll start with how fast you go. So in order to estimate anything, you need to know how long it how long it takes, right? That's the whole point, you're trying to estimate how long something's going to take. So when it's going to be ready, you can calculate from how long it's going to take. So to calculate that in Kanban turns out to be pretty straightforward. What you do is you pick some amount of time that you're going to measure, you're going to actually pay attention and measure these things. Maybe you have an automated system that could do that all the time, but now let's just say you just got this board, that's all you've got. And you're deciding, OK how fast am I finishing things? All you do is you say, OK, how many stickies make it to done within a certain time period? Say two weeks, or a month, whatever you want. So you pick that time period, you count how many stickies move all the way through during that time period, you divide and you get stickies per day. Now you know how fast you're going. Ta da. Any questions on how to calculate how fast? Yes? AUDIENCE: [INAUDIBLE] ERIC BRECHNER: So quick follow up here, sometimes-- oh look! I'm handling a bug. OK, so I implemented an answer, and it didn't quite meet with the validation criteria. There was a bug, I hadn't quite answered it because there's variation in size as you were pointing out. So how do you handle bugs? There's two ways to handle bugs. Sometimes those bugs are trivial to fix, they'll just take you a few minutes, and you can fix them. This is an example of that. I can answer that question very quickly. So you just fix it. Just fix the bug, don't get hung up here, right? It's like answering the quick question. You just fix it, you don't have to put it on the board. But sometimes bugs are really nasty, and will take you a long time, you actually have to design it, you have to code it up. It's going to, I mean, it's going to be a lot of work to do. Obviously you code up all fixes, but you know. It's going to be a lot of work. For one of those, we would write a new sticky that talks about fixing that big bug, we prioritize it on the list with everything else, we'd pass it through the same steps as anything else. And we'd fix it. In this case, your question was about what about different sizes? And that's the idea of the breakdown step. The breakdown step should take things that are of varying different size, and break them down to the things that are roughly the same size. The metric I like to use is they'll take me one to three days-ish each. So that's what you want to break it down to, things that take a few days. And it's typically pretty easy to do in the break down step. Just break it down into tasks. Does that answer your question? For the how fast? AUDIENCE: Yes. ERIC BRECHNER: OK. Let me cover how many tasks, and then we'll finish this off. OK, so now we know how fast things move through. We can do two, and 2.3 tasks per day, something like that. That's what it comes out to be, something like that. OK, great. So how many tasks do we have because the whole point of this is saying I've got a project, I've got a whole backlog worth of stuff, I want to know how long it's going to take, so I've got to compute that. All right, for that you need to do an actual old school type estimation, but what you're estimating now is not how many tasks hours or how many story points or something like that. What you're doing instead is saying, all right for this item how many tasks would that break down into? Which is very intuitive for folks. People can figure that out pretty easily. Just OK, this is a big thing, how many different tasks? Each one taking a couple days, how many of those are there? Most people can figure that out. Now you can use Planning Poker for that if you like, if you happen to like Planning Poker. You can use your favorite method. And by the way, you can use your favorite method to do estimation in general. There's nothing special about Kanban here. I'm giving you one that fits in well with Kanban, but any estimation technique will work. But this one is a little more intuitive to folks. It's not this abstract thing, the story points, or something like that. It's just how many different tasks is that one made of? So you make that estimate, you add those up for all your different features, you multiply them by a task per day, or divide, or whatever that is. I have a spreadsheet for that too, not that it's hard, but you just divide, and then ta da! You get how many days it's going to be. And then you can plan dates around it. If the number of days is beyond when you're supposed to ship, you can have those discussions, you can simplify things, you can add people to the team well in advance if you need to. That doesn't always work, but you can make adjustments of one kind or another to try and meet your dates. But that's how you do it. Does that answer your question? Good. So let's say you have a due date. We have due dates, we have dates at Xbox, that's for sure. So let's say you have a due date and you have a bunch of work queued up, and you want to make sure that that work is done by the date. You would estimate how many tasks are in each of the items that are due by that date, you would use your task completion rate to figure out how long it's actually going to take, and then you would compare that calendar date to the actual date that you're supposed to deliver. And that would either be before it, yay. Win. Or after it, boo. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: Right, because you've take two weeks, a month, whatever it is, and calculated, just counted how many tasks you can do during that time. All those tasks are going to be roughly the same size because they were broken down. So now you estimate how many tasks are going to have that you need to finish by the date, you have your rate of completion, so you know exactly how long it's going to take. Ta da. And it takes all the different factors of how big your team is, whether or not you work on weekends, all the bugs that you might have fixed, all the e-mail you might have gotten. All that's taken into account because you counted how many actual task you completed during that time period. So you just have it. Does that answer question? OK. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: OK so the question was, how do you make tasks the same size? I mean obviously you can do the breakdown thing. You can say they're roughly the same size, but life is full of surprises. So tasks sometimes are much bigger than you expected. Even though you broke them down, you thought they were going to be a couple of days, maybe they're big. So the follow on question was, since tasks can vary in size, the estimate will be inaccurate. But again, we're taking that breakdown step. So the variation in size is only going to be plus or minus a day, and that variance in average just evens out over time. There are statistics about this and stuff like that. It follows a normal distribution because you're adding them up and all this. But, you know, it's going to be pretty fricking good. Now I will say this about estimation. So we just spent a bunch of time talking about this. Interestingly enough, my team doesn't do this anymore. So we did at first. I actually have a number of teams, none of them do it anymore. We did at first, because people wanted to know, of course they wanted to know. You have to hit your due dates. But we delivered early or on time all the time. It's just a machine, just flows right through, the flow is so smooth. We were so predictable that the team stopped asking us for due dates and just started focusing on where they were in our order. Because they knew if they were in our order, it was going to come through, and it was going to come through in plenty of time. So we just haven't been asked for estimates much at all anymore. I'm not saying that we never do. We occasionally do it, but it's become rare. The quality is always there, the speed at which we operate is always faster than the other teams. And they're asking for something because they have work that they need to do and they want to know when our thing is going to be ready, and by the time they think of it, by the time they're ready to go, we're typically there already. So they just need to make sure that they're in higher enough priority on our board, and that's what they concern themselves with, not how long it's going to take us. Because we just developed this reputation, it's fantastic. Now I'm not saying, I'm not guaranteeing that for everyone, and obviously there's different organizations who have different demands on specifying exactly what date you're going to be done with whatever. And there are methodologies that I talked about that give you very good estimates, but I'm just saying that it's so reliable and so continuous that we just haven't had that demand on us much anymore, which is pretty nice. Yes? AUDIENCE: [INAUDIBLE] ERIC BRECHNER: So the comment here was that it's a sign of a mature team regardless of what methodology they're using, when they become really reliable both in terms of quality and timing, their need to take care of these little details about what-- just go down. And that's certainly been my experience. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: So the quick question here was, in terms of the backlog, do we fill it up as we go? And who does that? When does that happen? And the answer is yes, we fill it up as we go. We do an insertion sort into it, which is exactly what I've been doing. That's just what we do. And no we don't have any sprint planning meetings or anything like that, which again is more time focused on just delivering value, and less time on overhead. AUDIENCE: [INAUDIBLE] ERIC BRECHNER: Right so the follow on point was, yeah, but when you have a specific due date you can't just arbitrarily insertion sort, you need to make sure that it hits and place it accordingly. The experience of my team has been that doesn't come up. And here's why. Because someone gives us an absurd due date on an item that's not that important. That's because that's their job, they assume that they are the only ones in the world, and we must serve them. Fair enough, that's everyone's right. So they give us this thing, and they say we must have this tomorrow. And we say wow, we're not going to be able to deliver to you by tomorrow because we have way more important things on our board. Oh but I am the most important person in the world, you must do it in time for me. And then we show them the board. It's a great thing about a physical board. Hey here's our board, please place your sticky where you think it belongs. They put it on top, we say, OK let me tell you what the top one is, it's this, it's a KERNAL thing, and the one under that is a driver thing, and the one after that is something that the VP asked for. Oh, OK, well maybe here? OK, well that's this-- Oh, how about here? Looks about right good, A plus. Now you're going to get it after we do those other things. We will do those other things, and if they need an estimate obviously we can provide an estimate. And then they can adjust their dates accordingly. But again, the conversation is about priorities. It's not about dates as much anymore, because we will hit the date, assuming that the priority is right. And I'd much rather have that conversation because that sounds like a business conversation, rather than a ooh I want it by my birthday conversation. AUDIENCE: Dates aren't always driven by the business though. ERIC BRECHNER: I understand, and when dates aren't driven by the business, we have a methodology that handles that. And the priorities would reflect it. But very often we get requests that have nothing to do with that. They have to do with one team's wanting to feel a certain way. It's not always the case, not always the case, and I respect that. And this handles it just fine. I'm just saying, day-to-day this is where we've landed. That has nothing to do with Kanban, that's just how our team has landed. Yes? AUDIENCE: [INAUDIBLE] ERIC BRECHNER: So open ended tasks, how do you handle those? Somewhere in here. OK, let's talk about dependencies. I'm going to go ahead and answer it. OK, so dependencies, and next up will be when to launch. And we can do roles. So dependencies, obviously, not everything shows up the way you want it when you need. Even if you give people due dates, and even if they are good about that, sometimes people slip, or they deliver to you and it's not quite working the way you'd hoped. So how do you handle that situation? So I'm assuming you've already prioritized accordingly, they've already given you an idea of when it's going to be ready, and you placed things with that expectation, then you're working on it, mix it up to the top, you go and grab that dependency. You try and use it and it's either not there or it's not working right. Now what do you do? Now you're stuck, you can't continue work. What do you do? So what we do, is we go ahead and added an extra column in the middle of our answer. This is small board, we have a wider one. We had an extra column called Track. And then we'll take the dependency that stuck, and we'll put it there. All right now what do we do there? What's happening there? So we're trying to work on it, but it's stuck. Obviously we don't want it to hold up all work and have everything just shut down, but at the same time, we don't want to just ignore this. This was the highest priority item, there are expectations around it, there may be due dates around it. We need to meet our commitments, and we take those commitments quite seriously. So what do we do? We put in the track column, and then, that's assigned to somebody. Sometimes it's the same developer that was supposed to be working on it, sometimes we have someone who works across teams, we call them program managers. And they're the ones who are handling it, but it's assigned to somebody. And that person's responsibility when that's in the track column, is to drive that to the correct state. And maybe that correct state is we work around it. Maybe that correct state is we add the task that the other team hasn't finished yet to our backlog, and we start working on them. They pop up to the top here, they're the most important things. They go right up to the top and we start working on those. Sometimes we change what the feature is or what we're expecting. Maybe we lower the priority, but we're going to do something with that track task. And then every stand up we're talking about those track tasks. Now the track tasks don't add to the WIP limit. So we can continue on work, they're not going to stop the rest of the work. Of course, if we decide to take on the work that's necessary to complete that dependency from the other team-- because we have to-- then of course that work will flow through. But eventually that dependency will get unblocked because we're going to work it hard every day. And by the way, this comes up all the time. We typically have two or three items that are in this track column, because, you know, it's a tough world. As soon as it gets unblocked, then it pops into the implement, because it is the highest priority item. We're not going to take something from the left, we're going to take something from the track column as soon as it's unblocked. Because, it's by definition, we're working on it before anything else, it's the top priority. And then we work it through. All right, when to launch? So, you're working on a whole bunch of different features, you're continuously moving them through. Notice that unlike Scrum or Waterfall or something like that, there isn't one specific day when you're finished with something, you're finished with things all the time. You're finishing tasks all the time, and there's quality bars for every step. So by the time it hits the end, it's ready. It's ready for wherever it's supposed to go. In our case, that's either an RI into WinMain for when we're doing Windows, or it's actually posting it out to Azure. It's part of the service. That's what happens at the end of that, so it's done. So theoretically you can release at any time, but, of course, that's a little silly. You want your releases to have some coherency to them. So what we do for things that are part of-- when it's not just day-to-day-- we can publish it all the time. And some of our stuff works exactly that way. We just go to production all the time with them, no big deal. But sometimes it's part of a larger collection, and sometimes with a due date. And when it's like that, then we wait until all the stickies associated with that particular launch that we were going to do are complete. And then when they're all complete, they've all made it over here, we then ship it. And, in the case of one of my teams, we get ourselves a-- OK, this is like our little-- a maple bar bacon cake, which is really delicious, but not good for you. Anyway, so we celebrate when that's done. Now if we've completed the work before the rest of the organization completed their work associated with that, we'll still have the maple bark car. That's not going to be denied, but we may not actually go out the door with it and signify the release until everyone else has reached that point. And sometimes when it's something that has to go with a bunch of other things, we actually need to track that we have a special section here, in this last done column for things that are waiting to go out the door. And we'll put it there until it actually goes out the door with everybody else, and then we'll move it into the final done column. Did that answer the question about when to launch? Roles. With Kanban there are no specific roles. That isn't to say that people don't generally have roles. They do on any team, but there's no specific specified roles. That said, there are some natural roles that people kind of fall into on the teams that I run with Kanban, and other teams I've known who use Kanban. There's the role of the person who kind of runs stand up every day. That's one particular person on each of my teams that's assigned to do that. Obviously other people fill in. There's nothing special about it, they're just get up there and kind of make sure the conversations don't go completely off the deep end. So there's that role. We do projects, we use this thing called TFS, which is a lot like JIRA, or other work item tracking systems. So there's a big work item tracking system that we use inside of Windows. Windows Phone, and Xbox are all using the same OS, coming soon to a PC near you. OK, fine it's Chrome. Anyway, it's all good. So we're all working on the same operating system at the same time, which means that we're kind of sharing at a lot of status all the way up. And so what that person does is that he picks a few minutes every day and just transfers information about which stickies have moved into the work item tracking system. And it takes him just a few minutes each day. And that way everyone can see what we're seeing on our board, but in the work item tracking system. So those are sort of roles. The other roles are that some members of the team kind of focus in on certain steps. If you had a formal test team-- we have a kind of DevOps type situation-- but if you had a formal test team, maybe they would mostly be the ones doing the validate. The dev team, obviously, mostly does the implement sort of step, and then the program managers and stuff mostly do the breakdown step. But that varies. Any member of the team can do this, which is kind of like Scrum. Any member of the team can do it, but if you wanted to be formal about it, you certainly could. There's nothing specific in Kanban that says it has to be a certain way. Right, yeah, so that's exactly what happened. So the question was about breakdown. There's the original sticky, which was big, made up of a bunch of different tasks, and it breaks down into lots of different stickies. What we typically do is we'll keep that original sticky, but we'll put it underneath the pile of the stickies that it breaks down into. And that counts as one in terms of the breakdown count, the WIP limit here. That counts as one bundle. And then we'll peel those off one at a time and move them through. OK so the follow on question to the roles was is there the equivalent of a product owner? And the short answer to that is, it varies. It depends on the feature. So some features, if they're driven from partners to what we call the PM, a program manager, they act as that product owner. They know that they've been working with those other teams, they know exactly what they're expecting, they kind of represent them. But there are other features that are brought up maybe they're infrastructure fixes, maybe they're taking care of technical debt, maybe they're a feature that someone on the team came up with themselves, and they act more as the product owner. So it's not a it's not a very specific static role. The team just works together. But you could have it be-- there's nothing in Kanban that keeps you from having it be a particular role, it's just it doesn't say that you have to. Yeah? AUDIENCE: Is there a concept of swarming? ERIC BRECHNER: Absolutely so the question was, is there a concept of swarming? Absolutely. So let's say we've got a situation-- so where is the one about tasks too big-- let's talk about that one. OK so let's say you've got a task, and we'll do open-ended tasks as well, OK. So let's say you've got a task, and you thought it was going to be one to three days or something like that, but it turns out it's a monster. When you started going into it, or maybe it was kind of an open ended sort of thing, it just ended up being way bigger than you thought. If that were the case, then what happened is on the board you see the WIP limit here is two. So what happens on the board is that you'd have your items here, and they're not moving. They're just sitting there. They're not moving. In the meantime the person has already broken down a step, these are all validated. Now you've got a situation in which this person can't do any more breakdown, there's already one item in there. So they're not supposed to do that work. The validate people they've finished, everything's all validated because they're working on a flow. And now everything's stuck here. It's obvious, you've got people who are supposed to be doing breakdown and validate, they got nothing to do. Now on a regular team without any project management stuff going on there, this person just keep breaking down more and more stuff, building up a crap load of the things that you're not getting to now. While the validate people, who knows what they would do? Work on more test harnesses, I don't know, something. But what they wouldn't be doing is solving this problem. But in Kanban you're not allowed to do that. These WIP limits force you to stop and you notice, you notice right away, typically same day. If not, at the next stand up the following day, you notice something's wrong. And when you notice something's wrong, there's a bunch of things you can do about it. Obviously, you're going to talk about it. Why is this stuck? And then you can swarm to it. You can have everyone who now is idle-- they can't do anything else-- they can swarm to it and help out, they can break it down, they can talk to other teams, they can-- obviously depends on the situation. But you get to just attack that problem. And again it's a immediately evident because you can see it on the board, people are just stuck. That's what you do. Did I answer the question about tasks too big? Oh good. For open ended tasks you would just-- I'll just leave it there, I'm working on answering it. For an open ended task, you just break down as much as you can, start working on it, it becomes other things, just add those back more to the backlog. There's no reason why you can't use this in research, or really anything else that follows just kind of a pattern to it. For the open ended one-- oh, here's something that comes up fairly frequently actually. Occasionally, we have features that are so big and complicated that we can't even do the breakdown. A lot of analysis needs to go to even to doing the breakdown for them. They're just big and hairy and yuck. In that case, we take that sticky for them and we say this is going to be the design document task. And now instead of actually implementing it, what we do in the implement step is we write the design document. And well first in the breakdown, we break down the design document. First we're going to research all these different things, we're going to have to talk to these different people, we're going to come up with an architecture, then we're going to write up the design document. So we break it down and then we move those stickies through. The validate step becomes reviewing that with the rest of the team, making sure we didn't miss anything and what not. And then by the time the whole thing is done, now we actually have a fully fleshed out design for that big thing. And now we can actually do the breakdown. So that's an example of an open ended sort of thing. Did that answer the open ended task question? So that's assignment, so I will talk about assignment in a moment. Was the rest of the question answered for you? OK. Ah. I'll go here. All right, the Kanban cop still didn't show up, I'm OK. So let's talk a bit about assignment. So how do you assign tasks? Well tasks comes up, someone has finished something. There's an open slot, the WIP limit is two, but now there's just one in there. I can fit in another one, we just pull the next one in priority order in, ta da. We're set. And who gets assigned to that? The person who's available. And then they just work on it. Typically we put that person's initials on it so we can keep track of who's doing what. But that's all there is to it. Now occasionally, of course, there are tasks that only certain people can do. Maybe it's doing that complicated design, maybe it's a particular feature area that's really tricky and you need some new super experienced in that area. So what do you do then? You have a few different options. One, you could move it into track and wait for that person to become available. It's blocked, you can't do anything about it, you're tracking until that person is available. And then you're getting all over that person to finish up what they're doing. You could obviously have people swap what they're working on, of course. My preferred approach to that situation is to assign it to the next available person, even though they're not qualified. The reason why I prefer that is that I hate having bottlenecks, and I hate being dependent on a single person for any one particular area of what we're working on. That's scary to me. It's scary because that person can get sick, that person could win the lottery, that person may have a baby, that person's parents could get ill, who knows. Stuff happens, and if the success of my team hinges on one individual, I've got a problem. So I'd much rather assign it to who's ever available. And then I'll have the person who's better qualified basically buddy up with them. Now they got their main assignment, they're not working on this thing full time, but they're there to do all the design reviews and code reviews, they're there to give them advice and so on. And that way I'm going to bring someone up to speed on it so now I don't have this area with a single point of failure. Does that answer the assignment question? She actually had to go. We're good? Still kind of over here. The following question of this was, what about long term projects? If we are assigning different tasks to different people all the time, you want some continuity with those projects. Typically that works out by itself because in the breakdown you've got this whole stack of stickies here for that. And usually we have more than one. I have one here because it's one person. But often people just keep peeling off that stack as they finish stuff. So the same person tends to be on it the whole time. But if the flow of work is such that things are getting held up because of one person, we need to be flexible. And we'll get back to that normality where one person who's the real expert on is working on all the time very quickly after that. But we don't want to hold up our customers, we don't want to hold up our partners, we don't want to hold up the whole thing just because of one person. That's not a good place to be. Does that answer the question? All right, let's to how large a team and let's do large scale. So how large a team can you do? There are documented cases of people having Kanban serving a team of 70 people. That's a lot. They need a big room and a big board. But they do it and their stand ups are less than 15 minutes. Because their stand ups aren't about what did you do yesterday? What are you going to do tomorrow? Because you know, it's on the board. That's already been documented, and they've already moved around their stickies. So that doesn't take up any time. The only time that you spend in the daily stand up, especially with that large of group, is talk about issues that we talked about earlier, where someone's blocked. You focus on the blocking items, and that's usually a small percentage of the overall items on the board, so it doesn't take that long to cover it. However, that's an awfully big thing I can tell you for the teams that I've run Kanban with, they've been in the range of four to 10 people. And I like it that way. There's a lot of camaraderie on the team, people can cover for one another easily. Talking about the Kanban doesn't take very long at all. It's just a nice size. And it's a multi-discipline. These are multi-disciplinary teams, running through a bunch of things. You could use it within the same discipline, and there are teams in Xbox that are all the same discipline using Kanban, but it doesn't work quite as nicely, really. It's better, I think, cross-discipline. In terms of the number of disciplines, that you can have using Kanban I've seen five, six different disciplines using it. I know for my own teams, we have typically three on any one given team. But I've also seen designers, obviously testers, things like that. A bunch of different disciplines. You can have as many steps as you like, as well. I'm showing you three steps here, plus a backlog. But you can have as many steps as you want. Just how you run, it's very flexible that way. And you can change the board at any time, because it's stickies and white board, it's not like in stone. Did that answer the question for how large a team? All right so how do you handle large scale? Obviously if you're running something as big as Windows, or Windows Phone and Xbox, something of that scale, you're not going to just have a bunch of stickies on a board and manage them. Of course not. So there we're going to do a whole bunch of top down analysis with the executives, who are going to determine what is it that the next version of Windows is going to have. What are the main scenarios it's going to have? What are the main differentiation in the market we're going to have from our competitors and also our previous versions? All that sort of thing. We're going to a ton of market research, we're going to have tons of designers, we're going to have a bunch of business development people, sales, marketing, the whole bit. They're all going to get together and they're going to talk about what are the big themes, what are the big scenarios we're going to support. Once they do that, at the same time, the organizations themselves, individual teams of-- as I was mentioning 4 to 10 people-- they're going to come up with all the cool stuff that they want to do. Plus all the stuff, the technical debt they're going to want fixed. So they're going to bubble all that up as technical opportunity, and then that gets mixed in at the top with all of the high level stuff that we're going to do. And then there's meetings about that and everything else, and you kind of cull it down per group. Basically at my level is where it gets culled. For each group, what are they actually going to focus on? Now you've got a set of stuff you're going to focus on, from that-- this is the part of the scenario you're working on, of these scenarios you're working on. Here's the technical debt that got approved that you can go ahead and fix. Or here's the amount of time that we have that we can dedicate to that. However that looks, that particular release. And so now we've got a bunch of stuff we're supposed to do. At that point then we go through the same thing that I just talked about here. We go ahead and prioritize our backlog, we order it and everything else, then we have discussions with the other teams. You know, the other teams that are dependent upon us, to make sure we're lining up. My favorite way of doing that is putting it on a huge board that's laid out in time, in time sequence, and the different teams on different rows of that board. And you put up your things. You don't need a precise estimate for this, just kind of what month things are landing. And then everyone has a hissy fit and you meet with each other and all that. And you rearrange things accordingly, and eventually you get to a point where everyone's like, OK that seems legit, until the next horrible thing happens and the whole thing gets tossed out. And then, now you have your ordering, you put that onto your backlog, done. So that's how we do it at very large scale, and then we'll revisit that every few months to make sure we're still on the same page. And of course, we're revisiting the specific ordering of the backlog every day as new stuff comes in. But that's basically how it works. All of that, it's a lot of work, for something the size of Windows. You know, that often takes a few months to do. So we don't do it every month or anything like that. We're doing that big operation once a year, and then the resetting maybe once every few months. Excuse me, does that answer the question? All right, adapting from X and setting expectations with stakeholders. All right, adapting from Scrum or waterfall. I say adapting there very specifically, because, as you can see, it's not dramatically different. When I had a waterfall team switchover, the way I described it to them is that OK we're going to put the work on a board, and everyone was like oh, OK, we'll put the work on a board. It's not that crazy thing to do. So we're going to put the work on the board, we're going to have these WIP limits, but all we're going to do is exactly what you're doing before, when you're doing traditional waterfall thing. We're going to spec stuff, we're going to implement it, we're going to test it, just like you did before. The only difference is we're going to do a small batch at a time, rather than a whole crud load of things at once, we're going to do just a few at a time. Otherwise it's the same. Oh, and by the way, we're going to track it on a board. They were like, oh. OK, and then they do it. And within a week or two, it's like they've been doing it their whole lives. So it's pretty straightforward. For Scrum, for the Scrum teams, I said great. I just want you to put on the board, I want to obey the WIP limits. They already had a board that they were tracking a lot of the same stuff. So you're going to have WIP limits from now on, but you can do all the things you're used to doing. You can do your sprint planning, and you can do your sprint reviews, you can do retrospectives, and demos. You can do all that stuff on the same schedule you were doing before. You don't have to change a thing, just start keeping it on a board, that's all I want. If you want to drop any of those things, you can because you don't need them, but I understand, you're used to Scrum. It's all good. Keep doing them. And they did, they kept doing them. And slowly but surely they realized they didn't need to do them, and so they stopped because they were wasting their time. So then they slowly but surely stopped having the sprint planning and stopped doing all those other things, and just did the basics here because that's all that was needed. But it was a very simple transition for them. And, like I said, it's more of an adaptation. You're just kind of adding something in, that's pretty simple, pretty intuitive. And then using it, and then slowly but surely you realize you don't need any of the rest of that stuff. If you like the idea, all this stuff and all these questions that I've answered today, as well as the ones that are left here, I do in fact talk about in the book. I know it's hard to believe, it's so thin, but in fact I do. There's a troubleshooting section that talks about-- I basically modeled it after when you get an Xbox and you open it up and then there's a quick start guide and a troubleshooting thing, and then there's more details online. I basically modeled the book the same way because I figured people just want something quick to use. And it's so simple. So thanks very much, and I'll stay for more questions.
Info
Channel: Talks at Google
Views: 265,745
Rating: 4.889853 out of 5
Keywords: talks at google, ted talks, inspirational talks, educational talks, Agile Project Management with Kanban, Eric Brechner, agile, kanban, scrum
Id: CD0y-aU1sXo
Channel Id: undefined
Length: 64min 30sec (3870 seconds)
Published: Wed Apr 06 2016
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.