WEBVTT

1
00:00:14.679 --> 00:00:17.679
<v Speaker 1>Hey everybody, and welcome back to another episode of Adventures

2
00:00:17.719 --> 00:00:21.199
<v Speaker 1>in DevOps. This week, on our panel we have Jeffrey Girlman, Hey,

3
00:00:21.280 --> 00:00:23.160
<v Speaker 1>check today doing all right?

4
00:00:23.480 --> 00:00:26.199
<v Speaker 2>We also have Caleb Fernari, Hey, Chuck, how's it going?

5
00:00:26.760 --> 00:00:27.359
<v Speaker 2>Doing well?

6
00:00:27.399 --> 00:00:30.120
<v Speaker 1>I'm Charles Maxwood from dev chat dot tv. Just by

7
00:00:30.160 --> 00:00:32.119
<v Speaker 1>way of announcement, we're starting a new show, or I

8
00:00:32.159 --> 00:00:35.119
<v Speaker 1>guess I'm starting a new show. We released first episode

9
00:00:35.119 --> 00:00:36.920
<v Speaker 1>this morning as we record this. It's called The dev

10
00:00:36.960 --> 00:00:39.960
<v Speaker 1>Influencer Show. You can find it at dev influencers dot com,

11
00:00:40.039 --> 00:00:43.520
<v Speaker 1>slash podcast, and I bet you can guess what it's about,

12
00:00:43.640 --> 00:00:48.399
<v Speaker 1>talking about being an influencer in the developer and devop spaces.

13
00:00:48.439 --> 00:00:51.079
<v Speaker 1>So if you're interested in that, go check out the show.

14
00:00:51.479 --> 00:00:53.560
<v Speaker 1>I'm also doing an accelerator and you can find more

15
00:00:53.679 --> 00:00:56.039
<v Speaker 1>about that at dev influencers dot com. We have a

16
00:00:56.039 --> 00:01:00.000
<v Speaker 1>special guest this week, and that is James Donahue. James,

17
00:01:00.039 --> 00:01:02.520
<v Speaker 1>do you want to say hello and introduce yourself all

18
00:01:02.520 --> 00:01:04.719
<v Speaker 1>the way from the Britain and BBC.

19
00:01:05.079 --> 00:01:05.239
<v Speaker 3>Hi?

20
00:01:05.359 --> 00:01:08.319
<v Speaker 4>Yeah, James, I'm a software engineer at the BBC. I'm

21
00:01:08.359 --> 00:01:10.359
<v Speaker 4>really happy to be on the show. Thanks for having me.

22
00:01:10.640 --> 00:01:11.480
<v Speaker 2>Yeah, thanks for coming.

23
00:01:11.519 --> 00:01:13.519
<v Speaker 1>I mean some of my favorite shows come out of

24
00:01:13.560 --> 00:01:17.200
<v Speaker 1>the BBC, Doctor Who and Downton Abbey, which are very

25
00:01:17.280 --> 00:01:18.200
<v Speaker 1>much not alike.

26
00:01:19.879 --> 00:01:22.159
<v Speaker 2>Yeah, I have enjoyed those shows.

27
00:01:22.640 --> 00:01:24.959
<v Speaker 1>Great British Baking Show is another one that started at

28
00:01:24.959 --> 00:01:27.400
<v Speaker 1>the BBC. I don't think they own it anymore.

29
00:01:27.000 --> 00:01:30.400
<v Speaker 4>But yeah, oh yeah, Roy Pokua, Yeah, everyone loves that show.

30
00:01:30.599 --> 00:01:30.920
<v Speaker 2>Yeah.

31
00:01:31.079 --> 00:01:35.920
<v Speaker 1>So you're you're like famous adjacent, right, we'll just say that, Yeah,

32
00:01:35.920 --> 00:01:38.079
<v Speaker 1>you wrote this article on codeer Views. And what was

33
00:01:38.079 --> 00:01:40.799
<v Speaker 1>interesting is is that we we lined it up on

34
00:01:40.840 --> 00:01:43.719
<v Speaker 1>this show and MICHAELA was asking me what shows to

35
00:01:43.760 --> 00:01:44.920
<v Speaker 1>get it on, and I was like, well, it's kind

36
00:01:44.920 --> 00:01:46.840
<v Speaker 1>of good for any of the shows, and she's like,

37
00:01:46.879 --> 00:01:49.560
<v Speaker 1>can I get it on the devop show? And initially

38
00:01:49.640 --> 00:01:52.680
<v Speaker 1>I told her no. And then because because usually I

39
00:01:52.680 --> 00:01:55.560
<v Speaker 1>see the article a name, I don't see the author name,

40
00:01:55.599 --> 00:01:57.159
<v Speaker 1>and so you get on and I'm trying to make

41
00:01:57.200 --> 00:01:58.400
<v Speaker 1>this connection, like what are.

42
00:01:58.319 --> 00:01:59.000
<v Speaker 2>We talking about here?

43
00:01:59.359 --> 00:02:02.120
<v Speaker 1>But I realized that we're doing a lot of infrastructuring

44
00:02:02.120 --> 00:02:05.159
<v Speaker 1>code these days, right, whether it's hey, I'm going to

45
00:02:05.200 --> 00:02:07.879
<v Speaker 1>go spin up this virtual server and then run chef

46
00:02:07.959 --> 00:02:10.879
<v Speaker 1>or Puppet or something against it, or whether or not

47
00:02:10.919 --> 00:02:13.479
<v Speaker 1>we have some provisioning software that goes out and manages

48
00:02:13.520 --> 00:02:16.319
<v Speaker 1>our network or manages our servers, or whether we have

49
00:02:16.400 --> 00:02:18.840
<v Speaker 1>something that manages things for Kubernetes or things like that,

50
00:02:19.159 --> 00:02:21.280
<v Speaker 1>and so those code reviews are just as important as

51
00:02:21.280 --> 00:02:23.759
<v Speaker 1>the other code reviews were doing. So I just kind

52
00:02:23.759 --> 00:02:25.360
<v Speaker 1>of want to give people a little bit of background.

53
00:02:25.360 --> 00:02:27.800
<v Speaker 1>This does apply to what you're doing in DevOps, but

54
00:02:28.280 --> 00:02:30.919
<v Speaker 1>to get us started, I was looking at this article

55
00:02:31.039 --> 00:02:33.840
<v Speaker 1>and you kind of explain, Hey, look, you know we

56
00:02:33.840 --> 00:02:37.800
<v Speaker 1>we had to go remote, and because of that, you know,

57
00:02:37.879 --> 00:02:41.800
<v Speaker 1>we experience certain things, and so we started doing the

58
00:02:41.840 --> 00:02:43.960
<v Speaker 1>code reviews in a certain way. And I was wondering

59
00:02:43.960 --> 00:02:46.840
<v Speaker 1>if you could tell that story, because I think this

60
00:02:47.039 --> 00:02:49.120
<v Speaker 1>is something that people are really going to identify with

61
00:02:49.159 --> 00:02:51.520
<v Speaker 1>that people are going to go, oh, yeah, we have

62
00:02:51.639 --> 00:02:55.000
<v Speaker 1>that problem, and you know, maybe this will help some

63
00:02:55.039 --> 00:02:57.080
<v Speaker 1>of them find that solution that they're looking for.

64
00:02:57.319 --> 00:02:58.599
<v Speaker 2>Right, Yeah, of course, happy to you.

65
00:02:59.280 --> 00:03:01.919
<v Speaker 4>So basically, the area that I work in at the

66
00:03:01.960 --> 00:03:06.080
<v Speaker 4>BBC's the World Service, and we have international news websites.

67
00:03:06.680 --> 00:03:10.360
<v Speaker 4>We have about thirty five million weekly users across the globe.

68
00:03:10.520 --> 00:03:12.800
<v Speaker 4>The sites are in forty different human languages as well,

69
00:03:12.879 --> 00:03:14.800
<v Speaker 4>so there's quite a lot of complexity in our code

70
00:03:14.800 --> 00:03:19.120
<v Speaker 4>base dealing with all of that internationalization and the fact

71
00:03:19.120 --> 00:03:22.159
<v Speaker 4>that it has a global audience, and we started rebuilding

72
00:03:22.199 --> 00:03:25.199
<v Speaker 4>that application a couple of years ago. We had an

73
00:03:25.280 --> 00:03:30.240
<v Speaker 4>old version that was a monolithic PHP applications service very well,

74
00:03:30.520 --> 00:03:33.800
<v Speaker 4>but it was time to update the technology and we

75
00:03:33.879 --> 00:03:36.319
<v Speaker 4>had lots of ideas new features we wanted to build.

76
00:03:37.039 --> 00:03:40.400
<v Speaker 4>And what happened was we went in quite a short

77
00:03:40.439 --> 00:03:43.520
<v Speaker 4>space of time from having about five developers working on

78
00:03:44.080 --> 00:03:49.120
<v Speaker 4>a new renderer. We built a React based isomorphic single

79
00:03:49.120 --> 00:03:52.960
<v Speaker 4>page application to replace the old monolith. I think we

80
00:03:53.000 --> 00:03:56.159
<v Speaker 4>had about five developers working on it initially and over

81
00:03:56.159 --> 00:03:58.120
<v Speaker 4>the course of really just a few months we went

82
00:03:58.159 --> 00:04:01.759
<v Speaker 4>from that to about thirty five developers. And also another

83
00:04:01.800 --> 00:04:04.639
<v Speaker 4>thing happened was that we went from all being based

84
00:04:04.680 --> 00:04:08.360
<v Speaker 4>in one office in London at Broadcasting House to being

85
00:04:08.599 --> 00:04:12.400
<v Speaker 4>distributed across different cities in the UK and also in

86
00:04:12.439 --> 00:04:14.800
<v Speaker 4>other countries as well in Africa. We had some developers

87
00:04:15.439 --> 00:04:18.399
<v Speaker 4>we were starting to have to get used to remote

88
00:04:18.519 --> 00:04:22.319
<v Speaker 4>first development, and this is before the pandemic, this is

89
00:04:22.360 --> 00:04:24.720
<v Speaker 4>before you know, the big changes of last year. We

90
00:04:24.720 --> 00:04:28.199
<v Speaker 4>were having to adapt to scaling quite quickly and also

91
00:04:28.240 --> 00:04:31.319
<v Speaker 4>being remote first all the time, and that's when we

92
00:04:31.360 --> 00:04:34.360
<v Speaker 4>started to notice that something interesting was happening to code reviews.

93
00:04:35.079 --> 00:04:36.560
<v Speaker 4>Some of our code views were taking out a bit

94
00:04:36.560 --> 00:04:38.720
<v Speaker 4>longer than we'd like. We noticed there were some problems

95
00:04:38.720 --> 00:04:41.480
<v Speaker 4>where code reviews would spend a long time going on.

96
00:04:41.519 --> 00:04:43.560
<v Speaker 4>There'd be a lot of comments on the pull requests,

97
00:04:43.879 --> 00:04:46.759
<v Speaker 4>a lot of back and forth between different people. A

98
00:04:46.800 --> 00:04:49.160
<v Speaker 4>lot of new engineers were contributing to the code base,

99
00:04:49.279 --> 00:04:51.959
<v Speaker 4>and not all of them really knew how we did

100
00:04:51.959 --> 00:04:55.279
<v Speaker 4>code reviews or how we approached them, and we felt

101
00:04:55.319 --> 00:04:57.839
<v Speaker 4>that there was probably a lot of tacit assumptions in

102
00:04:57.879 --> 00:05:00.360
<v Speaker 4>the way we were doing code reviews. We also had

103
00:05:00.360 --> 00:05:02.040
<v Speaker 4>a bit of feedback from some of our developers that

104
00:05:02.040 --> 00:05:05.199
<v Speaker 4>they found the process quite confusing and quite stressful sometimes.

105
00:05:05.839 --> 00:05:07.800
<v Speaker 4>And it was really at that point that we thought, Okay,

106
00:05:07.839 --> 00:05:09.399
<v Speaker 4>we need to take a step back from this. We

107
00:05:09.439 --> 00:05:12.600
<v Speaker 4>need to talk about what is this code review process for?

108
00:05:12.800 --> 00:05:14.319
<v Speaker 2>Why do we do code reviews?

109
00:05:14.560 --> 00:05:16.720
<v Speaker 4>And the interesting thing was that none of us could

110
00:05:16.720 --> 00:05:18.160
<v Speaker 4>really remember ever having.

111
00:05:17.920 --> 00:05:19.199
<v Speaker 2>Had this conversation before.

112
00:05:19.319 --> 00:05:22.000
<v Speaker 4>We'd all been doing code reviews for years, and we

113
00:05:22.160 --> 00:05:24.040
<v Speaker 4>never actually said why do we do this?

114
00:05:24.120 --> 00:05:25.439
<v Speaker 2>What are we trying to get out of this?

115
00:05:26.000 --> 00:05:28.120
<v Speaker 4>And that was really the starting point, we wanted to

116
00:05:28.160 --> 00:05:31.360
<v Speaker 4>talk about it honestly and openly and really find out

117
00:05:31.360 --> 00:05:32.879
<v Speaker 4>what everyone wanted to get out of the code of

118
00:05:32.920 --> 00:05:33.600
<v Speaker 4>view process.

119
00:05:34.040 --> 00:05:34.720
<v Speaker 2>That makes sense.

120
00:05:34.759 --> 00:05:37.680
<v Speaker 1>It's funny too because as you go to kind of

121
00:05:37.680 --> 00:05:41.639
<v Speaker 1>that remote first or primarily remote culture, right, because some

122
00:05:41.720 --> 00:05:45.920
<v Speaker 1>companies went almost fully remote. In other companies they either

123
00:05:45.959 --> 00:05:49.600
<v Speaker 1>had some kind of requirement or managed to have hold

124
00:05:49.639 --> 00:05:53.879
<v Speaker 1>on to having some of their folks stay in the office, right.

125
00:05:54.240 --> 00:05:56.480
<v Speaker 1>But as you move even part of your team out

126
00:05:56.480 --> 00:06:00.600
<v Speaker 1>of the office, the requirements on your communication goal way up.

127
00:06:01.399 --> 00:06:04.560
<v Speaker 1>And so it's it's definitely interesting that, Yeah, all of

128
00:06:04.600 --> 00:06:07.839
<v Speaker 1>a sudden you're having discussions about how you communicate in

129
00:06:07.879 --> 00:06:11.000
<v Speaker 1>these ways. I'm a little curious before we dive into

130
00:06:11.319 --> 00:06:15.480
<v Speaker 1>how to start approaching this though, or other panelists Jeffrey

131
00:06:15.519 --> 00:06:18.680
<v Speaker 1>and Caleb, I mean, what, what what's been your experience

132
00:06:18.720 --> 00:06:20.920
<v Speaker 1>with this kind of thing, going remote in this way,

133
00:06:21.040 --> 00:06:22.240
<v Speaker 1>especially through COVID.

134
00:06:22.560 --> 00:06:24.480
<v Speaker 3>Yeah, I know, I think you sort of hit it

135
00:06:24.519 --> 00:06:28.079
<v Speaker 3>on the head. I mean, it totally made us really

136
00:06:28.120 --> 00:06:31.120
<v Speaker 3>refocus on how we communicate and and you know, you

137
00:06:31.160 --> 00:06:33.759
<v Speaker 3>just can't walk over to the to the next person's

138
00:06:33.800 --> 00:06:36.199
<v Speaker 3>cube or you know, or say hey, let's just grab

139
00:06:36.199 --> 00:06:38.279
<v Speaker 3>a breakout room or something. I mean a physical breakout

140
00:06:38.360 --> 00:06:41.879
<v Speaker 3>room that a zoom breakout room, right, and that changed

141
00:06:41.879 --> 00:06:44.680
<v Speaker 3>a lot. But I'm curious. I want to i want

142
00:06:44.720 --> 00:06:48.240
<v Speaker 3>to throw a question back to James. I'm curious what

143
00:06:48.360 --> 00:06:52.279
<v Speaker 3>you guys came up with, because when I read your

144
00:06:52.360 --> 00:06:54.959
<v Speaker 3>article on Medium, I was thinking, Wow, you know you

145
00:06:55.079 --> 00:06:58.319
<v Speaker 3>ask all these questions about like why are we doing

146
00:06:58.399 --> 00:07:02.000
<v Speaker 3>code reviews? And I was thinking, you know what you said,

147
00:07:02.000 --> 00:07:04.959
<v Speaker 3>it's all the above, and you're like, what fifteen or

148
00:07:05.000 --> 00:07:08.319
<v Speaker 3>twenty different answers? What did you guys come up with?

149
00:07:08.600 --> 00:07:11.519
<v Speaker 3>What is the reason, what's the motivation?

150
00:07:12.000 --> 00:07:12.279
<v Speaker 2>Well?

151
00:07:12.399 --> 00:07:14.879
<v Speaker 4>Yeah, I mean you're right, we did list a lot

152
00:07:14.920 --> 00:07:18.040
<v Speaker 4>of things that we thought code reviews before. I think

