1 00:00:06,969 --> 00:00:09,117 - Principle number four, build incrementally 2 00:00:09,117 --> 00:00:11,548 with fast, integrated learning cycles. 3 00:00:11,548 --> 00:00:13,315 Kind of self-obvious isn't it? 4 00:00:13,315 --> 00:00:15,325 Let's talk about it a little bit. 5 00:00:15,325 --> 00:00:17,181 I've, honestly, struggled for years 6 00:00:17,181 --> 00:00:19,348 trying to describe agile and waterfall 7 00:00:19,348 --> 00:00:21,112 in as clean of terms as I could 8 00:00:21,112 --> 00:00:24,202 showing the various benefits and it's always been hard. 9 00:00:24,202 --> 00:00:26,016 This incremental development thing is 10 00:00:26,016 --> 00:00:27,423 not an easy thing to explain. 11 00:00:27,423 --> 00:00:30,017 But at some point I cam across, I don't remember when, 12 00:00:30,017 --> 00:00:32,362 I just came back to the original, fundamental 13 00:00:32,362 --> 00:00:36,670 Scientific Method, and the Scientific Method says 14 00:00:36,670 --> 00:00:40,124 there's something I don't know and I wanna learn it, 15 00:00:40,124 --> 00:00:41,068 what do I do? 16 00:00:41,068 --> 00:00:43,165 I put forth a hypothesis, we're gonna hear 17 00:00:43,165 --> 00:00:46,445 that word a lot more later, I create an experiment 18 00:00:46,445 --> 00:00:49,198 to test the hypothesis, I run the experiment 19 00:00:49,198 --> 00:00:53,373 and I evaluate the results and I adjust and I do it again. 20 00:00:53,373 --> 00:00:55,845 That's called, in Deming and Shewhart's world 21 00:00:55,845 --> 00:00:57,785 that's called plan, do, check, act, 22 00:00:57,785 --> 00:01:01,041 that's the basic, in their view, process, control, 23 00:01:01,041 --> 00:01:03,978 continuous improvement cycle, plan, do, check, act. 24 00:01:03,978 --> 00:01:06,743 Now if we think about this a little bit 25 00:01:06,743 --> 00:01:09,062 and we think about the former slide 26 00:01:09,062 --> 00:01:11,454 which showed our waterfall processes 27 00:01:11,454 --> 00:01:15,700 creating a result, how many times did I plan, 28 00:01:15,700 --> 00:01:18,144 one, how many times did I act, 29 00:01:18,144 --> 00:01:21,729 one, and how many times did I check, one. 30 00:01:21,729 --> 00:01:25,102 It's not that you didn't do a plan, do check, adjust cycle, 31 00:01:25,102 --> 00:01:26,658 you only did it once. 32 00:01:26,658 --> 00:01:29,654 So you headed down this path of massive uncertainty 33 00:01:29,654 --> 00:01:32,205 building a system you've never built before 34 00:01:32,205 --> 00:01:34,021 with one chance to get it right, 35 00:01:34,021 --> 00:01:36,033 I don't think that's a really good plan. 36 00:01:36,033 --> 00:01:38,132 So what we wanna do instead is have lots 37 00:01:38,132 --> 00:01:39,700 of those cycles, right. 38 00:01:39,700 --> 00:01:42,381 Apply fast learning cycles, we wanna go very quickly 39 00:01:42,381 --> 00:01:45,058 through this process learning as we go. 40 00:01:45,058 --> 00:01:47,251 Lots of little PDCA cycles. 41 00:01:47,251 --> 00:01:50,518 What is a sprint in (inaudible)? 42 00:01:50,518 --> 00:01:53,804 We plan the sprint, we execute the sprint, 43 00:01:53,804 --> 00:01:56,887 we review in retrospect and we make adjustments 44 00:01:56,887 --> 00:01:59,313 for the next sprint, it's nothing more than that. 45 00:01:59,313 --> 00:02:01,655 So the easiest way I think to describe the difference 46 00:02:01,655 --> 00:02:04,907 between traditional development or stage gated development, 47 00:02:04,907 --> 00:02:07,703 agile development, is not by the manifesto, 48 00:02:07,703 --> 00:02:10,336 it's how many times you have to plan, 49 00:02:10,336 --> 00:02:12,971 do, check and act, how many learning cycles do you get. 50 00:02:12,971 --> 00:02:17,737 And by the way, the faster the cycles the faster learning. 51 00:02:17,737 --> 00:02:20,336 And this does a lot of things, it improves the efficiency 52 00:02:20,336 --> 00:02:23,090 by decreasing the time between the action and effect 53 00:02:23,090 --> 00:02:24,450 because it's really quick. 54 00:02:24,450 --> 00:02:26,718 So here's my action and here's my effect 55 00:02:26,718 --> 00:02:29,272 and now I have to remember what went wrong. 56 00:02:29,272 --> 00:02:32,615 Well guess what, I've got feedback on that piece right now. 57 00:02:32,615 --> 00:02:35,948 So the feedback is ready, I coded that thing 58 00:02:35,948 --> 00:02:39,864 just a week ago and now I see why it doesn't work. 59 00:02:39,864 --> 00:02:41,019 That's really fast. 60 00:02:41,019 --> 00:02:43,819 Versus, holy cow, I think those of you 61 00:02:43,819 --> 00:02:46,295 who write software out there as I used to 62 00:02:46,295 --> 00:02:49,195 know the following paradigm, you wrote some software, 63 00:02:49,195 --> 00:02:51,173 it's been six months, you open it up, 64 00:02:51,173 --> 00:02:54,199 you look at it and you go, oh, my goodness, 65 00:02:54,199 --> 00:02:56,586 who wrote this code, blah, blah, blah, 66 00:02:56,586 --> 00:02:59,969 I can't believe, oops, those are my comments. 67 00:02:59,969 --> 00:03:02,810 You forget your stuff, your mind moves on to new things 68 00:03:02,810 --> 00:03:05,288 and it's very difficult to go back to that. 69 00:03:05,288 --> 00:03:08,462 In addition, obviously we reduce the cost of risk-taking 70 00:03:08,462 --> 00:03:11,045 because right here I can pivot. 71 00:03:11,889 --> 00:03:15,061 I can go, oh, good sprint, bad system, 72 00:03:15,061 --> 00:03:17,061 let's change the design in the system. 73 00:03:17,061 --> 00:03:19,124 This is facilitated by small batch sizes. 74 00:03:19,124 --> 00:03:21,387 Why, because I need just the amount of work 75 00:03:21,387 --> 00:03:25,102 I can do this batch, I'll just call a little back log here, 76 00:03:25,102 --> 00:03:27,733 in that period, I don't need this gigantic thing. 77 00:03:27,733 --> 00:03:29,181 And if I only have this gigantic thing 78 00:03:29,181 --> 00:03:30,629 I have to bust it up. 79 00:03:30,629 --> 00:03:33,021 And if I'm being held hostage to proving 80 00:03:33,021 --> 00:03:36,025 everything on that gigantic requirements list 81 00:03:36,025 --> 00:03:38,705 over time, then I don't have a small batch size 82 00:03:38,705 --> 00:03:39,739 that I can work with. 83 00:03:39,739 --> 00:03:42,134 So we need small batch sizes to move it through the system. 84 00:03:42,134 --> 00:03:43,987 And that requires an increased investment 85 00:03:43,987 --> 00:03:45,219 in development environment. 86 00:03:45,219 --> 00:03:47,115 I saw a talk by Jez the other day 87 00:03:47,115 --> 00:03:49,092 where he talked about the HP case study 88 00:03:49,092 --> 00:03:53,545 that's online building printers applying DevOps 89 00:03:53,545 --> 00:03:56,719 talking about the fact that they dramatically reduced 90 00:03:56,719 --> 00:04:00,119 the nonproductive time overall, I don't remember 91 00:04:00,119 --> 00:04:02,636 the exact numbers, but one net effect 92 00:04:02,636 --> 00:04:05,113 was a lot of the nonproductive time 93 00:04:05,113 --> 00:04:07,215 was now invested in test automation. 94 00:04:07,215 --> 00:04:09,232 Leaving, I think, four or five times 95 00:04:09,232 --> 00:04:11,206 the amount for actual coding and innovation. 96 00:04:11,206 --> 00:04:12,563 So we may have to do that. 97 00:04:12,563 --> 00:04:14,328 We're gonna have to change the way 98 00:04:14,328 --> 00:04:15,765 our investment profile works. 99 00:04:15,765 --> 00:04:18,203 But with that automation, the shorter the cycles, 100 00:04:18,203 --> 00:04:19,896 the faster the learning. 101 00:04:19,896 --> 00:04:23,115 Fast learning cycles, plan, do, check, act. 102 00:04:23,115 --> 00:04:26,092 One of my favorite reads and strongly recommend to you 103 00:04:26,092 --> 00:04:27,628 is Dantar Oosterwal's The Lean Machine, 104 00:04:27,628 --> 00:04:30,311 it's the story of Harley-Davidson back in the 90s, 105 00:04:30,311 --> 00:04:31,640 you're probably not old enough, 106 00:04:31,640 --> 00:04:33,448 but I remember riding a Harley in the 70s 107 00:04:33,448 --> 00:04:36,086 and they were cool, they were the coolest machines ever. 108 00:04:36,086 --> 00:04:37,568 If you've never ridden a Harley, 109 00:04:37,568 --> 00:04:39,492 you almost have to, it's a really cool thing to do. 110 00:04:39,492 --> 00:04:41,388 And then the Honda Gold Wing Coupe came along 111 00:04:41,388 --> 00:04:43,041 and all the sudden it's very different, 112 00:04:43,041 --> 00:04:45,098 all the sudden there's this really fast, 113 00:04:45,098 --> 00:04:47,659 much more reliable machine and Harley went into trouble. 114 00:04:47,659 --> 00:04:49,345 So they decided to do adopt lean 115 00:04:49,345 --> 00:04:52,512 and they were coached by Dr. Alan Ward 116 00:04:53,553 --> 00:04:56,353 was their mentor and you'll see that in the book there 117 00:04:56,353 --> 00:04:58,043 and they went through the process 118 00:04:58,043 --> 00:05:00,022 and Dantar has a lot of learning in there 119 00:05:00,022 --> 00:05:02,203 that I think are synthesized so well. 120 00:05:02,203 --> 00:05:04,505 One of them is that, "Product development 121 00:05:04,505 --> 00:05:06,940 "is a process of converting uncertainty to knowledge." 122 00:05:06,940 --> 00:05:09,690 Oh, yes, that's it, I don't know. 123 00:05:11,242 --> 00:05:14,909 And having specs helped me know what I think 124 00:05:15,766 --> 00:05:17,869 I need to do, but I don't really know. 125 00:05:17,869 --> 00:05:19,306 So it's okay not to know. 126 00:05:19,306 --> 00:05:21,855 So in agile and lean thinking, it's okay not to know, 127 00:05:21,855 --> 00:05:23,506 we're gonna convert uncertainty into knowledge 128 00:05:23,506 --> 00:05:25,321 and those are controlled by integration points. 129 00:05:25,321 --> 00:05:27,300 So we come back to the PDCA cycle 130 00:05:27,300 --> 00:05:28,873 and what do we see? 131 00:05:28,873 --> 00:05:31,102 We see, well, if this is just, for example, 132 00:05:31,102 --> 00:05:34,396 I'm working on the engine and I'm migrating the engine 133 00:05:34,396 --> 00:05:37,235 more quickly here, there's a new carburetor 134 00:05:37,235 --> 00:05:38,723 and I'm getting feedback by that, 135 00:05:38,723 --> 00:05:40,084 my carburetor's working pretty good, 136 00:05:40,084 --> 00:05:42,527 seems like the engine runs, but the engine 137 00:05:42,527 --> 00:05:45,282 hasn't been hooked up to the new drive train yet. 138 00:05:45,282 --> 00:05:47,056 So I've got some new horsepower, can I handle it, 139 00:05:47,056 --> 00:05:48,704 I don't know 'cause all I've done so far 140 00:05:48,704 --> 00:05:50,439 is prove that the new carburetor works. 141 00:05:50,439 --> 00:05:53,408 And by the way, does the engine and the drive train 142 00:05:53,408 --> 00:05:57,575 and the frame all hold together to make a great Harley? 143 00:05:59,372 --> 00:06:00,857 Well that's a bigger cycle. 144 00:06:00,857 --> 00:06:05,024 So what you see in safe is based upon this principle 145 00:06:05,882 --> 00:06:09,299 of synchronous, harmonic learning cycles. 146 00:06:11,124 --> 00:06:13,433 These cycles are the same, these cycles are the same 147 00:06:13,433 --> 00:06:15,944 and the slowest one is what controls 148 00:06:15,944 --> 00:06:18,079 the overall rate of learning. 149 00:06:18,079 --> 00:06:21,875 Development can proceed no faster than the slowest point. 150 00:06:21,875 --> 00:06:24,212 So I don't really know if I have a full Harley. 151 00:06:24,212 --> 00:06:26,271 Now I don't really know if I have a full carburetor 152 00:06:26,271 --> 00:06:28,256 til here, so imagine all the experiments 153 00:06:28,256 --> 00:06:29,990 you could do in that time frame. 154 00:06:29,990 --> 00:06:33,452 Important learning, nested PDCA cycles. 155 00:06:33,452 --> 00:06:34,853 I really wanna think about the problem. 156 00:06:34,853 --> 00:06:37,618 And you see that in safe, you see the team iterating, 157 00:06:37,618 --> 00:06:39,963 you see they are using those together 158 00:06:39,963 --> 00:06:40,998 to integrate the system. 159 00:06:40,998 --> 00:06:43,396 You see the PI cycle so that the arts 160 00:06:43,396 --> 00:06:45,722 can come together with more to do. 161 00:06:45,722 --> 00:06:49,467 What he notes here is what's built into safe. 162 00:06:49,467 --> 00:06:52,649 Improvement comes through synchronization of design loops 163 00:06:52,649 --> 00:06:54,790 and faster learning cycles. 164 00:06:54,790 --> 00:06:56,187 That's how you get better. 165 00:06:56,187 --> 00:06:58,667 Synchronized the loops, shorten them. 166 00:06:58,667 --> 00:07:00,477 So if you're running three week sprints, 167 00:07:00,477 --> 00:07:02,575 run two week sprints, if you're running two week sprints, 168 00:07:02,575 --> 00:07:04,592 think about running shorter sprints than that. 169 00:07:04,592 --> 00:07:06,779 Really, really fun learnings from the Harley-Davidson story, 170 00:07:06,779 --> 00:07:08,935 it's also a really fun read. 171 00:07:08,935 --> 00:07:10,996 What's the net result of that for risk? 172 00:07:10,996 --> 00:07:12,769 People with a traditional perspective say, 173 00:07:12,769 --> 00:07:15,643 where's the risk mitigation plan in safe? 174 00:07:15,643 --> 00:07:17,329 Where do yo manage risk? 175 00:07:17,329 --> 00:07:19,636 The risk mitigation plan in safe 176 00:07:19,636 --> 00:07:21,908 is the fact that integration points reduce risk, 177 00:07:21,908 --> 00:07:23,971 objective evaluation working systems 178 00:07:23,971 --> 00:07:25,490 that we'll talk about in a second 179 00:07:25,490 --> 00:07:27,472 is the thing we use to reduce risk. 180 00:07:27,472 --> 00:07:29,662 Now, what Harley also points out 181 00:07:29,662 --> 00:07:31,314 is that they always thought that they were building 182 00:07:31,314 --> 00:07:34,451 good Harleys and sometimes they would go out here 183 00:07:34,451 --> 00:07:36,026 and crash and burn, well maybe not literally 184 00:07:36,026 --> 00:07:38,216 crash and burn, but not have a good release. 185 00:07:38,216 --> 00:07:39,827 And they're going, well, what is this? 186 00:07:39,827 --> 00:07:41,475 We thought we were building a Harley 187 00:07:41,475 --> 00:07:43,454 and we did build it, it just didn't really work. 188 00:07:43,454 --> 00:07:46,175 It crashed and burned at the end. 189 00:07:46,175 --> 00:07:48,033 They call that false positive feasibility. 190 00:07:48,033 --> 00:07:51,495 That's managers worst nightmare. 191 00:07:51,495 --> 00:07:53,727 I think it's okay, but I'm not. 192 00:07:53,727 --> 00:07:55,779 That false positive feasibility 193 00:07:55,779 --> 00:07:58,748 represents the risk that remains inside 194 00:07:58,748 --> 00:08:00,969 the waterfall project until such time 195 00:08:00,969 --> 00:08:03,686 as you've done a full integration. 196 00:08:03,686 --> 00:08:05,749 You don't know until the integration happens. 197 00:08:05,749 --> 00:08:09,906 So that risk remains, all that risk in the project remains. 198 00:08:09,906 --> 00:08:12,132 Well we start out agile development 199 00:08:12,132 --> 00:08:14,081 with the same degree of risk for sure, 200 00:08:14,081 --> 00:08:15,852 but we move very quickly down this path. 201 00:08:15,852 --> 00:08:18,910 Each iteration, sprint, PI, whatever you wanna call it, 202 00:08:18,910 --> 00:08:21,090 whatever that frequency is reduces risk. 203 00:08:21,090 --> 00:08:24,440 So when we get to the end we're truly done. 204 00:08:24,440 --> 00:08:27,200 This is the boring release of your next CRM system, 205 00:08:27,200 --> 00:08:29,184 the next big release of our framework 206 00:08:29,184 --> 00:08:32,830 on top of the latest version of WordPress, it's boring. 207 00:08:32,830 --> 00:08:35,020 Why, because we found all the problems 208 00:08:35,020 --> 00:08:36,586 and addressed them integrally. 209 00:08:36,586 --> 00:08:38,564 So those are absolutely critical ways 210 00:08:38,564 --> 00:08:40,251 to think about mitigation of risk. 211 00:08:40,251 --> 00:08:41,743 So if you're working with folks 212 00:08:41,743 --> 00:08:43,106 that believe that risk is an issue, 213 00:08:43,106 --> 00:08:44,799 and they should, we have an answer for that 214 00:08:44,799 --> 00:08:47,068 which is, yeah, we're gonna address the risk 215 00:08:47,068 --> 00:08:50,863 right upfront by basically integration points 216 00:08:50,863 --> 00:08:54,197 and objective evaluation of working systems, 217 00:08:54,197 --> 00:08:56,537 which is principal number five.