WEBVTT

1
00:00:00.060 --> 00:00:04.020
<00:00:00.060>Have <00:00:00.187>you <00:00:00.314>ever <00:00:00.441>inherited <00:00:00.569>a <00:00:00.696>codebase <00:00:00.823>with <00:00:00.950>confusing <00:00:01.078>documentation <00:00:01.205>written <00:00:01.332>by <00:00:01.460>lots

2
00:00:04.080 --> 00:00:07.540
<00:00:04.080>of <00:00:04.235>people <00:00:04.391>years <00:00:04.546>ago? <00:00:04.702>Now, <00:00:04.857>imagine <00:00:05.013>that <00:00:05.168>codebase <00:00:05.324>isn't <00:00:05.480>code.

3
00:00:07.860 --> 00:00:09.840
<00:00:07.860>It's <00:00:08.093>an <00:00:08.326>entire <00:00:08.560>organization's <00:00:08.793>way <00:00:09.026>of <00:00:09.260>work.

4
00:00:09.920 --> 00:00:13.640
<00:00:09.920>Dozens <00:00:10.095>of <00:00:10.270>people, <00:00:10.445>multiple <00:00:10.620>teams, <00:00:10.795>all <00:00:10.969>using <00:00:11.145>tools <00:00:11.320>in

5
00:00:13.680 --> 00:00:17.500
<00:00:13.680>ways <00:00:13.787>nobody <00:00:13.895>fully <00:00:14.003>understands <00:00:14.110>anymore, <00:00:14.218>and <00:00:14.326>your <00:00:14.433>job <00:00:14.541>is <00:00:14.649>to <00:00:14.756>get <00:00:14.864>them <00:00:14.972>to <00:00:15.080>stop

6
00:00:17.900 --> 00:00:20.600
<00:00:17.900>and <00:00:18.055>use <00:00:18.211>something <00:00:18.366>else. <00:00:18.522>Well, <00:00:18.677>that's <00:00:18.833>what <00:00:18.988>happened <00:00:19.144>to <00:00:19.299>me.

7
00:00:21.040 --> 00:00:24.420
<00:00:21.040>I'm <00:00:21.180>a <00:00:21.320>software <00:00:21.460>developer. <00:00:21.599>I <00:00:21.740>got <00:00:21.880>a <00:00:22.020>management <00:00:22.160>problem, <00:00:22.299>so <00:00:22.439>naturally,

8
00:00:25.020 --> 00:00:26.080
<00:00:25.020>I <00:00:25.258>treated <00:00:25.497>it <00:00:25.735>as <00:00:25.973>code.

9
00:00:29.540 --> 00:00:33.460
<00:00:29.540>Here's <00:00:29.656>the <00:00:29.773>setup. <00:00:29.890>Vodafone <00:00:30.006>IoT, <00:00:30.123>one <00:00:30.240>of <00:00:30.356>the <00:00:30.473>largest <00:00:30.590>IoT <00:00:30.706>platforms <00:00:30.823>in <00:00:30.939>Europe,

10
00:00:33.760 --> 00:00:36.120
<00:00:33.760>had <00:00:33.934>been <00:00:34.110>using <00:00:34.285>a <00:00:34.460>test <00:00:34.635>management <00:00:34.809>tool <00:00:34.985>for <00:00:35.160>years.

11
00:00:36.220 --> 00:00:39.860
<00:00:36.220>It <00:00:36.347>was <00:00:36.474>deeply <00:00:36.601>embedded <00:00:36.729>in <00:00:36.856>their <00:00:36.983>workflows, <00:00:37.110>in <00:00:37.238>their <00:00:37.365>processes, <00:00:37.492>in <00:00:37.620>their

12
00:00:39.940 --> 00:00:42.820
<00:00:39.940>muscle <00:00:40.080>memory. <00:00:40.220>But <00:00:40.360>a <00:00:40.500>decision <00:00:40.640>was <00:00:40.780>made, <00:00:40.919>and <00:00:41.059>for <00:00:41.199>good <00:00:41.339>reasons.

13
00:00:43.180 --> 00:00:46.940
<00:00:43.180>Migrate <00:00:43.355>to <00:00:43.530>Xray, <00:00:43.705>a <00:00:43.880>test <00:00:44.055>management <00:00:44.230>tool <00:00:44.405>built <00:00:44.580>natively

14
00:00:46.960 --> 00:00:49.940
<00:00:46.960>inside <00:00:47.115>Jira. <00:00:47.271>And <00:00:47.426>look, <00:00:47.582>Xray <00:00:47.737>is <00:00:47.893>genuinely <00:00:48.048>a <00:00:48.204>good <00:00:48.360>tool.

15
00:00:50.420 --> 00:00:53.949
<00:00:50.420>Native <00:00:50.595>Jira <00:00:50.770>integration <00:00:50.945>means <00:00:51.120>your <00:00:51.295>test <00:00:51.470>cases, <00:00:51.645>executions, <00:00:51.820>and

16
00:00:54.020 --> 00:00:57.520
<00:00:54.020>defects <00:00:54.147>all <00:00:54.274>live <00:00:54.401>in <00:00:54.529>the <00:00:54.656>same <00:00:54.783>ecosystem <00:00:54.910>as <00:00:55.038>your <00:00:55.165>stories <00:00:55.292>and <00:00:55.420>sprints.

17
00:00:57.640 --> 00:01:00.000
<00:00:57.640>No <00:00:57.920>context <00:00:58.200>switching, <00:00:58.480>no <00:00:58.760>syncing <00:00:59.040>nightmares.

18
00:01:00.300 --> 00:01:04.041
<00:01:00.300>It <00:01:00.416>has <00:01:00.533>a <00:01:00.650>solid <00:01:00.766>API <00:01:00.883>support, <00:01:01.000>which, <00:01:01.116>as <00:01:01.233>you'll <00:01:01.349>see <00:01:01.466>later, <00:01:01.583>becomes <00:01:01.699>very

19
00:01:04.060 --> 00:01:08.020
<00:01:04.060>important <00:01:04.176>to <00:01:04.293>me. <00:01:04.410>And <00:01:04.526>it <00:01:04.643>scales. <00:01:04.760>When <00:01:04.876>you're <00:01:04.993>managing <00:01:05.110>testing <00:01:05.226>across <00:01:05.343>a <00:01:05.460>platform

20
00:01:08.100 --> 00:01:10.560
<00:01:08.100>the <00:01:08.333>size <00:01:08.566>of <00:01:08.800>Vodafone <00:01:09.033>IoT, <00:01:09.266>it <00:01:09.500>matters.

21
00:01:10.620 --> 00:01:12.560
<00:01:10.620>Now, <00:01:10.900>the <00:01:11.180>migration <00:01:11.460>had <00:01:11.740>two <00:01:12.020>halves.

22
00:01:12.620 --> 00:01:16.390
<00:01:12.620>The <00:01:12.747>technical <00:01:12.874>half, <00:01:13.001>moving <00:01:13.129>the <00:01:13.256>data, <00:01:13.383>setting <00:01:13.510>up <00:01:13.638>the <00:01:13.765>infrastructure, <00:01:13.892>configuring <00:01:14.020>the

23
00:01:16.480 --> 00:01:19.640
<00:01:16.480>tool, <00:01:16.635>and <00:01:16.791>that <00:01:16.946>was <00:01:17.102>handled <00:01:17.257>by <00:01:17.413>Vodafone's <00:01:17.568>own <00:01:17.724>IoT <00:01:17.880>team.

24
00:01:19.860 --> 00:01:23.020
<00:01:19.860>Our <00:01:20.000>jobs <00:01:20.140>as <00:01:20.280>Selffocus <00:01:20.420>was <00:01:20.560>the <00:01:20.700>other <00:01:20.840>half, <00:01:20.980>the <00:01:21.120>human <00:01:21.260>half.

25
00:01:23.380 --> 00:01:27.040
<00:01:23.380>Training, <00:01:23.554>best <00:01:23.729>practices, <00:01:23.905>adapting <00:01:24.080>the <00:01:24.255>tool <00:01:24.429>to <00:01:24.604>their <00:01:24.780>reality.

26
00:01:27.240 --> 00:01:30.780
<00:01:27.240>Getting <00:01:27.414>people, <00:01:27.589>real <00:01:27.765>busy <00:01:27.940>people, <00:01:28.115>skeptical <00:01:28.289>people, <00:01:28.464>to <00:01:28.640>actually

27
00:01:30.920 --> 00:01:33.800
<00:01:30.920>change <00:01:31.047>how <00:01:31.174>they <00:01:31.301>work. <00:01:31.429>And <00:01:31.556>here's <00:01:31.683>my <00:01:31.810>thesis <00:01:31.938>for <00:01:32.065>the <00:01:32.192>entire <00:01:32.320>video.

28
00:01:33.880 --> 00:01:37.640
<00:01:33.880>The <00:01:34.007>approach <00:01:34.134>we <00:01:34.261>use <00:01:34.389>isn't <00:01:34.516>specific <00:01:34.643>to <00:01:34.770>Xray <00:01:34.898>or <00:01:35.025>test <00:01:35.152>management <00:01:35.280>or

29
00:01:37.700 --> 00:01:41.140
<00:01:37.700>even <00:01:37.900>to <00:01:38.100>software. <00:01:38.300>It's <00:01:38.500>a <00:01:38.700>framework. <00:01:38.900>Four <00:01:39.100>phases.

30
00:01:41.560 --> 00:01:45.440
<00:01:41.560>And <00:01:41.660>if <00:01:41.760>you're <00:01:41.860>a <00:01:41.960>developer <00:01:42.060>or <00:01:42.160>honestly <00:01:42.260>anyone <00:01:42.360>who <00:01:42.460>thinks <00:01:42.560>in <00:01:42.660>systems, <00:01:42.760>it's <00:01:42.860>going <00:01:42.960>to

31
00:01:45.500 --> 00:01:49.400
<00:01:45.500>feel <00:01:45.733>very <00:01:45.966>familiar. <00:01:46.200>Assess, <00:01:46.433>document, <00:01:46.666>train, <00:01:46.900>monitor.

32
00:01:49.600 --> 00:01:51.540
<00:01:49.600>That's <00:01:49.774>the <00:01:49.949>loop. <00:01:50.125>Let <00:01:50.300>me <00:01:50.475>walk <00:01:50.649>you <00:01:50.824>through <00:01:51.000>it.

