1 00:00:05,239 --> 00:00:07,259 [music] 2 00:00:09,825 --> 00:00:11,845 [music] 3 00:00:15,360 --> 00:00:19,520 Hello once again, Pyon AU 2026 and 4 00:00:19,520 --> 00:00:21,680 please give a warm applause to Tennessee 5 00:00:21,680 --> 00:00:24,480 Lovenberg who is going to tell you why 6 00:00:24,480 --> 00:00:27,599 you should write software. Well, please 7 00:00:27,599 --> 00:00:30,840 applaud. [applause] 8 00:00:34,960 --> 00:00:36,880 Hello everyone and uh like thanks for 9 00:00:36,880 --> 00:00:38,800 coming to the talk and thank you very 10 00:00:38,800 --> 00:00:41,920 much for your time. Uh so yeah the talk 11 00:00:41,920 --> 00:00:43,680 title on the abstract was why should I 12 00:00:43,680 --> 00:00:45,520 write software well I already know why I 13 00:00:45,520 --> 00:00:47,760 should write software well and I'm not 14 00:00:47,760 --> 00:00:49,600 trying to like blame you either. So it's 15 00:00:49,600 --> 00:00:51,600 not exactly you personally why should 16 00:00:51,600 --> 00:00:53,600 one write software well would have been 17 00:00:53,600 --> 00:00:55,760 the language of the past. So that said 18 00:00:55,760 --> 00:00:58,480 about you like probably you try to write 19 00:00:58,480 --> 00:01:01,280 software well but like hands up if you 20 00:01:01,280 --> 00:01:04,400 think that at least 20% of the people in 21 00:01:04,400 --> 00:01:08,000 the room probably work with someone else 22 00:01:08,000 --> 00:01:11,840 who may not write software well. Right. 23 00:01:11,840 --> 00:01:15,200 Okay. We're that's the we're away and 24 00:01:15,200 --> 00:01:18,880 cracking. Okay. So also about you, you 25 00:01:18,880 --> 00:01:21,920 might or might not not know a long list 26 00:01:21,920 --> 00:01:24,960 of specific reasons to write software. 27 00:01:24,960 --> 00:01:27,439 Well, you might or might not need to go 28 00:01:27,439 --> 00:01:30,320 around justifying the time spent by you, 29 00:01:30,320 --> 00:01:33,360 the team or your colleagues on quality. 30 00:01:33,360 --> 00:01:35,280 You might have different types of team 31 00:01:35,280 --> 00:01:37,280 culture around you and you might or 32 00:01:37,280 --> 00:01:38,880 might not have a preconceived idea of 33 00:01:38,880 --> 00:01:41,119 what software quality is strongly or 34 00:01:41,119 --> 00:01:43,119 weakly held. 35 00:01:43,119 --> 00:01:46,000 So a few disclaimers. So, uh, I'm a data 36 00:01:46,000 --> 00:01:48,320 scientist. I'm a software developer, and 37 00:01:48,320 --> 00:01:51,040 I'm an open- source optim optimist. Just 38 00:01:51,040 --> 00:01:53,759 for transparency, no AI whatsoever was 39 00:01:53,759 --> 00:01:56,399 used in writing this presentation. All 40 00:01:56,399 --> 00:01:59,280 of the art, therefore, is horribly 41 00:01:59,280 --> 00:02:02,799 scribbled using no artistic skills like 42 00:02:02,799 --> 00:02:06,399 this. Uh, my my collaborators then 43 00:02:06,399 --> 00:02:11,920 begged me to improve the art. I tried. 44 00:02:11,920 --> 00:02:14,720 All opinions uh and perspectives are my 45 00:02:14,720 --> 00:02:16,720 own uh not representing in an 46 00:02:16,720 --> 00:02:19,599 organization, group or anyone other than 47 00:02:19,599 --> 00:02:21,520 my own idiosyncratic perspective on 48 00:02:21,520 --> 00:02:24,879 life. Um these slides are an aid mainly 49 00:02:24,879 --> 00:02:26,560 to working memory like as prompts to me. 50 00:02:26,560 --> 00:02:28,720 You can ignore them. That will be fine. 51 00:02:28,720 --> 00:02:31,200 Uh some people like to look at stuff so 52 00:02:31,200 --> 00:02:33,519 there's stuff but people watching back 53 00:02:33,519 --> 00:02:36,000 online uh could well see these slides 54 00:02:36,000 --> 00:02:38,160 contextf free. So, I tend to put a heavy 55 00:02:38,160 --> 00:02:40,080 amount of text in, but you're welcome to 56 00:02:40,080 --> 00:02:41,920 just let it wash over you. This is for 57 00:02:41,920 --> 00:02:44,879 them. Some things are out of scope. 58 00:02:44,879 --> 00:02:47,200 Security and privacy, just like 59 00:02:47,200 --> 00:02:50,000 categorically try to do them well to the 60 00:02:50,000 --> 00:02:51,519 best of your ability. I'm not going to 61 00:02:51,519 --> 00:02:53,760 talk about it further. Other kinds of 62 00:02:53,760 --> 00:02:56,319 formal risk management frameworks for 63 00:02:56,319 --> 00:02:59,280 your industry will also probably apply 64 00:02:59,280 --> 00:03:01,599 depending on that context. And I 65 00:03:01,599 --> 00:03:04,159 couldn't possibly speak to medical and 66 00:03:04,159 --> 00:03:06,959 automotive and legal and that is also a 67 00:03:06,959 --> 00:03:10,000 matter for your context to to interpret. 68 00:03:10,000 --> 00:03:11,680 Also out of scope are strongly 69 00:03:11,680 --> 00:03:14,560 misaligned goals. Sometimes someone just 70 00:03:14,560 --> 00:03:16,640 isn't playing cricket and we're not 71 00:03:16,640 --> 00:03:19,200 talking about that. Literally everything 72 00:03:19,200 --> 00:03:21,920 else is in scope. But I would encourage 73 00:03:21,920 --> 00:03:23,840 you to focus on things that are either 74 00:03:23,840 --> 00:03:25,519 directly under your team's span of 75 00:03:25,519 --> 00:03:28,800 control, things you can influence around 76 00:03:28,800 --> 00:03:31,360 you, and the tools to improve you and 77 00:03:31,360 --> 00:03:34,480 your team's ability to negotiate. 78 00:03:34,480 --> 00:03:36,879 So why should you write software? Well, 79 00:03:36,879 --> 00:03:39,040 well, the main reason that is pretty 80 00:03:39,040 --> 00:03:42,799 familiar is to maximize good stuff. 81 00:03:42,799 --> 00:03:45,440 uh otherwise known as utility uh 82 00:03:45,440 --> 00:03:48,959 benefits or positive outcomes for 83 00:03:48,959 --> 00:03:51,280 collectively everyone. 84 00:03:51,280 --> 00:03:54,080 You also should attempt to avoid bad 85 00:03:54,080 --> 00:03:57,120 stuff uh negative utility disbenefits or 86 00:03:57,120 --> 00:03:58,799 negative outcomes. This much is fairly 87 00:03:58,799 --> 00:04:00,640 clear. Being a data scientist, I 88 00:04:00,640 --> 00:04:03,007 expressed it as a formula. 89 00:04:03,007 --> 00:04:04,480 [laughter] 90 00:04:04,480 --> 00:04:07,120 Being a good d a bad data scientist, I 91 00:04:07,120 --> 00:04:08,560 can't remember how to use latte 92 00:04:08,560 --> 00:04:10,159 properly. So the math jacks is a bit 93 00:04:10,159 --> 00:04:12,959 funny. I've also interpreted f of bad 94 00:04:12,959 --> 00:04:14,720 stuff as producing a negative number. 95 00:04:14,720 --> 00:04:16,239 Therefore, I've used a plus sign. You 96 00:04:16,239 --> 00:04:17,919 know, as is convention in mathematics, 97 00:04:17,919 --> 00:04:20,320 reversing the semantics. Is it divided 98 00:04:20,320 --> 00:04:23,040 by time or multiplied by time? Hard to 99 00:04:23,040 --> 00:04:25,520 say. The the the cost of the good stuff 100 00:04:25,520 --> 00:04:27,360 and the bad stuff is like divided by 101 00:04:27,360 --> 00:04:28,880 time, but the consequences are kind of 102 00:04:28,880 --> 00:04:30,639 multiplied by time. So, like all 103 00:04:30,639 --> 00:04:33,520 formulas, the eye is in the reader. So, 104 00:04:33,520 --> 00:04:34,880 maybe don't pay attention to that 105 00:04:34,880 --> 00:04:37,680 formula. Now when I was uh pitching this 106 00:04:37,680 --> 00:04:39,919 presentation and getting feedback on it, 107 00:04:39,919 --> 00:04:42,639 many people were very confused by what I 108 00:04:42,639 --> 00:04:44,320 presented and I think they were 109 00:04:44,320 --> 00:04:47,440 expecting this to be my presentation. I 110 00:04:47,440 --> 00:04:49,199 did not want to give this presentation. 111 00:04:49,199 --> 00:04:51,520 So I put it on one slide and I want to 112 00:04:51,520 --> 00:04:54,639 get it out of the way. So this is a big 113 00:04:54,639 --> 00:04:57,600 long list of very specific things that I 114 00:04:57,600 --> 00:04:59,440 think you should may well want to think 115 00:04:59,440 --> 00:05:02,479 about the advantages of those things, 116 00:05:02,479 --> 00:05:05,199 the disb what what it avoids in negative 117 00:05:05,199 --> 00:05:08,000 framing and the downsides of doing those 118 00:05:08,000 --> 00:05:10,479 things. [snorts] The lines in green are 119 00:05:10,479 --> 00:05:12,800 the ones that I think are more or less 120 00:05:12,800 --> 00:05:15,520 beyond question worth doing. Here is a 121 00:05:15,520 --> 00:05:17,680 zoomed in version of those without the 122 00:05:17,680 --> 00:05:19,039 reasons for those of you who are 123 00:05:19,039 --> 00:05:21,039 attempting to read this in real time. 124 00:05:21,039 --> 00:05:22,720 Everybody else, I encourage you to go 125 00:05:22,720 --> 00:05:25,039 back and improve Python. I use YouTube 126 00:05:25,039 --> 00:05:27,280 engagement statistics by watching it and 127 00:05:27,280 --> 00:05:29,520 checking the text. 128 00:05:29,520 --> 00:05:32,240 Great. So, presentation one over. Right 129 00:05:32,240 --> 00:05:33,919 now, why should you write software? 130 00:05:33,919 --> 00:05:38,080 Well, what a good question. Okay, so 131 00:05:38,080 --> 00:05:40,000 software benefits have a really big 132 00:05:40,000 --> 00:05:44,160 impact on good stuff and bad stuff. 133 00:05:44,160 --> 00:05:46,960 They're good reasons. When you have good 134 00:05:46,960 --> 00:05:49,520 reasons for your things, it helps 135 00:05:49,520 --> 00:05:51,199 everyone understand with understanding 136 00:05:51,199 --> 00:05:54,400 and motivation. And that's almost the 137 00:05:54,400 --> 00:05:55,919 motivation for this talk. There are a 138 00:05:55,919 --> 00:05:58,720 few kind of key reasons I decided to 139 00:05:58,720 --> 00:06:01,039 give this. One is this is the talk for 140 00:06:01,039 --> 00:06:03,280 20-year-old me. You know, I didn't know 141 00:06:03,280 --> 00:06:05,680 these things. People would say stuff 142 00:06:05,680 --> 00:06:07,600 like do options analysis, and I'd be 143 00:06:07,600 --> 00:06:10,479 like, why? And they'd be like, well, 144 00:06:10,479 --> 00:06:11,840 tell me what happens if we don't do 145 00:06:11,840 --> 00:06:14,240 anything. And I'm like, what do you you 146 00:06:14,240 --> 00:06:15,600 actually want me to come up with a 147 00:06:15,600 --> 00:06:17,360 strategy for not doing anything and 148 00:06:17,360 --> 00:06:19,919 explain? So this is a little bit about 149 00:06:19,919 --> 00:06:21,600 how to understand what people are asking 150 00:06:21,600 --> 00:06:24,080 you. I've also come across many 151 00:06:24,080 --> 00:06:26,880 circumstances where someone either can't 152 00:06:26,880 --> 00:06:29,280 get the time to spend on something or 153 00:06:29,280 --> 00:06:32,240 like they kind of preemptively avoid 154 00:06:32,240 --> 00:06:34,160 doing good quality code because they 155 00:06:34,160 --> 00:06:35,360 think they're going to get later 156 00:06:35,360 --> 00:06:38,160 punished for doing so or it's not their 157 00:06:38,160 --> 00:06:40,639 job to argue for the time even though 158 00:06:40,639 --> 00:06:42,479 they're the one being relied upon to hit 159 00:06:42,479 --> 00:06:45,039 a quality bar. So there's a lot of a lot 160 00:06:45,039 --> 00:06:46,479 of people have found themselves in 161 00:06:46,479 --> 00:06:49,680 circumstances where they're like, "Oh, 162 00:06:49,680 --> 00:06:51,919 maybe I'm not allowed to do quality." 163 00:06:51,919 --> 00:06:53,360 But at the same time actually that's 164 00:06:53,360 --> 00:06:55,280 what expect is expected of you. You have 165 00:06:55,280 --> 00:06:57,360 to stand up for what you think the 166 00:06:57,360 --> 00:06:59,840 quality bar is but it's very hard to 167 00:06:59,840 --> 00:07:01,440 know how to do it. So this the these 168 00:07:01,440 --> 00:07:04,160 sort of things are in mind and like I'm 169 00:07:04,160 --> 00:07:07,120 in a a fortunately stable sort of work 170 00:07:07,120 --> 00:07:09,039 situation but I can see that out there a 171 00:07:09,039 --> 00:07:11,280 lot of people are like being disrupted 172 00:07:11,280 --> 00:07:13,360 in various ways at the moment. That's 173 00:07:13,360 --> 00:07:14,720 happened to many people for other 174 00:07:14,720 --> 00:07:16,720 reasons before. There's a particular 175 00:07:16,720 --> 00:07:18,080 reason at the moment that many people 176 00:07:18,080 --> 00:07:21,199 are pointing at. But nonetheless, the 177 00:07:21,199 --> 00:07:23,599 common factor is actually how you decide 178 00:07:23,599 --> 00:07:26,160 what good is and how to negotiate and 179 00:07:26,160 --> 00:07:28,160 agree the time spent on what good is in 180 00:07:28,160 --> 00:07:30,319 that circumstance. 181 00:07:30,319 --> 00:07:33,199 Uh we all want to be have our work and 182 00:07:33,199 --> 00:07:35,120 therefore ourselves by implication be 183 00:07:35,120 --> 00:07:37,840 appreciated and respected. Doing good 184 00:07:37,840 --> 00:07:39,919 work is a major source of professional 185 00:07:39,919 --> 00:07:43,120 and personal satisfaction and enhancing 186 00:07:43,120 --> 00:07:45,440 trust which I think is more relevant 187 00:07:45,440 --> 00:07:49,599 than ever comes from good work. 188 00:07:49,599 --> 00:07:53,280 Now, why is why a hard question? Why are 189 00:07:53,280 --> 00:07:55,840 we a software conference getting pretty 190 00:07:55,840 --> 00:07:58,000 philosophical? I will bring this back to 191 00:07:58,000 --> 00:07:59,919 technology examples and specific 192 00:07:59,919 --> 00:08:01,280 examples through the course of the 193 00:08:01,280 --> 00:08:04,400 presentation. But I think why is a hard 194 00:08:04,400 --> 00:08:06,240 question because we greatly 195 00:08:06,240 --> 00:08:08,800 underestimate how differently we 196 00:08:08,800 --> 00:08:10,879 actually all think about what is good 197 00:08:10,879 --> 00:08:14,319 and what is not good. Uh yeah, for 198 00:08:14,319 --> 00:08:15,840 foresight's imperfect, knowledge is 199 00:08:15,840 --> 00:08:18,080 imperfect. If you do a good job but you 200 00:08:18,080 --> 00:08:19,280 you have a lack of knowledge and 201 00:08:19,280 --> 00:08:21,520 therefore you do something suboptimal, 202 00:08:21,520 --> 00:08:23,360 that's still you trying to do a good job 203 00:08:23,360 --> 00:08:26,160 and you actually coding well that it's 204 00:08:26,160 --> 00:08:28,879 just a gap in your knowledge. It's 205 00:08:28,879 --> 00:08:30,639 definitely going to affect you but it's 206 00:08:30,639 --> 00:08:33,599 just a gap in your knowledge. Who's in 207 00:08:33,599 --> 00:08:35,919 charge in all of our work lives differs 208 00:08:35,919 --> 00:08:37,919 pretty greatly. Like it could be a 209 00:08:37,919 --> 00:08:40,240 senior developer. You might be used to 210 00:08:40,240 --> 00:08:42,320 be being in charge, but maybe the 211 00:08:42,320 --> 00:08:44,880 customer is in charge or maybe some some 212 00:08:44,880 --> 00:08:47,040 other circumstance affects the dynamics 213 00:08:47,040 --> 00:08:49,680 of your particular situation. And you're 214 00:08:49,680 --> 00:08:50,959 going to have to deal with that in a 215 00:08:50,959 --> 00:08:53,279 bunch of different ways. And find a 216 00:08:53,279 --> 00:08:57,200 common language to agree to talk about 217 00:08:57,200 --> 00:09:00,000 why to do software quality both to 218 00:09:00,000 --> 00:09:02,480 yourself so that you're confident in the 219 00:09:02,480 --> 00:09:04,240 boundaries you set about what good 220 00:09:04,240 --> 00:09:07,279 enough is and so that they can see the 221 00:09:07,279 --> 00:09:10,000 value in the software quality and value 222 00:09:10,000 --> 00:09:12,800 it also. And that that that I think is 223 00:09:12,800 --> 00:09:15,040 the crux of it is so that other people 224 00:09:15,040 --> 00:09:17,920 value software quality and agree on 225 00:09:17,920 --> 00:09:19,600 terms about what that is and what it's 226 00:09:19,600 --> 00:09:23,600 achieving. So again being a good data 227 00:09:23,600 --> 00:09:26,000 scientist this last element uh cost 228 00:09:26,000 --> 00:09:30,720 induced not me not my fault. 229 00:09:30,720 --> 00:09:33,279 I plugged it in again it worked great 230 00:09:33,279 --> 00:09:36,959 cost and disutility integrate over time 231 00:09:36,959 --> 00:09:40,959 right if you have as do benefits. So 232 00:09:40,959 --> 00:09:45,200 short-term costs added up sequentially 233 00:09:45,200 --> 00:09:48,480 become a cumulative total of future cost 234 00:09:48,480 --> 00:09:49,760 that you know you're going to need to 235 00:09:49,760 --> 00:09:52,000 deal with. 236 00:09:52,000 --> 00:09:54,800 So how do we keep things constructive? 237 00:09:54,800 --> 00:09:56,560 So 238 00:09:56,560 --> 00:09:59,519 it's very common to start moving into a 239 00:09:59,519 --> 00:10:01,040 negative framing when talking about 240 00:10:01,040 --> 00:10:04,000 quality, but it's very persuasive to 241 00:10:04,000 --> 00:10:06,320 stay in a positive framing when 242 00:10:06,320 --> 00:10:07,839 negotiating. 243 00:10:07,839 --> 00:10:09,519 So, 244 00:10:09,519 --> 00:10:11,760 it's going to be much better. It's going 245 00:10:11,760 --> 00:10:13,920 to go better for everyone when we can 246 00:10:13,920 --> 00:10:16,000 articulate good reasons for things. When 247 00:10:16,000 --> 00:10:17,920 we could acknowledge the value of the 248 00:10:17,920 --> 00:10:19,680 effort applied to what we're trying to 249 00:10:19,680 --> 00:10:22,480 achieve, including quality. Knowing 250 00:10:22,480 --> 00:10:24,640 reasons for things is something we can 251 00:10:24,640 --> 00:10:27,279 do. We can all do more to know the 252 00:10:27,279 --> 00:10:29,440 reasons for what we do. That it's very 253 00:10:29,440 --> 00:10:31,519 directly under our personal control to 254 00:10:31,519 --> 00:10:34,480 know more things. So the goal of all of 255 00:10:34,480 --> 00:10:37,360 this is to shift the discussion from why 256 00:10:37,360 --> 00:10:40,480 a bit like a normative description like 257 00:10:40,480 --> 00:10:44,880 you should do this to here is why I do 258 00:10:44,880 --> 00:10:47,600 this. 259 00:10:47,600 --> 00:10:49,760 And I believe that we should do this 260 00:10:49,760 --> 00:10:51,040 mainly through the language of 261 00:10:51,040 --> 00:10:52,560 discussing the balance between the short 262 00:10:52,560 --> 00:10:54,000 and the long term when discussing 263 00:10:54,000 --> 00:10:57,040 technical objectives. 264 00:10:57,040 --> 00:10:59,279 For those who can't read my scroll, 265 00:10:59,279 --> 00:11:01,040 including everybody I've ever shown this 266 00:11:01,040 --> 00:11:04,079 to, here is a text annotation explaining 267 00:11:04,079 --> 00:11:07,040 what is going on with this slide. 268 00:11:07,040 --> 00:11:10,480 So, let's lay out this timeline a little 269 00:11:10,480 --> 00:11:13,360 bit. For the sake of clarity, you are 270 00:11:13,360 --> 00:11:16,880 here. It is currently around now. 271 00:11:16,880 --> 00:11:18,800 This is where most people spend most of 272 00:11:18,800 --> 00:11:22,320 their thinking time. 273 00:11:22,320 --> 00:11:25,440 Some people do consider quite soon in 274 00:11:25,440 --> 00:11:29,040 the recent the recent past when acting. 275 00:11:29,040 --> 00:11:30,880 If you're wondering why somebody near 276 00:11:30,880 --> 00:11:32,399 you is doing the thing that they are 277 00:11:32,399 --> 00:11:34,800 doing, it is either because they are 278 00:11:34,800 --> 00:11:36,959 focused on a roundabout now or 279 00:11:36,959 --> 00:11:38,959 reasonably likely the quite soon in the 280 00:11:38,959 --> 00:11:41,600 recent past. But we all have different 281 00:11:41,600 --> 00:11:43,360 pressures on us and different ways of 282 00:11:43,360 --> 00:11:45,279 coming together. 283 00:11:45,279 --> 00:11:48,160 The quality goals, the experience, the 284 00:11:48,160 --> 00:11:50,880 list of specific things often come in 285 00:11:50,880 --> 00:11:52,480 fact from the long-term, the 286 00:11:52,480 --> 00:11:54,399 medium-term, or the seldom questioned 287 00:11:54,399 --> 00:11:57,680 past, which causes an obvious friction 288 00:11:57,680 --> 00:12:00,399 between centralizing your thought on the 289 00:12:00,399 --> 00:12:01,920 recent past, the quite soon, and the 290 00:12:01,920 --> 00:12:04,800 around now. People may think that the 291 00:12:04,800 --> 00:12:06,240 long-term, the medium-term, and the 292 00:12:06,240 --> 00:12:08,800 seldom question past may be irrelevant, 293 00:12:08,800 --> 00:12:11,680 costly, or not relevant in the in the 294 00:12:11,680 --> 00:12:14,240 around now. 295 00:12:14,240 --> 00:12:17,040 So my central tenant is that we want to 296 00:12:17,040 --> 00:12:19,440 expand the circle of what we're 297 00:12:19,440 --> 00:12:22,800 considering when we do our work so that 298 00:12:22,800 --> 00:12:26,079 we we take on more by default. And 299 00:12:26,079 --> 00:12:28,720 that's what well means. 300 00:12:28,720 --> 00:12:30,240 Having 301 00:12:30,240 --> 00:12:32,160 agreed and I'm just going to take it for 302 00:12:32,160 --> 00:12:33,839 granted. We don't have time in a short 303 00:12:33,839 --> 00:12:36,000 presentation to actually come to a 200 304 00:12:36,000 --> 00:12:38,560 person agreement uh that this is a 305 00:12:38,560 --> 00:12:40,639 reasonable definition of what good 306 00:12:40,639 --> 00:12:44,240 means. I shall now continue 307 00:12:44,240 --> 00:12:47,120 to further frame the discussion in the 308 00:12:47,120 --> 00:12:49,279 language of organizations risk 309 00:12:49,279 --> 00:12:51,680 management and prioritization. 310 00:12:51,680 --> 00:12:55,120 This is a common framework you may see. 311 00:12:55,120 --> 00:12:58,720 So the cost you this has different axes 312 00:12:58,720 --> 00:13:00,320 and different ordering of of the 313 00:13:00,320 --> 00:13:03,200 elements and different but in many 314 00:13:03,200 --> 00:13:04,959 examples but what I'm imagining in my 315 00:13:04,959 --> 00:13:07,920 head is cost kind of vertically and then 316 00:13:07,920 --> 00:13:09,360 either the benefit or the risk 317 00:13:09,360 --> 00:13:11,040 horizontally but you spend most of your 318 00:13:11,040 --> 00:13:13,200 time in things of high value or high 319 00:13:13,200 --> 00:13:15,920 risk that you know you you need to act 320 00:13:15,920 --> 00:13:19,040 on. It is very clear. However, it's when 321 00:13:19,040 --> 00:13:21,200 you do that, it's also clear that you 322 00:13:21,200 --> 00:13:24,320 are ignoring many important things and 323 00:13:24,320 --> 00:13:26,639 you want to extend the impact of your 324 00:13:26,639 --> 00:13:28,959 actions through to the mediums and the 325 00:13:28,959 --> 00:13:31,920 lows. You still want to act on 326 00:13:31,920 --> 00:13:34,320 medium-term objectives. You still want 327 00:13:34,320 --> 00:13:36,720 to make sure some of your time goes into 328 00:13:36,720 --> 00:13:38,959 lowcost things that are still of of of 329 00:13:38,959 --> 00:13:42,320 lower value and have those benefits as 330 00:13:42,320 --> 00:13:45,279 much as possible. And that comes from 331 00:13:45,279 --> 00:13:49,040 largely experience, but also having 332 00:13:49,040 --> 00:13:51,200 people accept that what you're putting 333 00:13:51,200 --> 00:13:53,680 time and effort into is actually of 334 00:13:53,680 --> 00:13:56,800 value to them in their context. So let's 335 00:13:56,800 --> 00:13:58,560 zoom in, right? Let's talk let's let's 336 00:13:58,560 --> 00:14:00,720 now talk coding. So here's a few 337 00:14:00,720 --> 00:14:02,399 examples where this might come into 338 00:14:02,399 --> 00:14:05,920 play. introducing design changes, 339 00:14:05,920 --> 00:14:07,519 dealing with merge requests and pull 340 00:14:07,519 --> 00:14:09,680 requests from others, getting results in 341 00:14:09,680 --> 00:14:12,320 a reasonable time frame, agreeing on 342 00:14:12,320 --> 00:14:15,040 whether to apply specific practices and 343 00:14:15,040 --> 00:14:17,440 on how and when to apply those specific 344 00:14:17,440 --> 00:14:20,480 practices. So that's is a little bit of 345 00:14:20,480 --> 00:14:22,560 zoom in. Let's make it like more real. 346 00:14:22,560 --> 00:14:26,079 So these are, you know, either genuine 347 00:14:26,079 --> 00:14:28,399 real world examples or very real world 348 00:14:28,399 --> 00:14:31,760 adjacent. One is should I adopt the use 349 00:14:31,760 --> 00:14:33,760 of paidantic and data classes with a 350 00:14:33,760 --> 00:14:35,920 functional programming style for some of 351 00:14:35,920 --> 00:14:38,959 my new or existing projects 352 00:14:38,959 --> 00:14:42,480 like it's appealing. Should I do it? Do 353 00:14:42,480 --> 00:14:43,839 I need to take into account the 354 00:14:43,839 --> 00:14:46,320 operational design requirements when I'm 355 00:14:46,320 --> 00:14:49,440 prototyping my thing? Do I need 100% 356 00:14:49,440 --> 00:14:52,560 test coverage yet or ever? And more 357 00:14:52,560 --> 00:14:54,399 broadly, should I adopt such and such a 358 00:14:54,399 --> 00:14:56,079 software framework for such and such a 359 00:14:56,079 --> 00:14:58,320 thing or just avoid the extra dependency 360 00:14:58,320 --> 00:14:59,920 so that everything's just like a little 361 00:14:59,920 --> 00:15:03,120 bit more locally contained? So what I 362 00:15:03,120 --> 00:15:05,360 was told my whole entire career but took 363 00:15:05,360 --> 00:15:08,880 me 15 solid years to understand was the 364 00:15:08,880 --> 00:15:12,320 power of options. This is not novel. 365 00:15:12,320 --> 00:15:14,560 Option one generally you're told to 366 00:15:14,560 --> 00:15:18,079 articulate do nothing. Uh I used to 367 00:15:18,079 --> 00:15:20,480 think this meant like what is the best 368 00:15:20,480 --> 00:15:23,120 version of do nothing like maybe people 369 00:15:23,120 --> 00:15:26,320 might I I always worried that this 370 00:15:26,320 --> 00:15:28,399 column would make people go h that's 371 00:15:28,399 --> 00:15:30,800 okay and then I would struggle to engage 372 00:15:30,800 --> 00:15:32,880 people in the story I was telling. So 373 00:15:32,880 --> 00:15:35,600 I'd never understood how to use this as 374 00:15:35,600 --> 00:15:37,920 a storytelling or narrative to explain 375 00:15:37,920 --> 00:15:40,959 my thinking and show my working out for 376 00:15:40,959 --> 00:15:43,760 how I arrived at actually the different 377 00:15:43,760 --> 00:15:46,320 options. So 378 00:15:46,320 --> 00:15:48,959 using the language of time was a 379 00:15:48,959 --> 00:15:51,199 powerful innovation for me personally 380 00:15:51,199 --> 00:15:55,040 here and by explaining the buildup of 381 00:15:55,040 --> 00:15:57,440 consequences and the integration of cost 382 00:15:57,440 --> 00:15:59,839 and benefit over time through this 383 00:15:59,839 --> 00:16:02,240 framework it became a more power 384 00:16:02,240 --> 00:16:04,399 powerful narrative tool that was not 385 00:16:04,399 --> 00:16:06,079 apparent to me when someone said just 386 00:16:06,079 --> 00:16:09,360 give me some options. So you know do a 387 00:16:09,360 --> 00:16:11,120 thing do a different thing same 388 00:16:11,120 --> 00:16:12,880 framework 389 00:16:12,880 --> 00:16:15,199 show it to an immediate colleague they 390 00:16:15,199 --> 00:16:17,759 may or may not agree with the now the 391 00:16:17,759 --> 00:16:20,000 then or the even later and then you have 392 00:16:20,000 --> 00:16:23,199 the basis for a technical discussion 393 00:16:23,199 --> 00:16:26,800 applied to the concept of quality 394 00:16:26,800 --> 00:16:29,040 suddenly things like best practices that 395 00:16:29,040 --> 00:16:30,639 are based on medium and long-term 396 00:16:30,639 --> 00:16:32,800 objectives that you know you may or you 397 00:16:32,800 --> 00:16:35,440 know or someone knows from experiences 398 00:16:35,440 --> 00:16:38,079 are valuable becomes articul 399 00:16:38,079 --> 00:16:42,399 as a trade-off and when you trade then 400 00:16:42,399 --> 00:16:44,959 it's a descriptive situation not a 401 00:16:44,959 --> 00:16:48,440 normative one 402 00:16:49,120 --> 00:16:51,360 of this 403 00:16:51,360 --> 00:16:53,759 example so I maintain some research and 404 00:16:53,759 --> 00:16:56,560 development tooling uh for my team 405 00:16:56,560 --> 00:17:00,240 exists I could just leave it what 406 00:17:00,240 --> 00:17:02,000 happens if I just leave it well there's 407 00:17:02,000 --> 00:17:04,000 no immediate cost it's not burning it's 408 00:17:04,000 --> 00:17:06,000 not you know it's not it's not sitting 409 00:17:06,000 --> 00:17:08,160 there consuming you know costs and 410 00:17:08,160 --> 00:17:10,559 tokens or whatever your cost basis is at 411 00:17:10,559 --> 00:17:12,720 the moment. It's fine. What will 412 00:17:12,720 --> 00:17:14,480 probably happen is that more users will 413 00:17:14,480 --> 00:17:17,120 slowly adopt that thing. However, a bit 414 00:17:17,120 --> 00:17:19,360 later on, I can tell it's not quite 415 00:17:19,360 --> 00:17:21,679 right. The quality is not where I want 416 00:17:21,679 --> 00:17:24,880 it to be for the long term. I think it 417 00:17:24,880 --> 00:17:26,400 will eventually result in user 418 00:17:26,400 --> 00:17:29,039 dissatisfaction. If more people adopt 419 00:17:29,039 --> 00:17:31,679 it, it will also make it harder to move 420 00:17:31,679 --> 00:17:34,400 ever from the current design. And there 421 00:17:34,400 --> 00:17:36,240 may be developer dissatisfaction for 422 00:17:36,240 --> 00:17:39,039 those that do uh do adopt it. However, 423 00:17:39,039 --> 00:17:42,000 it is in the even later box. 424 00:17:42,000 --> 00:17:44,160 I could tidy it up. That's that's 425 00:17:44,160 --> 00:17:47,679 entirely plausible. So if I tidy it up, 426 00:17:47,679 --> 00:17:50,080 I have to go to some effort. The effort 427 00:17:50,080 --> 00:17:52,320 is manageable. Mostly it's traded off 428 00:17:52,320 --> 00:17:53,919 against other projects. If I'm honest, 429 00:17:53,919 --> 00:17:56,960 it's quite plausible. More more users I 430 00:17:56,960 --> 00:17:59,039 think still will adopt the thing, but it 431 00:17:59,039 --> 00:18:00,640 will just increase the development cost 432 00:18:00,640 --> 00:18:03,360 for me. So I have to bear the cost. uh 433 00:18:03,360 --> 00:18:05,440 but even later I think we'll get 434 00:18:05,440 --> 00:18:07,360 improved user engagement. It will still 435 00:18:07,360 --> 00:18:09,120 be harder to move because people will 436 00:18:09,120 --> 00:18:11,200 have adopted the thing. There will still 437 00:18:11,200 --> 00:18:13,280 be some developer dissatisfaction 438 00:18:13,280 --> 00:18:16,720 because it's not as good as fully fully, 439 00:18:16,720 --> 00:18:18,000 you know, scoping in all of the 440 00:18:18,000 --> 00:18:20,400 requirements I can foresee. But now I've 441 00:18:20,400 --> 00:18:23,520 got an actual reason between to compare 442 00:18:23,520 --> 00:18:25,200 between the two options based on this 443 00:18:25,200 --> 00:18:28,000 timebased analysis. Uh number three 444 00:18:28,000 --> 00:18:30,400 there, uh full requirements. Okay, so 445 00:18:30,400 --> 00:18:33,039 now we're going to do the big refactor. 446 00:18:33,039 --> 00:18:34,320 You know, I've had the I've had the 447 00:18:34,320 --> 00:18:35,760 light bulb moment and I'm like, you know 448 00:18:35,760 --> 00:18:37,200 what? This is what people are going to 449 00:18:37,200 --> 00:18:39,840 need in 2 years time. I'm just going to, 450 00:18:39,840 --> 00:18:43,120 you know, take the take a big swing, 451 00:18:43,120 --> 00:18:46,160 fairly major design cost, fairly major 452 00:18:46,160 --> 00:18:50,160 re re uh refactoring costs, but then uh 453 00:18:50,160 --> 00:18:52,640 more users might adopt the thing. If I'm 454 00:18:52,640 --> 00:18:54,720 in the middle of stuff, when they adopt 455 00:18:54,720 --> 00:18:56,799 the thing, there's going to be user 456 00:18:56,799 --> 00:18:59,360 confusion. They're going to see multiple 457 00:18:59,360 --> 00:19:01,440 programming styles and mo multiple 458 00:19:01,440 --> 00:19:02,880 idioms when they're confronted with the 459 00:19:02,880 --> 00:19:05,600 documentation mid-process. 460 00:19:05,600 --> 00:19:07,600 It will probably be less development 461 00:19:07,600 --> 00:19:09,919 cost for me overall if I'm honest 462 00:19:09,919 --> 00:19:11,840 because I can see that the new style is 463 00:19:11,840 --> 00:19:13,200 essentially going to be easier to 464 00:19:13,200 --> 00:19:14,559 maintain and build than the old style. 465 00:19:14,559 --> 00:19:16,960 was basically better and then even 466 00:19:16,960 --> 00:19:19,679 later. So you know after the after the 467 00:19:19,679 --> 00:19:21,600 effort after the adoption after the 468 00:19:21,600 --> 00:19:23,120 integr the socialization and the 469 00:19:23,120 --> 00:19:25,440 deployment integration eventually 470 00:19:25,440 --> 00:19:27,600 greatly reduced dev cost cuz I think I 471 00:19:27,600 --> 00:19:30,160 can see a way better way of doing things 472 00:19:30,160 --> 00:19:32,880 greatly improved user engagement. So the 473 00:19:32,880 --> 00:19:35,200 only one that ultimately achieves this 474 00:19:35,200 --> 00:19:37,280 goal of improved user engagement and 475 00:19:37,280 --> 00:19:38,880 ultimately much better developer 476 00:19:38,880 --> 00:19:41,440 satisfaction being very appealing. But 477 00:19:41,440 --> 00:19:43,919 I've also been honest about the time and 478 00:19:43,919 --> 00:19:45,280 effort that's been involved in that 479 00:19:45,280 --> 00:19:48,640 trade-off. And in this case, like 480 00:19:48,640 --> 00:19:50,400 frankly, I'm also the person assessing 481 00:19:50,400 --> 00:19:52,080 whether to do this particular thing. So, 482 00:19:52,080 --> 00:19:55,120 it's more about self uh self-explanation 483 00:19:55,120 --> 00:19:57,200 than explaining to another. But I've 484 00:19:57,200 --> 00:19:59,919 taken this best practice long checklist, 485 00:19:59,919 --> 00:20:02,400 should I do it thing and made it less of 486 00:20:02,400 --> 00:20:04,799 an overwhelming list of things I should 487 00:20:04,799 --> 00:20:07,120 do and more into a trade-off situation 488 00:20:07,120 --> 00:20:08,720 that I can analyze and discuss 489 00:20:08,720 --> 00:20:11,200 technically. 490 00:20:11,200 --> 00:20:12,960 Uh now we're going to move into another 491 00:20:12,960 --> 00:20:15,520 example based on a project. So this is a 492 00:20:15,520 --> 00:20:19,280 a real project but I've you know 493 00:20:19,280 --> 00:20:20,960 stay stage uh clear of some of the 494 00:20:20,960 --> 00:20:23,679 details. So the research and development 495 00:20:23,679 --> 00:20:26,880 team they're you know they're funded 496 00:20:26,880 --> 00:20:28,640 essentially or scoped whatever language 497 00:20:28,640 --> 00:20:32,240 you want to use to build a cool thing. 498 00:20:32,240 --> 00:20:35,280 that cool thing they want to build as 499 00:20:35,280 --> 00:20:37,039 quickly as possible to get their 500 00:20:37,039 --> 00:20:38,720 research outcome to prove that it's 501 00:20:38,720 --> 00:20:41,280 doable to give faith to our customers 502 00:20:41,280 --> 00:20:44,400 that we can get it done. And that's 503 00:20:44,400 --> 00:20:46,159 that's the research team's near-term 504 00:20:46,159 --> 00:20:48,320 goal, but it is the research team's 505 00:20:48,320 --> 00:20:50,320 near-term goal, not necessarily the 506 00:20:50,320 --> 00:20:52,799 organization's near-term goal or the 507 00:20:52,799 --> 00:20:55,919 project manager's goals. So, okay, say 508 00:20:55,919 --> 00:20:58,000 we we maximize the R&D team's rate of 509 00:20:58,000 --> 00:21:00,159 progress. We just kind of ignore the ops 510 00:21:00,159 --> 00:21:02,640 requirements. uh we'll get buy in 511 00:21:02,640 --> 00:21:04,159 because stuff's going to look shiny 512 00:21:04,159 --> 00:21:06,240 sooner. We'll minimize our cost to 513 00:21:06,240 --> 00:21:08,400 achieve that point. It shows that we can 514 00:21:08,400 --> 00:21:09,919 be agile because we can be very 515 00:21:09,919 --> 00:21:12,240 responsive in our R&D. So the R&D team 516 00:21:12,240 --> 00:21:15,360 gets to look good. Uh we might get, you 517 00:21:15,360 --> 00:21:17,360 know, like extra like that might connect 518 00:21:17,360 --> 00:21:19,600 to the next round of of funding. Like in 519 00:21:19,600 --> 00:21:21,360 my context, it's slightly different than 520 00:21:21,360 --> 00:21:23,200 like funding rounds if that's what's in 521 00:21:23,200 --> 00:21:25,039 your head, but we still have sponsors 522 00:21:25,039 --> 00:21:26,480 and projects and things, right? So it 523 00:21:26,480 --> 00:21:28,000 might continue the life of the project. 524 00:21:28,000 --> 00:21:30,720 So there's a really important win to the 525 00:21:30,720 --> 00:21:33,520 agility and the short-term goals which 526 00:21:33,520 --> 00:21:35,280 again if we're being honest about what 527 00:21:35,280 --> 00:21:37,440 well means does mean we need to 528 00:21:37,440 --> 00:21:39,280 interpret that big long list of all the 529 00:21:39,280 --> 00:21:40,960 specific things we possibly should be 530 00:21:40,960 --> 00:21:43,120 doing in the context of how it affects 531 00:21:43,120 --> 00:21:44,480 someone's life other than the 532 00:21:44,480 --> 00:21:47,360 development teams. uh we need to 533 00:21:47,360 --> 00:21:48,799 understand how it's going to affect the 534 00:21:48,799 --> 00:21:51,760 project sponsor's needs to look good or 535 00:21:51,760 --> 00:21:55,120 uh impress or negotiate with their other 536 00:21:55,120 --> 00:21:57,039 colleagues using the language of their 537 00:21:57,039 --> 00:21:59,120 business or their context and we should 538 00:21:59,120 --> 00:22:01,919 be supportive of that. Uh yeah, so it 539 00:22:01,919 --> 00:22:04,080 looks good to people, but when we've 540 00:22:04,080 --> 00:22:07,440 built it on the current strategy, it 541 00:22:07,440 --> 00:22:09,919 will not connect and integrate with our 542 00:22:09,919 --> 00:22:12,320 operational environment. And we all know 543 00:22:12,320 --> 00:22:14,880 this and we could take the mindful 544 00:22:14,880 --> 00:22:17,200 decision that that's acceptable or we 545 00:22:17,200 --> 00:22:18,640 could take the mindful decision that 546 00:22:18,640 --> 00:22:20,080 that is actually not the way we want to 547 00:22:20,080 --> 00:22:22,240 do the project. So we could take on 548 00:22:22,240 --> 00:22:24,320 board some of the operational 549 00:22:24,320 --> 00:22:26,480 requirements. And this is where we need 550 00:22:26,480 --> 00:22:28,400 to as technical people like I'm not 551 00:22:28,400 --> 00:22:29,840 going to go into the details but imagine 552 00:22:29,840 --> 00:22:32,559 the imagine it's just like integrating 553 00:22:32,559 --> 00:22:35,280 the API framework from production rather 554 00:22:35,280 --> 00:22:36,880 than using files right that's a 555 00:22:36,880 --> 00:22:40,720 perfectly reasonable uh transferable uh 556 00:22:40,720 --> 00:22:43,760 type of example right that will take 557 00:22:43,760 --> 00:22:46,159 some additional cost the simplest thing 558 00:22:46,159 --> 00:22:48,960 to do in research uh we'll need a little 559 00:22:48,960 --> 00:22:50,720 bit more time to do our research in 560 00:22:50,720 --> 00:22:52,480 order to take on the complexity of that 561 00:22:52,480 --> 00:22:55,360 integration uh the business case for the 562 00:22:55,360 --> 00:22:57,039 project scope actually needs to be 563 00:22:57,039 --> 00:22:59,440 expanded. So this is something where the 564 00:22:59,440 --> 00:23:01,760 quality does have a cost. So it's not 565 00:23:01,760 --> 00:23:04,640 something some some quality goals maybe 566 00:23:04,640 --> 00:23:07,120 they take experience more than money or 567 00:23:07,120 --> 00:23:08,720 time, right? Like once you know the 568 00:23:08,720 --> 00:23:10,720 thing, you can just do it automatically. 569 00:23:10,720 --> 00:23:12,799 There's no actual marginal cost once the 570 00:23:12,799 --> 00:23:14,720 team knows how to achieve it. It's just 571 00:23:14,720 --> 00:23:16,960 a training a training a personal skills 572 00:23:16,960 --> 00:23:18,640 and training journey rather than an 573 00:23:18,640 --> 00:23:21,600 actual project timeline cost. But in 574 00:23:21,600 --> 00:23:23,520 this case the business case needs to 575 00:23:23,520 --> 00:23:25,679 take on more scope and we need that to 576 00:23:25,679 --> 00:23:28,159 be recognized as a success criteria for 577 00:23:28,159 --> 00:23:30,080 that phase. So that is what is needed 578 00:23:30,080 --> 00:23:31,840 from the project in order to take that 579 00:23:31,840 --> 00:23:34,000 path and accommodate that software 580 00:23:34,000 --> 00:23:37,440 quality. But our prototype will be more 581 00:23:37,440 --> 00:23:40,320 more convincing later on people go oh 582 00:23:40,320 --> 00:23:42,400 yeah I could integrate that that is a 583 00:23:42,400 --> 00:23:44,080 reasonable thing to take through to 584 00:23:44,080 --> 00:23:46,640 production. Even after that we'll be 585 00:23:46,640 --> 00:23:48,240 able to get it more easily in front of 586 00:23:48,240 --> 00:23:50,080 end users and customers when we reach 587 00:23:50,080 --> 00:23:52,400 that phase and ultimately it's probably 588 00:23:52,400 --> 00:23:55,200 lower cost assuming we complete the full 589 00:23:55,200 --> 00:23:58,400 project beyond the R&D phase. The other 590 00:23:58,400 --> 00:24:01,200 one is full ops requirements. We sit 591 00:24:01,200 --> 00:24:02,799 down, we look at our operational 592 00:24:02,799 --> 00:24:04,880 environment, we back trace every 593 00:24:04,880 --> 00:24:07,200 technology and data element of our 594 00:24:07,200 --> 00:24:09,200 production environment into our research 595 00:24:09,200 --> 00:24:12,080 context. We take on board, you know, 596 00:24:12,080 --> 00:24:15,120 data dropouts and user alerts and 597 00:24:15,120 --> 00:24:17,679 installation guides and operational 598 00:24:17,679 --> 00:24:19,919 support manuals and we go we are just 599 00:24:19,919 --> 00:24:23,200 going to take a comprehensive view of 600 00:24:23,200 --> 00:24:26,000 the entire project up front. 601 00:24:26,000 --> 00:24:27,440 Well, that's a lot of work. we've got to 602 00:24:27,440 --> 00:24:30,480 go gather requirements. It may detract 603 00:24:30,480 --> 00:24:33,520 from our short-term agility. It may 604 00:24:33,520 --> 00:24:36,480 create a for a poor first impression if 605 00:24:36,480 --> 00:24:38,640 our customers and project managers are 606 00:24:38,640 --> 00:24:40,640 confronted with a large amounts of 607 00:24:40,640 --> 00:24:42,960 requirements gathering documentation and 608 00:24:42,960 --> 00:24:44,640 not a neat little prototype showing 609 00:24:44,640 --> 00:24:48,080 basic capability. So that's okay. That 610 00:24:48,080 --> 00:24:50,320 may be acceptable because we're going to 611 00:24:50,320 --> 00:24:53,440 have anticipated our ops requirements. 612 00:24:53,440 --> 00:24:55,760 then potentially the ops requirements 613 00:24:55,760 --> 00:24:59,760 may change. So we might need to explain 614 00:24:59,760 --> 00:25:01,600 that it's actually not worth it. That 615 00:25:01,600 --> 00:25:02,880 even if we want to achieve these 616 00:25:02,880 --> 00:25:05,600 long-term goals, it's actually not worth 617 00:25:05,600 --> 00:25:07,120 the effort to anticipate them now 618 00:25:07,120 --> 00:25:09,760 because of changing contexts. All of a 619 00:25:09,760 --> 00:25:12,320 sudden, we have a reason to explain to 620 00:25:12,320 --> 00:25:15,039 people why we're not engaging with the 621 00:25:15,039 --> 00:25:16,960 full ops requirements at this project 622 00:25:16,960 --> 00:25:19,360 stage. We've turned an intuition into a 623 00:25:19,360 --> 00:25:21,760 reason. 624 00:25:21,760 --> 00:25:25,600 So, let's make this a little messier. 625 00:25:25,600 --> 00:25:27,760 My super smart robot just installed a 626 00:25:27,760 --> 00:25:29,360 bunch of stuff and put up a huge pull 627 00:25:29,360 --> 00:25:31,919 request changing a lot of lines. What do 628 00:25:31,919 --> 00:25:34,559 I do? That's not messy enough. My 629 00:25:34,559 --> 00:25:37,440 respected colleague human has installed 630 00:25:37,440 --> 00:25:39,039 a ton of stuff and put up a huge pull 631 00:25:39,039 --> 00:25:40,400 request changing a lot of lines. What do 632 00:25:40,400 --> 00:25:42,080 I do about it? No, it's not messy 633 00:25:42,080 --> 00:25:45,919 enough. My boss has installed a whole 634 00:25:45,919 --> 00:25:47,440 ton of stuff and put up a huge pull 635 00:25:47,440 --> 00:25:50,000 request changing a lot of lines. Still 636 00:25:50,000 --> 00:25:54,000 not messy enough. Okay. Somebody else on 637 00:25:54,000 --> 00:25:59,039 my team merged a pull request that can 638 00:25:59,039 --> 00:26:00,320 change a whole bunch of lines and I'm 639 00:26:00,320 --> 00:26:02,240 not really sure it was a good idea. 640 00:26:02,240 --> 00:26:04,400 Okay. How do we talk about these things 641 00:26:04,400 --> 00:26:05,760 with our colleagues? Because this is 642 00:26:05,760 --> 00:26:08,400 this is how this is really making it 643 00:26:08,400 --> 00:26:09,919 real. 644 00:26:09,919 --> 00:26:12,480 I still think that the common factor in 645 00:26:12,480 --> 00:26:14,080 all of these things, including these 646 00:26:14,080 --> 00:26:17,360 messy examples, is how do we see the 647 00:26:17,360 --> 00:26:19,440 trade-offs of time that are involved in 648 00:26:19,440 --> 00:26:22,000 responding to them? In the first case, 649 00:26:22,000 --> 00:26:24,720 it's easy. The scope of control is yours 650 00:26:24,720 --> 00:26:27,760 entirely. You could either unilaterally 651 00:26:27,760 --> 00:26:29,279 conduct the trade-off assessment 652 00:26:29,279 --> 00:26:31,360 yourself, but do be aware that's 653 00:26:31,360 --> 00:26:33,520 actually what your job is as far as I'm 654 00:26:33,520 --> 00:26:35,039 concerned. It's certainly what my job 655 00:26:35,039 --> 00:26:36,799 is. 656 00:26:36,799 --> 00:26:39,600 Do I take this complexity in? Do I push 657 00:26:39,600 --> 00:26:41,520 it back? That's what a human is dealing 658 00:26:41,520 --> 00:26:44,880 with. When it's your colleague, it may 659 00:26:44,880 --> 00:26:48,400 be a transitive bot or it may be them 660 00:26:48,400 --> 00:26:50,559 individually, but you must definitely 661 00:26:50,559 --> 00:26:52,480 treat them very differently to how you 662 00:26:52,480 --> 00:26:54,720 would treat an autogenerated pull 663 00:26:54,720 --> 00:26:56,559 request, but you also have the 664 00:26:56,559 --> 00:26:58,799 opportunity to teach the person. And so 665 00:26:58,799 --> 00:27:00,400 there's a benefit there to teaching the 666 00:27:00,400 --> 00:27:01,919 person through the pull request process 667 00:27:01,919 --> 00:27:05,279 to improve uh you know very utilitarian 668 00:27:05,279 --> 00:27:07,360 fashion future pull request and future 669 00:27:07,360 --> 00:27:10,000 changes but also in a human way to give 670 00:27:10,000 --> 00:27:11,360 them support and respect in the 671 00:27:11,360 --> 00:27:14,159 workplace and value their effort. Uh if 672 00:27:14,159 --> 00:27:16,559 it's your boss actually you still have 673 00:27:16,559 --> 00:27:18,400 the responsibility you had in the first 674 00:27:18,400 --> 00:27:21,039 place. So this is sort of maybe a change 675 00:27:21,039 --> 00:27:22,960 certainly I have that responsibility 676 00:27:22,960 --> 00:27:25,039 like if my boss puts up something that's 677 00:27:25,039 --> 00:27:28,320 a bad idea he may have he or she in this 678 00:27:28,320 --> 00:27:30,960 case my boss is a he so it is a context 679 00:27:30,960 --> 00:27:35,120 thing not a yeah so they 680 00:27:35,120 --> 00:27:38,480 right okay uh may think it's a great 681 00:27:38,480 --> 00:27:40,960 idea they may have the final call and 682 00:27:40,960 --> 00:27:43,039 the entirely appropriate workplace 683 00:27:43,039 --> 00:27:46,159 context to say I'm doing it anyway I'm 684 00:27:46,159 --> 00:27:48,640 still in control of my language right I 685 00:27:48,640 --> 00:27:50,320 still have at least the responsibility 686 00:27:50,320 --> 00:27:52,000 to explain in terms they're going to 687 00:27:52,000 --> 00:27:55,039 understand what it is that I think about 688 00:27:55,039 --> 00:27:57,520 this pull request because anything else 689 00:27:57,520 --> 00:28:00,159 is actually me not doing my job. So I 690 00:28:00,159 --> 00:28:02,320 still think that it doesn't change a lot 691 00:28:02,320 --> 00:28:04,240 but I would be more anxious about it for 692 00:28:04,240 --> 00:28:07,440 sure. Now the last one is where you 693 00:28:07,440 --> 00:28:09,120 can't manage the costs anymore and 694 00:28:09,120 --> 00:28:11,279 they've become reality. They've moved 695 00:28:11,279 --> 00:28:12,960 into the recent past and we need to 696 00:28:12,960 --> 00:28:15,440 respond to them. That can be a 697 00:28:15,440 --> 00:28:17,679 challenge. And now we need to reframe 698 00:28:17,679 --> 00:28:19,760 the response as a new idea again through 699 00:28:19,760 --> 00:28:23,760 the language of time. So let's recap. 700 00:28:23,760 --> 00:28:26,399 Short-term versus long-term framing is a 701 00:28:26,399 --> 00:28:27,760 way to move our discussions from 702 00:28:27,760 --> 00:28:29,919 normative to descriptive. Whether we're 703 00:28:29,919 --> 00:28:31,840 dealing with technical colleagues or 704 00:28:31,840 --> 00:28:34,159 non-technical colleagues because we all 705 00:28:34,159 --> 00:28:37,120 share the common context of time. 706 00:28:37,120 --> 00:28:38,880 Extending our actions through the 707 00:28:38,880 --> 00:28:40,799 priorities, through experience and best 708 00:28:40,799 --> 00:28:44,000 practice is a great value to our 709 00:28:44,000 --> 00:28:46,240 organizations and to ourselves. And 710 00:28:46,240 --> 00:28:48,240 explaining to others so that they trust 711 00:28:48,240 --> 00:28:50,720 us that we're not optimizing just for 712 00:28:50,720 --> 00:28:52,640 quality, but for quality, but for 713 00:28:52,640 --> 00:28:54,960 benefit and disbenefit integrated over 714 00:28:54,960 --> 00:28:58,960 time is important for them to trust us. 715 00:28:58,960 --> 00:29:01,039 Adopt practices that are optimized for 716 00:29:01,039 --> 00:29:03,520 your long and short-term goals. Make 717 00:29:03,520 --> 00:29:05,679 your thinking explicit and uh 718 00:29:05,679 --> 00:29:08,240 descriptive through options and explain 719 00:29:08,240 --> 00:29:10,480 the consequences of technical choices in 720 00:29:10,480 --> 00:29:12,799 terms of what you think happens as a 721 00:29:12,799 --> 00:29:15,200 result of engaging or not engaging with 722 00:29:15,200 --> 00:29:17,679 that process uh through problem solving 723 00:29:17,679 --> 00:29:20,159 and agreement. See what the options of 724 00:29:20,159 --> 00:29:22,480 analysis of others look like and 725 00:29:22,480 --> 00:29:24,399 communicate your perspective perhaps 726 00:29:24,399 --> 00:29:27,600 using the common factor of time of which 727 00:29:27,600 --> 00:29:29,830 I am out. Thank you very much. 728 00:29:29,830 --> 00:29:31,850 [applause] 729 00:29:37,760 --> 00:29:40,559 Thank you so much, Tennessee. And that 730 00:29:40,559 --> 00:29:44,480 concludes our block for today. After 731 00:29:44,480 --> 00:29:46,399 just after I say thank you again and 732 00:29:46,399 --> 00:29:49,840 present you with your very own Pyon AU 733 00:29:49,840 --> 00:29:53,465 mug and [applause]