1 00:00:07,265 --> 00:00:09,772 - First let's talk about synchronizing development. 2 00:00:09,772 --> 00:00:11,454 Well what's an Agile Release Train? 3 00:00:11,454 --> 00:00:13,221 Well it's a bit of an abstract concept. 4 00:00:13,221 --> 00:00:15,558 It's illustrated here for sure. 5 00:00:15,558 --> 00:00:17,177 But it's really all of the above, 6 00:00:17,177 --> 00:00:21,606 so all of this stuff constitutes the Agile Release Train. 7 00:00:21,606 --> 00:00:25,998 Teams, many teams, team practices, team iterations, 8 00:00:25,998 --> 00:00:28,960 actual program implements with PI planning, 9 00:00:28,960 --> 00:00:31,629 program execution at these boundaries 10 00:00:31,629 --> 00:00:33,763 using features of neighbors and then 11 00:00:33,763 --> 00:00:35,577 there processes continues exploration, 12 00:00:35,577 --> 00:00:37,557 continues integration, continues appointment, 13 00:00:37,557 --> 00:00:38,627 that's what it all is. 14 00:00:38,627 --> 00:00:41,050 So it's really an aggregation of all the teams 15 00:00:41,050 --> 00:00:43,843 and the key stake-holders that need to deliver value. 16 00:00:43,843 --> 00:00:47,867 Long-lived, self-organizing team of agile teams. 17 00:00:47,867 --> 00:00:49,888 So first for organization often now 18 00:00:49,888 --> 00:00:51,364 could be physical organization meaning 19 00:00:51,364 --> 00:00:53,128 it could be a line management organization 20 00:00:53,128 --> 00:00:54,233 or product organization. 21 00:00:54,233 --> 00:00:56,171 And for those that are of traditional 22 00:00:56,171 --> 00:00:58,225 kind of IT background we start to think about 23 00:00:58,225 --> 00:00:59,988 the solutions as products, 24 00:00:59,988 --> 00:01:01,547 those typically move that way. 25 00:01:01,547 --> 00:01:03,474 But we call it virtual for reason because 26 00:01:03,474 --> 00:01:06,426 we're not sure exactly how long-lived it's gonna be, 27 00:01:06,426 --> 00:01:09,750 we're creating a new construct that's gonna deliver value, 28 00:01:09,750 --> 00:01:10,981 we're gonna discover that it can't 29 00:01:10,981 --> 00:01:12,675 do some of the things that it needs to do. 30 00:01:12,675 --> 00:01:14,844 50 to 125 people, why? 31 00:01:14,844 --> 00:01:18,741 Because it's fundamental kind of law of social physics. 32 00:01:18,741 --> 00:01:21,121 That many people I can know and care about, 33 00:01:21,121 --> 00:01:23,829 and below that number I can sure know and care about them 34 00:01:23,829 --> 00:01:25,672 but I can't really build a big system. 35 00:01:25,672 --> 00:01:28,586 Above that number I can't really know and care about them 36 00:01:28,586 --> 00:01:30,280 so I can't really build a big system. 37 00:01:30,280 --> 00:01:32,423 We're gonna have multiple ARTs to do that. 38 00:01:32,423 --> 00:01:35,835 We're gonna use this term called a program increment, a PI. 39 00:01:35,835 --> 00:01:38,228 It's just a label for a fixed time box. 40 00:01:38,228 --> 00:01:40,156 Default in safe is 10 weeks, 41 00:01:40,156 --> 00:01:42,336 but that default is customizable. 42 00:01:42,336 --> 00:01:46,977 I've seen PIs as short as six, maybe even four in one case, 43 00:01:46,977 --> 00:01:51,046 as long as 12, longer than 12, generally too long. 44 00:01:51,046 --> 00:01:52,976 To much change happens, right? 45 00:01:52,976 --> 00:01:55,246 Not enough opportunities to synchronize again 46 00:01:55,246 --> 00:01:56,850 into a current plan of record. 47 00:01:56,850 --> 00:01:58,993 Within that the iterations are synchronized 48 00:01:58,993 --> 00:02:02,438 and across trains the PIs are synchronized true. 49 00:02:02,438 --> 00:02:04,084 They're aligned to a single mission 50 00:02:04,084 --> 00:02:06,425 via a single program backlog, one program backlog. 51 00:02:06,425 --> 00:02:08,028 The team has their backlog for sure, 52 00:02:08,028 --> 00:02:09,834 all the local stuff they care about, 53 00:02:09,834 --> 00:02:11,638 but new stories in that backlog 54 00:02:11,638 --> 00:02:13,860 are driven by the program backlog. 55 00:02:13,860 --> 00:02:15,630 Architectural and UX guidance, how come? 56 00:02:15,630 --> 00:02:18,467 You really want from feature to feature 57 00:02:18,467 --> 00:02:21,223 the user to have an entirely different user experience? 58 00:02:21,223 --> 00:02:22,338 I don't think so. 59 00:02:22,338 --> 00:02:25,341 Do we want this common single sign on 60 00:02:25,341 --> 00:02:29,423 across all the applications in that tool suite? 61 00:02:29,423 --> 00:02:31,349 We absolutely do, so we're gonna provide 62 00:02:31,349 --> 00:02:33,441 architectural and UX guidance to help 63 00:02:33,441 --> 00:02:35,986 align the teams to a common outcome, 64 00:02:35,986 --> 00:02:37,304 a common way of working, 65 00:02:37,304 --> 00:02:38,706 common way of working for them 66 00:02:38,706 --> 00:02:40,900 and a common way of working for their customer. 67 00:02:40,900 --> 00:02:43,582 And each Agile Release Train frequently produces 68 00:02:43,582 --> 00:02:46,046 valuable and evaluable system-level solutions. 69 00:02:46,046 --> 00:02:48,636 In other words they go through the steps 70 00:02:48,636 --> 00:02:50,191 of defining a functionality, 71 00:02:50,191 --> 00:02:51,468 implementing that functionality, 72 00:02:51,468 --> 00:02:53,162 acceptance testing and deploying that 73 00:02:53,162 --> 00:02:54,977 as quickly as they can. 74 00:02:54,977 --> 00:02:56,541 That's the purpose of an ART. 75 00:02:56,541 --> 00:02:58,478 We're gonna see how devops feeds into that 76 00:02:58,478 --> 00:03:01,064 because that's gonna be a consistent flow 77 00:03:01,064 --> 00:03:03,247 of small batches that go through the system 78 00:03:03,247 --> 00:03:05,164 all the way to release. 79 00:03:06,590 --> 00:03:09,758 Now we talk about cadence and synchronization, 80 00:03:09,758 --> 00:03:12,262 we need to have a little further discussion here, 81 00:03:12,262 --> 00:03:14,364 which is that we need both. 82 00:03:14,364 --> 00:03:17,075 We need the teams to have the same cadence 83 00:03:17,075 --> 00:03:20,520 and the same synchronization point, and here's why. 84 00:03:20,520 --> 00:03:23,351 If we don't have that, and it's not unusual 85 00:03:23,351 --> 00:03:25,691 to have teams that maybe have 86 00:03:25,691 --> 00:03:27,089 a three week sprint length, 87 00:03:27,089 --> 00:03:28,533 or maybe this is a three week sprint length, 88 00:03:28,533 --> 00:03:29,635 and this is two week sprint length 89 00:03:29,635 --> 00:03:31,321 and maybe this is a two week sprint length 90 00:03:31,321 --> 00:03:32,563 and that looks pretty good. 91 00:03:32,563 --> 00:03:34,501 So why should I bother to have them 92 00:03:34,501 --> 00:03:36,347 start and stop on the same date? 93 00:03:36,347 --> 00:03:40,178 Well, they're gonna develop their work here and here, 94 00:03:40,178 --> 00:03:42,227 and we're gonna come to a point where 95 00:03:42,227 --> 00:03:43,664 we'd like to integrate. 96 00:03:43,664 --> 00:03:46,253 Well if we've done any branches, even small branches, 97 00:03:46,253 --> 00:03:49,168 or even the integration requires work 98 00:03:49,168 --> 00:03:50,444 and it doesn't get done, 99 00:03:50,444 --> 00:03:51,638 for example maybe this integration 100 00:03:51,638 --> 00:03:53,536 requires work that doesn't happen until here, 101 00:03:53,536 --> 00:03:55,635 it's impossible to synchronize that. 102 00:03:55,635 --> 00:03:59,223 So what happens is we have this common anti-pattern, 103 00:03:59,223 --> 00:04:01,480 which is the teams are sprinting 104 00:04:01,480 --> 00:04:04,680 and they might even feel good about that process, 105 00:04:04,680 --> 00:04:07,440 but the system isn't, the system isn't sprinting. 106 00:04:07,440 --> 00:04:10,207 It's still in a monolithic, waterfall-like world, 107 00:04:10,207 --> 00:04:11,969 it's not been integrated. 108 00:04:11,969 --> 00:04:14,189 So until we align those splints 109 00:04:14,189 --> 00:04:16,409 and get the ability to create kind of 110 00:04:16,409 --> 00:04:18,138 necessary force integration cycles, 111 00:04:18,138 --> 00:04:20,072 we just go with that the slowest component 112 00:04:20,072 --> 00:04:21,886 drags a train, which is always true, 113 00:04:21,886 --> 00:04:23,203 but most importantly that we 114 00:04:23,203 --> 00:04:25,013 don't have any integration points. 115 00:04:25,013 --> 00:04:27,698 The teams are sprinting, but the system isn't sprinting. 116 00:04:27,698 --> 00:04:29,673 Common anti-pattern and a real issue 117 00:04:29,673 --> 00:04:33,161 and I'll bet anything you've seen that in your organization. 118 00:04:33,161 --> 00:04:34,723 So instead we synchronize that, 119 00:04:34,723 --> 00:04:36,001 we synchronize those sprints, 120 00:04:36,001 --> 00:04:38,423 we make sure that the teams are lying 121 00:04:38,423 --> 00:04:40,068 on a common sprint life. 122 00:04:40,068 --> 00:04:41,581 We provide continuous integration 123 00:04:41,581 --> 00:04:42,973 because we're gonna need that 124 00:04:42,973 --> 00:04:44,568 to support a dev operated process. 125 00:04:44,568 --> 00:04:47,471 And now we probably also discover 126 00:04:47,471 --> 00:04:50,468 that it's very difficult for a feature team 127 00:04:50,468 --> 00:04:53,430 to recessarily integrate the whole system. 128 00:04:53,430 --> 00:04:58,413 That might be true in a small desktop application, 129 00:04:58,413 --> 00:05:01,411 it's not gonna be true in a really, really large system. 130 00:05:01,411 --> 00:05:02,892 And the bigger the system is 131 00:05:02,892 --> 00:05:04,163 the more likely it is that we're 132 00:05:04,163 --> 00:05:05,360 gonna need help from them. 133 00:05:05,360 --> 00:05:08,241 And we have them helping a little bit, running the gears, 134 00:05:08,241 --> 00:05:10,626 we can start making sure that the system is sprinting 135 00:05:10,626 --> 00:05:12,303 and because it's a line we can 136 00:05:12,303 --> 00:05:14,848 add system demos at that point. 137 00:05:14,848 --> 00:05:16,497 And we'll talk a little later on 138 00:05:16,497 --> 00:05:18,754 about how what's essential in essential safe 139 00:05:18,754 --> 00:05:21,470 and one of those things is the presence of a system demo, 140 00:05:21,470 --> 00:05:23,154 so this gives us the tools we need now. 141 00:05:23,154 --> 00:05:24,960 So with a little help from the system team 142 00:05:24,960 --> 00:05:26,398 or maybe it's a group of individuals 143 00:05:26,398 --> 00:05:28,211 that came together through the integration, 144 00:05:28,211 --> 00:05:29,818 maybe it's a different team entirely 145 00:05:29,818 --> 00:05:31,259 but that was on the train. 146 00:05:31,259 --> 00:05:33,686 And we can integrate and integrate continuously 147 00:05:33,686 --> 00:05:35,666 and provide really fast feedback 148 00:05:35,666 --> 00:05:38,500 of the system, not just the individual component 149 00:05:38,500 --> 00:05:41,081 or feature that the team is building.