33
00:01:53.470 --> 00:01:57.020
<00:01:53.470>Before <00:01:53.577>getting <00:01:53.685>into <00:01:53.793>what <00:01:53.900>we <00:01:54.008>did, <00:01:54.116>I <00:01:54.223>want <00:01:54.331>to <00:01:54.439>quickly <00:01:54.546>acknowledge <00:01:54.654>what <00:01:54.762>happened <00:01:54.870>before

34
00:01:57.040 --> 00:01:59.120
<00:01:57.039>we <00:01:57.240>walked <00:01:57.440>in <00:01:57.639>the <00:01:57.839>door, <00:01:58.039>because <00:01:58.240>context <00:01:58.440>matters.

35
00:01:59.340 --> 00:02:03.300
<00:01:59.340>You <00:01:59.467>wouldn't <00:01:59.594>start <00:01:59.721>reading <00:01:59.849>a <00:01:59.976>codebase <00:02:00.103>in <00:02:00.230>line <00:02:00.358>4,000. <00:02:00.485>First, <00:02:00.612>tool <00:02:00.740>selection.

36
00:02:03.460 --> 00:02:07.360
<00:02:03.460>Someone <00:02:03.587>had <00:02:03.714>to <00:02:03.841>evaluate <00:02:03.969>the <00:02:04.096>market, <00:02:04.223>compare <00:02:04.350>the <00:02:04.478>previous <00:02:04.605>tool <00:02:04.732>against <00:02:04.860>Xray

37
00:02:07.380 --> 00:02:10.380
<00:02:07.380>and <00:02:07.520>other <00:02:07.660>options, <00:02:07.800>weighing <00:02:07.940>the <00:02:08.079>pros <00:02:08.220>and <00:02:08.359>cons, <00:02:08.500>make <00:02:08.639>the <00:02:08.780>call.

38
00:02:10.521 --> 00:02:12.180
<00:02:10.521>That's <00:02:10.801>a <00:02:11.081>non-trivial <00:02:11.361>project <00:02:11.641>by <00:02:11.921>itself.

39
00:02:12.220 --> 00:02:15.350
<00:02:12.220>You're <00:02:12.375>looking <00:02:12.531>at <00:02:12.686>things <00:02:12.842>like <00:02:12.997>integration <00:02:13.153>with <00:02:13.308>your <00:02:13.464>existing <00:02:13.620>ecosystem,

40
00:02:15.400 --> 00:02:18.980
<00:02:15.400>scalability, <00:02:15.680>cost, <00:02:15.960>API <00:02:16.240>capabilities, <00:02:16.520>vendor <00:02:16.800>support,

41
00:02:19.380 --> 00:02:22.480
<00:02:19.380>all <00:02:19.480>of <00:02:19.579>it. <00:02:19.680>We <00:02:19.780>weren't <00:02:19.880>involved <00:02:19.980>in <00:02:20.079>this <00:02:20.180>phase, <00:02:20.280>but <00:02:20.380>if <00:02:20.480>you're <00:02:20.579>applying <00:02:20.680>this <00:02:20.780>framework

42
00:02:22.500 --> 00:02:26.340
<00:02:22.500>to <00:02:22.616>your <00:02:22.733>own <00:02:22.850>migration, <00:02:22.966>this <00:02:23.083>is <00:02:23.200>your <00:02:23.316>step <00:02:23.433>zero, <00:02:23.550>and <00:02:23.666>it <00:02:23.783>deserves <00:02:23.900>real

43
00:02:26.440 --> 00:02:30.180
<00:02:26.440>rigor. <00:02:26.556>A <00:02:26.673>bad <00:02:26.790>tool <00:02:26.906>choice <00:02:27.023>will <00:02:27.140>haunt <00:02:27.256>you <00:02:27.373>for <00:02:27.490>years. <00:02:27.606>Second, <00:02:27.723>data <00:02:27.840>migration.

44
00:02:30.340 --> 00:02:34.040
<00:02:30.340>Taking <00:02:30.540>every <00:02:30.740>test <00:02:30.940>case, <00:02:31.140>every <00:02:31.340>execution, <00:02:31.540>every <00:02:31.740>historical

45
00:02:34.140 --> 00:02:36.820
<00:02:34.140>record <00:02:34.295>from <00:02:34.451>the <00:02:34.606>previous <00:02:34.762>tool <00:02:34.917>and <00:02:35.073>moving <00:02:35.228>it <00:02:35.384>to <00:02:35.540>Xray.

46
00:02:37.200 --> 00:02:40.780
<00:02:37.200>This <00:02:37.399>is <00:02:37.600>deeply <00:02:37.799>technical. <00:02:38.000>Schema <00:02:38.200>mapping, <00:02:38.399>field <00:02:38.600>transformation,

47
00:02:40.980 --> 00:02:43.980
<00:02:40.980>handling <00:02:41.155>edge <00:02:41.329>cases <00:02:41.505>where <00:02:41.679>concepts <00:02:41.855>don't <00:02:42.030>map <00:02:42.204>between <00:02:42.380>tools.

48
00:02:44.080 --> 00:02:47.989
<00:02:44.079>Vodafone <00:02:44.219>IoT <00:02:44.359>handled <00:02:44.499>this, <00:02:44.640>and <00:02:44.779>honestly, <00:02:44.920>it's <00:02:45.059>its <00:02:45.200>own <00:02:45.339>30-minute <00:02:45.480>video.

49
00:02:48.160 --> 00:02:50.560
<00:02:48.160>Complexity <00:02:48.393>is <00:02:48.626>real, <00:02:48.859>but <00:02:49.093>it's <00:02:49.326>also <00:02:49.560>finite.

50
00:02:50.600 --> 00:02:53.620
<00:02:50.600>It's <00:02:50.727>a <00:02:50.854>technical <00:02:50.981>problem <00:02:51.109>with <00:02:51.236>a <00:02:51.363>technical <00:02:51.490>solution. <00:02:51.618>Now, <00:02:51.745>here's <00:02:51.872>the <00:02:52.000>thing.

51
00:02:53.700 --> 00:02:57.200
<00:02:53.700>You <00:02:53.827>can <00:02:53.954>move <00:02:54.081>every <00:02:54.209>byte <00:02:54.336>of <00:02:54.463>data. <00:02:54.590>You <00:02:54.718>can <00:02:54.845>configure <00:02:54.972>every <00:02:55.100>field,

52
00:02:57.620 --> 00:02:59.300
<00:02:57.620>every <00:02:58.086>workflow, <00:02:58.553>every <00:02:59.020>permission.

53
00:02:59.380 --> 00:03:03.320
<00:02:59.380>And <00:02:59.487>if <00:02:59.595>the <00:02:59.703>people <00:02:59.810>using <00:02:59.918>it <00:03:00.026>don't <00:03:00.133>understand <00:03:00.241>it, <00:03:00.349>don't <00:03:00.456>trust <00:03:00.564>it, <00:03:00.672>or <00:03:00.780>just

54
00:03:03.400 --> 00:03:06.900
<00:03:03.400>quietly <00:03:03.527>keep <00:03:03.654>doing <00:03:03.781>things <00:03:03.909>the <00:03:04.036>old <00:03:04.163>way, <00:03:04.290>well, <00:03:04.418>you <00:03:04.545>have <00:03:04.672>migrated <00:03:04.800>nothing.

55
00:03:07.100 --> 00:03:10.540
<00:03:07.100>So <00:03:07.216>when <00:03:07.333>we <00:03:07.450>walked <00:03:07.566>in, <00:03:07.683>the <00:03:07.799>tool <00:03:07.916>was <00:03:08.033>chosen, <00:03:08.150>the <00:03:08.266>data <00:03:08.383>was <00:03:08.500>moving.

56
00:03:10.920 --> 00:03:14.140
<00:03:10.920>Our <00:03:11.059>job <00:03:11.200>started <00:03:11.339>at <00:03:11.480>the <00:03:11.619>hardest <00:03:11.760>part, <00:03:11.899>getting <00:03:12.040>people <00:03:12.179>to <00:03:12.320>change.

57
00:03:15.840 --> 00:03:19.530
<00:03:15.840>Okay. <00:03:15.940>Phase <00:03:16.040>one, <00:03:16.140>and <00:03:16.240>this <00:03:16.340>is <00:03:16.440>where <00:03:16.540>my <00:03:16.640>developer <00:03:16.740>brain <00:03:16.840>kicked <00:03:16.940>in <00:03:17.040>for <00:03:17.140>the <00:03:17.240>first

58
00:03:19.580 --> 00:03:23.260
<00:03:19.579>time. <00:03:19.696>When <00:03:19.813>you <00:03:19.929>inherit <00:03:20.046>a <00:03:20.163>legacy <00:03:20.279>codebase, <00:03:20.396>what's <00:03:20.513>the <00:03:20.630>first <00:03:20.746>thing <00:03:20.863>you <00:03:20.980>do?

59
00:03:23.540 --> 00:03:26.260
<00:03:23.540>You <00:03:23.715>read <00:03:23.890>it. <00:03:24.065>You <00:03:24.239>don't <00:03:24.415>immediately <00:03:24.590>start <00:03:24.765>deleting <00:03:24.940>things.

60
00:03:26.780 --> 00:03:28.740
<00:03:26.780>You <00:03:26.980>don't <00:03:27.180>rewrite <00:03:27.380>from <00:03:27.580>scratch <00:03:27.780>from <00:03:27.980>day <00:03:28.180>one.

61
00:03:28.800 --> 00:03:32.160
<00:03:28.800>You <00:03:28.940>sit <00:03:29.080>there, <00:03:29.220>you <00:03:29.360>scroll <00:03:29.500>through <00:03:29.640>it, <00:03:29.780>you <00:03:29.920>trace <00:03:30.060>function <00:03:30.200>calls.

62
00:03:32.650 --> 00:03:35.500
<00:03:32.650>You <00:03:32.790>try <00:03:32.930>to <00:03:33.070>understand <00:03:33.210>why <00:03:33.350>it <00:03:33.490>looks <00:03:33.630>the <00:03:33.770>way <00:03:33.910>it <00:03:34.050>looks.

63
00:03:35.540 --> 00:03:39.120
<00:03:35.540>And <00:03:35.647>that's <00:03:35.755>exactly <00:03:35.863>what <00:03:35.970>we <00:03:36.078>did. <00:03:36.186>But <00:03:36.293>instead <00:03:36.401>of <00:03:36.509>code, <00:03:36.616>it <00:03:36.724>was <00:03:36.832>reading <00:03:36.940>an