153
00:07:18.079 --> 00:07:21.160
<v Speaker 4>in the blog post I put like fifteen different possible

154
00:07:21.199 --> 00:07:23.600
<v Speaker 4>reasons that you could do code reviews. The thing we

155
00:07:23.720 --> 00:07:25.959
<v Speaker 4>kept on coming back to time and time again, the

156
00:07:26.000 --> 00:07:29.519
<v Speaker 4>motivation for code reviews that we seemed to be hitting

157
00:07:29.519 --> 00:07:32.839
<v Speaker 4>no matter how we talked about it was communication and

158
00:07:32.959 --> 00:07:36.360
<v Speaker 4>understanding a lot of the things that I summarized in

159
00:07:36.399 --> 00:07:39.600
<v Speaker 4>the article really came out of discussions in our teams

160
00:07:39.600 --> 00:07:43.399
<v Speaker 4>where we were asking what code reviews for? So you know,

161
00:07:43.480 --> 00:07:46.199
<v Speaker 4>if you're if you're if you're discussing different approaches on

162
00:07:46.240 --> 00:07:49.040
<v Speaker 4>a code review, that's a form of communication. If you're

163
00:07:49.079 --> 00:07:53.680
<v Speaker 4>linking to other documentation or resources, that's communication. You know,

164
00:07:53.720 --> 00:07:58.000
<v Speaker 4>you might be checking that work meets certain quality standards,

165
00:07:58.480 --> 00:08:02.079
<v Speaker 4>or thinking about readability and maintainability, those kind of things.

166
00:08:03.240 --> 00:08:05.319
<v Speaker 2>Communication seems to be the recurring theme here.

167
00:08:05.439 --> 00:08:08.279
<v Speaker 4>So we felt that that was really something we like,

168
00:08:08.360 --> 00:08:09.839
<v Speaker 4>we wanted to put at the heart of what we

169
00:08:09.839 --> 00:08:11.839
<v Speaker 4>were saying that code reviews werefore because a lot of

170
00:08:11.839 --> 00:08:14.720
<v Speaker 4>people have got different expectations about what code reviews are

171
00:08:14.720 --> 00:08:16.920
<v Speaker 4>really for them. That and that kind of surprises people

172
00:08:16.959 --> 00:08:18.800
<v Speaker 4>when you when you say to them, hate it's more

173
00:08:18.800 --> 00:08:20.439
<v Speaker 4>about communication than anything else.

174
00:08:20.839 --> 00:08:23.879
<v Speaker 3>Yeah, absolutely, I always felt like it was. There was

175
00:08:23.920 --> 00:08:29.720
<v Speaker 3>almost this you know, unspoken idea that it's all about quality,

176
00:08:29.759 --> 00:08:32.279
<v Speaker 3>code quality, and hey, it's just up to snuff. And

177
00:08:33.039 --> 00:08:36.120
<v Speaker 3>you know, I mean, I've got a security background, so

178
00:08:36.320 --> 00:08:39.600
<v Speaker 3>I'm in cybersecurity and application security all the time. And

179
00:08:39.639 --> 00:08:43.120
<v Speaker 3>so when you know, folks in my world think about

180
00:08:43.240 --> 00:08:46.960
<v Speaker 3>code reviewers, we're always focused on thinking about code defects

181
00:08:47.039 --> 00:08:50.159
<v Speaker 3>that are of a security in nature. Right, how do

182
00:08:50.200 --> 00:08:53.720
<v Speaker 3>we how do we try and find those underlying issues

183
00:08:53.720 --> 00:08:56.639
<v Speaker 3>in code and sometimes just to go off on a

184
00:08:56.720 --> 00:08:58.759
<v Speaker 3>tingent for a moment. I think that's interesting is that,

185
00:08:59.480 --> 00:09:02.039
<v Speaker 3>you know, what, do a lot of reverse engineering of

186
00:09:02.159 --> 00:09:06.960
<v Speaker 3>code to sort of understand, you know, where can somebody

187
00:09:06.960 --> 00:09:09.600
<v Speaker 3>who's trying to do something nefarious, where can they sort

188
00:09:09.639 --> 00:09:12.960
<v Speaker 3>of grab a toe hold and do something interesting, whether

189
00:09:13.000 --> 00:09:16.120
<v Speaker 3>it's around access control, authentication, something like that, you know,

190
00:09:16.320 --> 00:09:19.600
<v Speaker 3>in the software base. And so I just sort of

191
00:09:19.600 --> 00:09:23.519
<v Speaker 3>gravitate towards that idea that code reviews are always about,

192
00:09:23.879 --> 00:09:28.240
<v Speaker 3>you know, finding code defects. And it's interesting because I

193
00:09:28.279 --> 00:09:31.080
<v Speaker 3>think there's a lot to what you're saying that it

194
00:09:31.159 --> 00:09:33.399
<v Speaker 3>really should be a lot about just getting the whole

195
00:09:33.399 --> 00:09:36.320
<v Speaker 3>team together and sort of communicating and you know, sort

196
00:09:36.320 --> 00:09:38.480
<v Speaker 3>of more on getting them on the same page, because

197
00:09:39.240 --> 00:09:41.840
<v Speaker 3>you know, at least generically speaking, I can see a

198
00:09:41.879 --> 00:09:45.039
<v Speaker 3>lot of value in that and then doing you know,

199
00:09:45.120 --> 00:09:48.600
<v Speaker 3>if you've got specific purposes like what I'm describing, then

200
00:09:48.639 --> 00:09:51.320
<v Speaker 3>that might be a different use case, a different reason,

201
00:09:51.559 --> 00:09:54.840
<v Speaker 3>and maybe a different setting for running a code review

202
00:09:55.200 --> 00:09:57.679
<v Speaker 3>outside of I think what you're describing. But I don't

203
00:09:57.679 --> 00:09:59.240
<v Speaker 3>want to put words in your mouth, but I'm sort

204
00:09:59.279 --> 00:10:02.000
<v Speaker 3>of just trying to get an old Sheldon in my

205
00:10:02.080 --> 00:10:03.000
<v Speaker 3>own mind.

206
00:10:03.440 --> 00:10:05.840
<v Speaker 4>Sure, you know, I think you're absolutely right, Jeffrey. I mean,

207
00:10:06.519 --> 00:10:09.080
<v Speaker 4>the view that code reviews are about finding defects is

208
00:10:09.919 --> 00:10:12.879
<v Speaker 4>primarily about finding defectses is a really widely held one.

209
00:10:13.519 --> 00:10:15.360
<v Speaker 4>One of the things I mentioned in the article is

210
00:10:15.360 --> 00:10:19.000
<v Speaker 4>there's a really interesting piece of academic research that we've

211
00:10:19.000 --> 00:10:22.720
<v Speaker 4>done at Microsoft in I think twenty thirteen, where they

212
00:10:22.840 --> 00:10:27.639
<v Speaker 4>examined hundreds of code reviews across large parts of their

213
00:10:27.679 --> 00:10:30.480
<v Speaker 4>code base, and they analyzed each code of view in

214
00:10:30.559 --> 00:10:33.360
<v Speaker 4>terms of what the actual outcome of that code review was.

215
00:10:33.399 --> 00:10:36.440
<v Speaker 4>They looked at every comment on the poor request and

216
00:10:36.480 --> 00:10:40.559
<v Speaker 4>they categorized them all, and they basically figured out that

217
00:10:40.600 --> 00:10:43.120
<v Speaker 4>the most common outcome of code reviews was basically people

218
00:10:43.159 --> 00:10:46.200
<v Speaker 4>asking questions about something, other people explaining things, and that

219
00:10:46.240 --> 00:10:49.879
<v Speaker 4>process of communication, learning about the code or discussing the

220
00:10:49.919 --> 00:10:53.879
<v Speaker 4>code is the most common outcome. Whereas when they interviewed

221
00:10:53.879 --> 00:10:55.440
<v Speaker 4>the developers and said what do you think is the

222
00:10:55.440 --> 00:10:57.879
<v Speaker 4>most common outcome of code reviews, they said, oh, it's

223
00:10:57.879 --> 00:11:00.360
<v Speaker 4>all about finding defects. But there was a just found

224
00:11:00.360 --> 00:11:02.559
<v Speaker 4>The funny effects is it does happen. Of course, it

225
00:11:02.600 --> 00:11:04.960
<v Speaker 4>does happen. Sometimes people will find a bug in code

226
00:11:05.039 --> 00:11:07.559
<v Speaker 4>just from looking at it visually, but there's actually a

227
00:11:07.559 --> 00:11:10.879
<v Speaker 4>lot of other stuff going on. There's there's coaching and mentoring,

228
00:11:11.279 --> 00:11:13.600
<v Speaker 4>there's you know, exchanging ideas and approaches.

229
00:11:13.639 --> 00:11:14.440
<v Speaker 2>There's not all of it.

230
00:11:14.440 --> 00:11:16.600
<v Speaker 4>It's just about saying, hey, we found a bug, you

231
00:11:16.720 --> 00:11:18.879
<v Speaker 4>got this wrong, this needs to change, and although you

232
00:11:18.919 --> 00:11:20.480
<v Speaker 4>know that is one possible outcome.

233
00:11:20.679 --> 00:11:23.720
<v Speaker 1>Yeah, I like that in the sense that how do

234
00:11:23.759 --> 00:11:26.600
<v Speaker 1>I put it? Because when we do the code reviews,

235
00:11:26.919 --> 00:11:29.559
<v Speaker 1>a lot of the communication in the code reviews is

236
00:11:29.600 --> 00:11:32.080
<v Speaker 1>about that, right, I didn't see anything wrong with this,

237
00:11:32.600 --> 00:11:34.960
<v Speaker 1>and so I approved the pull request. That's kind of

238
00:11:34.960 --> 00:11:37.399
<v Speaker 1>how we run at work. I mean, we do mob programming,

239
00:11:37.960 --> 00:11:40.600
<v Speaker 1>so you know, we have different teams of like three

240
00:11:40.720 --> 00:11:43.519
<v Speaker 1>four people sometimes two people, you know, and we just

241
00:11:43.799 --> 00:11:46.840
<v Speaker 1>get on a remote call. It's exhausting, by the way,

242
00:11:47.120 --> 00:11:49.240
<v Speaker 1>and then we just we code all day. But then

243
00:11:49.480 --> 00:11:52.120
<v Speaker 1>we pass off our work in a PR to somebody

244
00:11:52.120 --> 00:11:55.080
<v Speaker 1>else who does a code review on it. And yeah,

245
00:11:55.159 --> 00:11:57.159
<v Speaker 1>a lot of it is just we want somebody to

246
00:11:57.200 --> 00:11:59.279
<v Speaker 1>look at it and give feedback on it.

247
00:11:59.320 --> 00:12:00.759
<v Speaker 2>But it's not that specific.

248
00:12:01.279 --> 00:12:03.720
<v Speaker 1>And I think that's something that I'm kind of pulling

249
00:12:03.759 --> 00:12:05.440
<v Speaker 1>out of this, out of your article and out of

250
00:12:05.440 --> 00:12:08.480
<v Speaker 1>what Jeffrey is pointing out, and what you're saying is that,

251
00:12:08.919 --> 00:12:12.039
<v Speaker 1>you know, we've got to basically open the door and say, hey, look,

252
00:12:12.039 --> 00:12:15.080
<v Speaker 1>it's okay for you to say, hey, I don't understand this.

253
00:12:15.200 --> 00:12:17.720
<v Speaker 2>Can you train me on it? Right? Or I don't know?

254
00:12:17.799 --> 00:12:20.399
<v Speaker 1>I you know, I don't understand this approach. Can you

255
00:12:20.440 --> 00:12:22.120
<v Speaker 1>explain to me why we went this way in not

256
00:12:22.159 --> 00:12:25.879
<v Speaker 1>a different way? Or I'm trying to understand this particular

257
00:12:25.960 --> 00:12:29.039
<v Speaker 1>area of code, you know, or maybe I do see

258
00:12:29.039 --> 00:12:32.559
<v Speaker 1>that this thing could be problematic, either for maintenance or security,

259
00:12:32.759 --> 00:12:34.960
<v Speaker 1>or you know, any of the other number of things

260
00:12:35.000 --> 00:12:37.279
<v Speaker 1>that we wind up coming back around to because they

261
00:12:37.360 --> 00:12:40.159
<v Speaker 1>bid us in the rear end at some point, right,

262
00:12:40.519 --> 00:12:42.799
<v Speaker 1>and you know, in those kind of fall toward defects.

263
00:12:43.120 --> 00:12:46.320
<v Speaker 1>But some of those are really kind of how do

264
00:12:46.399 --> 00:12:48.759
<v Speaker 1>I put it, they're they're kind of cloaked to something else,

265
00:12:48.840 --> 00:12:51.159
<v Speaker 1>you know, if it's a maintenance issue, and then we

266
00:12:51.240 --> 00:12:54.000
<v Speaker 1>eventually clean up what's causing the maintenance issue, it's not

267
00:12:54.000 --> 00:12:56.639
<v Speaker 1>necessarily a defect. It is a defect, but we don't

268
00:12:56.639 --> 00:12:57.840
<v Speaker 1>think of it in the same way as we think

269
00:12:57.879 --> 00:13:00.759
<v Speaker 1>of a bug, right because the code still works. It's

270
00:13:00.840 --> 00:13:03.159
<v Speaker 1>just every time we go change it. We have to

271
00:13:04.080 --> 00:13:05.440
<v Speaker 1>you know, jump through a whole bunch of hoops to

272
00:13:05.440 --> 00:13:07.679
<v Speaker 1>make sure we didn't break anything. It's a maintenance nightmare.

273
00:13:08.360 --> 00:13:10.759
<v Speaker 1>And so you know, and I can kind of imagine

274
00:13:10.759 --> 00:13:13.639
<v Speaker 1>the same thing with you know, whether it's infrastructure or

275
00:13:13.759 --> 00:13:17.000
<v Speaker 1>chef recipes or you know, whatever you're dealing with, that

276
00:13:17.120 --> 00:13:19.120
<v Speaker 1>same kind of thing. And so yeah, if somebody can

277
00:13:19.120 --> 00:13:21.639
<v Speaker 1>pass along, hey, look we do it this way because

278
00:13:21.679 --> 00:13:25.200
<v Speaker 1>we found that it saves us all these other hassles

279
00:13:25.200 --> 00:13:28.320
<v Speaker 1>in the back end. And what's funny is is sometimes

280
00:13:28.559 --> 00:13:30.639
<v Speaker 1>you'll get the new person in my I have a

281
00:13:30.639 --> 00:13:33.120
<v Speaker 1>fifteen year old who's playing video games now, so the

282
00:13:33.200 --> 00:13:36.679
<v Speaker 1>total nube will come in, right, and they'll say, oh, well,

283
00:13:36.679 --> 00:13:39.799
<v Speaker 1>why don't you try this other approach then? Right, that

284
00:13:39.879 --> 00:13:42.039
<v Speaker 1>has all those benefits you just listed for why you're

285
00:13:42.039 --> 00:13:45.000
<v Speaker 1>doing it this way, but also gives us this other

286
00:13:45.039 --> 00:13:47.039
<v Speaker 1>benefit that I'm seeing we might be able to add.

287
00:13:47.559 --> 00:13:49.759
<v Speaker 1>And then all of a sudden, you have a better process, right,

288
00:13:50.279 --> 00:13:54.679
<v Speaker 1>And by understanding and documenting and pushing and communicating, that

289
00:13:54.919 --> 00:13:58.039
<v Speaker 1>opens up all these doors. And that's really yeah, that's

290
00:13:58.039 --> 00:14:00.519
<v Speaker 1>what we're talking about with these code views. And that's

291
00:14:00.879 --> 00:14:03.320
<v Speaker 1>back to the original idea. It's all of the above.

292
00:14:03.960 --> 00:14:06.679
<v Speaker 1>It sounds like you have a process, you know, after

293
00:14:07.240 --> 00:14:09.919
<v Speaker 1>reading through this article, you have a process for conducting

294
00:14:09.919 --> 00:14:12.320
<v Speaker 1>these code reviews that make sure that all these things

295
00:14:12.320 --> 00:14:13.480
<v Speaker 1>get communicated about.

296
00:14:13.559 --> 00:14:13.720
<v Speaker 5>Right.

297
00:14:13.799 --> 00:14:16.159
<v Speaker 1>It's not just opening the door for it, it's explicitly

298
00:14:16.159 --> 00:14:19.360
<v Speaker 1>calling out, hey, are we thinking about security? Are we

299
00:14:19.399 --> 00:14:22.720
<v Speaker 1>thinking about code structure? Are we thinking about you know,

300
00:14:22.840 --> 00:14:26.399
<v Speaker 1>these different levels of concern so that at the end

301
00:14:26.440 --> 00:14:28.759
<v Speaker 1>of the day we know that we've covered our bases

302
00:14:28.799 --> 00:14:30.679
<v Speaker 1>here and we're communicating about the things that we care

303
00:14:30.720 --> 00:14:31.519
<v Speaker 1>about in our code.

304
00:14:31.679 --> 00:14:31.879
<v Speaker 2>Yeah.

