1 00:00:06,575 --> 00:00:08,961 - Assume variability, preserve options. 2 00:00:08,961 --> 00:00:10,648 What does that mean? 3 00:00:10,648 --> 00:00:13,074 Well, I've had pretty good luck explaining 4 00:00:13,074 --> 00:00:15,015 somethings with a pretty simple paradigm 5 00:00:15,015 --> 00:00:16,621 and one of them is this. 6 00:00:16,621 --> 00:00:18,904 At the beginning of your project or program, 7 00:00:18,904 --> 00:00:19,737 or whatever. 8 00:00:19,737 --> 00:00:22,206 You're in what's called this cone of uncertainty 9 00:00:22,206 --> 00:00:26,076 and if you pick a traditional stage-gated model. 10 00:00:26,076 --> 00:00:29,215 We're going to pick specific requirements 11 00:00:29,215 --> 00:00:31,745 and design set, way early. 12 00:00:31,745 --> 00:00:34,015 Way early in the cone of uncertainty. 13 00:00:34,015 --> 00:00:36,558 And yet, we recognize at that time, 14 00:00:36,558 --> 00:00:38,506 you can't possibly know everything. 15 00:00:38,506 --> 00:00:40,406 So let's define the requirements in full. 16 00:00:40,406 --> 00:00:41,622 (laughs) You don't have any feedback, 17 00:00:41,622 --> 00:00:42,455 You haven't built anything. 18 00:00:42,455 --> 00:00:43,960 You haven't gotten any feedback yet, 19 00:00:43,960 --> 00:00:46,262 even a mock-up or a prototype. 20 00:00:46,262 --> 00:00:48,103 We know that those requirements must be 21 00:00:48,103 --> 00:00:50,735 flexible to make design choices. Right? 22 00:00:50,735 --> 00:00:51,664 We need trade-offs. 23 00:00:51,664 --> 00:00:54,233 Four people on a vehicle, okay. 24 00:00:54,233 --> 00:00:56,185 What's the average weight? Okay. 25 00:00:56,185 --> 00:00:57,877 How does that affect the acceleration? 26 00:00:57,877 --> 00:01:00,487 If the average weight is larger, 27 00:01:00,487 --> 00:01:03,380 then can we have lower acceleration, on that vehicle? 28 00:01:03,380 --> 00:01:05,617 Yes, so long as it doesn't impinge another vehicle. 29 00:01:05,617 --> 00:01:07,300 Okay, that's flexible. 30 00:01:07,300 --> 00:01:08,817 There's an economic design choice there. 31 00:01:08,817 --> 00:01:10,798 You can say, "Wow, I could actually keep the same 32 00:01:10,798 --> 00:01:12,401 torque and support higher weight 33 00:01:12,401 --> 00:01:14,004 cause I can back off the acceleration." 34 00:01:14,004 --> 00:01:15,948 For that particular ride. 35 00:01:15,948 --> 00:01:17,681 And the same way designs must be flexible 36 00:01:17,681 --> 00:01:18,936 to support changing requirements. 37 00:01:18,936 --> 00:01:20,548 Because we're going to decide later on that 38 00:01:20,548 --> 00:01:22,601 guess what, we do need that torque. 39 00:01:22,601 --> 00:01:26,034 Even though we're now supporting... 40 00:01:26,034 --> 00:01:27,487 A heavier passenger load, 41 00:01:27,487 --> 00:01:29,211 we still have to accelerate to make 42 00:01:29,211 --> 00:01:30,888 that ride really a thrill. 43 00:01:30,888 --> 00:01:32,354 Preservation of options, 44 00:01:32,354 --> 00:01:35,433 is going to help us improve economic results. 45 00:01:35,433 --> 00:01:37,956 Now, generally this is called set based design, 46 00:01:37,956 --> 00:01:40,904 or set based development and it's interesting, 47 00:01:40,904 --> 00:01:42,398 and there's lots of debates about it. 48 00:01:42,398 --> 00:01:44,281 How many sets, and how does this costs, 49 00:01:44,281 --> 00:01:46,991 and is this really optimum economics? 50 00:01:46,991 --> 00:01:49,446 But, here's the difference with a point based approach. 51 00:01:49,446 --> 00:01:52,025 Let's just say I'm going to build a Harley Davidson. 52 00:01:52,025 --> 00:01:53,257 And it's at this point. 53 00:01:53,257 --> 00:01:55,567 There's all my specs. Okay. 54 00:01:55,567 --> 00:01:56,552 I increased the torque. 55 00:01:56,552 --> 00:01:58,512 Okay, we increased the torque that's just great. 56 00:01:58,512 --> 00:01:59,419 I get all the way to the end 57 00:01:59,419 --> 00:02:01,100 I increased the torque and guess what? 58 00:02:01,100 --> 00:02:02,761 The drive belt doesn't handle that torque 59 00:02:02,761 --> 00:02:05,052 and I didn't know that because the specs said it would 60 00:02:05,052 --> 00:02:06,193 but, it really doesn't. 61 00:02:06,193 --> 00:02:07,245 It's too late. 62 00:02:07,245 --> 00:02:09,564 I've got the wrong drive belt for that torque. 63 00:02:09,564 --> 00:02:10,502 I need to back off the torque, 64 00:02:10,502 --> 00:02:14,041 I need to find a new drive belt at the 11th hour 65 00:02:14,041 --> 00:02:15,440 before we go to market. 66 00:02:15,440 --> 00:02:18,331 Not a very convenient pattern to find yourself in 67 00:02:18,331 --> 00:02:20,239 as you'll find in a lean machine. 68 00:02:20,239 --> 00:02:22,145 Instead, what if we looked at it and said; 69 00:02:22,145 --> 00:02:23,796 You know... 70 00:02:23,796 --> 00:02:26,223 torque could be A, right? 71 00:02:26,223 --> 00:02:29,355 Or B, and we could have a couple different 72 00:02:29,355 --> 00:02:31,300 options for the drive belts. 73 00:02:31,300 --> 00:02:32,693 We could use the existing one. 74 00:02:32,693 --> 00:02:34,084 We could get a new drive belt. 75 00:02:34,084 --> 00:02:36,460 We could experiment with a different type of drive chain 76 00:02:36,460 --> 00:02:38,951 or whatever your particular mechanical metaphor is. 77 00:02:38,951 --> 00:02:40,108 And these are options. 78 00:02:40,108 --> 00:02:42,726 So, I've got 2 torque options and 3 drive belt options. 79 00:02:42,726 --> 00:02:44,454 Now, as I precede over time I collapse those. 80 00:02:44,454 --> 00:02:47,169 And I say, well, you know we looked at that new drive belt 81 00:02:47,169 --> 00:02:48,765 and that's just not really feasible. 82 00:02:48,765 --> 00:02:52,610 So, that didn't work. We're going to punt on that one. 83 00:02:52,610 --> 00:02:54,487 And that one didn't work either 84 00:02:54,487 --> 00:02:56,482 and it's really hard to get the excess torque, 85 00:02:56,482 --> 00:02:58,387 so I want to go with this amount of torque, 86 00:02:58,387 --> 00:03:00,127 and this drive belt. Okay. 87 00:03:00,127 --> 00:03:02,152 I still have some parameters which is, 88 00:03:02,152 --> 00:03:04,640 to control the actual performance of the vehicle. 89 00:03:04,640 --> 00:03:06,377 And I just move down the path. 90 00:03:06,377 --> 00:03:10,638 So, at each learning point, think of an iteration boundary, 91 00:03:10,638 --> 00:03:13,144 an ad hoc boundary would be fine it wouldn't matter. 92 00:03:13,144 --> 00:03:15,781 Or maybe a PI boundary in a larger system. 93 00:03:15,781 --> 00:03:18,270 I collapse the range of alternatives. 94 00:03:18,270 --> 00:03:21,103 Now, part of the theory of set based design 95 00:03:21,103 --> 00:03:22,750 comes back to economics. 96 00:03:22,750 --> 00:03:25,578 Does it cost a lot to maintain all of these? 97 00:03:25,578 --> 00:03:26,411 And if so, 98 00:03:26,411 --> 00:03:28,736 would you have been better off just picking one? 99 00:03:28,736 --> 00:03:31,904 Well, that kind of depends, on the cost of that option. 100 00:03:31,904 --> 00:03:34,896 If I had to build everyone of these options out 101 00:03:34,896 --> 00:03:37,157 and build a Harley and then look backwards and say, 102 00:03:37,157 --> 00:03:38,251 "Yeah that guy didn't work." 103 00:03:38,251 --> 00:03:39,967 That's pretty expensive. 104 00:03:39,967 --> 00:03:41,815 But, if I can test it on the bench. 105 00:03:41,815 --> 00:03:43,988 When we approached the current release of 106 00:03:43,988 --> 00:03:47,849 SAFe version 4.5, we used set based design. 107 00:03:47,849 --> 00:03:48,857 And we had some things, 108 00:03:48,857 --> 00:03:51,657 we had some brand new areas to explore. 109 00:03:51,657 --> 00:03:54,841 And we didn't know for sure if we could do the ideation, 110 00:03:54,841 --> 00:03:56,771 and the synthesis, and the review cycles 111 00:03:56,771 --> 00:03:58,808 and get technical peer-review in time. 112 00:03:58,808 --> 00:04:00,622 And we said; You know, one of our options 113 00:04:00,622 --> 00:04:03,361 is that in this new area... 114 00:04:03,361 --> 00:04:05,688 Right, let's just say in the DevOps area. 115 00:04:05,688 --> 00:04:08,438 We can go live if we needed to... 116 00:04:09,873 --> 00:04:11,942 With just abstracts, introductions, 117 00:04:11,942 --> 00:04:14,736 very light-weight articles not fully detailed. 118 00:04:14,736 --> 00:04:16,035 Didn't really want to do that, 119 00:04:16,035 --> 00:04:17,324 but we could have done it. 120 00:04:17,324 --> 00:04:20,251 We were looking at re-skinning the entire platform. 121 00:04:20,251 --> 00:04:23,040 That was a really big deal, because new style sheets, 122 00:04:23,040 --> 00:04:24,393 every article was affected. 123 00:04:24,393 --> 00:04:28,205 And we said, "Well we don't have to do that, but we could." 124 00:04:28,205 --> 00:04:31,499 So, in that case we actually made a small branch 125 00:04:31,499 --> 00:04:35,625 to make sure that we did the re-skinning exercise 126 00:04:35,625 --> 00:04:37,422 for the website and the separate branch. 127 00:04:37,422 --> 00:04:39,181 Well, there was a small cost in that. 128 00:04:39,181 --> 00:04:41,606 What was the cost in deciding that we could go live 129 00:04:41,606 --> 00:04:44,040 even if we only had abstracts? 130 00:04:44,040 --> 00:04:46,927 That's no cost at all, that was just an option, a decision. 131 00:04:46,927 --> 00:04:49,063 There could've been some eventual cost 132 00:04:49,063 --> 00:04:51,007 because, we would have had to come back and fix that. 133 00:04:51,007 --> 00:04:53,148 Now, what do we care about set based designed? 134 00:04:53,148 --> 00:04:55,945 We're an agile company, we don't have a deadline. 135 00:04:55,945 --> 00:04:57,543 Yeah, we do... 136 00:04:57,543 --> 00:04:59,837 So, when we release a new version of the framework 137 00:04:59,837 --> 00:05:02,715 we have enterprises and partners very dependent 138 00:05:02,715 --> 00:05:03,913 on their business model, 139 00:05:03,913 --> 00:05:06,384 of knowing, when things are going to change. 140 00:05:06,384 --> 00:05:08,228 So we have to communicate to them those changes. 141 00:05:08,228 --> 00:05:10,119 So, we had to draw a line in the sand 142 00:05:10,119 --> 00:05:12,869 and said, "This is our deadline." 143 00:05:13,781 --> 00:05:17,105 And we did that 6 or 8 months or so before we released it. 144 00:05:17,105 --> 00:05:18,506 We said, "That's the deadline." 145 00:05:18,506 --> 00:05:21,031 And then used set based design to achieve that. 146 00:05:21,031 --> 00:05:23,132 Now, we've managed to get a lot of things done. 147 00:05:23,132 --> 00:05:24,377 We did manage to get it re-skinned. 148 00:05:24,377 --> 00:05:26,610 We did manage to get fully fledged articles. 149 00:05:26,610 --> 00:05:28,098 We didn't do some things. 150 00:05:28,098 --> 00:05:29,960 We didn't send every article back out 151 00:05:29,960 --> 00:05:32,191 for a full technical review like we hoped. 152 00:05:32,191 --> 00:05:33,937 That work is still in process. 153 00:05:33,937 --> 00:05:35,730 So, consequently we did leave some 154 00:05:35,730 --> 00:05:37,141 part of our set based design, 155 00:05:37,141 --> 00:05:38,478 left a little technical debt. 156 00:05:38,478 --> 00:05:39,669 But, guess what? We made the deadline 157 00:05:39,669 --> 00:05:41,242 and we can clean that up now. 158 00:05:41,242 --> 00:05:44,110 Mark my words, you're working in a world that has deadlines. 159 00:05:44,110 --> 00:05:45,309 We all admit that. 160 00:05:45,309 --> 00:05:47,660 If you don't understand agile development 161 00:05:47,660 --> 00:05:49,117 in conjunction with set based design, 162 00:05:49,117 --> 00:05:50,736 you're going to take quite a risk. 163 00:05:50,736 --> 00:05:52,830 Because, you don't know what the options are 164 00:05:52,830 --> 00:05:54,620 that allow you to achieve the deadline. 165 00:05:54,620 --> 00:05:56,810 Set based design is absolutely critical 166 00:05:56,810 --> 00:06:00,068 to meeting milestones with lean and agile development.