64
00:03:39.200 --> 00:03:40.900
<00:03:39.200>organization. <00:03:39.666>We <00:03:40.133>gathered <00:03:40.600>everything.

65
00:03:40.940 --> 00:03:44.720
<00:03:40.940>Their <00:03:41.115>rules, <00:03:41.290>their <00:03:41.465>customization <00:03:41.640>in <00:03:41.815>the <00:03:41.990>previous <00:03:42.165>tool, <00:03:42.340>their

66
00:03:44.840 --> 00:03:48.700
<00:03:44.840>workflow, <00:03:45.015>their <00:03:45.190>naming <00:03:45.365>conventions, <00:03:45.540>their <00:03:45.715>folder <00:03:45.890>structures, <00:03:46.065>their <00:03:46.240>ways

67
00:03:48.740 --> 00:03:50.820
<00:03:48.740>of <00:03:48.973>work. <00:03:49.206>Every <00:03:49.440>team <00:03:49.673>had <00:03:49.906>different <00:03:50.140>habits.

68
00:03:51.200 --> 00:03:54.880
<00:03:51.200>Some <00:03:51.375>had <00:03:51.549>heavily <00:03:51.725>customized <00:03:51.899>their <00:03:52.075>setup, <00:03:52.250>some <00:03:52.424>were <00:03:52.600>barely

69
00:03:54.960 --> 00:03:57.340
<00:03:54.960>using <00:03:55.100>the <00:03:55.240>tool <00:03:55.380>at <00:03:55.520>all. <00:03:55.660>And <00:03:55.800>here <00:03:55.940>is <00:03:56.080>the <00:03:56.220>critical <00:03:56.360>part.

70
00:03:57.420 --> 00:03:59.860
<00:03:57.420>For <00:03:57.620>each <00:03:57.820>thing <00:03:58.020>we <00:03:58.220>found, <00:03:58.420>we <00:03:58.620>asked <00:03:58.820>why.

71
00:04:00.380 --> 00:04:02.780
<00:04:00.380>Some <00:04:00.660>rules <00:04:00.940>existed <00:04:01.220>for <00:04:01.500>critical <00:04:01.780>reasons.

72
00:04:02.980 --> 00:04:06.260
<00:04:02.980>Compliance, <00:04:03.446>traceability, <00:04:03.913>contractual <00:04:04.380>obligations.

73
00:04:06.300 --> 00:04:08.740
<00:04:06.300>These <00:04:06.500>were <00:04:06.700>load-bearing <00:04:06.900>walls. <00:04:07.100>You <00:04:07.300>cannot <00:04:07.500>remove <00:04:07.700>them.

74
00:04:08.820 --> 00:04:12.730
<00:04:08.820>Some <00:04:08.975>rules <00:04:09.131>made <00:04:09.286>sense <00:04:09.442>historically, <00:04:09.597>but <00:04:09.753>had <00:04:09.908>outlived <00:04:10.064>their <00:04:10.220>purpose.

75
00:04:12.780 --> 00:04:16.360
<00:04:12.780>For <00:04:12.896>example, <00:04:13.013>the <00:04:13.130>previous <00:04:13.246>tool <00:04:13.363>had <00:04:13.480>a <00:04:13.596>limitation, <00:04:13.713>so <00:04:13.830>a <00:04:13.946>workaround <00:04:14.063>became <00:04:14.180>standard

76
00:04:16.440 --> 00:04:20.310
<00:04:16.440>practice. <00:04:16.547>Now, <00:04:16.655>the <00:04:16.763>limitation <00:04:16.870>is <00:04:16.978>gone <00:04:17.086>in <00:04:17.193>Xray. <00:04:17.301>Should <00:04:17.409>the <00:04:17.516>workaround <00:04:17.624>be <00:04:17.732>gone, <00:04:17.839>too?

77
00:04:20.500 --> 00:04:23.660
<00:04:20.500>And <00:04:20.640>some <00:04:20.779>rules, <00:04:20.920>nobody <00:04:21.060>could <00:04:21.200>explain <00:04:21.339>them. <00:04:21.480>They <00:04:21.620>were <00:04:21.760>dead <00:04:21.899>code.

78
00:04:23.700 --> 00:04:26.540
<00:04:23.700>We <00:04:23.840>do <00:04:23.979>it <00:04:24.120>because <00:04:24.260>we <00:04:24.400>have <00:04:24.539>always <00:04:24.680>done <00:04:24.820>it. <00:04:24.960>Sound <00:04:25.099>familiar?

79
00:04:26.780 --> 00:04:30.320
<00:04:26.780>Every <00:04:26.935>codebase <00:04:27.091>has <00:04:27.246>this, <00:04:27.402>and <00:04:27.557>every <00:04:27.713>organization <00:04:27.868>does <00:04:28.024>it, <00:04:28.179>too.

80
00:04:30.640 --> 00:04:34.540
<00:04:30.640>Here's <00:04:30.756>the <00:04:30.873>takeaway, <00:04:30.990>and <00:04:31.106>I <00:04:31.223>cannot <00:04:31.340>stress <00:04:31.456>this <00:04:31.573>enough. <00:04:31.690>Never <00:04:31.806>skip <00:04:31.923>the <00:04:32.039>assessment.

81
00:04:34.720 --> 00:04:38.640
<00:04:34.720>I <00:04:34.836>know <00:04:34.953>it's <00:04:35.070>tempting. <00:04:35.186>The <00:04:35.303>tool <00:04:35.420>is <00:04:35.536>new, <00:04:35.653>it's <00:04:35.770>shiny, <00:04:35.886>the <00:04:36.003>executives <00:04:36.120>are

82
00:04:38.780 --> 00:04:41.700
<00:04:38.780>eager. <00:04:38.979>Everyone <00:04:39.179>wants <00:04:39.380>to <00:04:39.580>jump <00:04:39.780>straight <00:04:39.979>into <00:04:40.179>training.

83
00:04:41.740 --> 00:04:44.960
<00:04:41.740>But <00:04:41.856>if <00:04:41.973>you <00:04:42.090>don't <00:04:42.206>understand <00:04:42.323>the <00:04:42.440>current <00:04:42.556>state, <00:04:42.673>you <00:04:42.790>will <00:04:42.906>either <00:04:43.023>break <00:04:43.140>something

84
00:04:45.020 --> 00:04:48.820
<00:04:45.020>important <00:04:45.159>or <00:04:45.299>carry <00:04:45.440>over <00:04:45.580>garbage <00:04:45.719>that <00:04:45.859>you <00:04:46.000>should <00:04:46.140>have <00:04:46.280>left <00:04:46.419>behind.

85
00:04:48.880 --> 00:04:51.940
<00:04:48.880>Refactoring <00:04:49.113>without <00:04:49.346>reading <00:04:49.580>the <00:04:49.813>code <00:04:50.046>breaks <00:04:50.280>production.

86
00:04:52.120 --> 00:04:55.200
<00:04:52.120>Migrating <00:04:52.320>without <00:04:52.520>understanding <00:04:52.720>the <00:04:52.920>workflows <00:04:53.120>breaks <00:04:53.320>the <00:04:53.520>team.

87
00:04:55.290 --> 00:04:58.240
<00:04:55.290>Same <00:04:55.465>energy. <00:04:55.640>We <00:04:55.815>spent <00:04:55.990>significant <00:04:56.165>time <00:04:56.340>in <00:04:56.515>this <00:04:56.690>space.

88
00:04:58.700 --> 00:05:02.500
<00:04:58.700>It <00:04:58.807>wasn't <00:04:58.915>glamorous. <00:04:59.023>It <00:04:59.130>was <00:04:59.238>a <00:04:59.346>lot <00:04:59.453>of <00:04:59.561>meetings, <00:04:59.669>a <00:04:59.776>lot <00:04:59.884>of <00:04:59.992>spreadsheets, <00:05:00.099>a

89
00:05:02.540 --> 00:05:06.510
<00:05:02.540>lot <00:05:02.656>of, <00:05:02.773>"Can <00:05:02.890>you <00:05:03.006>explain <00:05:03.123>why <00:05:03.240>this <00:05:03.356>field <00:05:03.473>has <00:05:03.590>47 <00:05:03.706>possible <00:05:03.823>values?" <00:05:03.940>But

90
00:05:06.560 --> 00:05:08.920
<00:05:06.560>it <00:05:06.760>was <00:05:06.960>the <00:05:07.160>foundation <00:05:07.360>of <00:05:07.560>everything <00:05:07.760>that <00:05:07.960>followed.

91
00:05:10.880 --> 00:05:14.700
<00:05:10.880>Phase <00:05:11.020>two, <00:05:11.159>documentation. <00:05:11.300>And <00:05:11.440>this <00:05:11.580>is <00:05:11.719>where <00:05:11.860>another <00:05:12.000>dev <00:05:12.140>principle <00:05:12.280>saved

92
00:05:14.720 --> 00:05:18.380
<00:05:14.720>us. <00:05:14.875>DRY. <00:05:15.031>Don't <00:05:15.186>repeat <00:05:15.342>yourself. <00:05:15.497>Here's <00:05:15.653>a <00:05:15.808>trap <00:05:15.964>I <00:05:16.120>see

93
00:05:18.440 --> 00:05:20.060
<00:05:18.440>organizations <00:05:18.906>fall <00:05:19.373>into <00:05:19.840>constantly.

94
00:05:20.480 --> 00:05:24.140
<00:05:20.480>A <00:05:20.607>new <00:05:20.734>tool <00:05:20.861>arrives, <00:05:20.989>someone <00:05:21.116>decides <00:05:21.243>we <00:05:21.370>need <00:05:21.498>internal <00:05:21.625>documentation, <00:05:21.752>and <00:05:21.880>they

95
00:05:24.160 --> 00:05:27.880
<00:05:24.160>proceed <00:05:24.315>to <00:05:24.471>rewrite <00:05:24.626>the <00:05:24.782>vendor's <00:05:24.937>official <00:05:25.093>documentation <00:05:25.248>word <00:05:25.404>by <00:05:25.560>word