305
00:14:31.919 --> 00:14:34.360
<v Speaker 4>Absolutely, I mean I think you've hit on an interesting

306
00:14:34.399 --> 00:14:36.440
<v Speaker 4>point there, which is about who does code reviews or

307
00:14:36.480 --> 00:14:39.360
<v Speaker 4>who can do a code review. We were quite clear

308
00:14:39.519 --> 00:14:41.639
<v Speaker 4>in the discussions we had at the BBC that we

309
00:14:41.720 --> 00:14:45.039
<v Speaker 4>thought that developers, engineers of all levels should participate in

310
00:14:45.080 --> 00:14:47.879
<v Speaker 4>the code view process. It shouldn't be a situation where

311
00:14:48.200 --> 00:14:50.360
<v Speaker 4>my code can only be reviewed by somebody who is,

312
00:14:50.960 --> 00:14:53.200
<v Speaker 4>you know, a pair of mine, or somebody with more

313
00:14:53.240 --> 00:14:55.799
<v Speaker 4>experience than me, or more familiarity with this than me.

314
00:14:56.600 --> 00:14:58.919
<v Speaker 4>Just for the reasons you've given that that quite often

315
00:14:58.960 --> 00:15:02.320
<v Speaker 4>you get really interesting perspectives and questions and challengers from

316
00:15:02.440 --> 00:15:06.080
<v Speaker 4>people who are new to develop new to engineering, new

317
00:15:06.120 --> 00:15:10.000
<v Speaker 4>to this particular code base, and so in order to

318
00:15:10.039 --> 00:15:13.200
<v Speaker 4>try and help facilitate that, we put some some prompts

319
00:15:13.200 --> 00:15:16.039
<v Speaker 4>and suggestions into our code reviews guide, where we're saying,

320
00:15:16.240 --> 00:15:18.000
<v Speaker 4>if you're a new developer, if you're need to this

321
00:15:18.039 --> 00:15:20.120
<v Speaker 4>code base, here are some things you can try when

322
00:15:20.159 --> 00:15:21.799
<v Speaker 4>you're doing a code review. Here are some things you

323
00:15:21.840 --> 00:15:24.759
<v Speaker 4>can ask Have you spotted something that looks a little

324
00:15:24.759 --> 00:15:26.720
<v Speaker 4>bit inconsistent? I mean you could ask the author to

325
00:15:26.759 --> 00:15:29.519
<v Speaker 4>explain that. Have you asked the author about if they've

326
00:15:29.519 --> 00:15:34.440
<v Speaker 4>considered security, performance, accessibility, other kinds of non functional requirements.

327
00:15:34.440 --> 00:15:36.840
<v Speaker 4>So a bit of a cheat sheet almost where you

328
00:15:36.840 --> 00:15:38.799
<v Speaker 4>can say, you know, these are things we should be

329
00:15:38.840 --> 00:15:41.559
<v Speaker 4>thinking about when we did code reviews. And it brings

330
00:15:41.679 --> 00:15:44.279
<v Speaker 4>more people in the team into that process, right. It

331
00:15:44.360 --> 00:15:47.840
<v Speaker 4>means that more junior engineers or less experienced engineers can

332
00:15:47.879 --> 00:15:51.759
<v Speaker 4>participate and actually give just as much value to that

333
00:15:51.840 --> 00:15:54.799
<v Speaker 4>process as people who you know, have been working on

334
00:15:54.840 --> 00:15:55.600
<v Speaker 4>the code for years.

335
00:15:56.080 --> 00:16:00.840
<v Speaker 6>What James is, when you're talking about kind of you know,

336
00:16:00.919 --> 00:16:04.759
<v Speaker 6>having junior developers doing code reviews and these kind of things,

337
00:16:05.120 --> 00:16:07.200
<v Speaker 6>it seems like a large part of what you're doing

338
00:16:07.279 --> 00:16:10.960
<v Speaker 6>is kind of reframing the intent of the code review.

339
00:16:11.159 --> 00:16:12.559
<v Speaker 6>And I don't know if this is a problem you

340
00:16:12.600 --> 00:16:16.399
<v Speaker 6>guys have had the BBC, but I've seen teams in

341
00:16:16.440 --> 00:16:20.200
<v Speaker 6>the past where junior developers very intimidated by the code

342
00:16:20.200 --> 00:16:22.879
<v Speaker 6>review process, and you know, it's kind of seen as

343
00:16:22.919 --> 00:16:26.200
<v Speaker 6>a gatekeeping role where they're checking in code and then

344
00:16:26.480 --> 00:16:29.039
<v Speaker 6>senior developers are looking at it and kind of you know,

345
00:16:29.600 --> 00:16:32.519
<v Speaker 6>going over it. So I really like the kind of

346
00:16:32.519 --> 00:16:34.919
<v Speaker 6>idea of reframing it so that it's you know, code

347
00:16:34.919 --> 00:16:39.320
<v Speaker 6>reviews are everyone's responsibility. It's a collaborative team process, and

348
00:16:39.360 --> 00:16:43.200
<v Speaker 6>it's more about the communication rather than the gatekeeping, even

349
00:16:43.200 --> 00:16:45.519
<v Speaker 6>though you still get maybe some of those gatekeeping functions

350
00:16:45.519 --> 00:16:48.759
<v Speaker 6>if you do need to have security reviews or have

351
00:16:48.879 --> 00:16:52.799
<v Speaker 6>senior developers reviewing code and looking over those things. Just

352
00:16:52.840 --> 00:16:55.440
<v Speaker 6>by reframing it you get all the benefits and maybe

353
00:16:55.600 --> 00:16:59.480
<v Speaker 6>a much better participation rate, particularly in a remote context

354
00:16:59.559 --> 00:17:03.399
<v Speaker 6>where onboarding developers can be a little bit more intimidating,

355
00:17:03.480 --> 00:17:06.200
<v Speaker 6>Especially for junior developers. You don't have that kind of

356
00:17:06.240 --> 00:17:09.160
<v Speaker 6>face time. You know, it's a little hard build team

357
00:17:09.160 --> 00:17:12.319
<v Speaker 6>cohesion remotely in those kind of things. Is that the

358
00:17:12.400 --> 00:17:15.680
<v Speaker 6>correct kind of analysis of the direction you're going with.

359
00:17:15.599 --> 00:17:17.920
<v Speaker 2>This, Yeah, absolutely, Caleb.

360
00:17:18.039 --> 00:17:21.839
<v Speaker 4>We found that, particularly we're going more remote first, that

361
00:17:22.519 --> 00:17:25.920
<v Speaker 4>junior developers, less experienced developers were quite wary of the

362
00:17:25.960 --> 00:17:29.000
<v Speaker 4>process and quite reluctant to get involved. And you know,

363
00:17:29.279 --> 00:17:31.000
<v Speaker 4>as we were saying earlier, you can't just lean over

364
00:17:31.039 --> 00:17:32.839
<v Speaker 4>to the person sat next to you at your desk

365
00:17:32.920 --> 00:17:35.640
<v Speaker 4>and you know, informally ask for help. Everything is a

366
00:17:35.640 --> 00:17:37.960
<v Speaker 4>bit more formal, a bit more structured once it's done

367
00:17:38.519 --> 00:17:43.200
<v Speaker 4>just via pull requests. We wanted to really encourage people

368
00:17:43.680 --> 00:17:46.319
<v Speaker 4>at old levels to get involved in that process. And yeah,

369
00:17:46.519 --> 00:17:49.039
<v Speaker 4>I think we were really reframing code of views a

370
00:17:49.079 --> 00:17:52.200
<v Speaker 4>little bit and make it feel making it seem more

371
00:17:52.200 --> 00:17:57.119
<v Speaker 4>like a collaborative process that is benefiting everybody in the team.

372
00:17:57.680 --> 00:17:59.200
<v Speaker 4>I mean, I think we have to recognize as well

373
00:17:59.240 --> 00:18:01.640
<v Speaker 4>that code views can be quite demanding, can be quite

374
00:18:01.640 --> 00:18:04.960
<v Speaker 4>stressful in fact, for people of all levels of experience.

375
00:18:05.000 --> 00:18:07.359
<v Speaker 4>You know, having your work looked at by other people

376
00:18:07.480 --> 00:18:10.599
<v Speaker 4>can be challenging sometimes, But at the same time, it's

377
00:18:10.640 --> 00:18:13.039
<v Speaker 4>part of being a software engineer that you people are

378
00:18:13.039 --> 00:18:14.279
<v Speaker 4>to look at your code and you have to be

379
00:18:14.319 --> 00:18:17.400
<v Speaker 4>able to receive feedback about your code and give feedback

380
00:18:17.440 --> 00:18:20.759
<v Speaker 4>on other's code and get comfortable with that process. So

381
00:18:21.640 --> 00:18:25.200
<v Speaker 4>there is obviously still a gatekeeping function within code reviews,

382
00:18:25.359 --> 00:18:28.480
<v Speaker 4>and there's an important role for that, but we wanted

383
00:18:28.519 --> 00:18:31.200
<v Speaker 4>to try and promote the idea that the team owns

384
00:18:31.240 --> 00:18:35.240
<v Speaker 4>the code collectively. It's not like up to an individual

385
00:18:35.279 --> 00:18:37.319
<v Speaker 4>person to decide whether something is okay or not.

386
00:18:37.359 --> 00:18:38.720
<v Speaker 2>It should be a collective decision.

387
00:18:39.160 --> 00:18:41.799
<v Speaker 4>People can have different perspectives on that, and to make

388
00:18:41.839 --> 00:18:44.240
<v Speaker 4>it a bit more of an approachable process that it's

389
00:18:44.279 --> 00:18:47.039
<v Speaker 4>not so seen as in a really intimidating thing where

390
00:18:47.480 --> 00:18:50.759
<v Speaker 4>this really senior experienced person will come and give a

391
00:18:50.839 --> 00:18:53.480
<v Speaker 4>verdict on your code. It's more of a dialogue where

392
00:18:53.519 --> 00:18:55.359
<v Speaker 4>they say, okay, so why do you approach the problem

393
00:18:55.400 --> 00:18:55.839
<v Speaker 4>this way?

394
00:18:56.119 --> 00:18:57.359
<v Speaker 2>Have you considered it this way?

395
00:18:57.759 --> 00:18:59.960
<v Speaker 4>It's not just, you know, just the kind of pure

396
00:19:00.079 --> 00:19:03.160
<v Speaker 4>gatekeeping process that it might have been seen as occasionally

397
00:19:03.160 --> 00:19:03.720
<v Speaker 4>in the past.

398
00:19:04.079 --> 00:19:06.359
<v Speaker 1>Yeah, I'm going to step into my confessional here for

399
00:19:06.400 --> 00:19:09.039
<v Speaker 1>a second, because so the job I'm in now when

400
00:19:09.079 --> 00:19:11.799
<v Speaker 1>I got hired, so my full time job, I'm actually

401
00:19:11.799 --> 00:19:14.799
<v Speaker 1>writing Ruby on rails and then I kind of dabble

402
00:19:14.839 --> 00:19:17.519
<v Speaker 1>and react. We're kind of sneaking that into the code

403
00:19:17.599 --> 00:19:21.400
<v Speaker 1>a bit now, and when I got hired. Just to

404
00:19:21.400 --> 00:19:24.160
<v Speaker 1>give a little bit more context, Ruby Rogues, which is

405
00:19:24.200 --> 00:19:26.960
<v Speaker 1>our longest running podcast on chat DOTV, has been running

406
00:19:26.960 --> 00:19:30.519
<v Speaker 1>for it will be ten years in about a month.

407
00:19:30.720 --> 00:19:30.920
<v Speaker 2>Oka.

408
00:19:31.559 --> 00:19:34.400
<v Speaker 1>And so I'm widely seen as an expert in Ruby

409
00:19:34.400 --> 00:19:36.880
<v Speaker 1>on rails and I was sold that way when they

410
00:19:36.960 --> 00:19:40.559
<v Speaker 1>hired me. Kay, they told everybody that works in the

411
00:19:40.599 --> 00:19:44.079
<v Speaker 1>office here in Utah, you know, this guy's an expert.

412
00:19:44.200 --> 00:19:47.359
<v Speaker 1>He's a dream hire. Blah blah blah blah. And every

413
00:19:47.359 --> 00:19:48.720
<v Speaker 1>time I do a code review, I feel like I

414
00:19:48.759 --> 00:19:50.880
<v Speaker 1>have to live up to that, right, And so it

415
00:19:51.079 --> 00:19:54.440
<v Speaker 1>feels that way for seniors sometimes too, right They feel

416
00:19:54.480 --> 00:19:56.279
<v Speaker 1>like they have to be the one to catch it,

417
00:19:56.319 --> 00:19:57.839
<v Speaker 1>they have to be the one to see it, they

418
00:19:57.880 --> 00:20:00.680
<v Speaker 1>have to be the one to know the answer to that.

419
00:20:01.000 --> 00:20:03.680
<v Speaker 1>And there are some parts of these applications that I

420
00:20:03.920 --> 00:20:06.559
<v Speaker 1>just have not really done a whole lot with and

421
00:20:06.599 --> 00:20:08.759
<v Speaker 1>I have to swallow my pride and take that too.

422
00:20:09.039 --> 00:20:11.440
<v Speaker 1>And so I think it's important for everybody at whatever

423
00:20:11.519 --> 00:20:14.759
<v Speaker 1>level you're at, to just realize, look, you've got to

424
00:20:15.079 --> 00:20:17.519
<v Speaker 1>you know, this is an opportunity for you to level

425
00:20:17.640 --> 00:20:19.759
<v Speaker 1>up as much as it is for an opportunity for

426
00:20:19.799 --> 00:20:21.200
<v Speaker 1>you to help somebody else level up.

427
00:20:21.400 --> 00:20:24.160
<v Speaker 3>You know, one thing I'm curious man, is well, I

428
00:20:24.240 --> 00:20:27.119
<v Speaker 3>guess two things. One is, you know, with everyone that

429
00:20:27.240 --> 00:20:30.599
<v Speaker 3>are coming into code views with a different mindset and

430
00:20:30.680 --> 00:20:32.599
<v Speaker 3>some of it being around, hey, how do we you know,

431
00:20:32.599 --> 00:20:36.519
<v Speaker 3>we want to find code defects? Did you or did

432
00:20:36.559 --> 00:20:38.799
<v Speaker 3>your team sort of decide or sort of come out

433
00:20:38.799 --> 00:20:41.880
<v Speaker 3>of this and say okay, in order to sort of

434
00:20:41.960 --> 00:20:44.160
<v Speaker 3>keep people focused on what we want them to be

435
00:20:44.240 --> 00:20:46.920
<v Speaker 3>doing and not just sort of you know, getting them

436
00:20:46.920 --> 00:20:50.200
<v Speaker 3>too stressed out about, you know, trying to find something

437
00:20:50.279 --> 00:20:53.519
<v Speaker 3>that may not even be there, right, did your team

438
00:20:53.599 --> 00:20:56.880
<v Speaker 3>sort of relook at well, maybe there's a better way

439
00:20:56.920 --> 00:20:59.519
<v Speaker 3>for us to find you know, let's get people's mindset

440
00:20:59.559 --> 00:21:02.839
<v Speaker 3>completely away from you know, I'm going to find something

441
00:21:02.880 --> 00:21:06.119
<v Speaker 3>wrong with somebody's code, right, and and and focus that

442
00:21:06.240 --> 00:21:08.480
<v Speaker 3>on hey, maybe we'll do a better job, or maybe

443
00:21:08.519 --> 00:21:11.599
<v Speaker 3>we'll sort of rethink how we formalize the QA function

444
00:21:11.759 --> 00:21:14.279
<v Speaker 3>or you know, testing or something like this. This way,

445
00:21:14.279 --> 00:21:18.880
<v Speaker 3>everyone understands that that's really where we do, that's where

446
00:21:18.920 --> 00:21:21.960
<v Speaker 3>we find code efacts, right, and and to really focus

447
00:21:22.000 --> 00:21:25.799
<v Speaker 3>people on the review process is not about that if

448
00:21:25.839 --> 00:21:29.440
<v Speaker 3>it comes up great, if not, so that that's My

449
00:21:29.480 --> 00:21:33.599
<v Speaker 3>first question is, you know, was there change in how

450
00:21:33.640 --> 00:21:34.400
<v Speaker 3>you also.

451
00:21:34.279 --> 00:21:37.319
<v Speaker 7>Thought about finding effects?

452
00:21:37.960 --> 00:21:40.960
<v Speaker 3>And my second question is coming out of this, I'm

453
00:21:41.000 --> 00:21:43.880
<v Speaker 3>not sure how long this has been put into practice now,

454
00:21:44.400 --> 00:21:47.920
<v Speaker 3>I'm curious that what have the outcomes been, Like have

455
00:21:47.960 --> 00:21:51.880
<v Speaker 3>you been you know, measuring instrumenting this and saying, hey, wow,

456
00:21:52.160 --> 00:21:54.319
<v Speaker 3>this is really cool. What we're finding is that the

