1 00:00:12,320 --> 00:00:16,880 welcome back everyone we're ready for 2 00:00:14,559 --> 00:00:18,400 the first talk of the day here in the 3 00:00:16,880 --> 00:00:19,920 devops track 4 00:00:18,400 --> 00:00:22,880 and the first one we have today is an 5 00:00:19,920 --> 00:00:24,240 amazing talk by jonathan hall about how 6 00:00:22,880 --> 00:00:26,240 a single bit 7 00:00:24,240 --> 00:00:27,760 changed his career i've been looking 8 00:00:26,240 --> 00:00:29,920 forward to this talk for a while and i 9 00:00:27,760 --> 00:00:31,039 can hardly wait to hear what he has to 10 00:00:29,920 --> 00:00:33,360 tell us 11 00:00:31,039 --> 00:00:35,440 so without further ado let's kick off 12 00:00:33,360 --> 00:00:37,680 the devops track we talked by jonathan 13 00:00:35,440 --> 00:00:37,680 hall 14 00:00:40,000 --> 00:00:44,559 hi everyone i'm jonathan hall thank you 15 00:00:42,239 --> 00:00:46,239 for attending my presentation 16 00:00:44,559 --> 00:00:49,520 uh i hope you enjoy it let me jump over 17 00:00:46,239 --> 00:00:49,520 to the slides and we'll get started 18 00:00:50,000 --> 00:00:53,120 so as you all saw from the program the 19 00:00:51,760 --> 00:00:56,160 title of my talk of course is the 20 00:00:53,120 --> 00:00:59,680 butterfly effect uh how a single bit 21 00:00:56,160 --> 00:01:02,160 changed my career 22 00:00:59,680 --> 00:01:04,400 my agenda for this talk of course is uh 23 00:01:02,160 --> 00:01:06,320 to tell you the story of how i 24 00:01:04,400 --> 00:01:08,560 uh sort of started my career and in 25 00:01:06,320 --> 00:01:10,799 software delivery 26 00:01:08,560 --> 00:01:12,720 i want to encourage you on your own path 27 00:01:10,799 --> 00:01:14,080 in that regard to whatever extent you 28 00:01:12,720 --> 00:01:15,280 were involved in software delivery which 29 00:01:14,080 --> 00:01:16,960 i expect 30 00:01:15,280 --> 00:01:19,600 most of you are as you're probably 31 00:01:16,960 --> 00:01:21,520 developers of some sort 32 00:01:19,600 --> 00:01:22,799 and then maybe give you some pointers on 33 00:01:21,520 --> 00:01:25,680 how you can improve in some of these 34 00:01:22,799 --> 00:01:27,680 areas if that's interesting for you 35 00:01:25,680 --> 00:01:30,720 of course my name is jonathan hall and 36 00:01:27,680 --> 00:01:32,320 uh i am uh the tiny devops guy if you 37 00:01:30,720 --> 00:01:34,560 google for that you'll find me 38 00:01:32,320 --> 00:01:36,960 i have a podcast by that name 39 00:01:34,560 --> 00:01:38,720 and uh i do devops consulting primarily 40 00:01:36,960 --> 00:01:40,960 for small companies 41 00:01:38,720 --> 00:01:44,159 i'm i'm a lifelong developer uh 42 00:01:40,960 --> 00:01:46,799 operations person uh i now do coaching 43 00:01:44,159 --> 00:01:49,119 i'm a trekkie a podcast host i also 44 00:01:46,799 --> 00:01:50,880 dance salsa i'm a father many many other 45 00:01:49,119 --> 00:01:53,280 things i can say about myself but you're 46 00:01:50,880 --> 00:01:54,720 not here to learn about that i i think 47 00:01:53,280 --> 00:01:57,280 most of you are more interested in the 48 00:01:54,720 --> 00:01:59,119 technical part of my career so 49 00:01:57,280 --> 00:02:01,119 i started i got into computers actually 50 00:01:59,119 --> 00:02:04,159 at the age of eight uh when i started 51 00:02:01,119 --> 00:02:06,079 programming on my dad's commodore 64. 52 00:02:04,159 --> 00:02:09,440 uh and for many years i just played 53 00:02:06,079 --> 00:02:11,120 around made games in various uh silly 54 00:02:09,440 --> 00:02:13,920 little programs on the computer 55 00:02:11,120 --> 00:02:14,720 and then in 2006 is when i got my first 56 00:02:13,920 --> 00:02:16,800 uh 57 00:02:14,720 --> 00:02:18,879 professional programming job 58 00:02:16,800 --> 00:02:21,520 and the the interview was interesting 59 00:02:18,879 --> 00:02:23,440 the the owner of this small company 60 00:02:21,520 --> 00:02:25,520 drew three boxes on a whiteboard and 61 00:02:23,440 --> 00:02:27,520 said these boxes represent the three new 62 00:02:25,520 --> 00:02:30,000 servers we just bought 63 00:02:27,520 --> 00:02:32,959 we would like to hire somebody maybe you 64 00:02:30,000 --> 00:02:35,599 to come in and build these servers out 65 00:02:32,959 --> 00:02:37,040 to run our spam filtering software 66 00:02:35,599 --> 00:02:38,400 and up until that point their spam 67 00:02:37,040 --> 00:02:40,239 filtering software that they that they 68 00:02:38,400 --> 00:02:42,000 had written in-house 69 00:02:40,239 --> 00:02:44,000 they would install it on an appliance 70 00:02:42,000 --> 00:02:45,120 meaning like a 1u server along with the 71 00:02:44,000 --> 00:02:47,200 operating system and they would ship 72 00:02:45,120 --> 00:02:48,560 that to the customer's 73 00:02:47,200 --> 00:02:50,480 office and the customer would install 74 00:02:48,560 --> 00:02:54,239 this physical server next to their 75 00:02:50,480 --> 00:02:56,959 probably physical exchange server 76 00:02:54,239 --> 00:02:58,879 and they had the idea of switching to a 77 00:02:56,959 --> 00:03:00,480 cloud-based model what we now call sas 78 00:02:58,879 --> 00:03:02,400 or software as a service it was 79 00:03:00,480 --> 00:03:03,680 relatively new at that point 80 00:03:02,400 --> 00:03:06,319 so that's what i was hired to do i was 81 00:03:03,680 --> 00:03:08,000 hired to uh take this existing spam 82 00:03:06,319 --> 00:03:10,159 filtering software and turn it into a 83 00:03:08,000 --> 00:03:11,920 sas that we could sell uh as a single 84 00:03:10,159 --> 00:03:13,840 installation rather than all of these 85 00:03:11,920 --> 00:03:15,360 countless installations we had 86 00:03:13,840 --> 00:03:17,440 physically installed around the world 87 00:03:15,360 --> 00:03:19,120 the author of this spam filtering 88 00:03:17,440 --> 00:03:21,760 software had just left for for another 89 00:03:19,120 --> 00:03:23,680 job uh up until that point he had been 90 00:03:21,760 --> 00:03:26,000 the only software developers technical 91 00:03:23,680 --> 00:03:26,959 support person network engineer all of 92 00:03:26,000 --> 00:03:28,480 that 93 00:03:26,959 --> 00:03:30,000 in one person 94 00:03:28,480 --> 00:03:31,920 and so when he left they decided to 95 00:03:30,000 --> 00:03:34,000 replace him with with two they hired a 96 00:03:31,920 --> 00:03:37,200 developer to take over the day to day 97 00:03:34,000 --> 00:03:38,799 and then hired me uh to to help turn it 98 00:03:37,200 --> 00:03:41,440 into a sass 99 00:03:38,799 --> 00:03:43,840 jump ahead just a month and after i had 100 00:03:41,440 --> 00:03:46,000 started and it was thanksgiving day and 101 00:03:43,840 --> 00:03:47,360 uh for those of you who have not 102 00:03:46,000 --> 00:03:48,640 experienced thanksgiving day in the 103 00:03:47,360 --> 00:03:50,080 united states let me just give a little 104 00:03:48,640 --> 00:03:51,760 bit of context here 105 00:03:50,080 --> 00:03:53,439 of course thanksgiving day is a national 106 00:03:51,760 --> 00:03:55,599 holiday in the united states so 107 00:03:53,439 --> 00:03:57,200 everybody uh practically everybody was 108 00:03:55,599 --> 00:03:58,959 not working that day even restaurants 109 00:03:57,200 --> 00:04:01,120 closed down 110 00:03:58,959 --> 00:04:03,280 it's almost impossible to buy a stick of 111 00:04:01,120 --> 00:04:07,200 gum in the united states on thanksgiving 112 00:04:03,280 --> 00:04:07,200 day uh because everything is closed 113 00:04:07,280 --> 00:04:10,799 but what you may also know is that the 114 00:04:08,879 --> 00:04:13,120 day after thanksgiving day is a big deal 115 00:04:10,799 --> 00:04:14,959 because that's known as black friday and 116 00:04:13,120 --> 00:04:17,199 that's when everybody rushes out to get 117 00:04:14,959 --> 00:04:19,199 the best deals they can on electronics 118 00:04:17,199 --> 00:04:21,680 and on vacuum cleaners and on whatever 119 00:04:19,199 --> 00:04:24,880 else stores might be trying to sell 120 00:04:21,680 --> 00:04:28,320 for the holiday shopping season 121 00:04:24,880 --> 00:04:30,960 this particular black friday uh while 122 00:04:28,320 --> 00:04:33,040 the entire country was outside shopping 123 00:04:30,960 --> 00:04:35,520 malls fighting over tv sets 124 00:04:33,040 --> 00:04:37,040 uh we had a half day of work uh at the 125 00:04:35,520 --> 00:04:38,639 office and our 126 00:04:37,040 --> 00:04:40,720 our newest developer not me the other 127 00:04:38,639 --> 00:04:42,800 guy who joined at the same time 128 00:04:40,720 --> 00:04:44,160 was pushing his first change out to 129 00:04:42,800 --> 00:04:45,919 customers 130 00:04:44,160 --> 00:04:48,320 what could possibly go wrong here right 131 00:04:45,919 --> 00:04:48,320 nothing 132 00:04:48,400 --> 00:04:52,800 this is what our phone lines maybe 133 00:04:49,600 --> 00:04:52,800 normally look like uh 134 00:04:53,199 --> 00:04:55,520 soon they look more like a christmas 135 00:04:54,560 --> 00:04:58,560 tree 136 00:04:55,520 --> 00:05:01,520 every single customer we had 150 plus 137 00:04:58,560 --> 00:05:02,479 appliances installed in the wild every 138 00:05:01,520 --> 00:05:05,280 one of them 139 00:05:02,479 --> 00:05:05,280 stopped working 140 00:05:05,440 --> 00:05:10,720 our phone lines were jammed and not just 141 00:05:07,680 --> 00:05:12,720 that day this lasted into the next week 142 00:05:10,720 --> 00:05:13,919 everyone in the company not just the 143 00:05:12,720 --> 00:05:15,759 people working on the spam filtering 144 00:05:13,919 --> 00:05:17,840 software the sales representatives the 145 00:05:15,759 --> 00:05:19,360 president of the company the janitor 146 00:05:17,840 --> 00:05:22,960 were taking phone calls from from 147 00:05:19,360 --> 00:05:24,560 customers whose mail was not working 148 00:05:22,960 --> 00:05:26,320 what happened 149 00:05:24,560 --> 00:05:29,120 well 150 00:05:26,320 --> 00:05:32,160 our developer had made a small a single 151 00:05:29,120 --> 00:05:32,160 bit mistake 152 00:05:32,800 --> 00:05:38,520 he had failed to set the execute bit on 153 00:05:35,039 --> 00:05:38,520 a startup script 154 00:05:38,639 --> 00:05:42,080 so this prevented of course the mail 155 00:05:40,560 --> 00:05:43,360 from flowing but it also prevented 156 00:05:42,080 --> 00:05:44,560 future updates from working so we 157 00:05:43,360 --> 00:05:46,800 couldn't even 158 00:05:44,560 --> 00:05:48,080 create a patch and put it on the on the 159 00:05:46,800 --> 00:05:49,360 central server for the servers to 160 00:05:48,080 --> 00:05:51,600 download because the all these 161 00:05:49,360 --> 00:05:55,360 appliances wouldn't wouldn't even start 162 00:05:51,600 --> 00:05:57,840 enough to download a new update 163 00:05:55,360 --> 00:05:59,360 so we had to actually log in by ssh to 164 00:05:57,840 --> 00:06:02,400 every customer machine 165 00:05:59,360 --> 00:06:04,080 and do it mod plus x on this particular 166 00:06:02,400 --> 00:06:05,840 script 167 00:06:04,080 --> 00:06:07,440 for every customer now you might think 168 00:06:05,840 --> 00:06:10,000 couldn't you script some of this well we 169 00:06:07,440 --> 00:06:11,520 could and we did to an extent 170 00:06:10,000 --> 00:06:13,919 but many of these machines were behind 171 00:06:11,520 --> 00:06:16,000 firewalls uh or they the the owners had 172 00:06:13,919 --> 00:06:18,400 changed the password or deleted ssh keys 173 00:06:16,000 --> 00:06:19,759 for security reasons so in some cases we 174 00:06:18,400 --> 00:06:21,919 actually had to call customers over the 175 00:06:19,759 --> 00:06:23,440 phone and walk them through the process 176 00:06:21,919 --> 00:06:25,039 you know if they weren't able to give us 177 00:06:23,440 --> 00:06:26,560 access to their through their network 178 00:06:25,039 --> 00:06:28,080 then we would 179 00:06:26,560 --> 00:06:29,360 walk somebody through going into their 180 00:06:28,080 --> 00:06:30,800 server room 181 00:06:29,360 --> 00:06:33,360 plugging a monitor into the physical 182 00:06:30,800 --> 00:06:35,199 machine logging in with root on the 183 00:06:33,360 --> 00:06:36,880 console and typing these commands to get 184 00:06:35,199 --> 00:06:38,319 things working again it was quite an 185 00:06:36,880 --> 00:06:40,960 ordeal it took the better part of the 186 00:06:38,319 --> 00:06:43,039 following week to get everything fixed 187 00:06:40,960 --> 00:06:46,000 over the following months uh in the 188 00:06:43,039 --> 00:06:48,800 aftermath of this uh this incident 189 00:06:46,000 --> 00:06:50,319 uh we had some other problems as you 190 00:06:48,800 --> 00:06:52,960 might imagine you know problems come up 191 00:06:50,319 --> 00:06:56,160 all the time on software uh one that 192 00:06:52,960 --> 00:06:58,240 jumps to mind is uh we had some reports 193 00:06:56,160 --> 00:07:00,800 that were taking 20 minutes or so to 194 00:06:58,240 --> 00:07:02,639 report to to generate from our database 195 00:07:00,800 --> 00:07:04,639 we were using my sql 196 00:07:02,639 --> 00:07:07,280 and uh 197 00:07:04,639 --> 00:07:09,599 the developer uh the the lead developer 198 00:07:07,280 --> 00:07:11,599 and remember my my job was mainly uh 199 00:07:09,599 --> 00:07:13,599 getting the sas ready his job was the 200 00:07:11,599 --> 00:07:14,960 core development so the core developer 201 00:07:13,599 --> 00:07:16,319 uh and i had a 202 00:07:14,960 --> 00:07:18,080 disagreement on how to do this i 203 00:07:16,319 --> 00:07:19,599 suggested partitioning by date so that 204 00:07:18,080 --> 00:07:21,759 we could only query the dates we cared 205 00:07:19,599 --> 00:07:23,840 about and he said that would be too 206 00:07:21,759 --> 00:07:26,160 complicated and take too long 207 00:07:23,840 --> 00:07:26,960 well our mutual boss came to me 208 00:07:26,160 --> 00:07:28,560 uh 209 00:07:26,960 --> 00:07:30,720 in private and said jonathan you think 210 00:07:28,560 --> 00:07:33,759 you get that partitioning working 211 00:07:30,720 --> 00:07:36,240 and uh i threw together a prototype in a 212 00:07:33,759 --> 00:07:37,680 few hours and it proved that it would be 213 00:07:36,240 --> 00:07:38,560 worth investing in 214 00:07:37,680 --> 00:07:40,160 um 215 00:07:38,560 --> 00:07:41,919 so that upset the developer um that 216 00:07:40,160 --> 00:07:44,720 wasn't the only thing of course um but 217 00:07:41,919 --> 00:07:47,919 he ended up leaving the company so i 218 00:07:44,720 --> 00:07:50,080 became the lead developer of the project 219 00:07:47,919 --> 00:07:52,080 so i essentially set out on my own of 220 00:07:50,080 --> 00:07:54,160 course we did over time hire other 221 00:07:52,080 --> 00:07:56,720 people to join the team and i remained 222 00:07:54,160 --> 00:07:59,280 the team lead for for several years and 223 00:07:56,720 --> 00:08:00,240 during this time i was reading 224 00:07:59,280 --> 00:08:01,840 a lot 225 00:08:00,240 --> 00:08:04,240 of course every hero's journey needs a 226 00:08:01,840 --> 00:08:06,240 guide and i had no shortage of guides 227 00:08:04,240 --> 00:08:08,560 um my guides were people like uh like 228 00:08:06,240 --> 00:08:11,360 joel spolsky who you may know as the 229 00:08:08,560 --> 00:08:14,000 co-founder of stack overflow uh y'all he 230 00:08:11,360 --> 00:08:16,160 also had a blog uh i guess he still does 231 00:08:14,000 --> 00:08:18,240 it's called joel on software he used to 232 00:08:16,160 --> 00:08:20,319 blog very frequently now it's 233 00:08:18,240 --> 00:08:22,639 about once a year maybe 234 00:08:20,319 --> 00:08:25,120 but i read his blog 235 00:08:22,639 --> 00:08:27,840 front to back uh maybe more than once 236 00:08:25,120 --> 00:08:29,520 during this time 237 00:08:27,840 --> 00:08:31,599 michael feathers 238 00:08:29,520 --> 00:08:33,919 he's the author of the famous book 239 00:08:31,599 --> 00:08:35,760 working effectively with legacy code i 240 00:08:33,919 --> 00:08:38,240 would say more than any other book this 241 00:08:35,760 --> 00:08:39,360 book has changed my career it is an 242 00:08:38,240 --> 00:08:42,959 excellent book especially if you're 243 00:08:39,360 --> 00:08:45,200 working with legacy code and who isn't 244 00:08:42,959 --> 00:08:47,360 kent back he's the author of extreme 245 00:08:45,200 --> 00:08:50,000 programming he's also the so-called 246 00:08:47,360 --> 00:08:52,560 inventor of test driven development and 247 00:08:50,000 --> 00:08:56,080 uh he's a very influential person one of 248 00:08:52,560 --> 00:08:58,399 the co-authors of agile manifesto 249 00:08:56,080 --> 00:09:00,959 along with bob martin another co-author 250 00:08:58,399 --> 00:09:02,640 of the agile manifesto bob martin wrote 251 00:09:00,959 --> 00:09:05,040 a number of books in the clean coding 252 00:09:02,640 --> 00:09:06,959 series clean code clean architecture 253 00:09:05,040 --> 00:09:09,360 he has some great youtube talks all of 254 00:09:06,959 --> 00:09:11,279 these people and many many others were 255 00:09:09,360 --> 00:09:12,800 my guides during the the years that i 256 00:09:11,279 --> 00:09:13,920 spent on this project 257 00:09:12,800 --> 00:09:15,360 uh to 258 00:09:13,920 --> 00:09:17,760 to help me 259 00:09:15,360 --> 00:09:20,640 take this project to the next level 260 00:09:17,760 --> 00:09:22,480 one of the lenses i have used to sort of 261 00:09:20,640 --> 00:09:23,519 evaluate the project i was working on at 262 00:09:22,480 --> 00:09:26,080 the time 263 00:09:23,519 --> 00:09:28,080 became the joel test which is a a blog 264 00:09:26,080 --> 00:09:29,519 post that joel spolsky wrote on his joel 265 00:09:28,080 --> 00:09:31,440 on software blog 266 00:09:29,519 --> 00:09:34,480 i think the post was written in 2000 so 267 00:09:31,440 --> 00:09:36,800 i read it six seven years later 268 00:09:34,480 --> 00:09:39,120 but he goes through 12 uh 269 00:09:36,800 --> 00:09:40,640 steps and and 12 questions you can ask 270 00:09:39,120 --> 00:09:43,680 about your project 271 00:09:40,640 --> 00:09:45,680 to decide the maturity or the the 272 00:09:43,680 --> 00:09:48,000 usefulness of your project 273 00:09:45,680 --> 00:09:50,640 um many of the of the items on this list 274 00:09:48,000 --> 00:09:52,399 are timeless they're still valid um do 275 00:09:50,640 --> 00:09:54,800 you fix bugs before writing new code for 276 00:09:52,399 --> 00:09:56,320 example or or does your team 277 00:09:54,800 --> 00:09:58,000 get distracted with new things before 278 00:09:56,320 --> 00:09:59,680 they finish the old things 279 00:09:58,000 --> 00:10:01,600 and leave bugs that sit for months or 280 00:09:59,680 --> 00:10:03,600 years or forever 281 00:10:01,600 --> 00:10:05,360 can you make a build on a single step 282 00:10:03,600 --> 00:10:07,040 this was kind of profound back then at 283 00:10:05,360 --> 00:10:08,399 least 284 00:10:07,040 --> 00:10:10,480 on the other hand some of the items on 285 00:10:08,399 --> 00:10:11,360 his list are a little bit outdated 286 00:10:10,480 --> 00:10:13,120 um 287 00:10:11,360 --> 00:10:15,279 do you use source control i mean that's 288 00:10:13,120 --> 00:10:16,640 still valid uh but i think practically 289 00:10:15,279 --> 00:10:19,200 everybody does if you don't use source 290 00:10:16,640 --> 00:10:20,959 control i would love to hear why 291 00:10:19,200 --> 00:10:23,040 but it's at least assumed that you 292 00:10:20,959 --> 00:10:24,880 should be using source control 293 00:10:23,040 --> 00:10:26,640 do you make daily builds maybe not 294 00:10:24,880 --> 00:10:28,079 everybody does this but it's another one 295 00:10:26,640 --> 00:10:29,920 of those things that 296 00:10:28,079 --> 00:10:31,920 the bar has been raised 297 00:10:29,920 --> 00:10:32,959 nowadays we tend to talk about are you 298 00:10:31,920 --> 00:10:36,640 doing 299 00:10:32,959 --> 00:10:39,279 daily deployments not daily build 300 00:10:36,640 --> 00:10:41,360 but i felt like it's time for something 301 00:10:39,279 --> 00:10:43,440 new so this is why i have created the 302 00:10:41,360 --> 00:10:45,279 jonathan test which are my 12 steps for 303 00:10:43,440 --> 00:10:47,279 better software delivery it's a little 304 00:10:45,279 --> 00:10:49,279 bit different focus than joel's 305 00:10:47,279 --> 00:10:51,360 um but it also is a little bit more 306 00:10:49,279 --> 00:10:52,720 updated you know 20 years newer 307 00:10:51,360 --> 00:10:54,160 as i already mentioned i feel like 308 00:10:52,720 --> 00:10:56,000 everybody should be using source control 309 00:10:54,160 --> 00:10:58,079 that's kind of assumed uh if you're not 310 00:10:56,000 --> 00:11:00,480 get with the game 311 00:10:58,079 --> 00:11:03,600 now maybe you're not doing one uh build 312 00:11:00,480 --> 00:11:05,440 per day but uh it's it's not exciting if 313 00:11:03,600 --> 00:11:06,320 you are so let's raise the bar on that 314 00:11:05,440 --> 00:11:07,760 one 315 00:11:06,320 --> 00:11:09,839 there's a lot of new technology it's 316 00:11:07,760 --> 00:11:12,560 easier to build things faster more 317 00:11:09,839 --> 00:11:14,640 frequently than it was in 2000 318 00:11:12,560 --> 00:11:16,160 um also we have some new science not a 319 00:11:14,640 --> 00:11:17,200 lot there's not a whole lot of science 320 00:11:16,160 --> 00:11:19,440 that's gone into the software 321 00:11:17,200 --> 00:11:22,000 development process but we do have some 322 00:11:19,440 --> 00:11:23,680 so we we do have some 323 00:11:22,000 --> 00:11:25,839 qualitative and quantitative data that 324 00:11:23,680 --> 00:11:28,320 we didn't in 2000 about what works and 325 00:11:25,839 --> 00:11:30,320 what doesn't for example we have we have 326 00:11:28,320 --> 00:11:31,600 evidence now that that code review is 327 00:11:30,320 --> 00:11:34,560 one of the 328 00:11:31,600 --> 00:11:36,000 um sure things to reduce defect count uh 329 00:11:34,560 --> 00:11:37,839 reviewing to this code that didn't we 330 00:11:36,000 --> 00:11:39,519 didn't know that in 2000 maybe people 331 00:11:37,839 --> 00:11:42,880 guessed but now we have some hard 332 00:11:39,519 --> 00:11:45,920 science to back some of that up 333 00:11:42,880 --> 00:11:48,160 so here's my test number one 334 00:11:45,920 --> 00:11:50,720 do devs merge multiple times per day 335 00:11:48,160 --> 00:11:52,079 also known as continuous integration 336 00:11:50,720 --> 00:11:53,920 this is another thing that science has 337 00:11:52,079 --> 00:11:56,160 proven is uh 338 00:11:53,920 --> 00:11:59,760 is beneficial uh in the sense that 339 00:11:56,160 --> 00:12:01,839 companies that do continuous integration 340 00:11:59,760 --> 00:12:03,279 outperform those in terms of delivery 341 00:12:01,839 --> 00:12:06,320 and revenue 342 00:12:03,279 --> 00:12:06,320 versus those that do not 343 00:12:07,440 --> 00:12:11,200 is all code tested thoroughly before 344 00:12:09,600 --> 00:12:13,600 merging into mainline 345 00:12:11,200 --> 00:12:17,040 when i when i took on the the developer 346 00:12:13,600 --> 00:12:19,600 project this was not assumed uh our main 347 00:12:17,040 --> 00:12:22,000 branch was broken frequently and a big 348 00:12:19,600 --> 00:12:24,399 part of the software release process 349 00:12:22,000 --> 00:12:26,639 was testing the main branch to make sure 350 00:12:24,399 --> 00:12:28,399 that it wasn't broken and fixing any 351 00:12:26,639 --> 00:12:29,760 bugs that had crept in in the 352 00:12:28,399 --> 00:12:31,200 intervening months since the last 353 00:12:29,760 --> 00:12:32,720 release 354 00:12:31,200 --> 00:12:34,880 nowadays with things like trunk based 355 00:12:32,720 --> 00:12:36,839 development we can assume that maine is 356 00:12:34,880 --> 00:12:40,079 always ready to be 357 00:12:36,839 --> 00:12:42,079 released continuous deployment 358 00:12:40,079 --> 00:12:44,160 this is your project built and deployed 359 00:12:42,079 --> 00:12:46,079 automatically after every merge to 360 00:12:44,160 --> 00:12:48,000 mainline this was 361 00:12:46,079 --> 00:12:49,440 almost inconceivable in 2000 when the 362 00:12:48,000 --> 00:12:51,440 dual test was written 363 00:12:49,440 --> 00:12:53,920 in fact it was in 2009 364 00:12:51,440 --> 00:12:55,839 when the the famous talk was done called 365 00:12:53,920 --> 00:12:58,240 10 plus deploys per day 366 00:12:55,839 --> 00:13:00,560 uh and 367 00:12:58,240 --> 00:13:01,519 that's what kind of birthed the devops 368 00:13:00,560 --> 00:13:02,959 movement 369 00:13:01,519 --> 00:13:05,200 so nowadays 370 00:13:02,959 --> 00:13:06,639 you know back then we were talking about 371 00:13:05,200 --> 00:13:08,959 is it even possible to deploy that 372 00:13:06,639 --> 00:13:10,639 frequently now we're pretty well 373 00:13:08,959 --> 00:13:13,440 confident that it is possible it's more 374 00:13:10,639 --> 00:13:16,480 a business question now should we 375 00:13:13,440 --> 00:13:16,480 i believe you should 376 00:13:16,959 --> 00:13:20,480 is all code reviewed by another 377 00:13:18,639 --> 00:13:21,839 developer before merge 378 00:13:20,480 --> 00:13:24,320 like i said this is one of the things 379 00:13:21,839 --> 00:13:26,320 that that the little science we have has 380 00:13:24,320 --> 00:13:30,000 demonstrated pretty conclusively that 381 00:13:26,320 --> 00:13:30,000 code review is effective 382 00:13:30,320 --> 00:13:33,120 do you fix bugs before writing new code 383 00:13:32,079 --> 00:13:35,040 this is when i borrowed straight from 384 00:13:33,120 --> 00:13:37,440 the drill test i believe that you should 385 00:13:35,040 --> 00:13:39,519 fix all bugs uh all significant bugs 386 00:13:37,440 --> 00:13:41,120 before writing code maybe if your 387 00:13:39,519 --> 00:13:43,519 alignment is off by two pixels you don't 388 00:13:41,120 --> 00:13:44,720 care enough to ever fix it but if it's 389 00:13:43,519 --> 00:13:46,839 something that affects users you should 390 00:13:44,720 --> 00:13:49,279 fix that before doing new 391 00:13:46,839 --> 00:13:51,760 work do you have a prioritized backlog 392 00:13:49,279 --> 00:13:53,120 of features and bugs now 393 00:13:51,760 --> 00:13:54,240 bugs should be the top of that list in 394 00:13:53,120 --> 00:13:55,600 my view 395 00:13:54,240 --> 00:13:57,440 and then features should be ranked 396 00:13:55,600 --> 00:13:59,360 according to whatever criteria your 397 00:13:57,440 --> 00:14:03,079 project or product manager 398 00:13:59,360 --> 00:14:03,079 has has in mind 399 00:14:03,199 --> 00:14:06,720 do you have a reasonably complete 400 00:14:04,720 --> 00:14:08,720 automated test suite now i say 401 00:14:06,720 --> 00:14:11,600 reasonably complete i don't say 100 or 402 00:14:08,720 --> 00:14:13,760 95 because i think those percentages are 403 00:14:11,600 --> 00:14:14,560 are almost worthless they're so easy to 404 00:14:13,760 --> 00:14:16,800 game 405 00:14:14,560 --> 00:14:18,800 that you might as well not use those 406 00:14:16,800 --> 00:14:21,040 what's more important is do you have the 407 00:14:18,800 --> 00:14:23,279 confidence when your test suite runs 408 00:14:21,040 --> 00:14:24,880 that you haven't introduced a regression 409 00:14:23,279 --> 00:14:26,160 uh if you don't have that confidence you 410 00:14:24,880 --> 00:14:28,240 should improve it you should prove your 411 00:14:26,160 --> 00:14:31,839 test suite don't focus on percentages 412 00:14:28,240 --> 00:14:31,839 focus on confidence 413 00:14:32,000 --> 00:14:35,120 does everybody have quite working 414 00:14:33,120 --> 00:14:36,880 conditions another one i borrowed from 415 00:14:35,120 --> 00:14:37,920 the joel test i think this is really 416 00:14:36,880 --> 00:14:39,760 important 417 00:14:37,920 --> 00:14:41,360 especially for knowledge work like we're 418 00:14:39,760 --> 00:14:44,399 doing in software development you should 419 00:14:41,360 --> 00:14:45,920 be able to concentrate 420 00:14:44,399 --> 00:14:47,440 you use the best tools money can buy 421 00:14:45,920 --> 00:14:49,120 another one i borrowed 422 00:14:47,440 --> 00:14:50,240 if you need a better ide you should be 423 00:14:49,120 --> 00:14:52,079 able to get one if your boss is not 424 00:14:50,240 --> 00:14:54,639 willing to pay for it you might consider 425 00:14:52,079 --> 00:14:57,600 getting a new boss 426 00:14:54,639 --> 00:15:00,079 get the best ide for your job uh get the 427 00:14:57,600 --> 00:15:01,279 best monitor the best keyboard 428 00:15:00,079 --> 00:15:02,160 nobody wants to fight with a mouse that 429 00:15:01,279 --> 00:15:03,839 doesn't work correctly when you're 430 00:15:02,160 --> 00:15:05,600 trying to code get the best tools you 431 00:15:03,839 --> 00:15:08,240 can buy whether that's 432 00:15:05,600 --> 00:15:10,320 hardware software 433 00:15:08,240 --> 00:15:11,440 the best trick ticket tracking system 434 00:15:10,320 --> 00:15:12,880 the best 435 00:15:11,440 --> 00:15:14,880 meeting software whatever you need to 436 00:15:12,880 --> 00:15:17,519 get your job done effectively 437 00:15:14,880 --> 00:15:20,079 the money spent is it pales in 438 00:15:17,519 --> 00:15:22,639 comparison to the productivity lost 439 00:15:20,079 --> 00:15:24,079 developers are expensive people uh 440 00:15:22,639 --> 00:15:26,800 get the best tools you can buy and save 441 00:15:24,079 --> 00:15:28,560 your time 442 00:15:26,800 --> 00:15:29,920 do you do hallway usability testing this 443 00:15:28,560 --> 00:15:31,759 is one that joel talked about talks 444 00:15:29,920 --> 00:15:32,720 about a lot in his blog it's one i don't 445 00:15:31,759 --> 00:15:33,920 do well 446 00:15:32,720 --> 00:15:36,079 well enough 447 00:15:33,920 --> 00:15:38,000 but there's a lot you can gain just by 448 00:15:36,079 --> 00:15:40,399 having some random person walking down 449 00:15:38,000 --> 00:15:41,920 the hallway test your code and i don't 450 00:15:40,399 --> 00:15:42,959 mean like reading your your code but 451 00:15:41,920 --> 00:15:44,320 like 452 00:15:42,959 --> 00:15:45,600 show them the prototype show them the 453 00:15:44,320 --> 00:15:47,680 software 454 00:15:45,600 --> 00:15:49,440 look at this screen what does it say to 455 00:15:47,680 --> 00:15:51,120 you just simple stuff like that just 456 00:15:49,440 --> 00:15:53,040 getting a second pair of eyes somebody 457 00:15:51,120 --> 00:15:54,800 who hasn't been looking at that all day 458 00:15:53,040 --> 00:15:58,720 to look at your code or to look at your 459 00:15:54,800 --> 00:16:00,959 your product uh can go a long ways 460 00:15:58,720 --> 00:16:03,279 no handoffs this one gets at the heart 461 00:16:00,959 --> 00:16:04,639 of the devops movement do developers 462 00:16:03,279 --> 00:16:06,480 control their workflow from start to 463 00:16:04,639 --> 00:16:08,800 finish without handoffs 464 00:16:06,480 --> 00:16:11,040 it could be to qa with operations or to 465 00:16:08,800 --> 00:16:13,519 any other team if you have handoffs 466 00:16:11,040 --> 00:16:17,839 you're not doing devops devops the whole 467 00:16:13,519 --> 00:16:17,839 idea of devops is to kill those silos 468 00:16:19,360 --> 00:16:22,959 can your developers work effectively 469 00:16:21,120 --> 00:16:26,000 from an airplane or anywhere else where 470 00:16:22,959 --> 00:16:26,000 there's no wi-fi connection 471 00:16:26,079 --> 00:16:29,440 this doesn't necessarily mean that you 472 00:16:28,079 --> 00:16:30,959 should be able to build an entire 473 00:16:29,440 --> 00:16:33,600 working application and run it from your 474 00:16:30,959 --> 00:16:35,199 laptop but you should be able to do a 475 00:16:33,600 --> 00:16:36,959 meaningful amount of work without an 476 00:16:35,199 --> 00:16:38,800 internet connection 477 00:16:36,959 --> 00:16:41,600 and this is just in my view it's just 478 00:16:38,800 --> 00:16:43,759 common sense um especially if you have 479 00:16:41,600 --> 00:16:45,839 developers who are going to conferences 480 00:16:43,759 --> 00:16:48,880 or uh they have a long commute through 481 00:16:45,839 --> 00:16:50,399 it on on a train or something like that 482 00:16:48,880 --> 00:16:52,959 or they like to work from a cafe 483 00:16:50,399 --> 00:16:54,959 somewhere it should be possible to work 484 00:16:52,959 --> 00:16:56,399 when you're offline and that's not just 485 00:16:54,959 --> 00:16:58,399 because wi-fi doesn't exist everywhere 486 00:16:56,399 --> 00:17:00,480 else sometimes github goes down 487 00:16:58,399 --> 00:17:02,720 or sometimes your production server goes 488 00:17:00,480 --> 00:17:04,959 down or sometimes anything can happen 489 00:17:02,720 --> 00:17:06,640 that prevents your entire network from 490 00:17:04,959 --> 00:17:08,640 being online and available 491 00:17:06,640 --> 00:17:12,480 you should not [ __ ] your developers 492 00:17:08,640 --> 00:17:12,480 in those instances let them keep working 493 00:17:15,760 --> 00:17:20,480 so with my 12 step test in mind let's 494 00:17:18,480 --> 00:17:21,839 let's jump back to when i started uh 495 00:17:20,480 --> 00:17:25,839 with double check 496 00:17:21,839 --> 00:17:25,839 uh what did things look like back then 497 00:17:26,240 --> 00:17:29,760 do develop do contributors 498 00:17:28,079 --> 00:17:31,039 merge their changes into mainline 499 00:17:29,760 --> 00:17:32,480 multiple times per day no we were not 500 00:17:31,039 --> 00:17:34,320 doing this we did have subversion we 501 00:17:32,480 --> 00:17:36,000 were using version control 502 00:17:34,320 --> 00:17:37,600 but there was no rule about continuous 503 00:17:36,000 --> 00:17:39,440 integration whatsoever 504 00:17:37,600 --> 00:17:41,280 code was not thoroughly tested in fact 505 00:17:39,440 --> 00:17:43,360 as i explained a minute ago we just 506 00:17:41,280 --> 00:17:45,360 assumed that mainland was broken at all 507 00:17:43,360 --> 00:17:48,799 times until we were ready to do a 508 00:17:45,360 --> 00:17:51,280 release then we would test mainline 509 00:17:48,799 --> 00:17:53,679 our project was not built or deployed at 510 00:17:51,280 --> 00:17:55,360 all uh manually or otherwise until we 511 00:17:53,679 --> 00:17:56,400 were ready to do a release so we failed 512 00:17:55,360 --> 00:17:58,000 there 513 00:17:56,400 --> 00:18:01,280 is code reviewed by other developers no 514 00:17:58,000 --> 00:18:02,960 we had no code review policy in place 515 00:18:01,280 --> 00:18:04,559 we did not fix bugs before writing new 516 00:18:02,960 --> 00:18:07,120 code we fixed bugs when they became 517 00:18:04,559 --> 00:18:08,559 quote priority 518 00:18:07,120 --> 00:18:10,480 do you have a prioritized backlog of 519 00:18:08,559 --> 00:18:12,400 features as i recall when i started here 520 00:18:10,480 --> 00:18:14,160 we did have a backlog but it was a text 521 00:18:12,400 --> 00:18:16,240 file in subversion that the developer 522 00:18:14,160 --> 00:18:18,160 had been keeping so he would just as 523 00:18:16,240 --> 00:18:20,559 request came in he would add a an item 524 00:18:18,160 --> 00:18:22,240 to the to his text file and when he was 525 00:18:20,559 --> 00:18:24,000 done he would remove it and that's fine 526 00:18:22,240 --> 00:18:25,280 if it works um 527 00:18:24,000 --> 00:18:27,280 the problem of course is that there's no 528 00:18:25,280 --> 00:18:30,160 visibility to the rest of the company uh 529 00:18:27,280 --> 00:18:31,440 you know customer support can't see that 530 00:18:30,160 --> 00:18:33,039 it didn't matter for him because he was 531 00:18:31,440 --> 00:18:34,000 a solo operation he was technical 532 00:18:33,039 --> 00:18:35,440 support 533 00:18:34,000 --> 00:18:37,039 once you have more than 534 00:18:35,440 --> 00:18:38,640 two people uh you probably want 535 00:18:37,039 --> 00:18:40,799 something a little more centralized than 536 00:18:38,640 --> 00:18:42,799 a text file of course if it works it 537 00:18:40,799 --> 00:18:43,840 works 538 00:18:42,799 --> 00:18:45,919 do you have a reasonably complete 539 00:18:43,840 --> 00:18:47,760 automated test suite uh no we i think 540 00:18:45,919 --> 00:18:50,160 there were some automated tests but most 541 00:18:47,760 --> 00:18:51,600 of them didn't work correctly um so it 542 00:18:50,160 --> 00:18:53,280 certainly wasn't being used and it was 543 00:18:51,600 --> 00:18:55,039 not a reasonable complete test suite 544 00:18:53,280 --> 00:18:56,320 whatsoever 545 00:18:55,039 --> 00:18:58,720 does everyone have quiet condition 546 00:18:56,320 --> 00:19:01,360 working conditions yes uh we did uh we 547 00:18:58,720 --> 00:19:05,360 were a small office uh we uh but it was 548 00:19:01,360 --> 00:19:06,799 relatively quiet so that one uh is a win 549 00:19:05,360 --> 00:19:08,480 to use the best tools money can buy 550 00:19:06,799 --> 00:19:10,640 honestly i don't remember the answer on 551 00:19:08,480 --> 00:19:12,559 this one i'm assuming so i don't 552 00:19:10,640 --> 00:19:14,320 remember any complaints about the tools 553 00:19:12,559 --> 00:19:17,120 we had at our disposal 554 00:19:14,320 --> 00:19:19,039 so i'm going to give them a pass 555 00:19:17,120 --> 00:19:21,600 hallway usability testing no we didn't 556 00:19:19,039 --> 00:19:23,280 really do that 557 00:19:21,600 --> 00:19:25,120 the developers control their work from 558 00:19:23,280 --> 00:19:27,200 start to finish without handoffs 559 00:19:25,120 --> 00:19:28,000 i mean in a sense i suppose so because 560 00:19:27,200 --> 00:19:30,559 uh 561 00:19:28,000 --> 00:19:32,720 there was just one developer or two 562 00:19:30,559 --> 00:19:34,320 once i started um but it certainly 563 00:19:32,720 --> 00:19:36,160 wasn't like a mindset that developers 564 00:19:34,320 --> 00:19:39,840 should be able to do all this it was it 565 00:19:36,160 --> 00:19:39,840 was by accident if anything 566 00:19:40,160 --> 00:19:43,679 can your developers work productively 567 00:19:41,520 --> 00:19:45,600 from an airplane uh you know i don't 568 00:19:43,679 --> 00:19:48,640 remember the details uh this time in 569 00:19:45,600 --> 00:19:50,480 2006 uh probably not i'm sure it was not 570 00:19:48,640 --> 00:19:52,240 intentional that if it was possible to 571 00:19:50,480 --> 00:19:55,280 do meaningful work from an airplane it 572 00:19:52,240 --> 00:19:58,000 wasn't was by accident 573 00:19:55,280 --> 00:20:00,640 final score 2.5 out of 12. 574 00:19:58,000 --> 00:20:00,640 not so great 575 00:20:01,919 --> 00:20:05,679 i stayed a double check for nine years i 576 00:20:03,440 --> 00:20:08,720 left in 2015 in september so almost 577 00:20:05,679 --> 00:20:10,559 exactly nine years uh to the day later 578 00:20:08,720 --> 00:20:13,679 uh is when i left uh let's see how we 579 00:20:10,559 --> 00:20:15,039 scored uh by the time i left 580 00:20:13,679 --> 00:20:17,679 all of these highlighted in green are 581 00:20:15,039 --> 00:20:19,600 things that had improved uh almost 582 00:20:17,679 --> 00:20:20,880 everything improved the only things it 583 00:20:19,600 --> 00:20:23,760 did not 584 00:20:20,880 --> 00:20:25,520 were of course the ability to uh deploy 585 00:20:23,760 --> 00:20:27,679 automatically after every merge we were 586 00:20:25,520 --> 00:20:28,799 not doing continuous deployment 587 00:20:27,679 --> 00:20:30,240 um 588 00:20:28,799 --> 00:20:32,159 and we did not we still did not do 589 00:20:30,240 --> 00:20:33,919 usability testing that's one i fail on 590 00:20:32,159 --> 00:20:34,960 frequently i mean i've done it at times 591 00:20:33,919 --> 00:20:37,039 but it's not something that's ever 592 00:20:34,960 --> 00:20:38,320 become a habit for me 593 00:20:37,039 --> 00:20:40,559 and could we work productively from an 594 00:20:38,320 --> 00:20:42,000 airplane uh to some extent we we had 595 00:20:40,559 --> 00:20:43,600 gotten better about that but there were 596 00:20:42,000 --> 00:20:46,480 still parts of our software that just 597 00:20:43,600 --> 00:20:48,720 didn't work without a a network in fact 598 00:20:46,480 --> 00:20:51,840 i remember writing a pearl module to 599 00:20:48,720 --> 00:20:53,919 allow us to do dns tests do dns based 600 00:20:51,840 --> 00:20:56,080 tests without a network so we could 601 00:20:53,919 --> 00:20:58,000 cache dns services so there was effort 602 00:20:56,080 --> 00:21:00,320 being done there but we hadn't reached 603 00:20:58,000 --> 00:21:02,720 uh our goal 604 00:21:00,320 --> 00:21:04,640 final score 9.5 605 00:21:02,720 --> 00:21:06,640 so we gained seven points over a nine 606 00:21:04,640 --> 00:21:08,960 year period um but i guess that's 607 00:21:06,640 --> 00:21:10,559 something right uh keep in mind i was i 608 00:21:08,960 --> 00:21:12,159 was uh 609 00:21:10,559 --> 00:21:13,440 learning as i went here 610 00:21:12,159 --> 00:21:15,120 um 611 00:21:13,440 --> 00:21:16,640 when i this was my first programming job 612 00:21:15,120 --> 00:21:18,400 it lasted nine years 613 00:21:16,640 --> 00:21:20,480 uh we had two or three other developers 614 00:21:18,400 --> 00:21:22,960 join come and go over that time period 615 00:21:20,480 --> 00:21:25,600 so not bad 616 00:21:22,960 --> 00:21:27,280 let's jump ahead to 2020 last year uh in 617 00:21:25,600 --> 00:21:28,880 january i started with a small startup 618 00:21:27,280 --> 00:21:31,360 called lana they're based in madrid 619 00:21:28,880 --> 00:21:32,400 spain uh they do uh their fintech 620 00:21:31,360 --> 00:21:35,039 startup 621 00:21:32,400 --> 00:21:37,280 when i started in january um 622 00:21:35,039 --> 00:21:41,120 only the cto was able to do deployments 623 00:21:37,280 --> 00:21:42,240 uh so developers were at his mercy to uh 624 00:21:41,120 --> 00:21:44,720 when they wanted something deployed they 625 00:21:42,240 --> 00:21:47,120 had to ask the cto and if he had time 626 00:21:44,720 --> 00:21:48,400 and agreed that it was uh something that 627 00:21:47,120 --> 00:21:50,240 should be deployed or and didn't have 628 00:21:48,400 --> 00:21:51,360 any external dependencies and so on he 629 00:21:50,240 --> 00:21:52,720 would deploy it within a day or two 630 00:21:51,360 --> 00:21:54,720 probably 631 00:21:52,720 --> 00:21:57,440 um 632 00:21:54,720 --> 00:21:59,200 the the only of these 12 items that that 633 00:21:57,440 --> 00:22:00,400 lana had was quite working conditions 634 00:21:59,200 --> 00:22:02,320 and that was mainly because it was 635 00:22:00,400 --> 00:22:05,120 mostly a remote company so most people 636 00:22:02,320 --> 00:22:05,120 work from their homes 637 00:22:05,679 --> 00:22:09,679 final score won when i started in 638 00:22:07,520 --> 00:22:11,200 january 639 00:22:09,679 --> 00:22:13,440 less than 12 months later december when 640 00:22:11,200 --> 00:22:15,760 my contract ended 641 00:22:13,440 --> 00:22:17,440 these are the the changes i had been 642 00:22:15,760 --> 00:22:19,440 able to implement um of course i didn't 643 00:22:17,440 --> 00:22:21,360 do it alone but i was a driving force 644 00:22:19,440 --> 00:22:24,720 behind most of this 645 00:22:21,360 --> 00:22:26,159 you see it's a it's a big change um 646 00:22:24,720 --> 00:22:28,480 almost everything the only things that 647 00:22:26,159 --> 00:22:29,360 weren't uh weren't done 648 00:22:28,480 --> 00:22:30,720 were 649 00:22:29,360 --> 00:22:31,840 completely automated test suites we're 650 00:22:30,720 --> 00:22:32,880 still doing a fair amount of manual 651 00:22:31,840 --> 00:22:34,080 testing 652 00:22:32,880 --> 00:22:35,360 um 653 00:22:34,080 --> 00:22:36,559 and you know you never completely get 654 00:22:35,360 --> 00:22:38,320 rid of manual testing but we were doing 655 00:22:36,559 --> 00:22:40,960 more than we would have wanted 656 00:22:38,320 --> 00:22:43,440 we did not uh have the best tools money 657 00:22:40,960 --> 00:22:44,320 could buy um i had some developers ask 658 00:22:43,440 --> 00:22:46,799 for 659 00:22:44,320 --> 00:22:48,640 an ide and they were they were denied i 660 00:22:46,799 --> 00:22:50,000 disagreed with that but i didn't control 661 00:22:48,640 --> 00:22:51,200 the budget so i didn't get to make that 662 00:22:50,000 --> 00:22:52,799 call 663 00:22:51,200 --> 00:22:55,360 we still didn't do much hallway 664 00:22:52,799 --> 00:22:58,000 usability testing 665 00:22:55,360 --> 00:22:59,600 and we didn't have a no handoffs culture 666 00:22:58,000 --> 00:23:02,640 yet so we were still only part way 667 00:22:59,600 --> 00:23:03,840 through the devops uh sort of mindset 668 00:23:02,640 --> 00:23:05,120 transition 669 00:23:03,840 --> 00:23:07,200 in the sense that we did have a manual 670 00:23:05,120 --> 00:23:09,280 qa and some other developers were 671 00:23:07,200 --> 00:23:11,200 handing things off to our manual qa to 672 00:23:09,280 --> 00:23:13,520 do work uh to do testing before 673 00:23:11,200 --> 00:23:14,880 deployment 674 00:23:13,520 --> 00:23:18,640 but there's still pretty good progress 675 00:23:14,880 --> 00:23:20,640 uh i would say um final score of nine 676 00:23:18,640 --> 00:23:23,280 after 12 months a plus eight over over 677 00:23:20,640 --> 00:23:27,280 12 months that's pretty um 678 00:23:23,280 --> 00:23:27,280 pretty encouraging in my view 679 00:23:27,440 --> 00:23:31,520 i would like to invite you to join me on 680 00:23:28,880 --> 00:23:33,360 this uh goal to improving your jonathan 681 00:23:31,520 --> 00:23:35,280 test score uh you don't have to use my 682 00:23:33,360 --> 00:23:36,880 test use whatever test you want but the 683 00:23:35,280 --> 00:23:39,039 the idea is 684 00:23:36,880 --> 00:23:40,799 can you improve on these important areas 685 00:23:39,039 --> 00:23:43,039 if you want to see the jonathan test you 686 00:23:40,799 --> 00:23:44,080 can go to this url jhal.i o 687 00:23:43,039 --> 00:23:46,559 test 688 00:23:44,080 --> 00:23:49,360 score for yourself 689 00:23:46,559 --> 00:23:50,720 i'd also like to invite you to my free 690 00:23:49,360 --> 00:23:53,279 10 day email 691 00:23:50,720 --> 00:23:56,080 uh course uh called the lean cd boot 692 00:23:53,279 --> 00:23:57,360 camp it's it's really designed for 693 00:23:56,080 --> 00:23:58,799 teams that aren't doing continuous 694 00:23:57,360 --> 00:24:00,640 deployment yet so if you're not doing 695 00:23:58,799 --> 00:24:02,799 continuous deployment this breaks it 696 00:24:00,640 --> 00:24:05,279 down into 10 simple steps that you can 697 00:24:02,799 --> 00:24:06,799 apply and in spoiler alert you don't 698 00:24:05,279 --> 00:24:08,240 have to do automated testing before 699 00:24:06,799 --> 00:24:09,520 you're doing continuous deployment and 700 00:24:08,240 --> 00:24:10,320 that's kind of the point of the lien 701 00:24:09,520 --> 00:24:11,919 here 702 00:24:10,320 --> 00:24:13,679 get yours get your continuous deployment 703 00:24:11,919 --> 00:24:15,919 in place first and then you can start 704 00:24:13,679 --> 00:24:17,440 add the steps for automation later if 705 00:24:15,919 --> 00:24:19,279 this is interesting to you i encourage 706 00:24:17,440 --> 00:24:20,960 you to go to leanciditybootcamp.com 707 00:24:19,279 --> 00:24:22,720 it's completely free sign up for the 10 708 00:24:20,960 --> 00:24:24,159 day course 709 00:24:22,720 --> 00:24:25,600 if you need any help 710 00:24:24,159 --> 00:24:27,279 with that with any of the things i've 711 00:24:25,600 --> 00:24:28,880 talked about i'm always happy to talk to 712 00:24:27,279 --> 00:24:30,240 you you can go to my website you can 713 00:24:28,880 --> 00:24:32,080 contact me 714 00:24:30,240 --> 00:24:34,960 by email follow me on linkedin or 715 00:24:32,080 --> 00:24:36,240 twitter at tinydevops 716 00:24:34,960 --> 00:24:38,559 and if there's time i'd love to take 717 00:24:36,240 --> 00:24:40,880 some questions uh so let me show you one 718 00:24:38,559 --> 00:24:42,880 last slide though if you follow this qr 719 00:24:40,880 --> 00:24:45,279 code or the url at the bottom there that 720 00:24:42,880 --> 00:24:47,200 will take you to this slide deck and 721 00:24:45,279 --> 00:24:50,000 this list of resources so you can find 722 00:24:47,200 --> 00:24:51,600 everything that i've talked about today 723 00:24:50,000 --> 00:24:54,240 with that what questions can i answer 724 00:24:51,600 --> 00:24:54,240 for the audience 725 00:24:56,960 --> 00:25:02,000 so uh we have a couple of questions that 726 00:24:59,520 --> 00:25:04,400 have been posted in the venulis 727 00:25:02,000 --> 00:25:06,320 now i'm not sure whether or not jonathan 728 00:25:04,400 --> 00:25:07,039 hall is actually here in the chat with 729 00:25:06,320 --> 00:25:08,559 us 730 00:25:07,039 --> 00:25:11,360 that we can have a look at 731 00:25:08,559 --> 00:25:14,480 uh hopefully we can 732 00:25:11,360 --> 00:25:16,480 oh someone's got a 404 on codes oh boo 733 00:25:14,480 --> 00:25:18,799 never mind um 734 00:25:16,480 --> 00:25:20,960 so if you've got some questions uh throw 735 00:25:18,799 --> 00:25:23,679 them into the chat oh and i will approve 736 00:25:20,960 --> 00:25:26,960 them as fast as i can when i can see 737 00:25:23,679 --> 00:25:30,159 them and um we'll just have a chat 738 00:25:26,960 --> 00:25:32,080 once we've uh so feel free to chat um in 739 00:25:30,159 --> 00:25:35,120 the chat that'll be great 740 00:25:32,080 --> 00:25:37,760 um we can also do that in the uh 741 00:25:35,120 --> 00:25:39,679 in the hallway as well after this 742 00:25:37,760 --> 00:25:43,200 thing end ends 743 00:25:39,679 --> 00:25:45,360 and once that's finished um we when we 744 00:25:43,200 --> 00:25:47,600 come back we'll have a break uh the next 745 00:25:45,360 --> 00:25:50,240 one that we have the next talk we have a 746 00:25:47,600 --> 00:25:53,120 break until 10 15 so you've got about 15 747 00:25:50,240 --> 00:25:55,039 20 minutes grab some water um 748 00:25:53,120 --> 00:25:56,880 take a break get up walk around we don't 749 00:25:55,039 --> 00:25:58,960 want to just be standing here looking at 750 00:25:56,880 --> 00:26:00,080 screens the whole time 751 00:25:58,960 --> 00:26:02,480 um 752 00:26:00,080 --> 00:26:04,880 but do come back at 10 15 we have a talk 753 00:26:02,480 --> 00:26:08,080 by yakov called making swiss cheese of 754 00:26:04,880 --> 00:26:10,320 ticket sales and yakov grab it gave a 755 00:26:08,080 --> 00:26:11,600 tremendous talk last year so i'm really 756 00:26:10,320 --> 00:26:13,360 looking forward to see what he's come up 757 00:26:11,600 --> 00:26:14,720 with for this year i'm sure it'd be 758 00:26:13,360 --> 00:26:17,200 entertaining 759 00:26:14,720 --> 00:26:20,200 we'll see you again in about 15-20 760 00:26:17,200 --> 00:26:20,200 minutes