96
00:05:28.200 --> 00:05:31.600
<00:05:28.200>in <00:05:28.316>a <00:05:28.433>Confluence <00:05:28.550>page <00:05:28.666>that <00:05:28.783>will <00:05:28.900>never <00:05:29.016>be <00:05:29.133>updated <00:05:29.250>again. <00:05:29.366>Don't <00:05:29.483>do <00:05:29.599>this.

97
00:05:31.800 --> 00:05:34.780
<00:05:31.800>Xray <00:05:31.955>already <00:05:32.111>has <00:05:32.266>documentation, <00:05:32.422>and <00:05:32.577>it's <00:05:32.733>thorough, <00:05:32.888>it's <00:05:33.044>maintained, <00:05:33.200>it's

98
00:05:34.840 --> 00:05:37.980
<00:05:34.840>searchable. <00:05:34.995>You'll <00:05:35.151>never <00:05:35.306>out-document <00:05:35.462>the <00:05:35.617>people <00:05:35.773>who <00:05:35.928>built <00:05:36.084>the <00:05:36.240>tool.

99
00:05:38.040 --> 00:05:41.460
<00:05:38.040>What <00:05:38.195>you <00:05:38.351>need <00:05:38.506>are <00:05:38.662>internal <00:05:38.817>docs <00:05:38.973>that <00:05:39.128>answer <00:05:39.284>different <00:05:39.440>questions.

100
00:05:41.700 --> 00:05:45.420
<00:05:41.700>Not <00:05:41.807>how <00:05:41.915>does <00:05:42.023>this <00:05:42.130>tool <00:05:42.238>work, <00:05:42.346>but <00:05:42.453>how <00:05:42.561>do <00:05:42.669>we <00:05:42.776>use <00:05:42.884>the <00:05:42.992>tool <00:05:43.099>given

101
00:05:45.620 --> 00:05:48.820
<00:05:45.620>our <00:05:45.853>rules, <00:05:46.086>our <00:05:46.320>context, <00:05:46.553>and <00:05:46.786>our <00:05:47.020>ecosystem?

102
00:05:48.940 --> 00:05:52.050
<00:05:48.940>Things <00:05:49.115>like, <00:05:49.290>what's <00:05:49.465>our <00:05:49.640>naming <00:05:49.815>convention <00:05:49.990>for <00:05:50.165>test <00:05:50.340>plans?

103
00:05:52.400 --> 00:05:54.520
<00:05:52.400>Which <00:05:52.633>custom <00:05:52.866>fields <00:05:53.099>are <00:05:53.333>mandatory <00:05:53.566>and <00:05:53.799>why?

104
00:05:54.620 --> 00:05:58.080
<00:05:54.620>When <00:05:54.720>do <00:05:54.820>we <00:05:54.920>use <00:05:55.020>a <00:05:55.120>test <00:05:55.220>set <00:05:55.320>versus <00:05:55.420>a <00:05:55.520>test <00:05:55.620>plan? <00:05:55.720>What's <00:05:55.820>the <00:05:55.920>folder <00:05:56.020>structure?

105
00:05:58.170 --> 00:06:01.340
<00:05:58.170>Who <00:05:58.310>is <00:05:58.450>responsible <00:05:58.590>for <00:05:58.730>reviewing <00:05:58.870>the <00:05:59.010>test <00:05:59.150>case <00:05:59.290>before <00:05:59.430>they're <00:05:59.570>finalized?

106
00:06:01.380 --> 00:06:04.820
<00:06:01.380>Think <00:06:01.520>of <00:06:01.659>it <00:06:01.800>this <00:06:01.940>way. <00:06:02.080>Xray's <00:06:02.219>official <00:06:02.360>documentation <00:06:02.500>is <00:06:02.640>the <00:06:02.780>language

107
00:06:04.880 --> 00:06:07.940
<00:06:04.880>specification. <00:06:05.113>Think <00:06:05.346>of <00:06:05.580>Python <00:06:05.813>docs, <00:06:06.046>Java <00:06:06.280>spec.

108
00:06:08.060 --> 00:06:11.580
<00:06:08.060>Then <00:06:08.235>your <00:06:08.410>internal <00:06:08.585>documentation <00:06:08.760>are <00:06:08.935>your <00:06:09.110>project's <00:06:09.285>README <00:06:09.460>and

109
00:06:11.660 --> 00:06:15.500
<00:06:11.660>contributing <00:06:11.800>markdown <00:06:11.940>files. <00:06:12.080>Your <00:06:12.220>README <00:06:12.360>doesn't <00:06:12.500>explain <00:06:12.640>what <00:06:12.780>a <00:06:12.920>dictionary <00:06:13.060>is.

110
00:06:15.920 --> 00:06:19.680
<00:06:15.920>It <00:06:16.036>explains <00:06:16.153>you <00:06:16.270>what <00:06:16.386>naming <00:06:16.503>convention <00:06:16.620>you <00:06:16.736>use <00:06:16.853>for <00:06:16.970>your <00:06:17.086>modules, <00:06:17.203>how <00:06:17.320>you

111
00:06:19.760 --> 00:06:23.676
<00:06:19.760>structure <00:06:19.900>your <00:06:20.039>tests. <00:06:20.180>Where <00:06:20.320>do <00:06:20.460>you <00:06:20.599>put <00:06:20.740>configuration <00:06:20.880>files? <00:06:21.020>Same <00:06:21.159>principle.

112
00:06:24.196 --> 00:06:27.356
<00:06:24.196>Now, <00:06:24.323>two <00:06:24.450>critical <00:06:24.577>points <00:06:24.705>about <00:06:24.832>documentation <00:06:24.959>that <00:06:25.086>I <00:06:25.214>learned <00:06:25.341>the <00:06:25.468>hard <00:06:25.596>way.

113
00:06:27.496 --> 00:06:31.416
<00:06:27.496>This <00:06:27.589>is <00:06:27.682>not <00:06:27.775>a <00:06:27.869>tablet <00:06:27.962>handed <00:06:28.056>down <00:06:28.149>from <00:06:28.242>a <00:06:28.335>mountain, <00:06:28.429>okay? <00:06:28.522>This <00:06:28.616>is <00:06:28.709>a <00:06:28.802>living <00:06:28.895>document.

114
00:06:31.796 --> 00:06:35.696
<00:06:31.796>It's <00:06:31.923>open <00:06:32.050>for <00:06:32.177>discussion. <00:06:32.305>And <00:06:32.432>honestly, <00:06:32.559>who <00:06:32.686>knows <00:06:32.814>better <00:06:32.941>what <00:06:33.068>is <00:06:33.195>needed

115
00:06:35.716 --> 00:06:38.216
<00:06:35.716>than <00:06:35.871>the <00:06:36.027>people <00:06:36.182>who <00:06:36.338>are <00:06:36.493>using <00:06:36.649>it <00:06:36.804>every <00:06:36.960>single <00:06:37.116>day?

116
00:06:38.316 --> 00:06:40.676
<00:06:38.316>We <00:06:38.491>built <00:06:38.666>our <00:06:38.841>docs <00:06:39.016>with <00:06:39.191>input <00:06:39.366>from <00:06:39.541>the <00:06:39.716>teams.

117
00:06:40.776 --> 00:06:44.436
<00:06:40.776>When <00:06:40.892>someone <00:06:41.009>said, <00:06:41.126>"This <00:06:41.242>rule <00:06:41.359>doesn't <00:06:41.476>make <00:06:41.592>sense <00:06:41.709>in <00:06:41.826>our <00:06:41.942>workflow," <00:06:42.059>we <00:06:42.176>listened.

118
00:06:44.856 --> 00:06:48.736
<00:06:44.856>Sometimes <00:06:45.011>we <00:06:45.167>adjusted <00:06:45.322>the <00:06:45.478>rule. <00:06:45.633>Sometimes <00:06:45.789>we <00:06:45.944>explained <00:06:46.100>why <00:06:46.256>the

119
00:06:48.816 --> 00:06:51.755
<00:06:48.816>rule <00:06:48.991>existed, <00:06:49.166>and <00:06:49.341>they <00:06:49.516>understood. <00:06:49.691>But <00:06:49.866>the <00:06:50.041>conversation <00:06:50.216>happened.

120
00:06:51.836 --> 00:06:55.816
<00:06:51.836>I <00:06:51.991>literally <00:06:52.147>thought <00:06:52.302>about <00:06:52.458>our <00:06:52.613>documentation <00:06:52.769>as <00:06:52.924>a <00:06:53.080>shared <00:06:53.236>repository.

121
00:06:55.896 --> 00:06:59.846
<00:06:55.896>Teams <00:06:56.012>could <00:06:56.129>propose <00:06:56.246>a <00:06:56.362>change. <00:06:56.479>We <00:06:56.596>discussed, <00:06:56.712>we <00:06:56.829>merged <00:06:56.946>it, <00:06:57.062>or <00:06:57.179>we <00:06:57.296>closed

122
00:06:59.876 --> 00:07:03.476
<00:06:59.876>it. <00:06:59.992>It <00:07:00.109>stayed <00:07:00.226>alive. <00:07:00.342>Point <00:07:00.459>two, <00:07:00.575>every <00:07:00.692>decision <00:07:00.809>is <00:07:00.926>logged <00:07:01.042>from <00:07:01.159>day <00:07:01.275>one.

123
00:07:03.536 --> 00:07:06.356
<00:07:03.536>Why <00:07:03.711>did <00:07:03.886>we <00:07:04.061>choose <00:07:04.236>this <00:07:04.411>naming <00:07:04.586>convention? <00:07:04.761>It's <00:07:04.936>logged.

124
00:07:06.776 --> 00:07:10.425
<00:07:06.776>Why <00:07:06.883>did <00:07:06.991>we <00:07:07.099>decide <00:07:07.206>to <00:07:07.314>use <00:07:07.422>test <00:07:07.529>plans <00:07:07.637>instead <00:07:07.745>of <00:07:07.852>test <00:07:07.960>sets? <00:07:08.068>It's <00:07:08.176>logged.

125
00:07:10.476 --> 00:07:13.565
<00:07:10.476>Why <00:07:10.631>did <00:07:10.787>we <00:07:10.942>deviate <00:07:11.098>from <00:07:11.253>the <00:07:11.409>default <00:07:11.564>workflow? <00:07:11.720>It's <00:07:11.876>logged.

126
00:07:13.606 --> 00:07:15.596
<00:07:13.606>This <00:07:13.885>traceability <00:07:14.166>is <00:07:14.445>your <00:07:14.726>commit <00:07:15.006>history.