457
00:21:54.400 --> 00:21:57.519
<v Speaker 3>result of all this effort has been that, I don't know,

458
00:21:57.839 --> 00:22:01.799
<v Speaker 3>our developers are much more productive more, everyone's much.

459
00:22:01.640 --> 00:22:05.279
<v Speaker 7>Happier because we're communicating better or I'm not sure. I'm

460
00:22:05.359 --> 00:22:06.559
<v Speaker 7>curious about those two areas.

461
00:22:07.000 --> 00:22:12.160
<v Speaker 1>Jesus team gets a thousand more code points per week, right, Yeah,

462
00:22:12.200 --> 00:22:13.640
<v Speaker 1>I can try to answer the second question.

463
00:22:14.599 --> 00:22:18.079
<v Speaker 4>So there's two sides to it, really, I suppose to

464
00:22:18.160 --> 00:22:23.079
<v Speaker 4>the qualitive quantitive side. Really, in terms of qualitative, we

465
00:22:23.079 --> 00:22:25.359
<v Speaker 4>we didn't really have a precise way of measuring that.

466
00:22:25.400 --> 00:22:29.960
<v Speaker 4>We had some discussions earlier on some feedback from some developers,

467
00:22:29.960 --> 00:22:32.240
<v Speaker 4>particularly ones that were new to working on the code

468
00:22:32.240 --> 00:22:33.880
<v Speaker 4>base on the teams, that they were finding the process

469
00:22:33.960 --> 00:22:38.079
<v Speaker 4>difficult and stressful. We then had some feedback later on

470
00:22:38.119 --> 00:22:40.640
<v Speaker 4>that things had improved and that there was there was

471
00:22:40.920 --> 00:22:44.119
<v Speaker 4>a view that things were now getting easier for especially

472
00:22:44.160 --> 00:22:47.559
<v Speaker 4>for new developers. That's kind of a very kind of

473
00:22:47.559 --> 00:22:52.079
<v Speaker 4>subjective thing. On the more sort of objective quantitive side,

474
00:22:52.079 --> 00:22:53.759
<v Speaker 4>we could see we had some software that we were

475
00:22:53.839 --> 00:22:56.480
<v Speaker 4>using to track the number of poor requests that were open,

476
00:22:56.599 --> 00:22:59.119
<v Speaker 4>how long those poor requests had been in code review,

477
00:22:59.400 --> 00:23:01.400
<v Speaker 4>how many could review cycles they've been through, and how

478
00:23:01.400 --> 00:23:05.440
<v Speaker 4>many comments from the pull requests. And we saw that

479
00:23:05.759 --> 00:23:07.839
<v Speaker 4>all of those measurements kind of moved in the direction

480
00:23:07.920 --> 00:23:09.640
<v Speaker 4>we wanted them to go in. So code was spending

481
00:23:09.720 --> 00:23:13.160
<v Speaker 4>less time in code review, it was going through less

482
00:23:13.319 --> 00:23:17.480
<v Speaker 4>revision cycles, and the result was we were actually merging

483
00:23:17.559 --> 00:23:20.880
<v Speaker 4>and shipping that code faster. Now, the code view process

484
00:23:20.960 --> 00:23:22.920
<v Speaker 4>wasn't the only thing that we changed during that time.

485
00:23:22.960 --> 00:23:24.359
<v Speaker 4>I've got to say there was a lot of changes

486
00:23:24.400 --> 00:23:25.880
<v Speaker 4>going on at the time. One of the other things

487
00:23:25.880 --> 00:23:28.720
<v Speaker 4>we were working on at the same time we tried, Charles,

488
00:23:28.759 --> 00:23:32.559
<v Speaker 4>you've spoken about mob programming or swarm programming.

489
00:23:32.279 --> 00:23:34.119
<v Speaker 2>We called it. We've tried that as well.

490
00:23:34.200 --> 00:23:36.400
<v Speaker 4>So we were doing a lot of work with mobbing

491
00:23:36.480 --> 00:23:40.200
<v Speaker 4>and additional pairing, and that may have also helped bring

492
00:23:40.240 --> 00:23:43.920
<v Speaker 4>down the burden of code reviews. I'm really interested to

493
00:23:43.920 --> 00:23:45.759
<v Speaker 4>hear what other people think about that because we found

494
00:23:45.839 --> 00:23:49.880
<v Speaker 4>that by doing more collaboration upfront before you get into

495
00:23:49.880 --> 00:23:53.000
<v Speaker 4>the code review stage, by having more voices and more

496
00:23:53.039 --> 00:23:56.759
<v Speaker 4>kind of perspectives heard during the initial implementation phase, quite

497
00:23:56.759 --> 00:23:59.599
<v Speaker 4>often that the sort of formal okay, now let's do

498
00:23:59.640 --> 00:24:02.160
<v Speaker 4>a code review part of this is actually tends to

499
00:24:02.200 --> 00:24:04.880
<v Speaker 4>be a lot smoother because a lot of that communication

500
00:24:04.960 --> 00:24:09.119
<v Speaker 4>has already happened, a lot of possible objections or concerns

501
00:24:09.160 --> 00:24:13.160
<v Speaker 4>have already been anticipated earlier on. So that was something

502
00:24:13.200 --> 00:24:14.599
<v Speaker 4>else we were trying at the same time. And I

503
00:24:14.599 --> 00:24:17.720
<v Speaker 4>think it's a complementary technique. It's not like you don't

504
00:24:17.759 --> 00:24:19.559
<v Speaker 4>have to do just that or just change your code

505
00:24:19.559 --> 00:24:22.920
<v Speaker 4>reviews process, that both things can kind of can kind

506
00:24:22.920 --> 00:24:25.319
<v Speaker 4>of help you achieve the same goal. But yeah, we

507
00:24:25.640 --> 00:24:28.119
<v Speaker 4>have seen we have seen improvements both in terms of

508
00:24:28.400 --> 00:24:30.440
<v Speaker 4>the rate in which we're able to deliver stuff and

509
00:24:30.480 --> 00:24:35.000
<v Speaker 4>also subjective feedback from anonymous feedback from developers in the

510
00:24:35.039 --> 00:24:37.240
<v Speaker 4>team that they were finding the process just easier and

511
00:24:37.240 --> 00:24:38.000
<v Speaker 4>more enjoyable.

512
00:24:38.480 --> 00:24:42.559
<v Speaker 6>What are some tools that you've found helpful when doing

513
00:24:42.599 --> 00:24:44.960
<v Speaker 6>code reviews or you know, you mentioned something you're using

514
00:24:45.000 --> 00:24:48.319
<v Speaker 6>to track code reviews and things like that. What does

515
00:24:48.319 --> 00:24:50.839
<v Speaker 6>this look like on a practical level as far as

516
00:24:50.880 --> 00:24:53.359
<v Speaker 6>tools and process when you're doing the code amusement, are

517
00:24:53.400 --> 00:24:57.119
<v Speaker 6>you using GitHub whole requests or do you have other,

518
00:24:57.240 --> 00:25:00.680
<v Speaker 6>you know, sort of specialized software or less known tools

519
00:25:00.680 --> 00:25:02.319
<v Speaker 6>that you're using to help with that.

520
00:25:03.000 --> 00:25:06.400
<v Speaker 4>Yes, so we use GitHub for really most of our

521
00:25:06.440 --> 00:25:08.839
<v Speaker 4>work these days, so it's good. Pull request is the

522
00:25:08.839 --> 00:25:10.839
<v Speaker 4>main way that we track back, and then we have

523
00:25:10.920 --> 00:25:13.119
<v Speaker 4>some tooling dot on top of that that we were

524
00:25:13.240 --> 00:25:15.960
<v Speaker 4>using to keep an eye on the number of pull

525
00:25:16.000 --> 00:25:18.319
<v Speaker 4>requests that were open and the how long things have

526
00:25:18.359 --> 00:25:22.000
<v Speaker 4>been in the code review stage. And yeah, we still

527
00:25:22.079 --> 00:25:25.799
<v Speaker 4>use things like jerror as well for tracking some more

528
00:25:25.839 --> 00:25:27.039
<v Speaker 4>project level activity.

529
00:25:27.200 --> 00:25:29.079
<v Speaker 2>So those are some of the tools we're using.

530
00:25:29.160 --> 00:25:30.880
<v Speaker 4>We do have a few in house tools that we

531
00:25:30.960 --> 00:25:33.559
<v Speaker 4>use as well to just just keep an eye on

532
00:25:33.920 --> 00:25:36.359
<v Speaker 4>the rate that things are being worked on and how

533
00:25:36.400 --> 00:25:39.279
<v Speaker 4>long it's taking things to seem to actually make it

534
00:25:39.319 --> 00:25:39.799
<v Speaker 4>to production.

535
00:25:40.279 --> 00:25:40.480
<v Speaker 2>Yeah.

536
00:25:40.480 --> 00:25:42.599
<v Speaker 1>I'm going to chime in here too on a couple

537
00:25:42.680 --> 00:25:45.759
<v Speaker 1>of things that got brought up. One for the mob programming,

538
00:25:45.759 --> 00:25:49.079
<v Speaker 1>I completely agree it helps head off so many issues

539
00:25:49.119 --> 00:25:52.240
<v Speaker 1>because you know, I'll be focused on the code. The

540
00:25:52.279 --> 00:25:55.559
<v Speaker 1>other two guys that I work with every day are

541
00:25:55.839 --> 00:25:58.440
<v Speaker 1>paying attention, and they'll call stuff out, Hey, why are

542
00:25:58.440 --> 00:25:59.960
<v Speaker 1>we doing this? Why are we doing it that way?

543
00:26:00.240 --> 00:26:01.920
<v Speaker 1>What about this? What about the other thing? And I

544
00:26:01.960 --> 00:26:04.519
<v Speaker 1>do the same thing for them, and we just turn

545
00:26:04.599 --> 00:26:08.480
<v Speaker 1>out way better code, you know, from the maintainability, from

546
00:26:08.480 --> 00:26:11.960
<v Speaker 1>the reliability, from the performance, from pretty much any measurement

547
00:26:12.000 --> 00:26:15.799
<v Speaker 1>you have for code. We just do, you know, And

548
00:26:15.880 --> 00:26:18.960
<v Speaker 1>so they they make my code look better what I commit,

549
00:26:19.079 --> 00:26:22.279
<v Speaker 1>and you know, all around vice versa. We do most

550
00:26:22.279 --> 00:26:25.200
<v Speaker 1>of that over Microsoft Teams. I will not tell you

551
00:26:25.279 --> 00:26:29.240
<v Speaker 1>how much I dislike Microsoft Teams, but it works. We

552
00:26:29.319 --> 00:26:32.359
<v Speaker 1>also use poll requests on GitHub. That's our primary way

553
00:26:32.359 --> 00:26:34.680
<v Speaker 1>of doing that, and so all the feedback goes into

554
00:26:34.680 --> 00:26:38.160
<v Speaker 1>the pole request and then when it gets merged, then

555
00:26:38.359 --> 00:26:40.319
<v Speaker 1>you know, it's all still in GitHub if we ever

556
00:26:40.359 --> 00:26:42.200
<v Speaker 1>have to go back and look at it. We don't

557
00:26:42.200 --> 00:26:44.720
<v Speaker 1>have any real in house tools, and we don't track

558
00:26:44.799 --> 00:26:49.160
<v Speaker 1>how long they sit in pole requests because honestly, it's

559
00:26:49.200 --> 00:26:52.880
<v Speaker 1>abnormal for a pole request within our organization because we

560
00:26:52.920 --> 00:26:55.519
<v Speaker 1>actually review code from the other projects that we're not

561
00:26:55.599 --> 00:26:59.839
<v Speaker 1>working on. Within the organization, we everybody reviews everybody's stuff,

562
00:27:00.119 --> 00:27:01.960
<v Speaker 1>and so if you don't understand what's going on, in

563
00:27:02.039 --> 00:27:03.279
<v Speaker 1>the other project.

564
00:27:02.839 --> 00:27:03.720
<v Speaker 2>That's fine.

565
00:27:03.400 --> 00:27:05.920
<v Speaker 1>You just ask, right, but you have to stay on

566
00:27:05.960 --> 00:27:08.079
<v Speaker 1>top of your review, So if they answer, you have

567
00:27:08.119 --> 00:27:09.240
<v Speaker 1>to be on top of it because you don't want

568
00:27:09.240 --> 00:27:11.359
<v Speaker 1>to hold them up either. But yeah, that works pretty

569
00:27:11.359 --> 00:27:13.720
<v Speaker 1>well for us. It'd be abnormal if anything stated in

570
00:27:13.720 --> 00:27:16.759
<v Speaker 1>the queue for longer than a day for us, so

571
00:27:16.799 --> 00:27:18.720
<v Speaker 1>that that hasn't been an issue for us. But yeah,

572
00:27:18.759 --> 00:27:21.160
<v Speaker 1>those are the same tools we're using. I will also

573
00:27:21.240 --> 00:27:23.839
<v Speaker 1>not tell you how much I dislike I mean hate,

574
00:27:23.880 --> 00:27:27.079
<v Speaker 1>I mean completely hate despised Era. But we used zero

575
00:27:27.160 --> 00:27:29.440
<v Speaker 1>as well. So yeah, you know a lot of the

576
00:27:29.440 --> 00:27:32.440
<v Speaker 1>same approach. But I think we're also you're working for

577
00:27:32.480 --> 00:27:36.200
<v Speaker 1>a fairly large company. I'm working for a large enterprise.

578
00:27:36.279 --> 00:27:38.799
<v Speaker 1>I'm deliberately not saying where I work, but I work

579
00:27:38.839 --> 00:27:40.759
<v Speaker 1>for a fairly large enterprise company here in the US.

580
00:27:41.000 --> 00:27:43.319
<v Speaker 4>Yeah, I'm one of the you mentioned teams that one

581
00:27:43.400 --> 00:27:45.720
<v Speaker 4>of the one of the things that we found when

582
00:27:45.759 --> 00:27:48.960
<v Speaker 4>going through this process thinking about code reviews was I

583
00:27:49.000 --> 00:27:51.799
<v Speaker 4>think some of this, probably myself included that I was

584
00:27:51.799 --> 00:27:53.759
<v Speaker 4>guilty of this at one point, was thinking that a

585
00:27:53.799 --> 00:27:56.559
<v Speaker 4>code review and a pull request are the same thing,

586
00:27:56.680 --> 00:27:58.319
<v Speaker 4>and the way you do code reviews is you write

587
00:27:58.359 --> 00:28:01.039
<v Speaker 4>comments on a pull request. And when we started to

588
00:28:01.079 --> 00:28:03.160
<v Speaker 4>talk about code reviews and think about how we could

589
00:28:03.160 --> 00:28:06.039
<v Speaker 4>do them, we realized there's so many other ways of

590
00:28:06.119 --> 00:28:08.440
<v Speaker 4>doing code reviews. You know, the idea of code reviews

591
00:28:09.000 --> 00:28:14.240
<v Speaker 4>long predates GitHub obviously, and often adding comments to a

592
00:28:14.240 --> 00:28:18.039
<v Speaker 4>poor request on GitHub is the least efficient way of doing.

593
00:28:17.920 --> 00:28:18.559
<v Speaker 2>A code review.

594
00:28:18.640 --> 00:28:21.519
<v Speaker 4>You know, it can be very powerful, particularly where you've

595
00:28:21.559 --> 00:28:24.880
<v Speaker 4>got distributed teams, as we've already said, people remote working

596
00:28:24.880 --> 00:28:28.240
<v Speaker 4>people in different time zones. It can be very efficient

597
00:28:28.279 --> 00:28:32.359
<v Speaker 4>if you need that asynchronous communication. But there are you know,

598
00:28:32.400 --> 00:28:34.880
<v Speaker 4>there are situations where the most efficient way of doing

599
00:28:34.880 --> 00:28:37.279
<v Speaker 4>a code review would be to get on a team's

600
00:28:37.319 --> 00:28:39.440
<v Speaker 4>call or a zoom call or something else with the

601
00:28:39.640 --> 00:28:42.880
<v Speaker 4>other person, the author if you're the reviewer, and talk

602
00:28:42.960 --> 00:28:46.599
<v Speaker 4>through their changes and try and understand their reasoning, the

603
00:28:46.680 --> 00:28:50.920
<v Speaker 4>thinking behind the change they made, talk about alternatives. Yes,

604
00:28:51.000 --> 00:28:53.319
<v Speaker 4>you might want to then think about summarizing the results

605
00:28:53.319 --> 00:28:55.640
<v Speaker 4>of those conversations in some forms so it can be

606
00:28:55.680 --> 00:28:58.960
<v Speaker 4>persisted to the poor request or some other forms so

607
00:28:59.000 --> 00:29:02.079
<v Speaker 4>that other people can can you know, see the outcome

608
00:29:02.079 --> 00:29:04.640
<v Speaker 4>of that discussion. But one of the things we try

609
00:29:04.680 --> 00:29:07.240
<v Speaker 4>to encourage our engineers to do is if you're having

610
00:29:07.319 --> 00:29:10.119
<v Speaker 4>a conversation with somebody on a pull request and you're