127
00:07:15.656 --> 00:07:19.636
<00:07:15.656>Six <00:07:15.772>months <00:07:15.889>from <00:07:16.006>now, <00:07:16.122>when <00:07:16.239>someone <00:07:16.356>asks, <00:07:16.472>"Why <00:07:16.589>do <00:07:16.706>we <00:07:16.822>do <00:07:16.939>something <00:07:17.056>this

128
00:07:19.696 --> 00:07:23.286
<00:07:19.696>way?" <00:07:19.812>You <00:07:19.929>don't <00:07:20.046>shrug, <00:07:20.162>you <00:07:20.279>point <00:07:20.396>to <00:07:20.512>the <00:07:20.629>log. <00:07:20.746>You <00:07:20.862>show <00:07:20.979>the <00:07:21.096>context.

129
00:07:23.356 --> 00:07:27.216
<00:07:23.356>You <00:07:23.483>show <00:07:23.610>the <00:07:23.737>reasoning. <00:07:23.865>And <00:07:23.992>if <00:07:24.119>the <00:07:24.246>context <00:07:24.374>has <00:07:24.501>changed <00:07:24.628>now, <00:07:24.756>you

130
00:07:27.296 --> 00:07:29.356
<00:07:27.296>know <00:07:27.496>it's <00:07:27.695>safe <00:07:27.896>to <00:07:28.096>change <00:07:28.296>the <00:07:28.496>decision, <00:07:28.695>too.

131
00:07:29.416 --> 00:07:32.996
<00:07:29.416>Decisions <00:07:29.591>without <00:07:29.766>traceability <00:07:29.941>are <00:07:30.116>like <00:07:30.291>code <00:07:30.466>without <00:07:30.641>version <00:07:30.816>control.

132
00:07:33.076 --> 00:07:35.096
<00:07:33.076>You're <00:07:33.356>just <00:07:33.636>hoping <00:07:33.916>nobody <00:07:34.196>asks <00:07:34.476>questions.

133
00:07:36.196 --> 00:07:38.956
<00:07:36.196>Phase <00:07:36.371>three, <00:07:36.546>training. <00:07:36.721>And <00:07:36.896>this <00:07:37.071>one <00:07:37.246>seems <00:07:37.421>obvious, <00:07:37.596>right?

134
00:07:39.476 --> 00:07:42.236
<00:07:39.476>New <00:07:39.676>tool, <00:07:39.876>train <00:07:40.076>people <00:07:40.276>on <00:07:40.476>it, <00:07:40.676>next <00:07:40.876>slide.

135
00:07:42.336 --> 00:07:45.456
<00:07:42.336>Except, <00:07:42.536>no. <00:07:42.736>Because <00:07:42.936>here's <00:07:43.136>a <00:07:43.336>mistake <00:07:43.536>I <00:07:43.736>see

136
00:07:45.596 --> 00:07:49.536
<00:07:45.596>constantly. <00:07:45.751>One-size-fits-all <00:07:45.907>training. <00:07:46.062>Not <00:07:46.218>everyone <00:07:46.373>starts <00:07:46.529>at <00:07:46.684>the <00:07:46.840>same <00:07:46.996>place.

137
00:07:49.616 --> 00:07:52.676
<00:07:49.616>Some <00:07:49.771>teams <00:07:49.927>had <00:07:50.082>people <00:07:50.238>who <00:07:50.393>were <00:07:50.549>already <00:07:50.704>familiar <00:07:50.860>with <00:07:51.015>Xray.

138
00:07:52.716 --> 00:07:56.456
<00:07:52.716>Maybe <00:07:52.816>they <00:07:52.916>used <00:07:53.016>it <00:07:53.116>in <00:07:53.216>a <00:07:53.316>previous <00:07:53.416>organization. <00:07:53.516>Maybe <00:07:53.616>they <00:07:53.716>explored <00:07:53.816>it <00:07:53.916>on <00:07:54.016>their <00:07:54.116>own.

139
00:07:56.496 --> 00:08:00.256
<00:07:56.496>Putting <00:07:56.612>them <00:07:56.729>through <00:07:56.846>a <00:07:56.962>four-hour <00:07:57.079>introduction <00:07:57.195>to <00:07:57.312>Xray <00:07:57.429>session <00:07:57.546>is <00:07:57.662>like <00:07:57.779>teaching <00:07:57.895>a

140
00:08:00.316 --> 00:08:03.316
<00:08:00.316>senior <00:08:00.455>developer <00:08:00.595>what <00:08:00.736>a <00:08:00.876>for <00:08:01.015>loop <00:08:01.155>is. <00:08:01.296>You <00:08:01.436>don't <00:08:01.575>do <00:08:01.715>that.

141
00:08:03.396 --> 00:08:06.436
<00:08:03.396>You <00:08:03.512>won't <00:08:03.629>board <00:08:03.746>them <00:08:03.862>into <00:08:03.979>your <00:08:04.096>code <00:08:04.212>base. <00:08:04.329>You <00:08:04.446>skip <00:08:04.562>the <00:08:04.679>language <00:08:04.796>tutorial.

142
00:08:06.516 --> 00:08:10.376
<00:08:06.516>You <00:08:06.643>go <00:08:06.770>straight <00:08:06.897>to, <00:08:07.025>"Here's <00:08:07.152>our <00:08:07.279>architecture, <00:08:07.406>here's <00:08:07.534>our <00:08:07.661>patterns, <00:08:07.788>here's <00:08:07.916>that

143
00:08:10.436 --> 00:08:14.056
<00:08:10.436>weird <00:08:10.552>thing <00:08:10.669>on <00:08:10.786>module <00:08:10.902>seven <00:08:11.019>that <00:08:11.135>you <00:08:11.252>need <00:08:11.369>to <00:08:11.486>know <00:08:11.602>about." <00:08:11.719>So <00:08:11.835>that's

144
00:08:14.096 --> 00:08:16.596
<00:08:14.096>exactly <00:08:14.271>what <00:08:14.446>we <00:08:14.621>did. <00:08:14.796>Step <00:08:14.971>one, <00:08:15.146>assess <00:08:15.321>the <00:08:15.496>level.

145
00:08:16.796 --> 00:08:20.576
<00:08:16.796>Step <00:08:16.951>two, <00:08:17.107>route <00:08:17.262>accordingly. <00:08:17.418>For <00:08:17.573>teams <00:08:17.729>that <00:08:17.884>needed <00:08:18.040>it, <00:08:18.195>we

146
00:08:20.596 --> 00:08:24.276
<00:08:20.596>provided <00:08:20.771>the <00:08:20.946>basic <00:08:21.121>training, <00:08:21.296>the <00:08:21.471>fundamentals. <00:08:21.646>What <00:08:21.821>is <00:08:21.996>Xray?

147
00:08:24.336 --> 00:08:27.456
<00:08:24.336>How <00:08:24.491>do <00:08:24.647>we <00:08:24.802>do <00:08:24.958>test <00:08:25.113>cases, <00:08:25.269>test <00:08:25.424>plans, <00:08:25.580>test <00:08:25.736>executions?

148
00:08:27.756 --> 00:08:31.275
<00:08:27.756>How <00:08:27.872>test <00:08:27.989>executions <00:08:28.106>relate <00:08:28.222>to <00:08:28.339>each <00:08:28.455>other? <00:08:28.572>How <00:08:28.689>does <00:08:28.806>it <00:08:28.922>integrate <00:08:29.039>with <00:08:29.155>Jira?

149
00:08:31.536 --> 00:08:35.136
<00:08:31.536>The <00:08:31.691>core <00:08:31.847>concepts. <00:08:32.002>But <00:08:32.158>whenever <00:08:32.313>possible, <00:08:32.469>we <00:08:32.624>skip <00:08:32.780>to <00:08:32.936>advanced

150
00:08:35.216 --> 00:08:39.036
<00:08:35.216>training, <00:08:35.356>which <00:08:35.496>was <00:08:35.635>built <00:08:35.775>directly <00:08:35.916>on <00:08:36.056>top <00:08:36.196>of <00:08:36.336>our <00:08:36.476>internal <00:08:36.616>documentation

151
00:08:39.096 --> 00:08:41.656
<00:08:39.096>from <00:08:39.236>phase <00:08:39.376>two. <00:08:39.515>See <00:08:39.655>how <00:08:39.796>the <00:08:39.936>phases <00:08:40.076>build <00:08:40.216>on <00:08:40.356>each <00:08:40.496>other?

152
00:08:41.797 --> 00:08:43.776
<00:08:41.797>The <00:08:42.147>assessment <00:08:42.497>informed <00:08:42.847>the <00:08:43.197>documentation.

153
00:08:43.966 --> 00:08:47.396
<00:08:43.966>The <00:08:44.140>documentation <00:08:44.316>became <00:08:44.491>the <00:08:44.666>training <00:08:44.841>material. <00:08:45.016>Nothing <00:08:45.191>is <00:08:45.366>wasted.

154
00:08:47.476 --> 00:08:51.216
<00:08:47.476>Everything <00:08:47.631>connects. <00:08:47.787>The <00:08:47.942>advanced <00:08:48.098>training <00:08:48.253>wasn't, <00:08:48.409>"Here <00:08:48.564>is <00:08:48.720>how <00:08:48.876>Xray

155
00:08:51.256 --> 00:08:54.196
<00:08:51.256>works." <00:08:51.411>It <00:08:51.567>was, <00:08:51.722>"Here <00:08:51.878>is <00:08:52.033>how <00:08:52.189>we <00:08:52.344>work <00:08:52.500>with <00:08:52.656>Xray.

156
00:08:54.236 --> 00:08:57.916
<00:08:54.236>Here <00:08:54.411>is <00:08:54.586>our <00:08:54.761>naming <00:08:54.936>convention. <00:08:55.111>Here <00:08:55.286>is <00:08:55.461>our <00:08:55.636>workflow.

157
00:08:58.016 --> 00:09:01.016
<00:08:58.016>Here <00:08:58.116>is <00:08:58.216>what <00:08:58.315>we <00:08:58.415>are <00:08:58.516>monitoring," <00:08:58.616>which <00:08:58.716>I'll <00:08:58.815>get <00:08:58.915>to <00:08:59.016>next. <00:08:59.116>Here <00:08:59.216>is <00:08:59.315>the <00:08:59.415>why.

158
00:09:01.036 --> 00:09:02.625
<00:09:01.036>And <00:09:01.269>you <00:09:01.502>know <00:09:01.736>what? <00:09:01.969>Teams <00:09:02.202>appreciated <00:09:02.435>it.

159
00:09:02.736 --> 00:09:05.276
<00:09:02.736>Nobody <00:09:02.911>likes <00:09:03.086>sitting <00:09:03.261>through <00:09:03.436>training <00:09:03.611>that's <00:09:03.786>beneath <00:09:03.961>their <00:09:04.136>level.

160
00:09:05.676 --> 00:09:09.216
<00:09:05.676>Nobody <00:09:05.831>likes <00:09:05.987>training <00:09:06.142>that <00:09:06.298>is <00:09:06.453>disconnected <00:09:06.609>from <00:09:06.764>their <00:09:06.920>actual <00:09:07.076>work.

161
00:09:09.276 --> 00:09:12.636
<00:09:09.276>You <00:09:09.450>tailor <00:09:09.626>it. <00:09:09.800>People <00:09:09.976>engage. <00:09:10.151>When <00:09:10.325>people <00:09:10.501>engage, <00:09:10.675>they

162
00:09:12.696 --> 00:09:16.456
<00:09:12.696>retain. <00:09:12.871>When <00:09:13.046>they <00:09:13.221>retain, <00:09:13.396>they <00:09:13.571>actually <00:09:13.746>change <00:09:13.921>their <00:09:14.096>behavior,

163
00:09:16.736 --> 00:09:19.076
<00:09:16.736>which <00:09:16.936>is <00:09:17.136>the <00:09:17.336>whole <00:09:17.536>point. <00:09:17.736>Okay, <00:09:17.936>phase <00:09:18.136>four.

164
00:09:20.896 --> 00:09:24.696
<00:09:20.896>This <00:09:20.996>is <00:09:21.096>my <00:09:21.195>favorite <00:09:21.295>part. <00:09:21.396>This <00:09:21.496>is <00:09:21.596>the <00:09:21.695>part <00:09:21.795>where <00:09:21.896>my <00:09:21.996>developer <00:09:22.096>brain <00:09:22.195>went <00:09:22.295>fully

165
00:09:24.716 --> 00:09:27.976
<00:09:24.716>off <00:09:24.816>the <00:09:24.916>leash. <00:09:25.016>Let <00:09:25.116>me <00:09:25.216>paint <00:09:25.316>you <00:09:25.416>a <00:09:25.516>picture. <00:09:25.616>You <00:09:25.716>have <00:09:25.816>assessed <00:09:25.916>the <00:09:26.016>current <00:09:26.116>state.

166
00:09:28.276 --> 00:09:31.816
<00:09:28.276>You <00:09:28.403>have <00:09:28.530>written <00:09:28.657>the <00:09:28.785>docs. <00:09:28.912>You <00:09:29.039>have <00:09:29.166>trained <00:09:29.294>the <00:09:29.421>teams. <00:09:29.548>Now <00:09:29.675>what?

167
00:09:31.876 --> 00:09:35.516
<00:09:31.876>You <00:09:32.003>need <00:09:32.130>to <00:09:32.257>know, <00:09:32.385>is <00:09:32.512>it <00:09:32.639>working? <00:09:32.766>Are <00:09:32.894>people <00:09:33.021>following <00:09:33.148>the <00:09:33.276>practices?

168
00:09:35.836 --> 00:09:37.516
<00:09:35.836>Are <00:09:36.116>people <00:09:36.396>using <00:09:36.676>the <00:09:36.956>tool <00:09:37.236>correctly?

169
00:09:37.616 --> 00:09:41.405
<00:09:37.616>Or <00:09:37.716>did <00:09:37.816>they <00:09:37.915>nod <00:09:38.016>politely <00:09:38.116>during <00:09:38.216>training <00:09:38.316>and <00:09:38.415>then <00:09:38.516>go <00:09:38.616>right <00:09:38.716>back <00:09:38.816>doing <00:09:38.915>the <00:09:39.016>things

170
00:09:41.436 --> 00:09:45.296
<00:09:41.436>the <00:09:41.536>old <00:09:41.636>way? <00:09:41.736>I <00:09:41.836>thought <00:09:41.936>about <00:09:42.036>this <00:09:42.136>problem, <00:09:42.236>and <00:09:42.336>I <00:09:42.436>realized <00:09:42.536>I've <00:09:42.636>solved <00:09:42.736>this <00:09:42.836>before.

171
00:09:45.396 --> 00:09:47.376
<00:09:45.396>I <00:09:45.596>solve <00:09:45.795>it <00:09:45.996>every <00:09:46.195>single <00:09:46.396>day <00:09:46.596>in <00:09:46.795>code.

172
00:09:47.456 --> 00:09:51.186
<00:09:47.456>In <00:09:47.656>TDD, <00:09:47.856>test-driven <00:09:48.056>development, <00:09:48.256>you <00:09:48.456>write <00:09:48.656>tests <00:09:48.856>that

173
00:09:51.316 --> 00:09:53.356
<00:09:51.316>define <00:09:51.549>what <00:09:51.782>the <00:09:52.016>correct <00:09:52.249>behavior <00:09:52.482>looks <00:09:52.716>like.

174
00:09:53.696 --> 00:09:57.136
<00:09:53.696>Then <00:09:53.789>you <00:09:53.882>write <00:09:53.976>the <00:09:54.069>code <00:09:54.162>to <00:09:54.256>pass <00:09:54.349>the <00:09:54.442>tests. <00:09:54.536>The <00:09:54.629>tests <00:09:54.722>are <00:09:54.816>the <00:09:54.909>source <00:09:55.002>of <00:09:55.096>truth.

175
00:09:57.166 --> 00:10:00.776
<00:09:57.165>They're <00:09:57.366>automated. <00:09:57.565>They <00:09:57.766>are <00:09:57.965>objective. <00:09:58.165>They <00:09:58.366>are <00:09:58.565>repeatable.

176
00:10:01.016 --> 00:10:03.276
<00:10:01.016>They <00:10:01.190>don't <00:10:01.366>care <00:10:01.540>about <00:10:01.716>your <00:10:01.891>feeling <00:10:02.065>or <00:10:02.241>your <00:10:02.415>excuses.

177
00:10:03.496 --> 00:10:05.226
<00:10:03.496>Either <00:10:03.729>the <00:10:03.962>code <00:10:04.196>passes <00:10:04.429>or <00:10:04.662>it <00:10:04.896>doesn't.

178
00:10:05.276 --> 00:10:09.016
<00:10:05.276>So <00:10:05.376>I <00:10:05.476>thought, <00:10:05.575>what <00:10:05.675>if <00:10:05.776>I <00:10:05.876>apply <00:10:05.976>the <00:10:06.075>same <00:10:06.175>exact <00:10:06.276>pattern <00:10:06.376>to <00:10:06.476>the <00:10:06.575>tool <00:10:06.675>adoption?

179
00:10:09.156 --> 00:10:13.036
<00:10:09.156>And <00:10:09.249>here <00:10:09.342>is <00:10:09.435>what <00:10:09.529>we <00:10:09.622>did. <00:10:09.715>Step <00:10:09.809>one, <00:10:09.902>we <00:10:09.996>defined <00:10:10.089>a <00:10:10.182>simple <00:10:10.276>set <00:10:10.369>of <00:10:10.462>rules <00:10:10.555>for

180
00:10:13.096 --> 00:10:16.996
<00:10:13.096>correct <00:10:13.236>Xray <00:10:13.376>usage. <00:10:13.516>This <00:10:13.656>came <00:10:13.796>directly <00:10:13.936>from <00:10:14.076>the <00:10:14.216>documentation, <00:10:14.356>the <00:10:14.496>same

181
00:10:17.076 --> 00:10:18.736
<00:10:17.076>practices <00:10:17.356>we <00:10:17.636>have <00:10:17.916>trained <00:10:18.196>people <00:10:18.476>on.

182
00:10:18.776 --> 00:10:21.996
<00:10:18.776>Things <00:10:19.055>like <00:10:19.335>simple <00:10:19.616>rules, <00:10:19.896>binary <00:10:20.175>rules.

183
00:10:22.296 --> 00:10:25.176
<00:10:22.296>You <00:10:22.471>either <00:10:22.646>follow <00:10:22.821>them <00:10:22.996>or <00:10:23.171>you <00:10:23.346>didn't. <00:10:23.521>No <00:10:23.696>ambiguity.

184
00:10:25.206 --> 00:10:28.716
<00:10:25.206>I <00:10:25.361>wrote <00:10:25.517>scripts <00:10:25.672>using <00:10:25.828>Xray <00:10:25.983>API <00:10:26.139>and <00:10:26.294>Jira <00:10:26.450>API <00:10:26.606>that

185
00:10:28.796 --> 00:10:31.616
<00:10:28.796>automatically <00:10:28.996>check <00:10:29.196>those <00:10:29.396>rules <00:10:29.596>across <00:10:29.796>every <00:10:29.996>team's <00:10:30.196>work.

186
00:10:31.716 --> 00:10:35.616
<00:10:31.716>This <00:10:31.823>is <00:10:31.931>where <00:10:32.039>being <00:10:32.146>a <00:10:32.254>developer <00:10:32.362>in <00:10:32.469>management <00:10:32.577>becomes <00:10:32.685>kind <00:10:32.792>of <00:10:32.900>like <00:10:33.008>a <00:10:33.116>superpower.

187
00:10:35.736 --> 00:10:39.516
<00:10:35.736>I <00:10:35.836>didn't <00:10:35.936>have <00:10:36.036>to <00:10:36.136>manually <00:10:36.236>review <00:10:36.336>thousands <00:10:36.436>of <00:10:36.536>tests. <00:10:36.636>I <00:10:36.736>wrote <00:10:36.836>code <00:10:36.936>to <00:10:37.036>do <00:10:37.136>it.

188
00:10:39.656 --> 00:10:43.616
<00:10:39.656>Every <00:10:39.772>day, <00:10:39.889>the <00:10:40.006>scripts <00:10:40.122>ran, <00:10:40.239>pulled <00:10:40.356>the <00:10:40.472>data, <00:10:40.589>checked <00:10:40.705>the <00:10:40.822>rules, <00:10:40.939>and <00:10:41.055>generated