611
00:29:10.119 --> 00:29:13.039
<v Speaker 4>getting a comment and sort of back and forth comment report,

612
00:29:13.160 --> 00:29:16.839
<v Speaker 4>comment reply, that's usually a sign okay, maybe this would

613
00:29:16.839 --> 00:29:18.920
<v Speaker 4>benefit from a call. Maybe we should talk about this

614
00:29:18.960 --> 00:29:21.759
<v Speaker 4>face to face, because it's just, you know, it's just

615
00:29:21.880 --> 00:29:25.920
<v Speaker 4>not the most efficient way of two people explaining their thinking.

616
00:29:26.119 --> 00:29:28.119
<v Speaker 4>You know, getting on a call is often going to

617
00:29:28.160 --> 00:29:31.319
<v Speaker 4>save time and save misunderstandings as well.

618
00:29:31.519 --> 00:29:32.799
<v Speaker 2>Man, that sounds like work.

619
00:29:34.200 --> 00:29:37.400
<v Speaker 1>Sorry, I I it's I'm I'm being a little bit

620
00:29:37.440 --> 00:29:40.079
<v Speaker 1>tongue in cheek. But the reality is is that that's

621
00:29:40.160 --> 00:29:42.799
<v Speaker 1>kind of, at least for us, our default behavior. But

622
00:29:42.839 --> 00:29:46.240
<v Speaker 1>I don't think anybody's like formalized that as something that hey,

623
00:29:46.240 --> 00:29:47.920
<v Speaker 1>if you're having back and forth, get on a call,

624
00:29:48.720 --> 00:29:50.599
<v Speaker 1>which I think would be helpful for us to do, right,

625
00:29:51.039 --> 00:29:53.480
<v Speaker 1>because sometimes it does turn into a lengthy back and

626
00:29:53.519 --> 00:29:55.799
<v Speaker 1>forth and we should at some point just pull the cord,

627
00:29:55.920 --> 00:29:57.079
<v Speaker 1>get on a call, and make.

628
00:29:56.960 --> 00:29:58.920
<v Speaker 2>It d Yeah.

629
00:29:58.960 --> 00:30:02.480
<v Speaker 4>So this is this is I think that some developers

630
00:30:02.519 --> 00:30:04.720
<v Speaker 4>do that kind of thing instinctively a lot of the time.

631
00:30:04.720 --> 00:30:08.359
<v Speaker 4>It would come down to your experiences, maybe code reviews,

632
00:30:08.400 --> 00:30:10.599
<v Speaker 4>you've you've worked on that have gone well or gone

633
00:30:10.680 --> 00:30:13.599
<v Speaker 4>less well, or maybe even aspects of your personality type,

634
00:30:13.640 --> 00:30:16.599
<v Speaker 4>you know, how you prefer to communicate. Some people will instinctively,

635
00:30:17.400 --> 00:30:19.079
<v Speaker 4>you know, if they're in an office, go over and

636
00:30:19.160 --> 00:30:20.880
<v Speaker 4>talk to the author of the code, or they will

637
00:30:20.880 --> 00:30:23.160
<v Speaker 4>pick up the phone and talk to somebody. Other people

638
00:30:23.240 --> 00:30:26.000
<v Speaker 4>because of the way they work, because of their communication preferences,

639
00:30:26.039 --> 00:30:29.599
<v Speaker 4>would rather just write a long description of their thoughts

640
00:30:29.640 --> 00:30:32.519
<v Speaker 4>on a pull request. So what we wanted to do

641
00:30:32.640 --> 00:30:34.839
<v Speaker 4>through this, through writing this guide to code reviews, was

642
00:30:34.880 --> 00:30:37.559
<v Speaker 4>to sort of at least give people the opportunities to

643
00:30:37.599 --> 00:30:40.240
<v Speaker 4>think about the alternatives and why there might sometimes be

644
00:30:40.240 --> 00:30:44.079
<v Speaker 4>better ways of communicating. So you know, we don't insist

645
00:30:44.160 --> 00:30:46.319
<v Speaker 4>upon everybody going on a call all the time to

646
00:30:46.319 --> 00:30:49.440
<v Speaker 4>discuss poor requests. It's sometimes it's just not practical, but

647
00:30:49.759 --> 00:30:51.960
<v Speaker 4>it should always be there as a you know, as

648
00:30:52.000 --> 00:30:55.559
<v Speaker 4>a kind of something that people can say, Okay, look,

649
00:30:55.599 --> 00:30:57.519
<v Speaker 4>I think this might be a good idea. It's something

650
00:30:57.559 --> 00:30:59.839
<v Speaker 4>we probably want to consider, and at least people are

651
00:30:59.839 --> 00:31:01.119
<v Speaker 4>aware of the options.

652
00:31:01.440 --> 00:31:02.160
<v Speaker 2>That makes sense.

653
00:31:02.359 --> 00:31:05.519
<v Speaker 1>I'm kind of curious going back to earlier in our conversation,

654
00:31:05.640 --> 00:31:08.440
<v Speaker 1>you know, and we talked about different areas that you

655
00:31:08.480 --> 00:31:10.839
<v Speaker 1>call out or different questions that you tell people they

656
00:31:10.880 --> 00:31:14.680
<v Speaker 1>can ask in a code review. What areas do you

657
00:31:14.799 --> 00:31:18.599
<v Speaker 1>specifically give people that they can think about or call

658
00:31:18.640 --> 00:31:19.640
<v Speaker 1>out in a code review?

659
00:31:20.079 --> 00:31:23.440
<v Speaker 4>So I suppose the starting point, you know, I've spoken

660
00:31:23.519 --> 00:31:26.440
<v Speaker 4>quite a bit about how we thought communication was really important.

661
00:31:26.960 --> 00:31:28.799
<v Speaker 4>Some of the ideas that we kind of suggest in

662
00:31:29.079 --> 00:31:32.240
<v Speaker 4>our guide is asking people to We've already spoken about

663
00:31:32.240 --> 00:31:34.440
<v Speaker 4>it a little bit, to seek clarification. If there's things

664
00:31:34.440 --> 00:31:37.920
<v Speaker 4>that don't seem completely obvious on the change, asking the

665
00:31:37.960 --> 00:31:41.559
<v Speaker 4>author to clarify them. Sometimes we find that when people

666
00:31:42.039 --> 00:31:45.839
<v Speaker 4>seek that clarification, the author might say actually, or you know,

667
00:31:46.119 --> 00:31:48.839
<v Speaker 4>in a conversation talking about it, you might say, well, okay,

668
00:31:48.839 --> 00:31:51.680
<v Speaker 4>if you're asking that question, then somebody else is going

669
00:31:51.720 --> 00:31:53.880
<v Speaker 4>to think this in the future as well. So is

670
00:31:53.920 --> 00:31:56.559
<v Speaker 4>there a documentation need here? Is the code readable enough?

671
00:31:56.599 --> 00:31:58.599
<v Speaker 4>Do we need to put something? You know, kind of

672
00:31:58.680 --> 00:32:01.759
<v Speaker 4>do we have to have some additional documentation or explanations

673
00:32:01.839 --> 00:32:05.680
<v Speaker 4>make it easier to understand? So, yeah, getting clarification is

674
00:32:05.720 --> 00:32:08.920
<v Speaker 4>an important first one. And then I mean everything really

675
00:32:08.960 --> 00:32:11.759
<v Speaker 4>kind of is all about asking questions. So you know,

676
00:32:11.960 --> 00:32:14.880
<v Speaker 4>the cliche about there being no stupid questions. We try

677
00:32:14.920 --> 00:32:17.480
<v Speaker 4>and kind of spell that out in our guide to

678
00:32:17.559 --> 00:32:20.039
<v Speaker 4>code reviews. We really want people to ask questions on

679
00:32:20.079 --> 00:32:21.720
<v Speaker 4>the assumption that if you're thinking it, if you're going

680
00:32:21.759 --> 00:32:23.799
<v Speaker 4>to ask the questions, somebody else is probably thinking it too.

681
00:32:23.880 --> 00:32:27.400
<v Speaker 4>Somebody else is at least wondering the same thing. And

682
00:32:27.440 --> 00:32:30.599
<v Speaker 4>as I already said, we try and encourage developers to

683
00:32:30.599 --> 00:32:34.880
<v Speaker 4>think about things like non functional requirements quite often, things

684
00:32:34.880 --> 00:32:37.559
<v Speaker 4>that might have been missed during the initial requirements analysis

685
00:32:37.920 --> 00:32:40.880
<v Speaker 4>or during the implementation. You know, have we thought about

686
00:32:41.000 --> 00:32:43.880
<v Speaker 4>performance on this? Are we load testing this? Have we

687
00:32:43.960 --> 00:32:48.319
<v Speaker 4>updated documentation? Is their missing test coverage? You know, a

688
00:32:48.319 --> 00:32:50.960
<v Speaker 4>lot of these things that can be very easily even

689
00:32:50.960 --> 00:32:53.839
<v Speaker 4>if we have the most perfect engineering process from start

690
00:32:53.880 --> 00:32:57.160
<v Speaker 4>to when things can get missed. And sometimes asking those questions,

691
00:32:57.200 --> 00:33:00.000
<v Speaker 4>even if the answer is just yes, we've already anticipated

692
00:33:00.079 --> 00:33:03.160
<v Speaker 4>all of those things, it's useful to have somebody checking

693
00:33:03.160 --> 00:33:07.640
<v Speaker 4>those questions. And yeah, I mean that those are kind

694
00:33:07.640 --> 00:33:09.480
<v Speaker 4>of those are the main areas really, and we do

695
00:33:09.599 --> 00:33:12.119
<v Speaker 4>kind of try and encourage people to if they're adding

696
00:33:12.359 --> 00:33:15.359
<v Speaker 4>comments on THEO pull requests to sort of offer links

697
00:33:15.359 --> 00:33:17.400
<v Speaker 4>and examples as well. So if you're going to sort

698
00:33:17.400 --> 00:33:19.599
<v Speaker 4>of say, you know, there's a better way of doing this,

699
00:33:19.680 --> 00:33:21.759
<v Speaker 4>or there's an alternative approach to doing this, or there's

700
00:33:21.799 --> 00:33:24.039
<v Speaker 4>a more I don't know, idiomatic way of doing this

701
00:33:24.119 --> 00:33:27.480
<v Speaker 4>in this particular language. You know, it really helps it

702
00:33:27.559 --> 00:33:29.200
<v Speaker 4>to sort of give a bit more context than that,

703
00:33:29.279 --> 00:33:31.799
<v Speaker 4>either to give an example to link to some relevant

704
00:33:31.799 --> 00:33:35.160
<v Speaker 4>documentation or a blog post that explains the technique in

705
00:33:35.160 --> 00:33:37.920
<v Speaker 4>more detail, and it really kind of gives the author

706
00:33:38.000 --> 00:33:39.799
<v Speaker 4>or the person reading the comments of the opportunity to

707
00:33:39.839 --> 00:33:42.319
<v Speaker 4>do a bit of research and read up and understand

708
00:33:42.319 --> 00:33:44.319
<v Speaker 4>what it is that you're saying and save some of

709
00:33:44.359 --> 00:33:47.519
<v Speaker 4>that kind of time with back and forth explanations.

710
00:33:47.519 --> 00:33:50.079
<v Speaker 6>Something we asked about a lot in the DevOps world

711
00:33:50.240 --> 00:33:53.519
<v Speaker 6>is the kind of the shift left philosophy around things

712
00:33:53.599 --> 00:33:58.240
<v Speaker 6>like bringing security to the forefront of design before you

713
00:33:58.279 --> 00:34:01.960
<v Speaker 6>actually even start implementing that location or even infrastructure, right

714
00:34:02.039 --> 00:34:05.079
<v Speaker 6>like understanding how the application is going to be deployed

715
00:34:05.119 --> 00:34:08.719
<v Speaker 6>and designing around that during the initial phases. And some

716
00:34:08.800 --> 00:34:13.159
<v Speaker 6>of the things that you said kind of brought that

717
00:34:13.239 --> 00:34:15.679
<v Speaker 6>to mind as far as pull requests go, where it's

718
00:34:15.719 --> 00:34:18.880
<v Speaker 6>like instead of kind of pushing all of the review

719
00:34:18.920 --> 00:34:21.519
<v Speaker 6>and the collaboration to the end, you know, kind of

720
00:34:21.519 --> 00:34:25.199
<v Speaker 6>the swarm programming approach and things like that seem like

721
00:34:25.239 --> 00:34:27.199
<v Speaker 6>it could kind of be used in a similar manner

722
00:34:27.280 --> 00:34:31.320
<v Speaker 6>to actually bring some of the review process to the

723
00:34:31.320 --> 00:34:34.280
<v Speaker 6>beginning of the design rather than waiting until something's already

724
00:34:34.320 --> 00:34:36.159
<v Speaker 6>implemented in order.

725
00:34:35.960 --> 00:34:36.280
<v Speaker 2>To do that.

726
00:34:36.400 --> 00:34:38.320
<v Speaker 5>Is that part of kind of what you guys have done.

727
00:34:38.320 --> 00:34:40.039
<v Speaker 6>Do you feel like you've brought maybe some of the

728
00:34:41.400 --> 00:34:45.800
<v Speaker 6>code review process into the design and made it more

729
00:34:45.880 --> 00:34:49.719
<v Speaker 6>collaborative or had you thought about that aspect.

730
00:34:49.320 --> 00:34:49.760
<v Speaker 5>Of it at all.

731
00:34:50.079 --> 00:34:52.119
<v Speaker 4>I think that is a real opportunity, like and that

732
00:34:52.239 --> 00:34:55.079
<v Speaker 4>is something that you know, we're quite excited about being

733
00:34:55.119 --> 00:34:57.719
<v Speaker 4>able to do more of. I don't want to say

734
00:34:57.760 --> 00:35:00.960
<v Speaker 4>that we've we've kind of necessarily completely solved that problem

735
00:35:01.119 --> 00:35:04.440
<v Speaker 4>or we found a way of anticipating all of those issues,

736
00:35:04.480 --> 00:35:07.239
<v Speaker 4>you know, ahead of time. My hope is that by

737
00:35:07.760 --> 00:35:11.480
<v Speaker 4>improving our code view process and gradually pushing, as you say,

738
00:35:11.519 --> 00:35:14.840
<v Speaker 4>more of this thinking earlier on in the process, it

739
00:35:14.920 --> 00:35:18.000
<v Speaker 4>will gradually become more ingrained in the way we work,

740
00:35:18.239 --> 00:35:20.400
<v Speaker 4>and we can and we can we can get better

741
00:35:20.440 --> 00:35:23.760
<v Speaker 4>at anticipating those things earlier on. But yeah, I mean,

742
00:35:23.800 --> 00:35:26.039
<v Speaker 4>I think from my point of view, the truth is

743
00:35:26.039 --> 00:35:28.159
<v Speaker 4>that some of those things will will still get missed,

744
00:35:28.199 --> 00:35:31.159
<v Speaker 4>and we need the code of view stage to sort

745
00:35:31.199 --> 00:35:34.159
<v Speaker 4>of really just double check that we've we've not neglected

746
00:35:34.199 --> 00:35:35.159
<v Speaker 4>any of those areas.

747
00:35:35.480 --> 00:35:37.199
<v Speaker 6>Yeah, I think I guess my thinking of that is

748
00:35:37.239 --> 00:35:40.559
<v Speaker 6>definitely not to preempt the code review, because, like you said,

749
00:35:40.599 --> 00:35:42.920
<v Speaker 6>that is kind of the last stage, and it's I

750
00:35:42.920 --> 00:35:46.559
<v Speaker 6>think it's important regardless. I think it's just more around,

751
00:35:46.679 --> 00:35:50.159
<v Speaker 6>you know, kind of increasing that collaboration early on, particularly

752
00:35:50.199 --> 00:35:52.679
<v Speaker 6>in a remote context. What I've seen in some teams

753
00:35:52.800 --> 00:35:56.079
<v Speaker 6>is developers will kind of get lost in whatever they're

754
00:35:56.119 --> 00:35:59.880
<v Speaker 6>doing and they'll forget to communicate because, you know, communications,

755
00:36:00.039 --> 00:36:02.599
<v Speaker 6>it doesn't come naturally at all developers, right might be

756
00:36:02.599 --> 00:36:05.320
<v Speaker 6>a stereotype or personality type, but it is what it is.

757
00:36:05.480 --> 00:36:09.559
<v Speaker 5>And so I think having that kind of sharing.

758
00:36:09.280 --> 00:36:12.400
<v Speaker 6>And communication built in earlier on can help with the

759
00:36:12.440 --> 00:36:16.320
<v Speaker 6>types of situations where a developer works on something, implements something,

760
00:36:16.440 --> 00:36:19.400
<v Speaker 6>and then maybe it's very technically clever, but during the

761
00:36:19.440 --> 00:36:21.880
<v Speaker 6>review phase we find out that, oh, actually it doesn't

762
00:36:21.960 --> 00:36:24.719
<v Speaker 6>quite do what it needs to do, and or those

763
00:36:24.800 --> 00:36:25.119
<v Speaker 6>kind of things.

764
00:36:25.119 --> 00:36:27.159
<v Speaker 5>So I think there's there's an opportunity there.

765
00:36:27.000 --> 00:36:29.920
<v Speaker 6>To move some of that to the forefront as well,

766
00:36:29.960 --> 00:36:32.360
<v Speaker 6>and just to work better in a remote context.

767
00:36:33.079 --> 00:36:34.639
<v Speaker 2>Yeah, I think you're absolutely right kind of.

768
00:36:35.159 --> 00:36:37.480
<v Speaker 4>And one of the ways that we one of the

769
00:36:37.480 --> 00:36:41.039
<v Speaker 4>ways I think this affectsed US sometimes was we noticed

770
00:36:41.039 --> 00:36:44.760
<v Speaker 4>when a certain code review had maybe been more taxing

771
00:36:44.840 --> 00:36:46.840
<v Speaker 4>or more time consuming that it might than it might

772
00:36:46.840 --> 00:36:49.559
<v Speaker 4>have been expected to be, or or that issues were

773
00:36:49.559 --> 00:36:52.400
<v Speaker 4>only found out at the code review stage, which were,

774
00:36:52.760 --> 00:36:56.079
<v Speaker 4>for example, quite significant architectural issues, things that should have

775
00:36:56.079 --> 00:36:59.760
<v Speaker 4>been anticipated much earlier on, and we wanted to try

776
00:36:59.760 --> 00:37:01.719
<v Speaker 4>and use use those insights that we got from the

777
00:37:01.719 --> 00:37:04.480
<v Speaker 4>code of view process to try and improve the earlier

778
00:37:04.519 --> 00:37:07.719
<v Speaker 4>stages further left than our process for the for the

779
00:37:07.760 --> 00:37:11.239
<v Speaker 4>next iteration. So when we have team retrospectives and things

780
00:37:11.280 --> 00:37:13.639
<v Speaker 4>like that, we'll often try and talk about code reviews

781
00:37:13.679 --> 00:37:16.599
<v Speaker 4>that were difficult or issues that only came out and

782
00:37:16.599 --> 00:37:20.199
<v Speaker 4>code reviewed that really could have been discussed or you know,

783
00:37:20.320 --> 00:37:23.360
<v Speaker 4>would have benefited from more communication or more collaboration earlier

784
00:37:23.400 --> 00:37:26.679
<v Speaker 4>on in the process. And I think that is actually

785
00:37:26.760 --> 00:37:29.880
<v Speaker 4>quite a helpful technique, because sometimes I think there's a

786
00:37:29.880 --> 00:37:33.039
<v Speaker 4>temptation you think, right, the code reviews finished, let's ship

787
00:37:33.039 --> 00:37:35.039
<v Speaker 4>the code, let's forget about it and move on, And

788
00:37:35.199 --> 00:37:37.199
<v Speaker 4>often you can actually look at the code of view

789
00:37:37.239 --> 00:37:39.679
<v Speaker 4>and say, you know what, what have we learned from

790
00:37:39.679 --> 00:37:42.880
<v Speaker 4>this that we could have, what insights we take away

791
00:37:42.880 --> 00:37:45.280
<v Speaker 4>from this that we could actually apply earlier on in

792
00:37:45.320 --> 00:37:47.800
<v Speaker 4>the development process next time we go through this cycle.

793
00:37:48.119 --> 00:37:50.280
<v Speaker 5>I really love that being because I think what you're

794
00:37:50.480 --> 00:37:51.039
<v Speaker 5>what you're.

795
00:37:50.840 --> 00:37:54.039
<v Speaker 6>Describing is you know, a continuous improvement, which is a

796
00:37:54.119 --> 00:37:57.440
<v Speaker 6>huge part of the DevOps philosophy. And b you're describing

797
00:37:57.440 --> 00:38:00.320
<v Speaker 6>a feedback where you're doing something and then take the

798
00:38:00.440 --> 00:38:04.760
<v Speaker 6>data you've gleaned from that process and improving your process

799
00:38:04.760 --> 00:38:08.440
<v Speaker 6>as you go. So I think that's really that's really fantastic,

800
00:38:08.480 --> 00:38:10.360
<v Speaker 6>and you know, I can really see how that ties

801
00:38:10.400 --> 00:38:12.599
<v Speaker 6>into kind of the overall develops philosophy.

802
00:38:13.079 --> 00:38:16.039
<v Speaker 1>So one thing that I'm wondering about because you talked about,

803
00:38:16.440 --> 00:38:19.800
<v Speaker 1>you know, sometimes the review process might take longer than

804
00:38:19.800 --> 00:38:21.559
<v Speaker 1>it should have, or that you might have wanted it

805
00:38:21.599 --> 00:38:24.159
<v Speaker 1>to and things like that, and that made me think,

806
00:38:24.199 --> 00:38:26.159
<v Speaker 1>and it's a question that you actually, you know, put

807
00:38:26.199 --> 00:38:27.760
<v Speaker 1>up that might be a good when to ask. And

808
00:38:28.039 --> 00:38:30.280
<v Speaker 1>I'm kind of curious, I mean, are there downsides to

809
00:38:30.679 --> 00:38:34.159
<v Speaker 1>a code review process or or maybe downsides to a

810
00:38:34.199 --> 00:38:36.199
<v Speaker 1>bad code review process? Maybe that's a better question. I

811
00:38:36.239 --> 00:38:39.119
<v Speaker 1>don't know, are there are there reasons that you wouldn't

812
00:38:39.119 --> 00:38:42.079
<v Speaker 1>want to do this or ways to avoid problems while

813
00:38:42.079 --> 00:38:42.840
<v Speaker 1>you're trying to do this.

814
00:38:43.280 --> 00:38:47.320
<v Speaker 4>I think for us, the real goal was to we

815
00:38:47.639 --> 00:38:50.159
<v Speaker 4>knew that code reviews were something we wanted to do,

816
00:38:50.239 --> 00:38:52.679
<v Speaker 4>and we had this attachment to doing them, but we

817
00:38:52.719 --> 00:38:55.440
<v Speaker 4>wanted to be able to clearly explain to ourselves and

818
00:38:55.519 --> 00:38:59.880
<v Speaker 4>to the non engineering parts of the organization why could

819
00:39:00.079 --> 00:39:02.039
<v Speaker 4>views exist and what they're for, and have a better

820
00:39:02.119 --> 00:39:05.159
<v Speaker 4>understanding of what they're for. So I think that's a

821
00:39:05.239 --> 00:39:07.800
<v Speaker 4>useful exercise because you know, in the past we had

822
00:39:07.800 --> 00:39:10.440
<v Speaker 4>a situation where, you know, maybe something would take quite

823
00:39:10.480 --> 00:39:12.000
<v Speaker 4>a long time to get through a code review, and

824
00:39:12.840 --> 00:39:16.360
<v Speaker 4>product managers or product owners might say, well, what's happening?

825
00:39:16.400 --> 00:39:18.440
<v Speaker 2>Why you know what's happening in this code view process?

826
00:39:18.440 --> 00:39:19.159
<v Speaker 2>Why are we doing it?

827
00:39:19.199 --> 00:39:21.639
<v Speaker 4>And hopefully what we have now is it is a

828
00:39:21.639 --> 00:39:23.599
<v Speaker 4>better set of answers for that and more of a

829
00:39:23.639 --> 00:39:27.960
<v Speaker 4>shared understanding. The downsides, I think I can't see any

830
00:39:28.000 --> 00:39:30.840
<v Speaker 4>downsides really about kind of reflecting on code reviews. I

831
00:39:30.840 --> 00:39:33.360
<v Speaker 4>think I think reflecting on every stage in your development

832
00:39:33.400 --> 00:39:36.239
<v Speaker 4>process at some point is going to give you some

833
00:39:36.880 --> 00:39:39.320
<v Speaker 4>you know in that in that same spirit of continuous

834
00:39:39.320 --> 00:39:41.880
<v Speaker 4>improvement is going to give you the opportunity to do

835
00:39:41.960 --> 00:39:45.440
<v Speaker 4>things better or work smarter, or avoid pitfalls in the future.

836
00:39:46.840 --> 00:39:49.960
<v Speaker 4>So I think reflecting on the process is a for

837
00:39:50.119 --> 00:39:53.760
<v Speaker 4>us has been a really powerful way of of kind

838
00:39:53.800 --> 00:39:58.039
<v Speaker 4>of getting more understanding of our process. But you know,

839
00:39:58.159 --> 00:40:02.239
<v Speaker 4>code of views a it can be really complicated and difficult,

840
00:40:02.239 --> 00:40:04.920
<v Speaker 4>and things do still go wrong. You know that there

841
00:40:04.920 --> 00:40:08.159
<v Speaker 4>are situations where code views don't go as as we'd like,

842
00:40:08.360 --> 00:40:10.440
<v Speaker 4>but it's something that we're constantly trying to work on.

843
00:40:10.519 --> 00:40:12.639
<v Speaker 4>We didn't want this to be a thing where we

844
00:40:12.719 --> 00:40:15.599
<v Speaker 4>just write a document about code reviews and then said, Okay,

845
00:40:15.599 --> 00:40:17.559
<v Speaker 4>we're done, We've solved the problem of code views. We're

846
00:40:17.559 --> 00:40:19.199
<v Speaker 4>going to move on. We wanted it to be something

847
00:40:19.199 --> 00:40:21.800
<v Speaker 4>that we could keep on building on. We put it

848
00:40:21.840 --> 00:40:24.920
<v Speaker 4>in our one of our open source repos so that

849
00:40:24.960 --> 00:40:27.719
<v Speaker 4>it's kind of it's fronts and center that people outside

850
00:40:27.760 --> 00:40:30.039
<v Speaker 4>the organization can see it, and we keep on iterating

851
00:40:30.039 --> 00:40:32.239
<v Speaker 4>on it and adding to it and changing it as

852
00:40:32.239 --> 00:40:34.920
<v Speaker 4>we get more, as we learn more about what works

853
00:40:34.960 --> 00:40:37.559
<v Speaker 4>for us or what doesn't work for us. You know,

854
00:40:37.639 --> 00:40:40.280
<v Speaker 4>anybody can do a poor request against it and say, hey,

855
00:40:40.320 --> 00:40:43.320
<v Speaker 4>this technique really worked for me in when I was

856
00:40:43.400 --> 00:40:45.559
<v Speaker 4>learning to do code reviews, and then it becomes something

857
00:40:45.599 --> 00:40:47.320
<v Speaker 4>that can benefit other people in the future.

858
00:40:47.760 --> 00:40:50.000
<v Speaker 1>So I guess kind of a follow on to that

859
00:40:50.119 --> 00:40:52.880
<v Speaker 1>then is let's say that we've got a devaps team

860
00:40:52.920 --> 00:40:55.760
<v Speaker 1>out there, right, and they've got you know, a set

861
00:40:55.960 --> 00:41:00.400
<v Speaker 1>of tools and processes and people that use them and

862
00:41:00.440 --> 00:41:03.159
<v Speaker 1>people that rely on them. Right, And some of this

863
00:41:03.360 --> 00:41:06.880
<v Speaker 1>is codified in code, right, you know, be it Bash

864
00:41:06.960 --> 00:41:09.840
<v Speaker 1>scripts or you know we talked about chef or I

865
00:41:09.880 --> 00:41:12.679
<v Speaker 1>mean whatever, right, and some of it may be codified

866
00:41:12.760 --> 00:41:15.559
<v Speaker 1>in just you know, a process that people follow for stuff.

867
00:41:15.639 --> 00:41:15.800
<v Speaker 2>Right.

868
00:41:16.159 --> 00:41:18.480
<v Speaker 1>I could see a code review being just as useful

869
00:41:18.519 --> 00:41:21.599
<v Speaker 1>for that, right, But you know, whatever it is. Let's

870
00:41:21.599 --> 00:41:23.599
<v Speaker 1>say that they're listening to this and they're going, you know,

871
00:41:23.679 --> 00:41:26.199
<v Speaker 1>this is a really good idea. We should definitely have

872
00:41:26.320 --> 00:41:30.280
<v Speaker 1>people looking over you know, what we're putting down as

873
00:41:30.559 --> 00:41:33.719
<v Speaker 1>the way that we get this work done, right, be

874
00:41:33.840 --> 00:41:38.559
<v Speaker 1>it you know, formal programming code or you know scripts

875
00:41:38.639 --> 00:41:42.239
<v Speaker 1>or whatever, or yeah, even just you know, hey, do this,

876
00:41:42.360 --> 00:41:44.199
<v Speaker 1>then do this, do and do this and do this. Right,

877
00:41:44.760 --> 00:41:46.840
<v Speaker 1>How should they start implementing that if they haven't been

878
00:41:46.920 --> 00:41:47.559
<v Speaker 1>doing that today.

879
00:41:48.079 --> 00:41:50.400
<v Speaker 4>Well, I mean, the first thing to say is there's

880
00:41:50.440 --> 00:41:53.480
<v Speaker 4>lots of great resources out there already, So it's not

881
00:41:54.079 --> 00:41:57.280
<v Speaker 4>that the article that I wrote is kind of summarizing

882
00:41:57.360 --> 00:41:59.199
<v Speaker 4>a process that we went through to think about code

883
00:41:59.199 --> 00:42:00.840
<v Speaker 4>of views. But there's a lot lot of great advice

884
00:42:01.000 --> 00:42:03.480
<v Speaker 4>online about code reviews, and if you google code review

885
00:42:03.880 --> 00:42:06.960
<v Speaker 4>best practices and guidelines, there's loads of loads of articles

886
00:42:07.000 --> 00:42:08.440
<v Speaker 4>out there, and I linked to a couple of them

887
00:42:08.480 --> 00:42:13.079
<v Speaker 4>in the article. Some teams might find that the information

888
00:42:13.199 --> 00:42:15.400
<v Speaker 4>in those resources is a good fit for them. So

889
00:42:15.960 --> 00:42:18.719
<v Speaker 4>you might read I think it's gaily as post which

890
00:42:18.760 --> 00:42:21.480
<v Speaker 4>was a big inspiration for me about code reviews, and

891
00:42:21.599 --> 00:42:23.679
<v Speaker 4>you might say, well, that's actually a perfect description of

892
00:42:23.760 --> 00:42:25.960
<v Speaker 4>high I want my code reviews in my team to work.

893
00:42:26.000 --> 00:42:28.239
<v Speaker 4>So we're just going to say this is our process,

894
00:42:28.239 --> 00:42:30.480
<v Speaker 4>We're just going to follow this. For us, it was

895
00:42:30.519 --> 00:42:33.360
<v Speaker 4>a little bit different because we felt that we had

896
00:42:33.400 --> 00:42:35.559
<v Speaker 4>there was lots of specifics about how we worked in

897
00:42:35.599 --> 00:42:40.000
<v Speaker 4>our organization, our specific technical stack, how our continuous integration,

898
00:42:40.039 --> 00:42:43.239
<v Speaker 4>because the r delivery process has worked, how we used

899
00:42:43.280 --> 00:42:46.280
<v Speaker 4>githubs specifically in our teams. We wanted to have something

900
00:42:46.280 --> 00:42:48.320
<v Speaker 4>that was a bit more tailored to our process. So

901
00:42:48.360 --> 00:42:51.679
<v Speaker 4>I would say decide if any of the existing online

902
00:42:51.719 --> 00:42:53.039
<v Speaker 4>resources is a good fit for you.

903
00:42:53.159 --> 00:42:54.559
<v Speaker 2>If it is, great, use it.

904
00:42:54.960 --> 00:42:56.719
<v Speaker 4>If not, then you might want to go through the

905
00:42:56.760 --> 00:42:58.920
<v Speaker 4>process that we went through and actually come up with

906
00:42:58.960 --> 00:43:02.320
<v Speaker 4>a guide yourself. But you know that a lot of

907
00:43:02.320 --> 00:43:05.280
<v Speaker 4>this information is not and these and these pieces of

908
00:43:05.320 --> 00:43:07.840
<v Speaker 4>advice is not brand new. You know, it's kind of

909
00:43:08.000 --> 00:43:10.880
<v Speaker 4>it's it's it's wisdom that's kind of been going around

910
00:43:10.880 --> 00:43:12.679
<v Speaker 4>for a few years. So it's a question of picking

911
00:43:12.679 --> 00:43:14.840
<v Speaker 4>out the things that make the most sense to you

912
00:43:14.880 --> 00:43:18.320
<v Speaker 4>and are most relevant to you, know, your team, the

913
00:43:18.360 --> 00:43:21.599
<v Speaker 4>structure of your organization, the technology you're working on, and

914
00:43:21.639 --> 00:43:24.400
<v Speaker 4>then have somewhere for developers to find that information so

915
00:43:24.880 --> 00:43:27.079
<v Speaker 4>you know and get help. You can obviously have pull

916
00:43:27.079 --> 00:43:29.719
<v Speaker 4>request ten plates you link to a document with these

917
00:43:29.719 --> 00:43:32.559
<v Speaker 4>guidelines and bits of advice that you want them to follow.