189
00:10:43.636 --> 00:10:46.836
<00:10:43.636>the <00:10:43.791>report. <00:10:43.947>We <00:10:44.102>presented <00:10:44.258>these <00:10:44.413>findings <00:10:44.569>to <00:10:44.724>the <00:10:44.880>team <00:10:45.036>regularly,

190
00:10:47.056 --> 00:10:50.556
<00:10:47.056>consistently, <00:10:47.196>and <00:10:47.336>here's <00:10:47.476>where <00:10:47.616>the <00:10:47.756>magic <00:10:47.896>happened. <00:10:48.036>The <00:10:48.176>reports <00:10:48.316>were <00:10:48.456>objective.

191
00:10:50.596 --> 00:10:54.016
<00:10:50.596>They <00:10:50.771>weren't <00:10:50.946>someone's <00:10:51.121>opinion. <00:10:51.296>They <00:10:51.471>weren't <00:10:51.646>a <00:10:51.821>manager's <00:10:51.996>subjective

192
00:10:54.176 --> 00:10:58.116
<00:10:54.176>assessment. <00:10:54.376>They <00:10:54.576>were <00:10:54.776>automated <00:10:54.976>checks <00:10:55.176>upon <00:10:55.376>previously <00:10:55.576>agreed

193
00:10:58.196 --> 00:11:00.916
<00:10:58.196>rules. <00:10:58.371>It <00:10:58.546>removed <00:10:58.721>so <00:10:58.896>much <00:10:59.071>friction <00:10:59.246>from <00:10:59.421>the <00:10:59.596>conversations.

194
00:11:00.956 --> 00:11:04.436
<00:11:00.956>When <00:11:01.049>I <00:11:01.142>saw <00:11:01.236>a <00:11:01.329>team <00:11:01.422>read <00:11:01.516>on <00:11:01.609>the <00:11:01.702>dashboard, <00:11:01.796>the <00:11:01.889>conversation <00:11:01.982>wasn't, <00:11:02.076>"I <00:11:02.169>think <00:11:02.262>you <00:11:02.356>are

195
00:11:04.506 --> 00:11:08.126
<00:11:04.506>doing <00:11:04.633>it <00:11:04.760>wrong." <00:11:04.887>It <00:11:05.015>was, <00:11:05.142>"Here <00:11:05.269>are <00:11:05.396>12 <00:11:05.524>test <00:11:05.651>cases <00:11:05.778>missing <00:11:05.906>the

196
00:11:08.176 --> 00:11:08.996
<00:11:08.176>required <00:11:08.914>field."

197
00:11:09.876 --> 00:11:12.536
<00:11:09.876>Specific, <00:11:10.576>actionable, <00:11:11.276>unemotional.

198
00:11:12.616 --> 00:11:15.956
<00:11:12.616>Now, <00:11:12.732>here's <00:11:12.849>the <00:11:12.966>part <00:11:13.082>that <00:11:13.199>I <00:11:13.316>love <00:11:13.432>the <00:11:13.549>most. <00:11:13.665>The <00:11:13.782>analogy <00:11:13.899>goes <00:11:14.016>deeper.

199
00:11:16.036 --> 00:11:19.936
<00:11:16.036>In <00:11:16.163>TDD, <00:11:16.290>sometimes <00:11:16.417>the <00:11:16.545>test <00:11:16.672>fails, <00:11:16.799>and <00:11:16.926>it's <00:11:17.054>not <00:11:17.181>because <00:11:17.308>the <00:11:17.436>code

200
00:11:19.996 --> 00:11:22.276
<00:11:19.996>is <00:11:20.196>wrong, <00:11:20.396>it's <00:11:20.596>because <00:11:20.795>the <00:11:20.996>test <00:11:21.196>is <00:11:21.396>wrong.

201
00:11:22.316 --> 00:11:26.176
<00:11:22.316>The <00:11:22.423>test <00:11:22.531>was <00:11:22.639>too <00:11:22.746>strict, <00:11:22.854>or <00:11:22.962>it <00:11:23.069>was <00:11:23.177>testing <00:11:23.285>the <00:11:23.392>wrong <00:11:23.500>thing, <00:11:23.608>or <00:11:23.716>the

202
00:11:26.196 --> 00:11:29.516
<00:11:26.196>requirement <00:11:26.336>changed <00:11:26.476>and <00:11:26.616>nobody <00:11:26.756>updated <00:11:26.896>the <00:11:27.036>test. <00:11:27.176>The <00:11:27.316>same <00:11:27.456>thing <00:11:27.596>here.

203
00:11:29.656 --> 00:11:32.676
<00:11:29.656>Sometimes <00:11:29.795>a <00:11:29.935>team <00:11:30.075>would <00:11:30.215>push <00:11:30.356>back <00:11:30.496>on <00:11:30.636>a <00:11:30.776>rule, <00:11:30.915>and <00:11:31.055>sometimes

204
00:11:34.016 --> 00:11:37.576
<00:11:34.016>they <00:11:34.123>were <00:11:34.231>right. <00:11:34.339>The <00:11:34.446>rule <00:11:34.554>was <00:11:34.662>too <00:11:34.769>complex, <00:11:34.877>or <00:11:34.985>it <00:11:35.092>didn't <00:11:35.200>account <00:11:35.308>for <00:11:35.415>their

205
00:11:37.616 --> 00:11:41.356
<00:11:37.616>specific <00:11:37.756>context, <00:11:37.896>or <00:11:38.036>it <00:11:38.175>was <00:11:38.316>checking <00:11:38.456>something <00:11:38.596>that <00:11:38.736>it <00:11:38.876>didn't <00:11:39.016>actually

206
00:11:41.416 --> 00:11:45.116
<00:11:41.415>matter. <00:11:41.543>And <00:11:41.670>in <00:11:41.797>those <00:11:41.925>cases, <00:11:42.052>we <00:11:42.179>dig <00:11:42.306>in. <00:11:42.434>We <00:11:42.561>updated <00:11:42.688>the <00:11:42.815>rule.

207
00:11:45.436 --> 00:11:49.316
<00:11:45.436>Just <00:11:45.518>like <00:11:45.600>you <00:11:45.683>fix <00:11:45.765>a <00:11:45.847>flaky <00:11:45.930>test. <00:11:46.012>The <00:11:46.094>system <00:11:46.177>has <00:11:46.259>to <00:11:46.341>be <00:11:46.424>fair <00:11:46.506>for <00:11:46.588>people <00:11:46.671>to <00:11:46.753>trust <00:11:46.836>it.

208
00:11:49.376 --> 00:11:53.276
<00:11:49.376>If <00:11:49.492>people <00:11:49.609>see <00:11:49.726>that <00:11:49.842>the <00:11:49.959>rules <00:11:50.076>are <00:11:50.192>rigid <00:11:50.309>and <00:11:50.425>arbitrary, <00:11:50.542>they <00:11:50.659>stop <00:11:50.776>caring

209
00:11:53.336 --> 00:11:57.256
<00:11:53.336>about <00:11:53.452>compliance. <00:11:53.569>If <00:11:53.686>they <00:11:53.802>see <00:11:53.919>that <00:11:54.036>the <00:11:54.152>rules <00:11:54.269>are <00:11:54.386>reasonable, <00:11:54.502>evolving, <00:11:54.619>and <00:11:54.736>open

210
00:11:57.336 --> 00:12:00.856
<00:11:57.336>to <00:11:57.452>legitimate <00:11:57.569>challenge, <00:11:57.686>they <00:11:57.802>buy <00:11:57.919>in. <00:11:58.036>So <00:11:58.152>the <00:11:58.269>full <00:11:58.386>loop <00:11:58.502>looks <00:11:58.619>like <00:11:58.736>this.

211
00:12:01.016 --> 00:12:04.876
<00:12:01.016>Define <00:12:01.171>rules, <00:12:01.327>teams <00:12:01.482>work, <00:12:01.638>scripts <00:12:01.793>check, <00:12:01.949>rules <00:12:02.104>are <00:12:02.260>defined <00:12:02.415>on

212
00:12:04.976 --> 00:12:08.436
<00:12:04.976>feedback. <00:12:05.209>Repeat. <00:12:05.442>It's <00:12:05.676>TDD. <00:12:05.909>It's <00:12:06.142>continuous <00:12:06.376>integration.

213
00:12:08.476 --> 00:12:12.356
<00:12:08.476>It's <00:12:08.616>observability. <00:12:08.756>It's <00:12:08.896>all <00:12:09.036>the <00:12:09.176>things <00:12:09.316>we <00:12:09.456>already <00:12:09.596>believe <00:12:09.736>as <00:12:09.876>developers

214
00:12:12.456 --> 00:12:16.416
<00:12:12.456>applied <00:12:12.563>to <00:12:12.671>people <00:12:12.779>and <00:12:12.886>processes. <00:12:12.994>And <00:12:13.102>let <00:12:13.209>me <00:12:13.317>say <00:12:13.425>it <00:12:13.532>one <00:12:13.640>more <00:12:13.748>time, <00:12:13.856>because

215
00:12:16.436 --> 00:12:19.576
<00:12:16.436>I <00:12:16.576>think <00:12:16.716>this <00:12:16.856>is <00:12:16.996>the <00:12:17.136>core <00:12:17.276>insight <00:12:17.416>for <00:12:17.556>this <00:12:17.696>whole <00:12:17.836>presentation.

216
00:12:19.916 --> 00:12:22.236
<00:12:19.916>My <00:12:20.196>monitoring <00:12:20.476>scripts <00:12:20.756>are <00:12:21.036>the <00:12:21.316>tests.

217
00:12:22.676 --> 00:12:24.756
<00:12:22.676>The <00:12:22.909>team's <00:12:23.142>tools <00:12:23.376>usage <00:12:23.609>is <00:12:23.842>the <00:12:24.076>code.

218
00:12:24.896 --> 00:12:28.716
<00:12:24.896>They <00:12:25.051>need <00:12:25.207>to <00:12:25.362>make <00:12:25.518>their <00:12:25.673>usage <00:12:25.829>Passed <00:12:25.984>my <00:12:26.140>rules <00:12:26.295>exactly

219
00:12:28.796 --> 00:12:32.015
<00:12:28.796>like <00:12:28.923>making <00:12:29.050>the <00:12:29.177>code <00:12:29.305>pass <00:12:29.432>a <00:12:29.559>test <00:12:29.686>suite. <00:12:29.814>That's <00:12:29.941>TDD <00:12:30.068>for <00:12:30.196>people.