918
00:43:33.000 --> 00:43:34.960
<v Speaker 4>And I think the other part of it is, as

919
00:43:35.000 --> 00:43:37.519
<v Speaker 4>I said, just to just to keep on reviewing that

920
00:43:37.599 --> 00:43:39.880
<v Speaker 4>process and reflecting on it in the future. You know,

921
00:43:39.880 --> 00:43:41.800
<v Speaker 4>if you see how it goes and try it for

922
00:43:41.840 --> 00:43:43.760
<v Speaker 4>a few sprints, or try it for a few months,

923
00:43:44.119 --> 00:43:45.920
<v Speaker 4>and then have a look at the process again, see

924
00:43:45.920 --> 00:43:47.800
<v Speaker 4>if it's working and see if it needs any changes.

925
00:43:48.320 --> 00:43:50.519
<v Speaker 4>The other thing I would say is one thing that

926
00:43:50.559 --> 00:43:53.719
<v Speaker 4>really helped us was about in terms of reducing the

927
00:43:53.760 --> 00:43:57.159
<v Speaker 4>burden of code reviews was to try and automate anything

928
00:43:57.159 --> 00:43:57.679
<v Speaker 4>that you can.

929
00:43:57.880 --> 00:43:59.559
<v Speaker 2>So I know, one code.

930
00:43:59.400 --> 00:44:01.840
<v Speaker 4>Base that I worked on for a little while, a

931
00:44:01.840 --> 00:44:04.000
<v Speaker 4>lot of the pull requests would we would have a

932
00:44:04.000 --> 00:44:06.519
<v Speaker 4>lot of comments where people were just changing bits of

933
00:44:06.559 --> 00:44:11.039
<v Speaker 4>white space or semicolons or minor formatting issues, which we're

934
00:44:11.039 --> 00:44:14.440
<v Speaker 4>all completely valid, but you know, robots are much better

935
00:44:14.480 --> 00:44:16.360
<v Speaker 4>at those kind of code reviews. You know, if you've

936
00:44:16.360 --> 00:44:21.719
<v Speaker 4>got linting tools available for whichever your whichever technical environment

937
00:44:21.760 --> 00:44:25.599
<v Speaker 4>you're using, use those instead, you know, apply automatic formatting,

938
00:44:25.800 --> 00:44:30.400
<v Speaker 4>to use automation so that when people are doing code

939
00:44:30.480 --> 00:44:32.480
<v Speaker 4>views they can focus on the stuff that really matters.

940
00:44:32.920 --> 00:44:35.639
<v Speaker 4>So yeah, and also, as we already said, I think

941
00:44:35.760 --> 00:44:39.159
<v Speaker 4>pairing and mob programming can be a really good way

942
00:44:39.199 --> 00:44:42.719
<v Speaker 4>of making code of views less difficult.

943
00:44:43.039 --> 00:44:45.800
<v Speaker 6>Is your guide to code reviews? Is that public or

944
00:44:45.840 --> 00:44:47.960
<v Speaker 6>is there any plan to make it public?

945
00:44:48.199 --> 00:44:50.159
<v Speaker 8>I think a lot of people would be very interested,

946
00:44:50.280 --> 00:44:52.960
<v Speaker 8>especially in an organization as large as the BBC AD

947
00:44:52.960 --> 00:44:56.440
<v Speaker 8>as well respected as the CBC and understanding you know

948
00:44:56.480 --> 00:44:58.280
<v Speaker 8>kind of how you guys do it and actually seeing

949
00:44:58.280 --> 00:45:00.960
<v Speaker 8>maybe maybe the full the poor guide if that's something

950
00:45:01.000 --> 00:45:03.440
<v Speaker 8>you guys are thinking about releasing or already have.

951
00:45:03.880 --> 00:45:06.400
<v Speaker 2>Sure, Yeah, it's actually already Sorry, go ahead.

952
00:45:06.519 --> 00:45:08.000
<v Speaker 1>I was going to say, I want to pile one

953
00:45:08.039 --> 00:45:10.639
<v Speaker 1>because you brought up linting a minute ago. And we

954
00:45:10.679 --> 00:45:13.920
<v Speaker 1>do that, right, We pull in the linking setup from

955
00:45:13.920 --> 00:45:16.360
<v Speaker 1>some other company, right that they published, and then we

956
00:45:16.400 --> 00:45:19.840
<v Speaker 1>say we're going to use their linking strategy, accept this

957
00:45:20.039 --> 00:45:22.199
<v Speaker 1>and this and this, and yeah, I'd love to get

958
00:45:22.199 --> 00:45:23.559
<v Speaker 1>the BB season and say.

959
00:45:23.360 --> 00:45:24.800
<v Speaker 2>That doesn't apply, that doesn't apply.

960
00:45:24.840 --> 00:45:27.000
<v Speaker 1>We're going to add this, this, this doesn't quite work

961
00:45:27.000 --> 00:45:29.440
<v Speaker 1>for us, but something similar and yeah, and then I

962
00:45:29.719 --> 00:45:31.599
<v Speaker 1>spend half the time putting it together and I look

963
00:45:31.639 --> 00:45:32.280
<v Speaker 1>really smart.

964
00:45:32.880 --> 00:45:34.559
<v Speaker 2>Yeah, we all have a bunch of those. We have

965
00:45:34.599 --> 00:45:35.400
<v Speaker 2>a bunch of those as well.

966
00:45:35.440 --> 00:45:37.960
<v Speaker 4>You know, other other company style guides that we've we've

967
00:45:38.239 --> 00:45:40.320
<v Speaker 4>we've followed and incorporated into the way that we work.

968
00:45:40.360 --> 00:45:42.360
<v Speaker 4>And I think you know that's that's the great thing

969
00:45:42.360 --> 00:45:45.400
<v Speaker 4>about open source collaboration is you can reuse work that

970
00:45:45.400 --> 00:45:47.840
<v Speaker 4>other people have done. A code of view process is

971
00:45:47.880 --> 00:45:52.320
<v Speaker 4>obviously harder to you know, run automatically than a Linter.

972
00:45:52.480 --> 00:45:56.880
<v Speaker 4>But the guide that we wrote is publicly accessible. I can,

973
00:45:56.960 --> 00:45:59.760
<v Speaker 4>I can share the link with you and your listeners,

974
00:46:00.280 --> 00:46:02.679
<v Speaker 4>and it's out there. It's in one of our open

975
00:46:02.679 --> 00:46:06.039
<v Speaker 4>source repos because the project that we developed it for

976
00:46:06.159 --> 00:46:08.440
<v Speaker 4>is an open source project itself, so we wanted to

977
00:46:08.440 --> 00:46:10.400
<v Speaker 4>put it in the read may say, look, this is

978
00:46:10.440 --> 00:46:12.119
<v Speaker 4>how we do code reviews. If you're going to submit

979
00:46:12.159 --> 00:46:14.559
<v Speaker 4>a poor request to this project, this is what you

980
00:46:14.599 --> 00:46:17.079
<v Speaker 4>can expect is how we're going to approach our code reviews.

981
00:46:17.480 --> 00:46:19.440
<v Speaker 2>So yeah, it's.

982
00:46:18.639 --> 00:46:21.559
<v Speaker 4>Already out there, and we'd really welcome people's comments on it,

983
00:46:21.679 --> 00:46:24.559
<v Speaker 4>pull requests on it, and just get more feedback from

984
00:46:24.679 --> 00:46:27.239
<v Speaker 4>and if people find it useful in their organizations and

985
00:46:27.239 --> 00:46:29.280
<v Speaker 4>they want to just link to it and say, hey,

986
00:46:29.280 --> 00:46:31.360
<v Speaker 4>this is the approach we're following, then we'd love to

987
00:46:31.360 --> 00:46:31.960
<v Speaker 4>hear about it.

988
00:46:32.119 --> 00:46:33.599
<v Speaker 1>Yeah, that'd be great if you put it in the

989
00:46:33.800 --> 00:46:36.400
<v Speaker 1>chat in zoom, then we can add it to the

990
00:46:36.400 --> 00:46:36.920
<v Speaker 1>show notes.

991
00:46:37.079 --> 00:46:39.119
<v Speaker 2>Any other questions you guys before we got to picks.

992
00:46:39.920 --> 00:46:43.360
<v Speaker 1>Nothing on my side, anything we forgot to bring up

993
00:46:43.400 --> 00:46:44.519
<v Speaker 1>that you wanted to talk about.

994
00:46:44.639 --> 00:46:47.159
<v Speaker 2>James, No, nothing from me. I think yeah, we've covered.

995
00:46:46.920 --> 00:46:49.039
<v Speaker 1>Everything, all right, Well, let's go ahead and dive into

996
00:46:49.079 --> 00:46:51.280
<v Speaker 1>picks then. Now, James, I don't know if you've listened

997
00:46:51.320 --> 00:46:53.920
<v Speaker 1>to the show, but picks are is the segment at

998
00:46:53.960 --> 00:46:56.360
<v Speaker 1>the end of the show where we talk about stuff

999
00:46:56.360 --> 00:46:59.760
<v Speaker 1>that we like. So it's just anything that we really

1000
00:46:59.760 --> 00:47:02.480
<v Speaker 1>want to shout out about. I'll let Jeffery go first

1001
00:47:02.480 --> 00:47:04.480
<v Speaker 1>since he's kind of a little more experienced of this.

1002
00:47:04.840 --> 00:47:06.519
<v Speaker 1>Then we'll have Caleb go and then I'll throw out

1003
00:47:06.519 --> 00:47:08.320
<v Speaker 1>some picks and then we'll let you share what you

1004
00:47:08.360 --> 00:47:09.280
<v Speaker 1>want to shout out about.

1005
00:47:09.320 --> 00:47:11.880
<v Speaker 7>Well, so I'll you know, talking about just pick I've

1006
00:47:11.920 --> 00:47:14.280
<v Speaker 7>got for this week. Is an interesting trying to leave

1007
00:47:14.760 --> 00:47:15.119
<v Speaker 7>called it.

1008
00:47:15.119 --> 00:47:18.599
<v Speaker 3>It's really a learning platform called Learnistic, and it is

1009
00:47:18.639 --> 00:47:21.880
<v Speaker 3>a I mean, this is where there's a field full

1010
00:47:22.000 --> 00:47:25.320
<v Speaker 3>of all these different platforms for building like whether it's

1011
00:47:25.320 --> 00:47:29.559
<v Speaker 3>like actual formal courses you're trying to provide or just

1012
00:47:29.719 --> 00:47:30.920
<v Speaker 3>you know, sort of video.

1013
00:47:30.719 --> 00:47:31.639
<v Speaker 7>Or audio content.

1014
00:47:31.800 --> 00:47:33.480
<v Speaker 3>Right, there's a lot of different ways to do this,

1015
00:47:33.920 --> 00:47:36.960
<v Speaker 3>but I found that Learnistic has a really interesting platform

1016
00:47:37.079 --> 00:47:39.920
<v Speaker 3>where what you're trying to do is get your content

1017
00:47:40.039 --> 00:47:43.880
<v Speaker 3>out there to your audience's mobile app, you know, mobile

1018
00:47:44.079 --> 00:47:48.480
<v Speaker 3>devices through a mobile app. They are doing it, so

1019
00:47:48.559 --> 00:47:53.239
<v Speaker 3>you can basically create a custom app for you know,

1020
00:47:53.840 --> 00:47:57.960
<v Speaker 3>your company, or your podcast or whatever is that you do.

1021
00:47:58.679 --> 00:48:02.599
<v Speaker 3>It goes under it sort of bundled under the Learnistic app,

1022
00:48:02.639 --> 00:48:05.199
<v Speaker 3>but it's it becomes a separate app underneath that.

1023
00:48:05.400 --> 00:48:06.639
<v Speaker 7>So it's sort of interesting.

1024
00:48:07.039 --> 00:48:09.280
<v Speaker 3>And they give you a lot of control as a

1025
00:48:09.599 --> 00:48:15.360
<v Speaker 3>content developer to publish what content you want for each

1026
00:48:15.400 --> 00:48:19.480
<v Speaker 3>individual user. So what shows up for eachooser is going

1027
00:48:19.519 --> 00:48:21.000
<v Speaker 3>to be a little bit different based on you know,

1028
00:48:21.039 --> 00:48:23.559
<v Speaker 3>how they have their access control set up. So it's

1029
00:48:23.559 --> 00:48:26.440
<v Speaker 3>a really interesting and what they're doing for you is

1030
00:48:26.480 --> 00:48:30.760
<v Speaker 3>basically taking care of all of the sort of bits

1031
00:48:30.760 --> 00:48:33.440
<v Speaker 3>and pieces that make all that work. So it's it

1032
00:48:33.519 --> 00:48:37.360
<v Speaker 3>really is a pretty robust platform. I'm starting to look

1033
00:48:37.360 --> 00:48:39.719
<v Speaker 3>at it, starting to use it for just in my

1034
00:48:39.920 --> 00:48:44.239
<v Speaker 3>practic how I provide content. Sometimes it is course courses

1035
00:48:44.239 --> 00:48:48.760
<v Speaker 3>that are customed for specific clients. Sometimes it's just you know,

1036
00:48:48.880 --> 00:48:51.280
<v Speaker 3>sort of you know, content that I just want to

1037
00:48:51.320 --> 00:48:53.840
<v Speaker 3>provide to either you know, all my sort of audience

1038
00:48:53.920 --> 00:48:57.119
<v Speaker 3>and prospects and clients and you know, just everyone. And

1039
00:48:57.159 --> 00:48:59.280
<v Speaker 3>it's a really like I said, what I've done so

1040
00:48:59.360 --> 00:49:02.639
<v Speaker 3>far is it's really cool way, really efficient way and

1041
00:49:03.840 --> 00:49:06.400
<v Speaker 3>cost efficient as well, just to get your content out

1042
00:49:06.400 --> 00:49:07.800
<v Speaker 3>there to the folks that.

1043
00:49:07.760 --> 00:49:08.400
<v Speaker 7>You want to get into.

1044
00:49:08.599 --> 00:49:12.119
<v Speaker 3>So yeah, it's well, they're doing something interesting that's a

1045
00:49:12.159 --> 00:49:14.719
<v Speaker 3>little bit different from all of the other like learning

1046
00:49:14.760 --> 00:49:15.880
<v Speaker 3>platforms that exist.

1047
00:49:16.320 --> 00:49:16.800
<v Speaker 2>Nice.

1048
00:49:16.960 --> 00:49:19.039
<v Speaker 1>Now I want to go check it out. Yeah, I've

1049
00:49:19.079 --> 00:49:21.599
<v Speaker 1>been using Teacha ball. I'm pretty happy with it. But yeah,

1050
00:49:21.639 --> 00:49:23.920
<v Speaker 1>I'm always on the lookout for something new that might

1051
00:49:24.199 --> 00:49:26.800
<v Speaker 1>give me a little bit of an edge on yeah,

1052
00:49:26.840 --> 00:49:29.840
<v Speaker 1>just getting people what I want to give them. So anyway, Caleb,

1053
00:49:29.920 --> 00:49:30.639
<v Speaker 1>what are your picks?

1054
00:49:30.880 --> 00:49:33.760
<v Speaker 6>Yeah, so my pick for the week is a tool

1055
00:49:33.800 --> 00:49:36.280
<v Speaker 6>called Harness. You can find it at harness dot io.

1056
00:49:36.960 --> 00:49:40.559
<v Speaker 6>It's a pretty established player in the devop space. I've

1057
00:49:40.639 --> 00:49:43.679
<v Speaker 6>used it before, but recently I was kind of looking

1058
00:49:43.719 --> 00:49:47.840
<v Speaker 6>at how in a new organization, how we can get

1059
00:49:48.159 --> 00:49:51.320
<v Speaker 6>things like Canary deployments going blue green deployments.

1060
00:49:51.800 --> 00:49:53.400
<v Speaker 5>How do we manage you know, if.

1061
00:49:53.280 --> 00:49:57.559
<v Speaker 6>We need to deploy interdependent services together, how do we

1062
00:49:57.639 --> 00:50:00.719
<v Speaker 6>track that, you know those kind of things. And so

1063
00:50:00.760 --> 00:50:02.360
<v Speaker 6>I was able to go through a demo the tool

1064
00:50:02.400 --> 00:50:05.039
<v Speaker 6>recently and start looking at implementing it again, and it

1065
00:50:05.159 --> 00:50:06.840
<v Speaker 6>just kind of brought it back the top of mind

1066
00:50:06.880 --> 00:50:09.280
<v Speaker 6>for me and a it is actually better than it

1067
00:50:09.440 --> 00:50:10.000
<v Speaker 6>ever was.

1068
00:50:10.079 --> 00:50:12.599
<v Speaker 5>So when I use it a few years ago. It

1069
00:50:12.639 --> 00:50:13.000
<v Speaker 5>was good.

1070
00:50:13.039 --> 00:50:16.039
<v Speaker 6>It's gotten even better, and I think that's something that

1071
00:50:16.119 --> 00:50:18.440
<v Speaker 6>a lot of teams are missing as kind of a