220
00:12:33.416 --> 00:12:36.956
<00:12:33.415>Let's <00:12:33.616>zoom <00:12:33.815>out. <00:12:34.016>Four <00:12:34.215>phases, <00:12:34.415>assess, <00:12:34.616>document, <00:12:34.815>train,

221
00:12:37.396 --> 00:12:39.696
<00:12:37.396>monitor. <00:12:37.596>Each <00:12:37.795>one <00:12:37.996>builds <00:12:38.195>on <00:12:38.396>the <00:12:38.596>last <00:12:38.795>one.

222
00:12:40.096 --> 00:12:43.136
<00:12:40.096>Each <00:12:40.296>one <00:12:40.496>has <00:12:40.696>a <00:12:40.896>clear <00:12:41.096>software <00:12:41.296>development <00:12:41.496>parallel.

223
00:12:43.196 --> 00:12:46.836
<00:12:43.196>And <00:12:43.296>here's <00:12:43.396>the <00:12:43.496>thing <00:12:43.596>I <00:12:43.696>want <00:12:43.796>you <00:12:43.896>to <00:12:43.996>take <00:12:44.096>away. <00:12:44.196>This <00:12:44.296>isn't <00:12:44.396>specific <00:12:44.496>to <00:12:44.596>X-ray.

224
00:12:47.016 --> 00:12:48.746
<00:12:47.016>This <00:12:47.295>isn't <00:12:47.575>specific <00:12:47.856>to <00:12:48.136>test <00:12:48.415>management.

225
00:12:48.906 --> 00:12:51.436
<00:12:48.906>This <00:12:49.139>isn't <00:12:49.372>even <00:12:49.606>specific <00:12:49.839>to <00:12:50.072>software <00:12:50.305>tools.

226
00:12:51.456 --> 00:12:55.236
<00:12:51.456>Migrating <00:12:51.631>your <00:12:51.806>CI/CD <00:12:51.981>pipeline, <00:12:52.156>assess <00:12:52.331>the <00:12:52.506>current <00:12:52.681>builds, <00:12:52.856>document

227
00:12:55.336 --> 00:12:58.836
<00:12:55.336>specific <00:12:55.569>pipeline <00:12:55.802>processes, <00:12:56.036>document <00:12:56.269>specific <00:12:56.502>pipeline <00:12:56.736>patterns,

228
00:12:59.256 --> 00:13:01.096
<00:12:59.256>train <00:12:59.606>the <00:12:59.956>teams, <00:13:00.305>monitor <00:13:00.656>adoption.

229
00:13:01.216 --> 00:13:03.996
<00:13:01.216>Switching <00:13:01.566>CRM <00:13:01.916>platforms, <00:13:02.266>same <00:13:02.616>framework.

230
00:13:04.376 --> 00:13:07.616
<00:13:04.376>Rolling <00:13:04.531>out <00:13:04.687>a <00:13:04.842>new <00:13:04.998>design <00:13:05.153>system, <00:13:05.309>same <00:13:05.464>framework. <00:13:05.620>Tools <00:13:05.776>change.

231
00:13:07.876 --> 00:13:10.316
<00:13:07.876>Domains <00:13:08.342>change. <00:13:08.809>Frameworks <00:13:09.276>hold.

232
00:13:10.596 --> 00:13:13.636
<00:13:10.596>DRY <00:13:10.876>your <00:13:11.156>documentation. <00:13:11.436>TDD <00:13:11.716>your <00:13:11.996>adoption.

233
00:13:13.976 --> 00:13:16.216
<00:13:13.976>Read <00:13:14.256>legacy <00:13:14.536>code <00:13:14.816>before <00:13:15.096>you <00:13:15.376>refactor.

234
00:13:16.596 --> 00:13:17.216
<00:13:16.596>And <00:13:17.154>always

235
00:13:18.416 --> 00:13:21.636
<00:13:18.416>log <00:13:18.556>your <00:13:18.696>decisions. <00:13:18.836>I <00:13:18.976>want <00:13:19.116>to <00:13:19.256>be <00:13:19.396>honest <00:13:19.536>for <00:13:19.676>a <00:13:19.816>second.

236
00:13:22.016 --> 00:13:25.376
<00:13:22.016>When <00:13:22.123>I <00:13:22.231>first <00:13:22.339>got <00:13:22.446>this <00:13:22.554>assignment, <00:13:22.662>I <00:13:22.769>was <00:13:22.877>a <00:13:22.985>little <00:13:23.092>lost. <00:13:23.200>I'm <00:13:23.308>a <00:13:23.415>developer.

237
00:13:25.516 --> 00:13:28.996
<00:13:25.516>I <00:13:25.671>write <00:13:25.827>code. <00:13:25.982>I <00:13:26.138>debug <00:13:26.293>things. <00:13:26.449>I <00:13:26.604>think <00:13:26.760>in <00:13:26.915>systems,

238
00:13:29.216 --> 00:13:33.146
<00:13:29.216>logic, <00:13:29.316>APIs, <00:13:29.416>and <00:13:29.516>all <00:13:29.616>of <00:13:29.716>a <00:13:29.816>sudden, <00:13:29.916>I'm <00:13:30.016>in <00:13:30.116>a <00:13:30.216>room <00:13:30.316>full <00:13:30.416>of <00:13:30.516>people <00:13:30.616>that

239
00:13:33.276 --> 00:13:36.976
<00:13:33.276>don't <00:13:33.392>care <00:13:33.509>about <00:13:33.626>any <00:13:33.742>of <00:13:33.859>that. <00:13:33.976>They <00:13:34.092>care <00:13:34.209>about <00:13:34.325>their <00:13:34.442>daily <00:13:34.559>work, <00:13:34.675>their

240
00:13:36.996 --> 00:13:40.976
<00:13:36.996>deadlines, <00:13:37.112>their <00:13:37.229>comfort <00:13:37.346>with <00:13:37.462>a <00:13:37.579>tool <00:13:37.696>that <00:13:37.812>they <00:13:37.929>have <00:13:38.045>used <00:13:38.162>for <00:13:38.279>years, <00:13:38.396>and

241
00:13:41.056 --> 00:13:43.816
<00:13:41.056>I'm <00:13:41.183>supposed <00:13:41.310>to <00:13:41.437>get <00:13:41.565>them <00:13:41.692>to <00:13:41.819>change. <00:13:41.946>But <00:13:42.074>here's <00:13:42.201>what <00:13:42.328>I <00:13:42.456>learned.

242
00:13:43.956 --> 00:13:47.876
<00:13:43.956>Mental <00:13:44.083>models <00:13:44.210>I <00:13:44.337>built <00:13:44.465>as <00:13:44.592>a <00:13:44.719>developer <00:13:44.846>weren't <00:13:44.974>useless <00:13:45.101>in <00:13:45.228>this <00:13:45.356>context.

243
00:13:47.936 --> 00:13:50.896
<00:13:47.936>They <00:13:48.063>were <00:13:48.190>exactly <00:13:48.317>what <00:13:48.445>I <00:13:48.572>needed. <00:13:48.699>I <00:13:48.826>just <00:13:48.954>had <00:13:49.081>to <00:13:49.208>translate <00:13:49.336>them.

244
00:13:50.936 --> 00:13:53.776
<00:13:50.936>People <00:13:51.136>aren't <00:13:51.336>functions. <00:13:51.536>You <00:13:51.736>can't <00:13:51.936>just <00:13:52.136>refactor <00:13:52.336>them.

245
00:13:54.036 --> 00:13:56.916
<00:13:54.036>But <00:13:54.211>you <00:13:54.386>can <00:13:54.561>observe, <00:13:54.736>you <00:13:54.911>can <00:13:55.086>document, <00:13:55.261>test, <00:13:55.436>iterate.

246
00:13:56.956 --> 00:13:59.356
<00:13:56.956>You <00:13:57.189>can <00:13:57.422>be <00:13:57.656>rigorous <00:13:57.889>without <00:13:58.122>being <00:13:58.356>rigid.

247
00:13:59.476 --> 00:14:03.026
<00:13:59.476>You <00:13:59.603>can <00:13:59.730>automate <00:13:59.857>the <00:13:59.985>boring <00:14:00.112>stuff <00:14:00.239>and <00:14:00.366>spend <00:14:00.494>your <00:14:00.621>human <00:14:00.748>energy <00:14:00.876>on

248
00:14:03.156 --> 00:14:05.776
<00:14:03.156>conversations <00:14:03.389>that <00:14:03.622>actually <00:14:03.856>matter. <00:14:04.089>I'm <00:14:04.322>a <00:14:04.555>developer.

249
00:14:06.196 --> 00:14:08.916
<00:14:06.196>I <00:14:06.336>had <00:14:06.476>a <00:14:06.616>management <00:14:06.756>problem, <00:14:06.896>so <00:14:07.036>I <00:14:07.176>treated <00:14:07.316>it <00:14:07.456>as <00:14:07.596>code.

250
00:14:09.246 --> 00:14:11.356
<00:14:09.246>And <00:14:09.526>honestly, <00:14:09.805>it <00:14:10.086>worked <00:14:10.366>pretty <00:14:10.646>well.

251
00:14:11.476 --> 00:14:15.076
<00:14:11.476>If <00:14:11.651>you're <00:14:11.826>facing <00:14:12.001>a <00:14:12.176>migration, <00:14:12.351>any <00:14:12.526>migration, <00:14:12.701>try <00:14:12.876>this

252
00:14:15.116 --> 00:14:18.976
<00:14:15.116>framework. <00:14:15.232>And <00:14:15.349>if <00:14:15.466>you <00:14:15.582>are <00:14:15.699>a <00:14:15.816>developer <00:14:15.932>who <00:14:16.049>just <00:14:16.165>got <00:14:16.282>thrown <00:14:16.399>into <00:14:16.516>a

253
00:14:18.996 --> 00:14:22.716
<00:14:18.996>role <00:14:19.136>that <00:14:19.276>you <00:14:19.415>didn't <00:14:19.555>expect, <00:14:19.696>trust <00:14:19.836>your <00:14:19.976>instincts. <00:14:20.116>Think <00:14:20.256>in <00:14:20.396>systems.

254
00:14:22.736 --> 00:14:24.956
<00:14:22.736>Principles <00:14:23.086>transfer. <00:14:23.436>Thanks <00:14:23.786>for <00:14:24.136>watching.