1072
00:50:18.480 --> 00:50:22.239
<v Speaker 6>developer self service platform for handling. You know, how do

1073
00:50:22.320 --> 00:50:25.679
<v Speaker 6>we deploy to these different platforms, how do we kind

1074
00:50:25.719 --> 00:50:29.199
<v Speaker 6>of track that, get visibility across the organization, how do

1075
00:50:29.239 --> 00:50:34.079
<v Speaker 6>we kind of implement standard workflows and things like that.

1076
00:50:34.199 --> 00:50:36.840
<v Speaker 6>So this is a really really interesting tool does what

1077
00:50:36.880 --> 00:50:37.800
<v Speaker 6>it does really well.

1078
00:50:38.440 --> 00:50:41.360
<v Speaker 5>It's a little more on the enterprise.

1079
00:50:40.719 --> 00:50:44.000
<v Speaker 6>Side of the DevOps sort of tooling space, so probably

1080
00:50:44.000 --> 00:50:47.239
<v Speaker 6>not for tiny startups, but if you are at the

1081
00:50:47.239 --> 00:50:49.599
<v Speaker 6>point where you're scaling and you're running into issues like

1082
00:50:49.639 --> 00:50:54.639
<v Speaker 6>standardizing deployments, trying to scale ups and let developers kind

1083
00:50:54.639 --> 00:50:58.280
<v Speaker 6>of self service deployments and define their own workflows and

1084
00:50:58.320 --> 00:51:00.960
<v Speaker 6>those kind of things, it's very worth looking into.

1085
00:51:01.480 --> 00:51:01.960
<v Speaker 2>Awesome.

1086
00:51:02.239 --> 00:51:04.119
<v Speaker 1>I'm going to jump in here with a few picks,

1087
00:51:04.480 --> 00:51:06.360
<v Speaker 1>just making sure I'm not muted. I'm going to jump

1088
00:51:06.400 --> 00:51:08.320
<v Speaker 1>in with a few picks, so I do want to

1089
00:51:08.360 --> 00:51:11.119
<v Speaker 1>shout out about dev Influencers. I'm not going to go

1090
00:51:11.159 --> 00:51:13.039
<v Speaker 1>into too many more details than I went into at

1091
00:51:13.079 --> 00:51:15.199
<v Speaker 1>the beginning, but you can get the podcast at dev

1092
00:51:15.239 --> 00:51:19.039
<v Speaker 1>Influencers dot com a's Dev Influencers with an s dot

1093
00:51:19.079 --> 00:51:23.039
<v Speaker 1>com slash podcast, you can also apply for the Accelerator

1094
00:51:23.079 --> 00:51:25.880
<v Speaker 1>Dev Influencers dot Com Slash A reply and I've been

1095
00:51:25.880 --> 00:51:29.079
<v Speaker 1>helping people get their podcasts started and build an audience

1096
00:51:29.119 --> 00:51:31.079
<v Speaker 1>so that they can build a career.

1097
00:51:30.840 --> 00:51:33.840
<v Speaker 2>In the future that they want. And I'm I'm really

1098
00:51:33.920 --> 00:51:34.800
<v Speaker 2>really enjoying it.

1099
00:51:35.519 --> 00:51:38.679
<v Speaker 1>I just I did not realize how much fun helping

1100
00:51:38.719 --> 00:51:42.599
<v Speaker 1>people like coaching direct coaching is and I just I love, love,

1101
00:51:42.679 --> 00:51:45.400
<v Speaker 1>love love doing it. So and I've been recording videos

1102
00:51:45.440 --> 00:51:47.920
<v Speaker 1>and putting them up on teachable So that's that's where

1103
00:51:47.960 --> 00:51:50.760
<v Speaker 1>the teachable mention comes in a few other picks. So

1104
00:51:51.159 --> 00:51:53.119
<v Speaker 1>I don't know how things are in other parts of

1105
00:51:53.119 --> 00:51:57.000
<v Speaker 1>the US, but here in Utah things are pretty much

1106
00:51:57.000 --> 00:52:01.079
<v Speaker 1>opening up. The mask mandate lifts for everything except schools,

1107
00:52:01.119 --> 00:52:03.960
<v Speaker 1>and I guess certain spaces with certain numbers of people

1108
00:52:03.960 --> 00:52:07.079
<v Speaker 1>where you can't social distance, But for everywhere else, the

1109
00:52:07.079 --> 00:52:09.679
<v Speaker 1>mass bandate lifts. In like three days, my wife and

1110
00:52:09.719 --> 00:52:11.559
<v Speaker 1>I actually went on a date and we went out

1111
00:52:11.599 --> 00:52:13.679
<v Speaker 1>to a movie. We were like two of the four

1112
00:52:13.719 --> 00:52:16.960
<v Speaker 1>people in the movie theater watching the movie, but we

1113
00:52:17.119 --> 00:52:18.360
<v Speaker 1>really really enjoyed it.

1114
00:52:18.360 --> 00:52:19.679
<v Speaker 2>It was called the Career.

1115
00:52:19.960 --> 00:52:23.559
<v Speaker 1>Has Bennetett Cover Badge in it.

1116
00:52:23.559 --> 00:52:24.920
<v Speaker 2>It's a spy movie.

1117
00:52:24.920 --> 00:52:27.280
<v Speaker 1>Now, before you get all excited like James Bond, No,

1118
00:52:27.400 --> 00:52:30.400
<v Speaker 1>in fact, I have to tell this story because it's

1119
00:52:30.400 --> 00:52:33.400
<v Speaker 1>pretty funny. So my wife and I we were walking

1120
00:52:33.440 --> 00:52:35.840
<v Speaker 1>out of the theater. I was waiting for her outside

1121
00:52:35.840 --> 00:52:38.519
<v Speaker 1>the restroom, and the girls who were sitting in like

1122
00:52:38.559 --> 00:52:41.079
<v Speaker 1>three rows behind us were walking out and one of

1123
00:52:41.119 --> 00:52:44.239
<v Speaker 1>them goes, did you like it? And the other one goes, yeah,

1124
00:52:44.320 --> 00:52:47.239
<v Speaker 1>it was okay, And she goes did you like it?

1125
00:52:47.280 --> 00:52:49.320
<v Speaker 1>And the other girl goes, yeah, well it was okay.

1126
00:52:49.360 --> 00:52:51.079
<v Speaker 1>But I was kind of expecting more of a James

1127
00:52:51.159 --> 00:52:54.119
<v Speaker 1>Bond movie. And I'm sitting there thinking to myself, you

1128
00:52:54.119 --> 00:52:57.239
<v Speaker 1>didn't watch the trailer, did you? Because the trailer it's

1129
00:52:57.400 --> 00:53:01.960
<v Speaker 1>very obvious it's a Cold War spy based on a

1130
00:53:02.000 --> 00:53:04.519
<v Speaker 1>true story kind of thing, right, and so it's going

1131
00:53:04.559 --> 00:53:06.639
<v Speaker 1>to be about tradecraft. It's not going to be about

1132
00:53:06.639 --> 00:53:10.559
<v Speaker 1>somebody jumping through windows and shooting guns. Sorry, but I

1133
00:53:10.679 --> 00:53:13.719
<v Speaker 1>really enjoy some of the historical contexts that some of

1134
00:53:13.760 --> 00:53:15.079
<v Speaker 1>these films have brought up.

1135
00:53:15.360 --> 00:53:15.559
<v Speaker 2>Yeah.

1136
00:53:15.599 --> 00:53:18.760
<v Speaker 1>I know they take some license right to make the

1137
00:53:18.760 --> 00:53:22.480
<v Speaker 1>film more interesting, but you know, generally I find that

1138
00:53:22.559 --> 00:53:25.440
<v Speaker 1>mostly they stick to the facts on most of these films.

1139
00:53:25.440 --> 00:53:26.679
<v Speaker 2>You just don't have to go check. Right.

1140
00:53:26.760 --> 00:53:30.320
<v Speaker 1>But this guy, he was a salesman in Great Britain,

1141
00:53:31.000 --> 00:53:34.679
<v Speaker 1>and the British were still allowed to do business with

1142
00:53:34.920 --> 00:53:38.679
<v Speaker 1>the USSR in the sixties, and so he opened up

1143
00:53:38.679 --> 00:53:44.079
<v Speaker 1>accounts and was selling machine parts to the Soviets in

1144
00:53:44.280 --> 00:53:49.840
<v Speaker 1>Moscow in the nineteen sixties, and six recruited him on

1145
00:53:49.920 --> 00:53:54.239
<v Speaker 1>behalf of the US to carry intelligence back. And so

1146
00:53:55.000 --> 00:53:59.320
<v Speaker 1>this official in the USSR winds up becoming a trader

1147
00:53:59.360 --> 00:54:02.679
<v Speaker 1>to the USA and he's feeding them all this information

1148
00:54:03.159 --> 00:54:05.079
<v Speaker 1>and some of it like you see it and you're like,

1149
00:54:05.440 --> 00:54:07.519
<v Speaker 1>that's how they knew about that. Oh, that's how they

1150
00:54:07.559 --> 00:54:10.960
<v Speaker 1>knew about this. So it was really really fascinating. But yeah,

1151
00:54:11.000 --> 00:54:12.800
<v Speaker 1>so he would just pass it off and this guy

1152
00:54:12.800 --> 00:54:14.199
<v Speaker 1>would just take it away, and I never knew what

1153
00:54:14.360 --> 00:54:18.199
<v Speaker 1>was in a lot of it, right, And anyway, it's

1154
00:54:18.199 --> 00:54:21.280
<v Speaker 1>a terrific film, and it's really fascinating because you're spending

1155
00:54:21.280 --> 00:54:24.320
<v Speaker 1>the whole times that they're going is he gonna get caught?

1156
00:54:24.480 --> 00:54:27.159
<v Speaker 1>And yeah, anyway, I'm not gonna spoil the end of it.

1157
00:54:27.440 --> 00:54:29.880
<v Speaker 1>I have no spoilers policy. If it's been out less

1158
00:54:29.880 --> 00:54:31.880
<v Speaker 1>than a year. In this movie has been out less

1159
00:54:31.880 --> 00:54:35.039
<v Speaker 1>than a year, so go watch it. It's terrific. He

1160
00:54:35.119 --> 00:54:37.480
<v Speaker 1>does such a terrific job too, because you kind of

1161
00:54:37.480 --> 00:54:39.239
<v Speaker 1>see him in a lot of these other movies as

1162
00:54:39.719 --> 00:54:44.360
<v Speaker 1>kind of this svelt kind of action figure, and you know,

1163
00:54:44.440 --> 00:54:46.639
<v Speaker 1>he's been a at coub badge and so he's he's

1164
00:54:46.679 --> 00:54:52.079
<v Speaker 1>in shape, but he definitely pulls off playing the kind

1165
00:54:52.079 --> 00:54:58.159
<v Speaker 1>of normal, friendly, jovial salesman guy who you know isn't

1166
00:54:58.199 --> 00:55:00.639
<v Speaker 1>the action figure that's going to go in save the Day.

1167
00:55:01.159 --> 00:55:03.559
<v Speaker 1>So I loved it, absolutely loved it. And so yeah,

1168
00:55:03.559 --> 00:55:06.039
<v Speaker 1>that's the courier if you're out looking for a movie

1169
00:55:06.039 --> 00:55:06.599
<v Speaker 1>to go watch.

1170
00:55:06.920 --> 00:55:08.119
<v Speaker 2>James, what are your picks?

1171
00:55:08.360 --> 00:55:11.599
<v Speaker 4>Okay, so my pick is about diagrams. I've been thinking

1172
00:55:11.599 --> 00:55:14.679
<v Speaker 4>a lot about diagrams recently, and a large part of

1173
00:55:14.719 --> 00:55:16.760
<v Speaker 4>my work at the moment is trying to make sure

1174
00:55:16.760 --> 00:55:19.159
<v Speaker 4>we've got architectural diagrams for some of the projects we're

1175
00:55:19.199 --> 00:55:19.599
<v Speaker 4>working on.

1176
00:55:20.000 --> 00:55:21.679
<v Speaker 2>So my pick is, well, it's not new.

1177
00:55:21.719 --> 00:55:23.440
<v Speaker 4>In fact, it's really old, and I'm sure a lot

1178
00:55:23.440 --> 00:55:24.639
<v Speaker 4>of people are already aware of it.

1179
00:55:24.719 --> 00:55:26.559
<v Speaker 2>But there's a particular.

1180
00:55:26.119 --> 00:55:30.000
<v Speaker 4>Website that I found recently, So plant mL is a

1181
00:55:30.000 --> 00:55:32.960
<v Speaker 4>tool that you can use to generate diagrams. Some people

1182
00:55:33.000 --> 00:55:34.880
<v Speaker 4>may already be aware of it. I only discovered it

1183
00:55:34.920 --> 00:55:38.039
<v Speaker 4>fairly recently, but I found a website called real World

1184
00:55:38.119 --> 00:55:40.719
<v Speaker 4>plant mL, and it gives some examples that make it

1185
00:55:40.800 --> 00:55:43.199
<v Speaker 4>much easier to see some of the things that's possible

1186
00:55:43.199 --> 00:55:46.320
<v Speaker 4>to do with plant mL. For those who are thinking, oh,

1187
00:55:46.360 --> 00:55:49.360
<v Speaker 4>I don't want to do UML diagrams, it actually generates

1188
00:55:49.400 --> 00:55:52.559
<v Speaker 4>lots of different types of diagrams, not just UML diagrams,

1189
00:55:52.639 --> 00:55:55.199
<v Speaker 4>and we're using it quite a bit of my work

1190
00:55:55.280 --> 00:55:59.119
<v Speaker 4>for creating threat models for some of our services. One

1191
00:55:59.159 --> 00:56:01.480
<v Speaker 4>of the benefits of you plant YOUML rather than another

1192
00:56:01.559 --> 00:56:04.320
<v Speaker 4>diagramming tool is that you actually write the diagram in

1193
00:56:04.400 --> 00:56:07.480
<v Speaker 4>a textual format and then it generates the graphics from

1194
00:56:07.480 --> 00:56:10.960
<v Speaker 4>that for you, which means you can keep the source

1195
00:56:10.960 --> 00:56:13.519
<v Speaker 4>of the diagram in version control. People can do pull

1196
00:56:13.559 --> 00:56:16.760
<v Speaker 4>requests against it and that kind of thing. Anyway, this website,

1197
00:56:16.920 --> 00:56:20.639
<v Speaker 4>real World plan YOUML, is really helpful because the syntax

1198
00:56:20.679 --> 00:56:22.719
<v Speaker 4>can sometimes be a little bit forbidding if you're not

1199
00:56:22.840 --> 00:56:24.559
<v Speaker 4>used to it, and it shows you some examples of

1200
00:56:24.559 --> 00:56:26.800
<v Speaker 4>what can be achieved with it and how you can

1201
00:56:26.840 --> 00:56:29.239
<v Speaker 4>achieve it. So that's been I've been copying quite a

1202
00:56:29.239 --> 00:56:32.639
<v Speaker 4>few things from that recently just to help with making

1203
00:56:32.639 --> 00:56:34.159
<v Speaker 4>my diagrams.

1204
00:56:33.719 --> 00:56:35.119
<v Speaker 2>Awesome, very cool.

1205
00:56:35.320 --> 00:56:38.480
<v Speaker 1>All right, well, before we wrap up, I'm assuming that

1206
00:56:38.559 --> 00:56:42.039
<v Speaker 1>people can find you online. Looks like you published a medium,

1207
00:56:42.320 --> 00:56:43.960
<v Speaker 1>so if you want to let people know where you

1208
00:56:44.039 --> 00:56:46.400
<v Speaker 1>do that, and then if you're on GitHub and Twitter

1209
00:56:46.440 --> 00:56:48.440
<v Speaker 1>and places like that, if you can let people know

1210
00:56:48.480 --> 00:56:50.039
<v Speaker 1>where you are there too, that would be great.

1211
00:56:50.239 --> 00:56:50.480
<v Speaker 2>Sure.

1212
00:56:50.559 --> 00:56:53.880
<v Speaker 4>Yes, So my username on Medium on Twitter is well

1213
00:56:53.960 --> 00:56:55.679
<v Speaker 4>my name without the ue at the end, so it's

1214
00:56:55.719 --> 00:56:59.280
<v Speaker 4>James Donald jam s d O n oh and the

1215
00:56:59.280 --> 00:57:01.280
<v Speaker 4>same one get hub as well, so you can find

1216
00:57:01.320 --> 00:57:03.320
<v Speaker 4>me that same on Twitter.

1217
00:57:03.679 --> 00:57:05.760
<v Speaker 2>Cool. Well, thanks for coming, This was fun, Thanks for

1218
00:57:05.800 --> 00:57:07.679
<v Speaker 2>having me. It's been great. All right.

1219
00:57:07.760 --> 00:57:10.079
<v Speaker 1>Well we'll go ahead and wrap up here and until

1220
00:57:10.119 --> 00:57:11.599
<v Speaker 1>next time, folks, max out.
