1
00:00:00,030 --> 00:00:01,860
AI tools are very bad at 
refactoring. 

2
00:00:01,920 --> 00:00:03,750
They make mistakes. 
They introduce bugs. 

3
00:00:03,810 --> 00:00:07,080
And they forget things or they 
introduce dead code. 

4
00:00:07,110 --> 00:00:09,660
I advise against just producing 
huge amounts of code that you 

5
00:00:09,660 --> 00:00:11,874
don't really understand. 
That doesn't seem like a recipe 

6
00:00:11,874 --> 00:00:14,204
for success. 
Emily Bache, a technical coach 

7
00:00:14,204 --> 00:00:16,654
and a member of Dave Farley's 
Modern Software Engineering 

8
00:00:16,654 --> 00:00:19,446
channel, reveals how to level up
your engineering teams in the 

9
00:00:19,446 --> 00:00:22,129
age of AI. 
The more skilled you are with 

10
00:00:22,129 --> 00:00:24,851
modern software engineering 
practices like working in small 

11
00:00:24,851 --> 00:00:28,003
increments and writing tests. 
All of those skills are just 

12
00:00:28,003 --> 00:00:29,725
amplified when you've got AI 
tools. 

13
00:00:29,814 --> 00:00:32,034
How do you define the role of a 
technical coach? 

14
00:00:32,064 --> 00:00:33,955
My job is not to deliver code 
myself. 

15
00:00:33,985 --> 00:00:37,261
It's to deliver a team with a 
better capability to deliver 

16
00:00:37,261 --> 00:00:40,006
better code. 
The two main activities I do are

17
00:00:40,006 --> 00:00:42,811
learning hours and ensemble. 
Everyone struggles with code 

18
00:00:42,811 --> 00:00:44,741
quality. 
Everyone has a certain amount of

19
00:00:44,741 --> 00:00:46,510
technical debt. 
Everyone I've seen could learn 

20
00:00:46,510 --> 00:00:48,205
to use the tools they have 
better. 

21
00:00:48,265 --> 00:00:51,584
You don't learn how to produce 
beautiful code only by looking 

22
00:00:51,584 --> 00:00:53,475
at a good design and analyzing 
it. 

23
00:00:53,505 --> 00:00:57,255
Junior developers need mentoring
to turn into senior developers. 

24
00:00:57,855 --> 00:01:01,046
And mentoring is more than just 
writing comments and pull 

25
00:01:01,046 --> 00:01:03,380
requests. 
Ensemble is another word for mob

26
00:01:03,380 --> 00:01:05,391
programming. 
You get a group of software 

27
00:01:05,391 --> 00:01:07,425
developers together to 
collaborate and produce code. 

28
00:01:07,455 --> 00:01:10,684
It's a great forum for learning 
because you see each other not 

29
00:01:10,684 --> 00:01:12,774
only producing a code at the 
end. 

30
00:01:12,774 --> 00:01:14,854
You get to see how people 
produce the code. 

31
00:01:14,910 --> 00:01:17,010
There are two main failure modes
for an ensemble. 

32
00:01:17,010 --> 00:01:19,438
One is that you've got a group 
of five or six people and you've

33
00:01:19,438 --> 00:01:21,794
got one person with a keyboard 
and they're doing all the work, 

34
00:01:21,794 --> 00:01:23,250
and everyone else is just zoning
out. 

35
00:01:23,430 --> 00:01:42,055
The other failure mode is. 
Hello, everyone. 

36
00:01:42,055 --> 00:01:44,723
Welcome back to another new 
episode of the Tech Lead Journal

37
00:01:44,723 --> 00:01:46,474
podcast. 
Today, I have with me Emily 

38
00:01:46,474 --> 00:01:48,625
Bache. 
Uh, she's actually a technical 

39
00:01:48,625 --> 00:01:51,111
coach. 
Maybe some of you know technical

40
00:01:51,111 --> 00:01:53,218
coach, in your experience, in 
your career. 

41
00:01:53,548 --> 00:01:56,601
But rarely actually I hear about
technical coach, at least 

42
00:01:56,601 --> 00:01:58,586
within, you know, my region, 
Southeast Asia. 

43
00:01:59,121 --> 00:02:03,578
Especially Emily is specializing
in this method called Samman 

44
00:02:03,578 --> 00:02:05,791
method. 
Actually I have never heard 

45
00:02:05,791 --> 00:02:08,122
about Samman method before until
I did my research. 

46
00:02:08,583 --> 00:02:11,242
So yeah, hopefully we can learn 
a thing or two about Samman 

47
00:02:11,242 --> 00:02:14,654
method, why it is something that
she's advocating, and we'll also

48
00:02:14,654 --> 00:02:17,690
learn about what a technical 
coach role is. 

49
00:02:17,720 --> 00:02:20,828
So Emily, welcome to the show. 
Thank you for having me. 

50
00:02:20,828 --> 00:02:23,183
I'm pleased to be invited. 
Right. 

51
00:02:23,183 --> 00:02:25,853
Emily, I always love to invite 
my guests to probably share a 

52
00:02:25,853 --> 00:02:27,503
little bit more from your 
career. 

53
00:02:27,503 --> 00:02:29,933
Any turning points that you 
think we can learn from you? 

54
00:02:31,156 --> 00:02:35,393
Yeah, so I've been in this 
business for like 25 years since

55
00:02:35,393 --> 00:02:38,169
I graduated with a degree in 
software engineering. 

56
00:02:38,919 --> 00:02:43,368
And I, uh, we lived in the UK. 
And then I worked in the UK as a

57
00:02:43,368 --> 00:02:46,093
software developer for a bit. 
And then my husband and I moved 

58
00:02:46,093 --> 00:02:47,949
to Sweden, and we've been here 
ever since. 

59
00:02:48,658 --> 00:02:52,434
I was also very privileged to be
an early adopter of extreme 

60
00:02:52,434 --> 00:02:54,950
programming. 
I started doing that on a 

61
00:02:54,950 --> 00:02:58,748
project in like the year 2000, 
and it was a huge influence on 

62
00:02:58,748 --> 00:03:01,334
me. 
I've been doing like test-driven

63
00:03:01,334 --> 00:03:03,870
development and all that stuff 
for a long time now. 

64
00:03:04,657 --> 00:03:08,344
Over the years, I've been trying
to help others to learn these 

65
00:03:08,344 --> 00:03:13,047
skills in various ways. 
I had a stint as an architect, 

66
00:03:13,047 --> 00:03:16,597
test architect in a company. 
But these days I'm an 

67
00:03:16,597 --> 00:03:19,573
independent consultant. 
And I technical coach and I go 

68
00:03:19,573 --> 00:03:22,039
around different companies 
helping teams to learn better 

69
00:03:22,039 --> 00:03:24,368
coding skills, basically. 
Yeah. 

70
00:03:24,368 --> 00:03:27,338
And I saw you're actually also 
part of the Modern Engineering, 

71
00:03:27,338 --> 00:03:30,732
so the, I dunno, the YouTube 
channel or the group set up by 

72
00:03:30,732 --> 00:03:32,548
Dave Farley. 
So tell us a little bit more 

73
00:03:32,548 --> 00:03:33,862
about that. 
Like what's your experience so 

74
00:03:33,862 --> 00:03:35,602
far? 
Yeah. 

75
00:03:35,602 --> 00:03:39,057
Oh, that's, that was, uh, I was 
so pleased when Dave Farley came

76
00:03:39,057 --> 00:03:42,535
to me and invited me to be one 
of the presenters on this, this 

77
00:03:42,535 --> 00:03:44,507
channel. 
Um, it's really, it's really 

78
00:03:44,507 --> 00:03:47,392
cool to get. 
Cause I, you know, I have ideas 

79
00:03:47,392 --> 00:03:50,928
and stuff I wanna share and talk
about, and Dave has built up 

80
00:03:50,928 --> 00:03:55,202
this huge following on YouTube. 
So it's great to be able to talk

81
00:03:55,202 --> 00:03:57,122
about that stuff for that 
audience. 

82
00:03:57,182 --> 00:04:00,466
But also that when I'm preparing
what I'm gonna say, of course, 

83
00:04:00,466 --> 00:04:03,440
Dave Farley gives me advice, you
know, feedback on, on what I'm 

84
00:04:03,440 --> 00:04:06,371
planning to say. 
And we have a chat amongst the 

85
00:04:06,371 --> 00:04:08,570
presenters about what we wanna 
talk about. 

86
00:04:08,570 --> 00:04:11,036
And it's really nice group to be
involved with. 

87
00:04:11,186 --> 00:04:14,696
So I hope people like to see the
things that we produce as well. 

88
00:04:15,731 --> 00:04:18,836
Yeah, personally, I've been 
seeing a couple of more, you 

89
00:04:18,836 --> 00:04:22,400
know, contents either through 
email or videos, right, on 

90
00:04:22,400 --> 00:04:25,035
YouTube. 
So hopefully we can see a lot of

91
00:04:25,035 --> 00:04:27,497
cool stuff happening from that 
Modern Engineering channel. 

92
00:04:27,887 --> 00:04:31,111
So today we are going to talk 
about technical coaching with 

93
00:04:31,111 --> 00:04:33,003
Samman methods. 
So maybe let's start with the 

94
00:04:33,003 --> 00:04:34,717
role itself. 
Like I mentioned in the 

95
00:04:34,717 --> 00:04:37,698
beginning, for some of us here 
within this region, it is 

96
00:04:37,698 --> 00:04:40,946
actually very rare to hear about
a team having technical coach. 

97
00:04:41,276 --> 00:04:44,270
Maybe it's more prominent to 
have Agile coaches or other type

98
00:04:44,270 --> 00:04:46,556
of coaches like leadership coach
and things like that. 

99
00:04:46,836 --> 00:04:50,254
So maybe first thing, how do you
define the role of a technical 

100
00:04:50,254 --> 00:04:53,993
coach? 
So Agile coaches are more 

101
00:04:53,993 --> 00:04:58,496
concerned with kind of teams and
process and introducing Agile 

102
00:04:58,496 --> 00:05:03,633
ceremonies and ways of working. 
But technical coach, my concern 

103
00:05:03,633 --> 00:05:07,017
is much more around the code, 
the people writing the code, how

104
00:05:07,017 --> 00:05:10,397
the code is being written and 
whether we can raise the quality

105
00:05:10,397 --> 00:05:13,842
of the code and raise the skills
of the people writing it. 

106
00:05:14,381 --> 00:05:17,513
It's much more focused around 
that part of what's going on. 

107
00:05:17,903 --> 00:05:20,063
And my background, as I said, is
a software developer. 

108
00:05:20,063 --> 00:05:24,117
So you need very good technical 
skills to be a technical coach. 

109
00:05:24,207 --> 00:05:26,347
Uh, you need a background in 
software development. 

110
00:05:26,847 --> 00:05:28,827
And not all Agile coaches have 
that. 

111
00:05:29,247 --> 00:05:32,081
So it's, I see it as a 
complimentary role. 

112
00:05:32,111 --> 00:05:35,151
I mean, I'd love to work with an
Agile coach with a team. 

113
00:05:35,631 --> 00:05:38,605
So I would get to focus more on 
the technical side of things and

114
00:05:38,605 --> 00:05:41,181
the Agile coach more on the 
process and the organization 

115
00:05:41,181 --> 00:05:44,608
side of things. 
Yeah, probably if I can map it 

116
00:05:44,608 --> 00:05:46,903
to like a common engineering 
team set up, right? 

117
00:05:47,023 --> 00:05:49,553
So there's an engineering 
manager who is more on the 

118
00:05:49,553 --> 00:05:52,431
process, you know, delivery and 
stuff while the technical lead 

119
00:05:52,431 --> 00:05:54,608
probably is playing that role, 
you know. 

120
00:05:54,608 --> 00:05:57,587
Like making sure that the code 
is written well, the process, 

121
00:05:57,587 --> 00:05:59,871
engineering process. 
And you mentioned a couple of 

122
00:05:59,871 --> 00:06:01,887
key things that I think are 
interesting, right? 

123
00:06:01,887 --> 00:06:05,683
So you focus more on the code, 
uh, writing the code, you know, 

124
00:06:05,683 --> 00:06:07,975
the skills to write a good code,
I suppose. 

125
00:06:08,245 --> 00:06:10,631
And the quality. 
So obviously these days there 

126
00:06:10,631 --> 00:06:13,631
are a lot of changes in terms of
trends and technology 

127
00:06:13,631 --> 00:06:16,151
advancement and AI come into the
picture, right? 

128
00:06:16,525 --> 00:06:19,753
So what do you think? 
Is AI a disruptor to your role? 

129
00:06:19,873 --> 00:06:23,347
Is AI an amplifier to your role?
What has been your experience so

130
00:06:23,347 --> 00:06:26,969
far? 
Yeah, I mean the AI tools that 

131
00:06:26,969 --> 00:06:31,009
are coming in are more and more 
impressive, and more and more 

132
00:06:31,009 --> 00:06:35,206
people are are using them. 
So of course, my role is to help

133
00:06:35,206 --> 00:06:37,225
software developers to write 
better code. 

134
00:06:37,255 --> 00:06:40,473
And the software developers that
I work with all have these 

135
00:06:40,473 --> 00:06:42,367
tools. 
They all have AI tools that 

136
00:06:42,367 --> 00:06:45,259
they're starting to use. 
So I don't think it really 

137
00:06:45,259 --> 00:06:48,419
changes my role so much as I 
also need to understand how to 

138
00:06:48,419 --> 00:06:51,707
use these tools well so that I 
can help others with that. 

139
00:06:52,187 --> 00:06:55,865
Because I think it's, I dunno if
it's kind of this feeling that 

140
00:06:55,865 --> 00:06:59,147
these AI tools are so easy to 
use that it doesn't need any 

141
00:06:59,147 --> 00:07:01,745
training, that you just give 
them to all the developers and 

142
00:07:01,745 --> 00:07:05,471
everyone will just work it out. 
But I think a lot of software 

143
00:07:05,471 --> 00:07:07,923
developers actually benefit from
getting some advice about how to

144
00:07:07,923 --> 00:07:11,372
best use these tools. 
And a lot of the advice that I'm

145
00:07:11,372 --> 00:07:14,936
giving at the moment is that, 
you know, it's that the more 

146
00:07:14,936 --> 00:07:17,995
skilled you are with modern 
software engineering practices, 

147
00:07:17,995 --> 00:07:22,587
like working in small increments
and writing tests and being able

148
00:07:22,587 --> 00:07:27,707
to explain what the user benefit
of the software is in tests. 

149
00:07:27,887 --> 00:07:30,972
You know, all of those skills 
that, you know, I've been 

150
00:07:30,972 --> 00:07:34,576
teaching for a long time are 
just amplified when you've got 

151
00:07:34,576 --> 00:07:37,022
AI tools. 
And the AI tools work much 

152
00:07:37,022 --> 00:07:39,022
better if you can do all those 
things. 

153
00:07:39,592 --> 00:07:42,881
So I'm not sure that it's 
disrupted my role so much as I 

154
00:07:42,881 --> 00:07:45,767
have to be able to incorporate 
advice about using these tools 

155
00:07:45,767 --> 00:07:47,636
into the training and coaching I
do. 

156
00:07:48,500 --> 00:07:50,630
Yeah, personally, I fully agree 
with what you said, right? 

157
00:07:50,630 --> 00:07:53,197
So given like a good 
understanding about the 

158
00:07:53,197 --> 00:07:55,418
fundamentals, the practices, the
important practices, like you 

159
00:07:55,418 --> 00:07:58,232
mentioned, you know. 
The XP practices, for example, 

160
00:07:58,232 --> 00:08:01,079
like test-driven development, 
having automated tests, the 

161
00:08:01,079 --> 00:08:03,527
CI/CD integration, and things 
like that. 

162
00:08:03,827 --> 00:08:07,482
Definitely using AI is going to 
amplify all those important 

163
00:08:07,482 --> 00:08:11,347
stuff and you probably will get 
more things done in a higher 

164
00:08:11,347 --> 00:08:13,912
quality. 
So that will be the wish of 

165
00:08:13,912 --> 00:08:15,522
almost everybody in software 
engineering. 

166
00:08:15,809 --> 00:08:18,112
But yeah, we'll see. 
I mean, whether AI can actually 

167
00:08:18,112 --> 00:08:20,272
help people in terms of 
improving the quality. 

168
00:08:20,872 --> 00:08:23,562
But one thing for sure about 
software engineering that I 

169
00:08:23,562 --> 00:08:26,711
picked from reading the book, 
right, so it is mentioned that 

170
00:08:26,711 --> 00:08:29,624
software engineering is actually
more like a learning process 

171
00:08:29,624 --> 00:08:32,958
rather than so-called, you know,
doing the production process or,

172
00:08:32,958 --> 00:08:35,975
you know, just writing the code 
in order to build something, 

173
00:08:35,975 --> 00:08:38,601
right? 
So tell us the important thing 

174
00:08:38,601 --> 00:08:42,015
about this learning process. 
Yeah, I totally agree. 

175
00:08:42,015 --> 00:08:44,996
I mean, I think this is what 
Dave Farley says in his book, 

176
00:08:44,996 --> 00:08:47,290
Modern Software Engineering, 
that there's two big problems 

177
00:08:47,290 --> 00:08:50,859
that you need to solve. 
And one is to manage the 

178
00:08:50,859 --> 00:08:53,724
complexity in the software, in 
the world, in, you know, 

179
00:08:53,724 --> 00:08:56,309
actually solving the problem, 
which this problem the software 

180
00:08:56,309 --> 00:08:59,832
is solving is really complex. 
But the other half of it is 

181
00:08:59,832 --> 00:09:02,480
optimizing for learning, because
the world's changing and you 

182
00:09:02,480 --> 00:09:05,592
need to be able to keep up. 
So these are the primary drivers

183
00:09:05,592 --> 00:09:08,925
of most of what we do in, when 
we're building software, we're 

184
00:09:08,925 --> 00:09:12,762
trying to make sure that we are 
learning about what we need to 

185
00:09:12,762 --> 00:09:15,743
build and we're trying to manage
that complexity with good design

186
00:09:15,743 --> 00:09:19,636
and so on in the code. 
So yeah, I'm absolutely, uh, 

187
00:09:19,636 --> 00:09:23,196
trying to help teams with that. 
Just to go back to, you said 

188
00:09:23,196 --> 00:09:25,283
earlier about, you know, that 
it's similar, what I do is 

189
00:09:25,283 --> 00:09:28,361
similar to a tech lead. 
So a tech lead would be on a 

190
00:09:28,361 --> 00:09:30,546
team and they would be 
responsible for helping everyone

191
00:09:30,546 --> 00:09:32,603
around them to produce good 
code. 

192
00:09:32,603 --> 00:09:34,578
And that is of course what I'm 
doing. 

193
00:09:34,578 --> 00:09:37,144
But my job is not to deliver 
code myself. 

194
00:09:37,534 --> 00:09:41,824
It's to deliver a team with a 
better capability to deliver 

195
00:09:41,824 --> 00:09:43,753
better code. 
I'm a coach. 

196
00:09:43,753 --> 00:09:46,949
I'm not delivering myself. 
I'm delivering, uh, improvements

197
00:09:46,949 --> 00:09:49,913
to other people. 
So it's a little bit meta in 

198
00:09:49,913 --> 00:09:52,381
that sense. 
But of course I need to help 

199
00:09:52,381 --> 00:09:54,649
them to optimize for learning 
and manage the complexity they 

200
00:09:54,649 --> 00:09:56,227
have. 
Yeah. 

201
00:09:56,317 --> 00:09:58,919
When you say optimize for 
learning for software engineers,

202
00:09:58,919 --> 00:10:01,417
what will be the typical things 
that you do? 

203
00:10:01,611 --> 00:10:05,007
Or maybe this is also a good 
segue to what you are, you know,

204
00:10:05,007 --> 00:10:07,180
the Samman method that you are 
conducting as well. 

205
00:10:08,623 --> 00:10:11,503
Yeah, so let's just outline the 
Samman method and how it can 

206
00:10:11,503 --> 00:10:13,730
help with these aspects of 
software engineering. 

207
00:10:13,730 --> 00:10:17,278
So, when I come in with a team, 
of course, I need to get to know

208
00:10:17,278 --> 00:10:20,337
that situation a little bit and 
talk to them and establish 

209
00:10:20,337 --> 00:10:24,116
whether it's a good fit. 
But after that, the two main 

210
00:10:24,116 --> 00:10:27,267
activities I do are learning 
hours and ensemble. 

211
00:10:28,004 --> 00:10:31,440
The learning hours are where we 
kind of focus on building 

212
00:10:31,440 --> 00:10:33,984
skills, doing exercises, 
practicing techniques that are 

213
00:10:33,984 --> 00:10:36,670
gonna be useful in the 
production code. 

214
00:10:37,420 --> 00:10:41,035
And then in the, uh, the main 
ensemble, that's where we go 

215
00:10:41,035 --> 00:10:44,485
into their production code. 
I sit with the team and we try 

216
00:10:44,485 --> 00:10:48,296
and, you know, build a feature 
or add some unit tests or do 

217
00:10:48,296 --> 00:10:51,766
something realistic in their 
code and I'll coach them through

218
00:10:51,766 --> 00:10:55,143
it. 
And all the time I'm, so for 

219
00:10:55,143 --> 00:10:58,028
things like optimize for 
learning, I mean, that's, you're

220
00:10:58,028 --> 00:11:00,652
trying to learn about the 
problem your software is trying 

221
00:11:00,652 --> 00:11:04,736
to solve and... 
But also you need to be learning

222
00:11:04,736 --> 00:11:08,102
skills and improving and 
leveling up your ability to 

223
00:11:08,102 --> 00:11:10,877
deliver. 
So I guess that's the aspect of 

224
00:11:10,877 --> 00:11:13,007
optimizing for learning that I'm
mostly focused on. 

225
00:11:13,887 --> 00:11:16,023
And then the managing 
complexity, that's all about 

226
00:11:16,023 --> 00:11:19,840
having design skills, basically,
about being able to divide up 

227
00:11:19,840 --> 00:11:23,170
the problem and decompose it 
into modules or classes. 

228
00:11:23,560 --> 00:11:29,245
And also that the skills to 
evolve that design, to manage as

229
00:11:29,245 --> 00:11:31,982
the complexity increases, new 
features come in that you can 

230
00:11:31,982 --> 00:11:34,756
evolve the design. 
And that's something that comes 

231
00:11:34,756 --> 00:11:38,095
up in, uh, the skills that we 
learn in the learning hours, and

232
00:11:38,095 --> 00:11:40,119
of course the hands-on in the 
teams code. 

233
00:11:40,942 --> 00:11:43,528
Yeah, learning hours and 
ensemble seems to be like the 

234
00:11:43,528 --> 00:11:45,904
two core parts of the Samman 
method, right? 

235
00:11:46,204 --> 00:11:50,098
So I guess, let's probably dive 
into the ensemble first, because

236
00:11:50,098 --> 00:11:52,933
I think this might be more 
interesting as well to discuss, 

237
00:11:52,933 --> 00:11:55,198
right? 
So the way I read it, ensemble, 

238
00:11:55,198 --> 00:11:57,510
right? 
Some people associate that with 

239
00:11:57,510 --> 00:12:00,170
like mob programming, like 
programming together in a group.

240
00:12:00,410 --> 00:12:02,480
First of all, like how big 
should ensemble be? 

241
00:12:02,480 --> 00:12:04,850
Because pair programming, is it 
considered ensemble? 

242
00:12:05,150 --> 00:12:09,600
And like also, I'm sure many 
people haven't really tried mob 

243
00:12:09,600 --> 00:12:13,331
programming or ensemble. 
And what will be your, you know,

244
00:12:13,331 --> 00:12:15,660
maybe elevator pitch for us to 
actually give it a try? 

245
00:12:16,731 --> 00:12:19,666
Well, that was a lot of things. 
So, just to clarify, ensemble is

246
00:12:19,666 --> 00:12:21,187
another word for mob 
programming. 

247
00:12:21,187 --> 00:12:24,812
It's exactly the same thing. 
And, uh, software teaming again,

248
00:12:24,812 --> 00:12:28,267
is just different words. 
Different people talk about the 

249
00:12:28,267 --> 00:12:31,030
same activity. 
But the basic idea is that you 

250
00:12:31,030 --> 00:12:33,119
get a group of software 
developers together to 

251
00:12:33,119 --> 00:12:37,703
collaborate and produce code. 
And so it can be anything from 

252
00:12:37,703 --> 00:12:41,598
three people upwards, basically.
Normally, when I'm working with 

253
00:12:41,598 --> 00:12:46,238
a team, it's a, it's the normal,
normal Scrum team kind of size. 

254
00:12:46,238 --> 00:12:51,218
So it's about 4, 5, 6 people. 
Those people are usually 

255
00:12:51,218 --> 00:12:54,288
software developers. 
Quite often actually, we get 

256
00:12:54,288 --> 00:12:56,630
joined by a tester. 
Not always. 

257
00:12:56,870 --> 00:13:00,287
They don't always like to join 
us, but we are all the people in

258
00:13:00,287 --> 00:13:02,185
the team who are gonna write 
code together. 

259
00:13:02,707 --> 00:13:05,448
Then you wanted also an elevator
pitch, why would you do this, 

260
00:13:05,448 --> 00:13:07,704
you know? 
'Cause the, the normal way is of

261
00:13:07,704 --> 00:13:10,924
course, for each person to have 
their own computer and to work 

262
00:13:10,924 --> 00:13:14,169
individually. 
But they, there are a number of 

263
00:13:14,169 --> 00:13:15,804
advantages to collaborating like
this. 

264
00:13:16,194 --> 00:13:20,274
And one of them is that it's a 
great forum for learning, 

265
00:13:20,274 --> 00:13:24,785
because you see each other not 
only producing a code at the 

266
00:13:24,785 --> 00:13:26,748
end. 
You get to see how people 

267
00:13:26,748 --> 00:13:30,245
produce the code. 
So just at, in the first 

268
00:13:30,245 --> 00:13:33,385
instance, people can say, oh, 
your IDE does that. 

269
00:13:33,385 --> 00:13:36,710
I didn't know you could do that.
And people learn, just pick up 

270
00:13:36,710 --> 00:13:38,155
like keyboard shortcuts and 
stuff. 

271
00:13:38,691 --> 00:13:42,421
And then later, you know, just 
this whole thing of if you do a 

272
00:13:42,421 --> 00:13:44,487
code review, you just see the 
end result. 

273
00:13:44,844 --> 00:13:46,931
If you collaborate with someone,
you see how they do it. 

274
00:13:47,511 --> 00:13:51,329
And junior developers in 
particular will find that a good

275
00:13:51,329 --> 00:13:53,461
way for them to learn and level 
up. 

276
00:13:54,293 --> 00:13:56,440
So it's a good forum for 
leveling up a team. 

277
00:13:57,060 --> 00:14:01,121
It's also a good forum for, you 
know, as with pair programming, 

278
00:14:01,271 --> 00:14:03,265
reducing the lottery ticket 
number. 

279
00:14:03,715 --> 00:14:07,725
You know, if one person wins the
lottery and suddenly disappears,

280
00:14:07,725 --> 00:14:10,941
how would you manage, you know, 
have they got so much knowledge 

281
00:14:10,941 --> 00:14:13,418
that they've taken with them 
that the whole thing falls 

282
00:14:13,418 --> 00:14:15,675
apart? 
So by doing this, we're sharing 

283
00:14:15,675 --> 00:14:19,278
our knowledge and our context so
that we are less reliant on 

284
00:14:19,278 --> 00:14:22,167
individuals. 
So I think those are two of the 

285
00:14:22,167 --> 00:14:24,029
main benefits of this style of 
working. 

286
00:14:24,542 --> 00:14:28,357
But also, you know, once you get
into it, I think it's quite a 

287
00:14:28,357 --> 00:14:31,686
fun way to work actually. 
This kind of direct 

288
00:14:31,686 --> 00:14:34,460
collaboration, where you're 
supporting one another in real 

289
00:14:34,460 --> 00:14:36,019
time. 
Yeah. 

290
00:14:36,049 --> 00:14:40,091
So unfortunately for me, my 
experience so far have been only

291
00:14:40,121 --> 00:14:41,861
maybe pair programming more, 
right? 

292
00:14:42,101 --> 00:14:45,401
I haven't really developed in a,
like a bigger group, right? 

293
00:14:45,611 --> 00:14:48,275
And in fact if I, I understand 
correctly from Woody, right, the

294
00:14:48,275 --> 00:14:51,268
one who created the mob 
programming, he actually 

295
00:14:51,268 --> 00:14:53,464
advocate technical people, 
non-technical people, including 

296
00:14:53,464 --> 00:14:56,461
like business sometimes to just 
sit together and talk through 

297
00:14:56,461 --> 00:14:58,606
the problems and actually come 
up with a solution, right? 

298
00:14:59,056 --> 00:15:02,202
And also funnily enough in my 
career, I've experienced before 

299
00:15:02,202 --> 00:15:05,485
like having to, you know, face a
manager that doesn't like this 

300
00:15:05,485 --> 00:15:08,288
kind of working. 
And I'm sure in many companies 

301
00:15:08,288 --> 00:15:12,064
they also might feel that, you 
know, like a few people working 

302
00:15:12,064 --> 00:15:15,373
together on, uh, on the same 
problem might be deemed as a 

303
00:15:15,373 --> 00:15:18,376
waste of time, effort, or man 
hours, whatever that is you 

304
00:15:18,376 --> 00:15:22,277
wanna call it, right? 
So how do you, first of all, you

305
00:15:22,277 --> 00:15:25,257
know, stand by your argument 
that this is beneficial? 

306
00:15:25,347 --> 00:15:28,099
And how do you actually quantify
that for those kind of managers 

307
00:15:28,099 --> 00:15:30,027
who still don't see it as a 
valuable thing? 

308
00:15:30,942 --> 00:15:33,884
Yeah, I don't know. 
I'm interested in kind of 

309
00:15:33,884 --> 00:15:37,115
browbeating any managers. 
But I think you, at some level, 

310
00:15:37,115 --> 00:15:39,395
need to trust the team that they
know what they're doing. 

311
00:15:40,385 --> 00:15:43,256
And if they wanna work that way,
then let them. 

312
00:15:43,536 --> 00:15:46,490
And see how it goes. 
But I just to come back to this 

313
00:15:46,490 --> 00:15:49,556
thing about, you know, the 
normal way is to divide up the 

314
00:15:49,556 --> 00:15:54,169
work and to have handovers. 
And every time you have a 

315
00:15:54,169 --> 00:15:58,360
handover of a piece of work from
one role to another, there's a 

316
00:15:58,360 --> 00:16:02,149
potential for something to get 
lost and for time to get wasted 

317
00:16:02,149 --> 00:16:05,316
and context to be lost. 
And then, so the thing with 

318
00:16:05,316 --> 00:16:08,204
getting everyone in the same 
room in, like as Woody says 

319
00:16:08,204 --> 00:16:11,467
including business people and 
testers, you get this 

320
00:16:11,467 --> 00:16:14,720
possibility to have single piece
flow where you take one task, 

321
00:16:14,720 --> 00:16:18,188
you've got all the people in the
room who are capable of taking 

322
00:16:18,188 --> 00:16:21,058
this task from start to finish 
and out into production. 

323
00:16:21,798 --> 00:16:25,316
And without any kind of 
handovers in a way because 

324
00:16:25,316 --> 00:16:27,398
everyone is present for all of 
the tasks. 

325
00:16:27,680 --> 00:16:30,082
You eliminate these 
opportunities for 

326
00:16:30,082 --> 00:16:32,212
misunderstandings and context to
get dropped. 

327
00:16:32,697 --> 00:16:35,995
The result that I observe is 
that the overall quality of the 

328
00:16:35,995 --> 00:16:39,375
thing you produce is higher. 
And actually you get it sooner 

329
00:16:39,375 --> 00:16:42,595
because you didn't have to wait 
for any of those handovers. 

330
00:16:43,145 --> 00:16:47,018
So I suggest to the manager that
instead of trying to look at 

331
00:16:47,018 --> 00:16:52,165
person utilization, they start 
to look at flow and the flow of 

332
00:16:52,165 --> 00:16:54,122
features. 
It's a very lean concept, you 

333
00:16:54,122 --> 00:16:56,057
know. 
I think that's the way to look 

334
00:16:56,057 --> 00:16:58,097
at it. 
It's a way to get single piece 

335
00:16:58,097 --> 00:17:01,238
flow in your development. 
I like that you mentioned about 

336
00:17:01,238 --> 00:17:02,616
flow, right? 
Single piece flow. 

337
00:17:02,616 --> 00:17:05,195
I think that's very crucial in 
the lean methodology, right? 

338
00:17:05,586 --> 00:17:08,096
And yeah, these days in many 
software engineering team, I 

339
00:17:08,096 --> 00:17:10,373
would say that there are 
specialization, there are roles,

340
00:17:10,373 --> 00:17:12,786
right? 
Maybe these days is getting much

341
00:17:12,786 --> 00:17:15,701
more blended because of the AI 
introduction, right? 

342
00:17:15,701 --> 00:17:18,979
So like a developer now can do 
maybe maybe other different 

343
00:17:18,979 --> 00:17:21,691
roles altogether as well. 
But yeah, that single piece of 

344
00:17:21,691 --> 00:17:24,256
flow is something that probably 
as a manager, right, you should 

345
00:17:24,256 --> 00:17:25,786
try to optimize much more, 
right? 

346
00:17:26,266 --> 00:17:28,666
So maybe if we go to the 
mechanics first, right? 

347
00:17:28,666 --> 00:17:31,636
Because maybe people are 
interested in giving a try. 

348
00:17:31,798 --> 00:17:34,103
I mean it should not be just, 
you know, a group of people just

349
00:17:34,103 --> 00:17:37,463
gather on one, I dunno, monitor 
or one laptop and just talk. 

350
00:17:38,029 --> 00:17:40,967
What are some of the mechanics 
that you think people can have a

351
00:17:40,967 --> 00:17:42,595
guide? 
Maybe it doesn't have to be so 

352
00:17:42,595 --> 00:17:45,230
deep, but at least they have a 
good sense how to give it a try.

353
00:17:46,051 --> 00:17:49,094
Yeah, yeah. 
So if you wanna give it a try, 

354
00:17:49,094 --> 00:17:52,216
then I would advise trying to 
get help from somebody who's 

355
00:17:52,216 --> 00:17:55,194
done it before, because it's 
quite easy to fall into one of 

356
00:17:55,194 --> 00:17:58,554
the failure modes with this. 
There are two main failure modes

357
00:17:58,554 --> 00:18:00,727
for an ensemble. 
One is that everyone, you've got

358
00:18:00,727 --> 00:18:03,709
a group of what, five or six 
people and you've got one person

359
00:18:03,709 --> 00:18:06,340
with a keyboard, and they're 
doing all the work and everyone 

360
00:18:06,340 --> 00:18:09,406
else is just zoning out. 
And they're, you know, just 

361
00:18:09,406 --> 00:18:11,611
checking their phone or looking 
out the window or whatever. 

362
00:18:12,061 --> 00:18:14,841
So that's the first failure mode
that, you know, there's only one

363
00:18:14,841 --> 00:18:17,491
person doing any work. 
That's not what we're after. 

364
00:18:17,791 --> 00:18:20,856
The other failure mode is kind 
of similar but different. 

365
00:18:20,856 --> 00:18:24,232
It's whether the person with a 
keyboard is sitting there and 

366
00:18:24,232 --> 00:18:26,920
everyone else is shouting 
different things at them to do. 

367
00:18:27,404 --> 00:18:29,574
They don't get anything done 
either because they basically 

368
00:18:29,574 --> 00:18:32,032
have to ignore everyone and do 
what they wanted because 

369
00:18:32,032 --> 00:18:33,267
everyone is giving conflicting 
advice. 

370
00:18:33,646 --> 00:18:35,356
Those are the basic two failure 
modes. 

371
00:18:35,596 --> 00:18:38,624
What you want is a collaboration
where everyone is contributing 

372
00:18:38,624 --> 00:18:40,486
to the software that's getting 
produced. 

373
00:18:41,216 --> 00:18:46,559
And the how you achieve that is 
it takes some practice. 

374
00:18:46,559 --> 00:18:48,029
It's a skill that you need to 
learn. 

375
00:18:48,549 --> 00:18:53,067
And the way I normally teach it 
is we start with basically 

376
00:18:53,067 --> 00:18:56,052
nominating somebody for the 
talking role and making sure 

377
00:18:56,052 --> 00:18:59,397
that that role rotates through 
all the people who are present 

378
00:18:59,397 --> 00:19:03,192
on a timer so that everyone gets
a turn to say their thing. 

379
00:19:03,432 --> 00:19:05,466
And you don't need to all shout 
at once 'cause you're gonna get 

380
00:19:05,466 --> 00:19:07,848
your turn in a minute. 
And you don't zone out 'cause 

381
00:19:07,848 --> 00:19:10,352
you know it's gonna be your turn
in a minute, you know? 

382
00:19:10,352 --> 00:19:12,714
So it's, that's the kind of one 
of the mechanisms. 

383
00:19:12,714 --> 00:19:17,130
So separate the talking and the 
typing roles and rotate at least

384
00:19:17,130 --> 00:19:21,474
the talking roll on a scale of 
maybe five minutes per turn. 

385
00:19:21,504 --> 00:19:24,382
Something like that. 
So sometimes I see also, 

386
00:19:24,382 --> 00:19:26,985
especially in pair, right, they 
can come up with multiple 

387
00:19:26,985 --> 00:19:31,137
keyboards together, you know, 
uh, I dunno, maybe you can even 

388
00:19:31,137 --> 00:19:33,281
type different things on 
different keyboards, right? 

389
00:19:33,281 --> 00:19:35,904
Is this something that should be
avoided or is this something 

390
00:19:35,904 --> 00:19:38,210
that can also help in terms of 
the ensemble? 

391
00:19:39,242 --> 00:19:42,740
I think the normal, the normal 
flow of work is that everyone's 

392
00:19:42,740 --> 00:19:44,621
attention is directed to the 
same screen. 

393
00:19:45,101 --> 00:19:47,441
And having additional keyboards 
doesn't really help. 

394
00:19:47,441 --> 00:19:51,781
'Cause you want everyone to be 
in the same task of paying 

395
00:19:51,781 --> 00:19:54,808
attention to the same things. 
And the danger if you have 

396
00:19:54,808 --> 00:19:57,440
several people typing like in 
different files, is that you 

397
00:19:57,440 --> 00:20:00,992
basically just you are doing two
tasks in the same code base 

398
00:20:00,992 --> 00:20:03,422
instead of cooperating on one 
task. 

399
00:20:03,940 --> 00:20:06,096
But of course everyone, when 
we're doing this online, 

400
00:20:06,096 --> 00:20:08,169
everyone's got their own 
computer and it doesn't take 

401
00:20:08,169 --> 00:20:11,334
long to just go and Google a 
thing and come back to the group

402
00:20:11,334 --> 00:20:14,415
and say, oh, I found this thing 
that's useful or I found the 

403
00:20:14,415 --> 00:20:15,992
name of that method you're 
trying to call. 

404
00:20:15,992 --> 00:20:19,299
Or you know, so you, people can 
do bits of research and bring 

405
00:20:19,299 --> 00:20:23,101
that back to the group. 
But the, when you're working in 

406
00:20:23,101 --> 00:20:26,499
ensemble, generally everyone is 
focused on the same activity. 

407
00:20:27,525 --> 00:20:28,888
Yeah. 
And for that particular 

408
00:20:28,888 --> 00:20:31,702
activity, maybe if you can give 
guidance typically, uh, is it 

409
00:20:31,702 --> 00:20:35,468
something like you pick up a, I 
dunno, a ticket, uh, and then 

410
00:20:35,468 --> 00:20:38,577
you finish it end to end. 
Like from the development, 

411
00:20:38,577 --> 00:20:40,920
design, development, testing, 
deployment and all that? 

412
00:20:41,100 --> 00:20:44,046
Or is there like a typical, I 
dunno, activity that you 

413
00:20:44,046 --> 00:20:46,456
normally do? 
Is it like code kata or just 

414
00:20:46,456 --> 00:20:48,060
introducing tests or something 
like that? 

415
00:20:48,962 --> 00:20:51,867
Well, I think the ideal is that 
if you can get a task all the 

416
00:20:51,867 --> 00:20:55,541
way from start to finish. 
But of course, you might not 

417
00:20:55,541 --> 00:20:59,127
decide to do every aspect of it.
I think you learn that from 

418
00:20:59,127 --> 00:21:01,059
experience. 
What kinds of tasks work well 

419
00:21:01,059 --> 00:21:04,026
and for what kinds of tasks the 
people you've got gathered 

420
00:21:04,026 --> 00:21:06,667
aren't the right people. 
And you need to do something 

421
00:21:06,667 --> 00:21:08,965
else. 
When you're first learning, I 

422
00:21:08,965 --> 00:21:12,223
think code katas are useful to 
practice on, cause of obviously 

423
00:21:12,223 --> 00:21:16,028
the, the amount of code that you
need to understand is much 

424
00:21:16,028 --> 00:21:19,659
smaller and you can focus more 
on how the interactions are 

425
00:21:19,659 --> 00:21:21,329
happening and how you're 
communicating. 

426
00:21:21,719 --> 00:21:24,712
So it's a good thing to do if 
you're just starting out to 

427
00:21:24,712 --> 00:21:28,648
start with some code katas. 
I think if you read up on how 

428
00:21:28,648 --> 00:21:31,441
Woody Zuill originally got his 
team doing this, it was, they 

429
00:21:31,441 --> 00:21:33,868
did a lot of code katas before 
they tackled production code. 

430
00:21:34,558 --> 00:21:38,375
So I think just getting the, uh,
the communication patterns down 

431
00:21:38,375 --> 00:21:41,999
when, in a situation where the 
stakes are low with the code, 

432
00:21:41,999 --> 00:21:45,542
that can be a good thing. 
But it is a technique that is, 

433
00:21:45,542 --> 00:21:48,654
you'll only get the real benefit
of it if you're doing it in 

434
00:21:48,654 --> 00:21:51,415
production code, I guess. 
Yeah, you have emphasized a 

435
00:21:51,415 --> 00:21:53,395
couple of times about working on
the production code. 

436
00:21:53,425 --> 00:21:55,145
I guess working on code kata can
be fun. 

437
00:21:55,165 --> 00:21:56,515
And you can learn something, 
right? 

438
00:21:56,515 --> 00:21:59,080
But there's nothing that can 
beat, you know, understanding 

439
00:21:59,080 --> 00:22:01,075
production code, especially the 
complex one. 

440
00:22:01,495 --> 00:22:03,736
You know, where everybody has 
probably different parts of 

441
00:22:03,736 --> 00:22:05,215
knowledge within the code base, 
right? 

442
00:22:05,455 --> 00:22:08,446
And you can get to learn from 
each other, the techniques, the 

443
00:22:08,446 --> 00:22:11,063
design, and the issues that 
typically happen for some parts 

444
00:22:11,063 --> 00:22:14,195
of the code base. 
So another important aspect in 

445
00:22:14,195 --> 00:22:18,162
ensemble that I also read from 
the book is the importance of 

446
00:22:18,162 --> 00:22:21,480
like, trust, communication 
skills, and also kindness, 

447
00:22:21,480 --> 00:22:23,704
right? 
Because I'm sure everybody would

448
00:22:23,704 --> 00:22:27,580
have seen bad code in, you know,
anybody's code base, right? 

449
00:22:27,580 --> 00:22:30,370
So, and especially when working 
together, you can see different 

450
00:22:30,370 --> 00:22:33,857
people's code, being written as 
the result of, I don't know, 

451
00:22:33,857 --> 00:22:36,079
maybe sometime ago or maybe just
recent, right? 

452
00:22:36,409 --> 00:22:40,039
So any important points that you
wanna convey about this aspect, 

453
00:22:40,039 --> 00:22:42,529
like trust, communication, and 
kindness part. 

454
00:22:43,689 --> 00:22:46,907
It's all about teamwork and it's
about the communication that is 

455
00:22:46,907 --> 00:22:50,638
gonna be respectful and helpful 
and, you know, get this 

456
00:22:50,638 --> 00:22:53,010
collaboration going. 
And the person who wrote the 

457
00:22:53,010 --> 00:22:54,882
code might be in the room, or 
they might not. 

458
00:22:55,302 --> 00:22:58,128
But in either case, you need to 
talk about the code, as you say,

459
00:22:58,128 --> 00:23:00,815
in a respectful way. 
You don't know what they were 

460
00:23:00,815 --> 00:23:03,701
suffering when they wrote it. 
It might look completely wrong 

461
00:23:03,701 --> 00:23:05,969
and off the wall and badly 
written to you. 

462
00:23:05,969 --> 00:23:08,423
But there's probably a reason 
for it to be like that. 

463
00:23:08,423 --> 00:23:11,890
And you do need to be fine and 
respectful in the way you 

464
00:23:11,890 --> 00:23:14,894
interact with one another and 
with, and talk about the code. 

465
00:23:15,344 --> 00:23:17,980
So that's part of it as well, 
it's all about teamwork. 

466
00:23:18,100 --> 00:23:19,570
And this is what you need in a 
team anyway. 

467
00:23:19,570 --> 00:23:21,864
You've gotta trust your 
colleagues, you've gotta respect

468
00:23:21,864 --> 00:23:23,860
them. 
And that's what it's all about. 

469
00:23:24,010 --> 00:23:27,917
A good ensemble just looks like 
a really, really gelled and good

470
00:23:27,917 --> 00:23:30,872
team. 
Yeah, and I like the quote that 

471
00:23:30,872 --> 00:23:33,018
Woody mentioned about this, uh, 
ensemble thing, right? 

472
00:23:33,018 --> 00:23:35,038
Like "honor the code and the 
coder", right? 

473
00:23:35,038 --> 00:23:38,008
So of course you don't know what
constraints they were dealing 

474
00:23:38,008 --> 00:23:41,436
with when they wrote the code. 
This is also probably like in 

475
00:23:41,436 --> 00:23:43,868
the agile retrospective, 
normally we call this prime 

476
00:23:43,979 --> 00:23:45,231
directive or something like 
that, right? 

477
00:23:45,231 --> 00:23:46,821
So no matter what happened, 
right? 

478
00:23:47,181 --> 00:23:49,711
Maybe that was the best thing 
that happened at that particular

479
00:23:49,711 --> 00:23:51,532
point in time with the right 
person. 

480
00:23:52,042 --> 00:23:54,992
So maybe from your experience, 
you have been technical coach 

481
00:23:54,992 --> 00:23:57,742
for quite some time now and 
doing this ensemble. 

482
00:23:57,742 --> 00:24:01,423
What are some of the cool things
that you have, I dunno, observed

483
00:24:01,423 --> 00:24:04,222
or maybe you have achieved by 
doing this ensemble? 

484
00:24:05,064 --> 00:24:06,758
Right. 
So, well, I have this privilege,

485
00:24:06,758 --> 00:24:09,852
I guess, that I get to go into a
lot of different organizations 

486
00:24:09,852 --> 00:24:13,869
and teams to coach. 
There are coaches who have a 

487
00:24:13,869 --> 00:24:16,701
much more long-term relationship
with like one organization and 

488
00:24:16,701 --> 00:24:18,469
several teams in that 
organization. 

489
00:24:19,399 --> 00:24:22,221
And I think that if the benefit 
of having this long-term 

490
00:24:22,221 --> 00:24:25,213
relationship is you really get 
to see teams develop and improve

491
00:24:25,213 --> 00:24:27,779
over time. 
And I've seen a little bit of 

492
00:24:27,779 --> 00:24:30,471
that happening with other 
coaches that I've worked with. 

493
00:24:30,861 --> 00:24:35,351
But for me, I, I'm a bit of a, I
hop from different organization 

494
00:24:35,351 --> 00:24:38,020
to different organization and 
just get a short amount of 

495
00:24:38,020 --> 00:24:41,131
coaching with lots of different 
teams and different places. 

496
00:24:41,682 --> 00:24:44,230
I'm not quite sure how, why it's
like that, but that seems to be 

497
00:24:44,230 --> 00:24:45,942
the style of engagement that I 
have. 

498
00:24:46,422 --> 00:24:50,203
And it means I get to see a huge
variety of teams and 

499
00:24:50,203 --> 00:24:53,373
organizations. 
And I guess I get to see that 

500
00:24:53,373 --> 00:24:55,173
everyone struggles with code 
quality. 

501
00:24:55,923 --> 00:24:58,173
Everyone has a certain amount of
technical debt. 

502
00:24:58,863 --> 00:25:02,085
And everyone, basically, 
everyone I've seen could learn 

503
00:25:02,085 --> 00:25:04,209
to use the tools they have 
better. 

504
00:25:04,989 --> 00:25:08,099
I mean, everyone's got these 
amazing refactoring tools and AI

505
00:25:08,099 --> 00:25:10,763
tools and all of that. 
And most developers are not 

506
00:25:10,763 --> 00:25:12,869
using even a fraction of what 
it's capable of. 

507
00:25:13,549 --> 00:25:16,841
So I get to have that reinforced
every time I visit the team. 

508
00:25:17,171 --> 00:25:18,809
Let me show you. 
There's all these things that 

509
00:25:18,809 --> 00:25:21,985
you could be doing. 
I like to, uh, get people using 

510
00:25:21,985 --> 00:25:23,671
more shortcuts and more, you 
know. 

511
00:25:24,421 --> 00:25:27,493
I mean, most people have got 
rename these days, but no, 

512
00:25:27,493 --> 00:25:30,311
introduce variable, introduce 
parameter, move method. 

513
00:25:30,361 --> 00:25:32,681
These are refactorings that a 
lot of people have never tried. 

514
00:25:33,331 --> 00:25:36,659
And so I'm doing a lot of just 
getting people to use their 

515
00:25:36,659 --> 00:25:38,900
tools better. 
How about prompting? 

516
00:25:39,050 --> 00:25:41,882
Prompt engineering? 
So have you, um, introduced more

517
00:25:41,882 --> 00:25:45,223
of that? 
Well, this is obviously quite a 

518
00:25:45,223 --> 00:25:48,033
new thing for most teams to have
these AI tools. 

519
00:25:48,303 --> 00:25:52,255
So I have to say I haven't got 
a, a lot of hours under my belt 

520
00:25:52,255 --> 00:25:55,313
yet working with them. 
It's, of course, the skills, as 

521
00:25:55,313 --> 00:25:58,573
I said, are similar to the 
skills I know about, you know, 

522
00:25:58,573 --> 00:26:02,420
working in small chunks. 
Giving the prompt for quite a 

523
00:26:02,420 --> 00:26:05,424
well-defined task and making 
sure you know how to verify that

524
00:26:05,424 --> 00:26:06,796
the thing has done the right 
thing. 

525
00:26:06,796 --> 00:26:11,163
So having tests and knowing how 
to write those tests and 

526
00:26:11,163 --> 00:26:13,456
checking the diff for what it's 
actually done. 

527
00:26:14,013 --> 00:26:17,836
All of these skills are things 
that maybe not completely 

528
00:26:17,836 --> 00:26:20,750
obvious to everyone. 
And more and more with the teams

529
00:26:20,750 --> 00:26:22,402
I'm working with, we have to 
bring those in. 

530
00:26:22,402 --> 00:26:26,009
And we start in the ensemble to 
the person talking is 

531
00:26:26,009 --> 00:26:27,862
explaining. 
I think we need to prompt it 

532
00:26:27,862 --> 00:26:31,025
like this and this is what I'm 
gonna intend to verify when it's

533
00:26:31,025 --> 00:26:33,811
done its thing. 
So there's a lot more of that 

534
00:26:33,811 --> 00:26:36,650
coming in, but it's early days 
for me at the moment with all 

535
00:26:36,650 --> 00:26:40,294
those AI tools, actually. 
As it is for many people, I 

536
00:26:40,294 --> 00:26:42,401
think. 
Yeah, I'm sure many people will 

537
00:26:42,401 --> 00:26:44,543
also feel it's early days for 
them, right? 

538
00:26:44,543 --> 00:26:47,185
Picking up new tools. 
Not to mention there are new 

539
00:26:47,185 --> 00:26:50,871
models coming in, new tools or 
new IDEs coming in, new agents 

540
00:26:50,871 --> 00:26:53,386
being invented. 
So obviously, there's always new

541
00:26:53,386 --> 00:26:56,885
things to learn these days. 
And I like that the points that 

542
00:26:56,885 --> 00:26:58,845
you mentioned about your 
experience, right, observing 

543
00:26:58,845 --> 00:27:01,383
multiple teams, right? 
They're always code quality 

544
00:27:01,383 --> 00:27:02,973
issue. 
They are always tech debt. 

545
00:27:03,410 --> 00:27:05,323
And they're always underutilized
tool. 

546
00:27:05,563 --> 00:27:08,712
So I think, many software 
engineers, I believe could 

547
00:27:08,712 --> 00:27:10,655
relate. 
So no matter where you go in any

548
00:27:10,655 --> 00:27:12,985
company, right, you will see 
these themes over and over 

549
00:27:12,985 --> 00:27:14,400
again. 
So thanks for highlighting that.

550
00:27:14,520 --> 00:27:16,020
I think that is quite 
insightful. 

551
00:27:16,860 --> 00:27:19,548
So the other aspect of Samman 
method that you mentioned is 

552
00:27:19,548 --> 00:27:22,735
about learning hours. 
I think learning is kind of like

553
00:27:22,735 --> 00:27:24,538
given. 
Everybody knows that we have to 

554
00:27:24,538 --> 00:27:26,552
learn. 
But what specific things about 

555
00:27:26,552 --> 00:27:28,322
learning hours that is 
different? 

556
00:27:29,443 --> 00:27:34,095
Well, I've been a, I was a very 
early adopter of the Coding Dojo

557
00:27:34,095 --> 00:27:37,319
back in the day, which is a 
forum where a bunch of 

558
00:27:37,319 --> 00:27:40,427
developers get together to do 
code katas and increase skills. 

559
00:27:41,027 --> 00:27:44,177
And I found that that was a 
really helpful thing to do. 

560
00:27:44,600 --> 00:27:47,572
But over the years, I realized 
that you could make it even 

561
00:27:47,572 --> 00:27:50,655
better by using some techniques 
from instructional design. 

562
00:27:50,925 --> 00:27:54,885
And in particular, I was very 
inspired by Sharon Bowman, who 

563
00:27:54,885 --> 00:27:57,664
is, uh, written this book 
Training from the Back of the 

564
00:27:57,664 --> 00:27:59,889
Room. 
And she's nothing to do with 

565
00:27:59,889 --> 00:28:02,699
software, but she knows a lot 
about instructional design and 

566
00:28:02,699 --> 00:28:07,229
how to make learning experience 
is more sticky so that you 

567
00:28:07,229 --> 00:28:10,149
remember more of the stuff and 
it has more of an impact in what

568
00:28:10,149 --> 00:28:12,902
you do afterwards. 
I've been very inspired to take 

569
00:28:12,902 --> 00:28:16,424
a coding dojo, make it shorter, 
just an hour, you know, maybe a 

570
00:28:16,424 --> 00:28:19,605
little bit longer than an hour, 
but still pretty short for a 

571
00:28:19,605 --> 00:28:22,492
training. 
And trying to make sure that 

572
00:28:22,492 --> 00:28:26,000
it's structured to take full 
advantage of how, what's gonna 

573
00:28:26,000 --> 00:28:29,661
keep your attention? 
I use the 4C model, which comes 

574
00:28:29,661 --> 00:28:33,611
from the book. 
Uh, we open with a connect, get 

575
00:28:33,611 --> 00:28:35,731
everyone saying something about 
what they already know. 

576
00:28:36,132 --> 00:28:39,642
We do a new concept, why I 
present what it is we're gonna 

577
00:28:39,642 --> 00:28:41,801
learn, the new skill or the 
technique. 

578
00:28:42,161 --> 00:28:44,641
Then we have some concrete 
practice where everyone does 

579
00:28:44,641 --> 00:28:47,311
some coding. 
Usually coding exercise or some 

580
00:28:47,311 --> 00:28:49,419
form of exercise. 
And then the conclusions at the 

581
00:28:49,419 --> 00:28:52,363
end where we just try and make 
sure that everyone is, summarize

582
00:28:52,363 --> 00:28:56,124
in their own words what we've 
learned so that they can 

583
00:28:56,124 --> 00:28:59,220
remember it better. 
So that's the structure that the

584
00:28:59,220 --> 00:29:03,194
learning hour has that I, so I 
designed these as a, you know, 

585
00:29:03,194 --> 00:29:06,833
learning experiences for a team 
of software developers or to 

586
00:29:06,833 --> 00:29:10,719
learn coding skills. 
So thanks for sharing about this

587
00:29:10,719 --> 00:29:12,532
Coding Dojo. 
I know that you have written a 

588
00:29:12,532 --> 00:29:15,872
book about it as well, so I 
think in the past I, I learned a

589
00:29:15,872 --> 00:29:18,248
lot about this coding kata, 
Coding Dojo, right? 

590
00:29:18,248 --> 00:29:21,110
People are doing, I think I 
haven't heard about it lately. 

591
00:29:21,674 --> 00:29:23,555
I dunno why. 
Maybe people are dealing more 

592
00:29:23,555 --> 00:29:25,443
with the AI stuff by themselves 
solo. 

593
00:29:25,777 --> 00:29:28,160
But I think having this 
experience, learning in a dojo, 

594
00:29:28,160 --> 00:29:31,034
like with the targeted focus of 
problem, right? 

595
00:29:31,034 --> 00:29:33,673
So I think, with the right 
coach, which is also important, 

596
00:29:33,673 --> 00:29:35,819
right, can give a lot of 
benefits, right? 

597
00:29:36,089 --> 00:29:38,609
And you mentioned about 
specifically reducing it to an 

598
00:29:38,609 --> 00:29:41,838
hour, is there any particular 
thing about that hour? 

599
00:29:41,838 --> 00:29:45,411
Should we find an hour within 
our working days to actually do 

600
00:29:45,411 --> 00:29:47,418
this? 
Or should we do it outside 

601
00:29:47,418 --> 00:29:51,730
working hours? 
The Coding Dojo concept was a 

602
00:29:51,730 --> 00:29:55,190
little bit based on the idea 
that you would spend your 

603
00:29:55,190 --> 00:29:58,012
evenings, possibly your 
weekends, doing this kind of 

604
00:29:58,012 --> 00:30:00,814
training. 
And I did, I put in evenings of 

605
00:30:00,814 --> 00:30:04,602
weekends back in the day. 
And I found that, for me, that 

606
00:30:04,602 --> 00:30:06,333
was possible. 
And I thrived on that. 

607
00:30:06,333 --> 00:30:10,113
But for most developers, asking 
them to code in evenings and 

608
00:30:10,113 --> 00:30:11,523
weekends, it's just not gonna 
happen. 

609
00:30:11,523 --> 00:30:12,573
And they're just not gonna do 
it. 

610
00:30:13,293 --> 00:30:16,353
And for the organization, that's
a bit of a failure because you 

611
00:30:16,353 --> 00:30:18,678
want people to upskill, learn 
stuff. 

612
00:30:19,288 --> 00:30:22,522
And I think the best way to 
ensure that they put the time in

613
00:30:22,522 --> 00:30:24,613
is to give them time in the 
working week. 

614
00:30:25,373 --> 00:30:28,604
And that's where another reason 
for making it shorter, because 

615
00:30:28,604 --> 00:30:32,724
it's much less difficult to get 
a manager to agree to a one hour

616
00:30:32,724 --> 00:30:35,688
training session than to get 
them to agree to a half a day, 

617
00:30:35,688 --> 00:30:38,074
you know? 
And you might be able to do it a

618
00:30:38,074 --> 00:30:40,408
bit more often and with 
practical skills like coding, 

619
00:30:40,408 --> 00:30:44,561
the little and often is actually
more effective than doing it 

620
00:30:44,561 --> 00:30:48,037
occasionally for longer. 
Obviously, when I come in and do

621
00:30:48,037 --> 00:30:50,831
the coaching, the team will be 
doing learning hours with me for

622
00:30:50,831 --> 00:30:54,497
all the days that I'm there. 
But even when I'm not there, my 

623
00:30:54,497 --> 00:30:58,211
hope is that they will perhaps 
be able to find an hour each, 

624
00:30:58,211 --> 00:31:02,423
each iteration or sprint maybe 
to do one of these and or even 

625
00:31:02,423 --> 00:31:04,337
more frequently if the boss will
agree to it. 

626
00:31:04,512 --> 00:31:07,992
But that it should be part of 
the normal work. 

627
00:31:08,482 --> 00:31:11,350
Learning is part of your work, 
so let's put it into the 

628
00:31:11,350 --> 00:31:14,435
schedule and make sure that it 
happens on a regular basis. 

629
00:31:14,795 --> 00:31:16,283
That's the philosophy I think 
here. 

630
00:31:17,298 --> 00:31:18,978
Yeah, so learning is part of the
work. 

631
00:31:18,978 --> 00:31:21,286
So I think this is very 
important, especially for 

632
00:31:21,286 --> 00:31:23,018
knowledge worker. 
I think software engineers are 

633
00:31:23,018 --> 00:31:24,738
knowledge worker, right? 
So we have to learn. 

634
00:31:24,738 --> 00:31:26,490
In the beginning, we also 
mentioned that software 

635
00:31:26,490 --> 00:31:28,188
engineering is a learning 
process, right? 

636
00:31:28,489 --> 00:31:31,525
Tackling complexity. 
Making sure that we can learn 

637
00:31:31,525 --> 00:31:34,254
the problem better. 
And I think you mentioned as 

638
00:31:34,254 --> 00:31:37,193
well about learning, right? 
That we have to spend the time 

639
00:31:37,193 --> 00:31:39,711
to actually learn. 
I don't know, like how people, 

640
00:31:39,711 --> 00:31:42,221
uh, learn these days, right? 
I'm sure there are many 

641
00:31:42,221 --> 00:31:44,406
channels, right? 
But learning as a team is 

642
00:31:44,406 --> 00:31:47,318
probably a more powerful thing 
to do as well like the ensemble 

643
00:31:47,318 --> 00:31:51,271
thing that you mentioned, right?
So maybe these days people have 

644
00:31:51,271 --> 00:31:53,413
instilled in their mind agile 
practices. 

645
00:31:53,413 --> 00:31:56,653
Things like, I dunno, daily 
standup retrospective, demo, and

646
00:31:56,653 --> 00:32:00,191
things like that. 
What will be some typical, I 

647
00:32:00,191 --> 00:32:03,269
dunno, ceremonies for learning 
that you advocate for your 

648
00:32:03,269 --> 00:32:06,189
teams? 
Yeah, so I guess I was trying to

649
00:32:06,189 --> 00:32:09,270
hint there that if you can get a
learning hour in each sprint, 

650
00:32:09,270 --> 00:32:12,828
then that's a cadence that I 
think you should be able to 

651
00:32:12,828 --> 00:32:15,219
sustain. 
If you can get more than that, 

652
00:32:15,219 --> 00:32:18,804
then that's a bonus. 
What I see when I go into most 

653
00:32:18,804 --> 00:32:21,840
teams is that the only learning 
activity they have is code 

654
00:32:21,840 --> 00:32:24,480
reviews as part of the pull 
request process. 

655
00:32:25,170 --> 00:32:28,807
And that is just universal. 
It seems to me everyone is doing

656
00:32:28,807 --> 00:32:31,113
these pull requests. 
And I'm, it's fine. 

657
00:32:31,173 --> 00:32:34,264
Code review is a good thing to 
do, but it's happening after the

658
00:32:34,264 --> 00:32:36,775
code is written. 
It's happening asynchronously. 

659
00:32:36,775 --> 00:32:40,757
It's written. 
And these are not great for 

660
00:32:40,757 --> 00:32:42,722
actually training up junior 
developers. 

661
00:32:43,082 --> 00:32:46,708
You want something a lot more 
kind of face-to-face interactive

662
00:32:46,708 --> 00:32:50,418
happening while the work is 
going on and to actually help 

663
00:32:50,418 --> 00:32:53,961
them to upskill and to turn into
those senior developers that you

664
00:32:53,961 --> 00:32:56,516
want. 
I think something like pair 

665
00:32:56,516 --> 00:32:59,633
programming or ensemble is, 
that's the forum where you 

666
00:32:59,633 --> 00:33:01,566
actually turn juniors into 
seniors. 

667
00:33:02,249 --> 00:33:05,243
And you can do that obviously on
the production code, so that you

668
00:33:05,243 --> 00:33:07,866
get work done at the same time 
as you are upskilling people. 

669
00:33:08,616 --> 00:33:11,592
The great benefit of a learning 
hour, of course, is you can take

670
00:33:11,592 --> 00:33:14,738
a skill that you need for your 
production code and you can 

671
00:33:14,738 --> 00:33:18,240
practice it on a simpler 
environment where you can repeat

672
00:33:18,240 --> 00:33:22,550
it and really start to get that 
fluency with it. 

673
00:33:22,790 --> 00:33:25,740
And to make sure you remember 
all the steps so that when you 

674
00:33:25,740 --> 00:33:29,162
meet that same situation in your
production code, that it comes 

675
00:33:29,162 --> 00:33:32,899
naturally to you. 
So I think for a healthy team, 

676
00:33:32,899 --> 00:33:35,915
they'll have some learning 
hours, but they'll also have 

677
00:33:35,915 --> 00:33:39,511
some collaborative coding, some 
pairing and ensemble in order to

678
00:33:39,511 --> 00:33:41,827
level up the more junior team 
members. 

679
00:33:42,327 --> 00:33:45,857
And also the senior members, I 
mean, they benefit from this 

680
00:33:45,857 --> 00:33:49,535
too. 
So if you are sitting with a 

681
00:33:49,535 --> 00:33:52,803
junior and they're not getting 
something, you have to explain 

682
00:33:52,803 --> 00:33:55,797
it to them. 
You have to learn to put into 

683
00:33:55,797 --> 00:33:59,561
words what it is you do and to 
explain why you do that. 

684
00:33:59,801 --> 00:34:02,681
And just that kind of being 
forced to explain helps you to 

685
00:34:02,681 --> 00:34:06,077
understand it better yourself. 
So I think it really benefits 

686
00:34:06,077 --> 00:34:09,735
the senior team members to also 
level up their skills by having 

687
00:34:09,735 --> 00:34:11,967
those juniors that they need to 
explain stuff to. 

688
00:34:12,617 --> 00:34:16,110
So I think this is one of the 
sort of the great strengths of 

689
00:34:16,110 --> 00:34:19,130
the way we organize software 
developers today is into teams 

690
00:34:19,130 --> 00:34:22,989
with a mix of, you know, years 
of experience that you've got 

691
00:34:22,989 --> 00:34:25,880
juniors and seniors who have 
this vested interest in, well, 

692
00:34:25,880 --> 00:34:27,679
we're gonna work together, we're
a team. 

693
00:34:28,039 --> 00:34:31,849
If that other person upskills, 
then it makes my life easier. 

694
00:34:32,149 --> 00:34:34,938
So I have an interest in 
coaching them and mentoring 

695
00:34:34,938 --> 00:34:37,176
them. 
And yeah, so that's the way a 

696
00:34:37,176 --> 00:34:39,132
healthy team should be from my 
perspective. 

697
00:34:40,005 --> 00:34:42,188
Yeah, so I like that you 
mentioned about pull requests, 

698
00:34:42,188 --> 00:34:43,833
right? 
I think maybe in many software 

699
00:34:43,833 --> 00:34:46,288
engineering team, this is like 
the workflow that they adopt, 

700
00:34:46,288 --> 00:34:48,436
right? 
So like a pull request being 

701
00:34:48,436 --> 00:34:51,577
raised and somebody review. 
Good thing if the pull request 

702
00:34:51,577 --> 00:34:53,958
is small. 
But if it's large, I guess it's 

703
00:34:53,958 --> 00:34:55,547
very difficult to actually 
understand, even. 

704
00:34:56,031 --> 00:34:58,546
And sometimes like the challenge
is like what you mentioned is an

705
00:34:58,546 --> 00:35:01,156
after effect thing, right? 
So the code has already been 

706
00:35:01,156 --> 00:35:03,574
written, the thought process is 
missing, the context probably is

707
00:35:03,574 --> 00:35:05,332
missing. 
And you, yourself has your own 

708
00:35:05,332 --> 00:35:07,952
thing that you work on that 
maybe still lingering in your 

709
00:35:07,952 --> 00:35:09,708
mind and you just couldn't 
forget, right? 

710
00:35:10,128 --> 00:35:12,801
And yeah, it's very difficult to
actually learn from such 

711
00:35:12,801 --> 00:35:15,340
situation. 
And I guess the pull request 

712
00:35:15,340 --> 00:35:19,206
thing can be detrimental to the 
learning that people can have, 

713
00:35:19,206 --> 00:35:21,257
right, so compared to like pair 
programming. 

714
00:35:21,580 --> 00:35:24,080
Yeah, I wouldn't say it was 
detrimental. 

715
00:35:24,080 --> 00:35:28,240
I mean, I think there's a lot of
evidence that code review is a 

716
00:35:28,300 --> 00:35:32,011
useful practice, so I don't 
wanna tell people not to do code

717
00:35:32,011 --> 00:35:34,494
review. 
But I just think you can't pin 

718
00:35:34,494 --> 00:35:38,210
all your hopes on it, that this 
is gonna do all of the 

719
00:35:38,210 --> 00:35:41,198
mentoring, you know. 
This is not something the, 

720
00:35:41,198 --> 00:35:44,143
shouldn't be the primary 
mechanism to give advice to 

721
00:35:44,143 --> 00:35:46,758
junior developers. 
So I'm not sure that it, yeah, 

722
00:35:46,758 --> 00:35:48,286
I'm not trying to say don't do 
it. 

723
00:35:48,406 --> 00:35:52,106
Although I happen to be a big 
fan of trunk-based development. 

724
00:35:52,554 --> 00:35:55,464
I think that's not a battle I 
really wanna fight. 

725
00:35:55,860 --> 00:35:59,320
The thing I'm most interested in
is making sure that senior 

726
00:35:59,320 --> 00:36:01,936
developers actually collaborate 
with the rest of the team 

727
00:36:01,936 --> 00:36:05,732
members, and don't just think 
that it's enough to write a pull

728
00:36:05,732 --> 00:36:07,178
request comment from time to 
time. 

729
00:36:07,283 --> 00:36:09,928
That's not being a senior 
developer, you know? 

730
00:36:10,695 --> 00:36:12,675
Yeah, I was about to mention 
about comments as well, right? 

731
00:36:12,675 --> 00:36:14,445
Because in a pull request, 
typically. 

732
00:36:14,745 --> 00:36:17,415
If you put a lot of comments, 
the longer it will take, because

733
00:36:17,415 --> 00:36:20,252
it's async as well, and people 
kind of like multitasking, 

734
00:36:20,252 --> 00:36:22,540
right? 
So obviously maybe trunk based 

735
00:36:22,540 --> 00:36:25,166
development is something that 
people should aspire to. 

736
00:36:25,286 --> 00:36:28,226
But yeah, definitely different 
team has different contexts and 

737
00:36:28,226 --> 00:36:30,022
the practice that works best for
them. 

738
00:36:30,562 --> 00:36:32,002
So one thing about learning, 
right? 

739
00:36:32,002 --> 00:36:35,404
So I think it's ideal, every 
team should have this learning 

740
00:36:35,404 --> 00:36:38,014
hours probably. 
But you know, these days there's

741
00:36:38,014 --> 00:36:41,072
so many software engineering 
team that are just, you know, 

742
00:36:41,072 --> 00:36:43,628
bogged down with so many 
different tasks, right? 

743
00:36:44,018 --> 00:36:46,985
Uh, and so many different things
that they have to do with such a

744
00:36:46,985 --> 00:36:49,820
small team, right? 
So again, like how do you 

745
00:36:49,820 --> 00:36:52,889
actually do the elevator pitch, 
like as a team, right? 

746
00:36:52,889 --> 00:36:56,137
So maybe once a sprint you can 
spend, I don't know, quality 

747
00:36:56,137 --> 00:36:57,667
time to actually do some 
learning. 

748
00:36:57,907 --> 00:37:00,487
Because some people are really 
struggling to find the time to 

749
00:37:00,517 --> 00:37:05,086
actually do this kind of thing. 
Yeah, I know it's, that's one of

750
00:37:05,086 --> 00:37:08,767
the great benefits of being a 
technical coach is that I'm not 

751
00:37:08,767 --> 00:37:12,479
responsible for delivering any 
of those tickets, so I can 

752
00:37:12,479 --> 00:37:16,100
really, uh, have that time to 
prepare training materials. 

753
00:37:16,515 --> 00:37:21,747
And when I come into a team, I 
can help them without needing to

754
00:37:21,747 --> 00:37:23,903
get involved with the deadlines 
that they're facing. 

755
00:37:23,963 --> 00:37:26,313
So that's a great, you know, 
privilege I have. 

756
00:37:26,953 --> 00:37:30,250
But yes, if you are a tech lead 
and a team with delivery 

757
00:37:30,250 --> 00:37:32,537
responsibility, it's hard to 
think, oh, I've gotta organize a

758
00:37:32,537 --> 00:37:35,664
learning hour as well. 
And that's one of the things 

759
00:37:35,664 --> 00:37:39,372
that I'm, I think for it to 
really, you know, for this to 

760
00:37:39,372 --> 00:37:41,947
happen, people to be upskilled, 
that it's not enough that 

761
00:37:41,947 --> 00:37:44,232
there's a bunch of people like 
me running around being 

762
00:37:44,232 --> 00:37:46,745
technical coaches. 
We need to make it possible also

763
00:37:46,745 --> 00:37:48,713
for normal team leads to do 
learning hours. 

764
00:37:49,073 --> 00:37:52,793
So one of the things I've done 
is found a society, a 

765
00:37:52,793 --> 00:37:55,023
not-for-profit organization, the
Samman Society. 

766
00:37:55,663 --> 00:37:59,603
And we try and provide resources
for all technical coaches and 

767
00:37:59,628 --> 00:38:03,063
all software developers to make 
it easier to learn these things.

768
00:38:03,363 --> 00:38:06,690
So we've got a website and we 
have online meetings where you 

769
00:38:06,690 --> 00:38:10,121
can meet other coaches. 
But published on the website, we

770
00:38:10,121 --> 00:38:13,212
publish code katas. 
We publish also descriptions of 

771
00:38:13,212 --> 00:38:16,421
learning hours. 
So you can go on there and, you 

772
00:38:16,421 --> 00:38:19,255
know, pick a topic that you, 
you'd like your team to upskill 

773
00:38:19,255 --> 00:38:21,498
in. 
There you find hopefully some 

774
00:38:21,498 --> 00:38:24,024
materials, some suggestions for 
how to structure a session. 

775
00:38:24,355 --> 00:38:28,613
Some code katas to work on. 
Hopefully that's gonna make it 

776
00:38:28,613 --> 00:38:31,378
easier for normal developers to 
do this. 

777
00:38:32,098 --> 00:38:34,815
And then of course, I've also 
got the whole, uh, YouTube 

778
00:38:34,815 --> 00:38:37,188
channel thing. 
Written descriptions of a 

779
00:38:37,188 --> 00:38:40,924
learning hour is great, but I 
find video is a great medium for

780
00:38:40,924 --> 00:38:45,014
showing coding techniques. 
So a lot of the videos that I 

781
00:38:45,014 --> 00:38:47,070
produce are little demos of 
refactoring techniques and 

782
00:38:47,070 --> 00:38:50,292
little code katas and stuff that
you could try out as well. 

783
00:38:50,872 --> 00:38:52,712
So I'm doing more of that as 
well these days. 

784
00:38:53,482 --> 00:38:55,295
Wow! 
That I think is really helpful, 

785
00:38:55,295 --> 00:38:56,916
right? 
So for people, again, many 

786
00:38:56,916 --> 00:38:59,636
people might be new to these 
kind of techniques, right? 

787
00:38:59,936 --> 00:39:02,126
Having resources definitely is 
gonna help them. 

788
00:39:02,186 --> 00:39:04,621
And I think I've seen a couple 
of your videos on YouTube. 

789
00:39:04,946 --> 00:39:08,426
They're really interactive and 
you know, you can see exactly, 

790
00:39:08,555 --> 00:39:10,980
you know, how you do stuff. 
I think that's definitely a 

791
00:39:10,980 --> 00:39:13,810
thing that people should, you 
know, maybe learn something from

792
00:39:13,810 --> 00:39:17,244
your resources. 
And for people who aspire to be 

793
00:39:17,244 --> 00:39:20,042
technical coach, right? 
Because, I don't know, some 

794
00:39:20,042 --> 00:39:24,333
people are just born into this, 
you know, engineering practices,

795
00:39:24,333 --> 00:39:27,100
TDD. 
They wanna upskill people doing 

796
00:39:27,100 --> 00:39:30,627
quality stuff with their code. 
Is there a thing that you want 

797
00:39:30,627 --> 00:39:33,325
to convey to them? 
How can they become a better 

798
00:39:33,325 --> 00:39:37,279
technical coach? 
Yeah, so I think the world needs

799
00:39:37,279 --> 00:39:39,133
more technical coaches and 
technical coaching. 

800
00:39:39,613 --> 00:39:42,490
And I think that it, as I said, 
if you, if you're a developer or

801
00:39:42,490 --> 00:39:45,683
a tech lead on a team and you 
start doing a few learning 

802
00:39:45,683 --> 00:39:48,585
hours, then basically you are 
doing some technical coaching 

803
00:39:48,585 --> 00:39:51,409
part-time. 
And if you are in an 

804
00:39:51,409 --> 00:39:53,874
understanding organization who 
realizes the value of that, 

805
00:39:53,874 --> 00:39:57,527
maybe they'll let you grow that 
role from being just a thing you

806
00:39:57,527 --> 00:40:00,433
do with your team from time to 
time that maybe you can lead 

807
00:40:00,433 --> 00:40:03,442
learning hours with other teams.
And maybe you could start doing 

808
00:40:03,442 --> 00:40:06,989
some ensemble and, you know, 
start to build it up as a bigger

809
00:40:06,989 --> 00:40:09,783
part of your role. 
And maybe even then transfer 

810
00:40:09,783 --> 00:40:13,212
into a, like a staff engineer 
role in your organization where 

811
00:40:13,212 --> 00:40:16,513
you've got responsibilities for 
more than one team. 

812
00:40:16,543 --> 00:40:19,230
And part of your role could be 
doing these kind of technical 

813
00:40:19,230 --> 00:40:23,007
coaching activities alongside, I
mean, staff engineers do loads 

814
00:40:23,007 --> 00:40:26,173
of variety of important 
technical leadership things. 

815
00:40:26,473 --> 00:40:29,473
And I think you can combine it 
with some technical coaching. 

816
00:40:30,133 --> 00:40:33,147
And then, uh, maybe if you 
really like this side of the 

817
00:40:33,147 --> 00:40:36,534
work, you could go full-time 
like I have and be an 

818
00:40:36,534 --> 00:40:40,488
independent coach. 
But I kind of see the, the path 

819
00:40:40,488 --> 00:40:43,535
into this through basically a 
part-time role alongside tech 

820
00:40:43,535 --> 00:40:45,796
lead and growing that in your 
organization. 

821
00:40:46,986 --> 00:40:50,604
Although, I mean there are 
organizations that are hiring 

822
00:40:50,604 --> 00:40:53,942
technical coaches and maybe be 
lucky enough to, to get a 

823
00:40:53,942 --> 00:40:57,177
full-time role straight away, 
but I think it's more likely it 

824
00:40:57,177 --> 00:40:59,307
would be alongside a staff 
engineer role. 

825
00:41:00,165 --> 00:41:01,955
Yeah. 
So I think, I mean definitely 

826
00:41:01,955 --> 00:41:04,472
there are people who are 
interested in doing this, right,

827
00:41:04,472 --> 00:41:07,302
within the team. 
I think the message here is just

828
00:41:07,302 --> 00:41:10,652
keep continue doing that, right?
And that's also improving your 

829
00:41:10,652 --> 00:41:12,932
skills, right? 
Maybe your soft skills, maybe 

830
00:41:12,932 --> 00:41:15,482
your teaching skills, right? 
And also learning new things, 

831
00:41:15,482 --> 00:41:17,397
right? 
Because I'm sure you want to 

832
00:41:17,397 --> 00:41:20,445
learn new things together with 
others as well and making sure 

833
00:41:20,445 --> 00:41:22,977
that people also learn benefit 
from the learning, right? 

834
00:41:23,397 --> 00:41:27,004
So I think you mentioned about 
being technical coach. 

835
00:41:27,094 --> 00:41:28,744
How do you actually get 
measured? 

836
00:41:28,774 --> 00:41:31,354
This is something that I'm quite
curious because is it more like 

837
00:41:31,354 --> 00:41:35,657
an engagement, uh, with a set 
of, I don't know, teachable 

838
00:41:35,657 --> 00:41:38,088
skills? 
Or is there something else that 

839
00:41:38,088 --> 00:41:41,695
you measure quantifiable? 
Yeah, this is one of the hardest

840
00:41:41,695 --> 00:41:44,805
parts of my job 'cause it really
just does not interest me at 

841
00:41:44,805 --> 00:41:48,587
all. 
This whole thing of metrics and 

842
00:41:48,587 --> 00:41:52,816
performance and, yeah, that's 
managers obviously do a lot more

843
00:41:52,816 --> 00:41:54,722
of that. 
And I'm, I've made a deliberate 

844
00:41:54,722 --> 00:41:56,612
choice in my career not to be a 
manager. 

845
00:41:57,103 --> 00:41:59,496
All of this kind of like, how do
we measure if the technical 

846
00:41:59,496 --> 00:42:02,439
coach is effective? 
My usual answer is, well, ask 

847
00:42:02,439 --> 00:42:05,037
the team. 
What did they think this has 

848
00:42:05,037 --> 00:42:08,058
given them? 
And try and perhaps do a survey 

849
00:42:08,058 --> 00:42:10,721
before and after the coaching 
about their attitudes towards 

850
00:42:10,721 --> 00:42:15,015
teamwork and, and ensemble and 
ask about their attitudes to TDD

851
00:42:15,015 --> 00:42:18,930
and code quality, and see if 
there's a shift through the 

852
00:42:18,930 --> 00:42:21,628
coaching. 
And then also, while the 

853
00:42:21,628 --> 00:42:25,128
coaching is going on, I like to 
write little summaries that I 

854
00:42:25,128 --> 00:42:27,919
send to the managers about what 
happens during that coaching 

855
00:42:27,919 --> 00:42:30,173
session. 
And really just like a 

856
00:42:30,173 --> 00:42:32,872
paragraph. 
No more than two or three 

857
00:42:32,872 --> 00:42:36,238
sentences really just to 
describe the what happened and 

858
00:42:37,033 --> 00:42:41,453
the impact that I think it 
should be having on the team and

859
00:42:41,453 --> 00:42:43,913
the organization. 
So the manager gets then, at the

860
00:42:43,913 --> 00:42:46,582
end of the coaching, summary of 
all of those little summaries, 

861
00:42:46,582 --> 00:42:50,113
it's a bit meta. 
They get a kind of an idea 

862
00:42:50,113 --> 00:42:53,274
about, well, this is what I, as 
the coach, think that the team 

863
00:42:53,274 --> 00:42:55,930
has got outta this coaching. 
And then they can go and 

864
00:42:55,930 --> 00:42:58,359
basically follow up. 
Do they observe that continuing 

865
00:42:58,359 --> 00:43:02,719
after the coach left? 
That's the way I usually try and

866
00:43:02,719 --> 00:43:04,773
help people to understand what 
is the value of this. 

867
00:43:05,952 --> 00:43:09,007
Yeah, it's always difficult to 
kind of like quantify coaching, 

868
00:43:09,007 --> 00:43:11,235
right? 
Because sometimes it's like more

869
00:43:11,235 --> 00:43:13,301
abstract, right? 
There's not immediate impact as 

870
00:43:13,301 --> 00:43:15,655
well, right? 
It's not like suddenly you can 

871
00:43:15,655 --> 00:43:18,397
do code faster, for example, 
produce more lines of code. 

872
00:43:18,427 --> 00:43:22,083
Um, but I think... 
Yeah, you hope, you hope that 

873
00:43:22,083 --> 00:43:25,370
people will be more productive 
and better coders afterwards, 

874
00:43:25,370 --> 00:43:28,660
but those things are really hard
to measure and they... 

875
00:43:29,240 --> 00:43:33,491
It might take a while before you
see, you know, an increase in 

876
00:43:33,491 --> 00:43:35,268
productivity, if the code 
quality is very low. 

877
00:43:35,268 --> 00:43:39,608
It could take a while to raise 
it, you know, so I think there 

878
00:43:39,608 --> 00:43:43,148
are people much more interested 
in those questions than I am, 

879
00:43:43,148 --> 00:43:46,296
who would be able to tell you 
more about how to measure 

880
00:43:46,296 --> 00:43:47,900
developer productivity and the 
impact of some coaching. 

881
00:43:48,180 --> 00:43:50,860
So I just gonna dodge the 
question, basically. 

882
00:43:52,857 --> 00:43:55,618
So, let's go back maybe to the 
AI case, right? 

883
00:43:55,618 --> 00:43:59,386
So I'm sure with the advancement
of AI these days, like 

884
00:43:59,386 --> 00:44:02,475
especially the agentic thing 
that could happen, you know, 

885
00:44:02,475 --> 00:44:05,182
asynchronously. 
And there's a danger that people

886
00:44:05,182 --> 00:44:07,734
probably do a lot of 
multitasking, accepting AI 

887
00:44:07,734 --> 00:44:11,270
suggestions or even just merging
the code straight away, right, 

888
00:44:11,270 --> 00:44:14,346
to production. 
As a technical coach, maybe you 

889
00:44:14,346 --> 00:44:16,296
have something to say about 
this. 

890
00:44:16,296 --> 00:44:18,491
What do you think? 
Like your prediction, like what 

891
00:44:18,491 --> 00:44:20,221
could happen if this trend 
continues? 

892
00:44:21,539 --> 00:44:23,239
Yeah. 
So I've definitely heard that, 

893
00:44:23,239 --> 00:44:26,367
that people are, you know, vibe 
coding and that can mean not 

894
00:44:26,367 --> 00:44:28,622
looking at the code the thing 
produces at all. 

895
00:44:29,162 --> 00:44:32,178
Just kind of accepting, oh, it 
looks, it looks good to me, 

896
00:44:32,178 --> 00:44:36,166
let's just ship it. 
And of course, I see a danger in

897
00:44:36,166 --> 00:44:38,917
the code quality there, not 
being quite what you'd like it 

898
00:44:38,917 --> 00:44:41,402
to be. 
And I kind of have this notion 

899
00:44:41,402 --> 00:44:43,758
that as a software developer, 
I'm responsible for the quality 

900
00:44:43,758 --> 00:44:47,164
of the work that I deliver. 
And if I haven't even looked at 

901
00:44:47,164 --> 00:44:50,815
the code, I mean, how do I know 
that it's gonna be even vaguely 

902
00:44:50,815 --> 00:44:54,663
something I could stand up for? 
I mean, okay. 

903
00:44:54,723 --> 00:44:58,082
Okay. 
I'm, I want to use these tools 

904
00:44:58,082 --> 00:45:03,067
to augment my abilities and to 
write even better code than I'd 

905
00:45:03,067 --> 00:45:06,964
be capable of without the tool. 
So, uh, I want to look at the 

906
00:45:06,964 --> 00:45:08,672
code that it produces before I 
ship it. 

907
00:45:08,702 --> 00:45:12,536
I think that's actually quite 
fundamental, that a software 

908
00:45:12,536 --> 00:45:15,682
developer should be responsible 
for the code they produce. 

909
00:45:16,618 --> 00:45:18,163
Yeah. 
But one challenge with these 

910
00:45:18,163 --> 00:45:20,109
tools is like kind of seductive,
right? 

911
00:45:20,109 --> 00:45:23,070
Like it can churn out code 
really, really fast 

912
00:45:23,070 --> 00:45:24,819
automatically. 
And I've experienced myself 

913
00:45:24,819 --> 00:45:28,578
using some newer models, they're
like hungry to give you like a 

914
00:45:28,578 --> 00:45:30,974
lot of output, right? 
You know, like maybe I could do 

915
00:45:30,974 --> 00:45:33,944
this, I could do that and keep 
on doing stuff that sometimes 

916
00:45:33,944 --> 00:45:37,238
yeah, you wanna see how far it 
goes, right? 

917
00:45:37,294 --> 00:45:39,467
But after they have done it, 
right? 

918
00:45:39,486 --> 00:45:42,242
It's like so many things. 
I think it's really hard to 

919
00:45:42,242 --> 00:45:43,808
review. 
Maybe I don't know whether you 

920
00:45:43,808 --> 00:45:45,338
have this special case that you 
have seen before? 

921
00:45:46,066 --> 00:45:48,882
Maybe I need to qualify this 
with, if you're writing a 

922
00:45:48,882 --> 00:45:52,413
prototype or proof of concept to
show that you could write 

923
00:45:52,413 --> 00:45:56,364
software to solve this problem 
or... and, uh, it's not gonna go

924
00:45:56,364 --> 00:45:59,418
into production and... then 
that's a very good use case for 

925
00:45:59,418 --> 00:46:01,742
just doing, as you say, just get
it to produce a huge amount of 

926
00:46:01,742 --> 00:46:04,539
code that just demonstrate what 
could happen. 

927
00:46:05,109 --> 00:46:08,699
But I think if most of the teams
I'm working with are not in that

928
00:46:08,699 --> 00:46:11,873
situation, they're, they've got 
a large existing code base, 

929
00:46:11,873 --> 00:46:15,664
which is pretty complex and 
valuable and is producing a lot 

930
00:46:15,664 --> 00:46:20,355
of money for the company. 
And if you are using the AI to 

931
00:46:20,355 --> 00:46:24,788
produce a load of code that is 
gonna be unmaintainable and 

932
00:46:24,788 --> 00:46:30,433
integrate with this existing 
code base, it's a bit of a 

933
00:46:30,433 --> 00:46:33,002
recipe for disaster. 
I think it's gonna come back and

934
00:46:33,002 --> 00:46:35,404
bite you pretty soon. 
So most of the developers I'm 

935
00:46:35,404 --> 00:46:38,518
working with, I'm saying, look, 
yeah, use the AI tool to get 

936
00:46:38,518 --> 00:46:41,996
ideas and suggestions, but 
you've gotta check it and you've

937
00:46:41,996 --> 00:46:45,513
gotta be making sure that the 
changes that it's making are in 

938
00:46:45,513 --> 00:46:48,649
line with the rest of the system
that's already there and that 

939
00:46:48,649 --> 00:46:50,385
you're gonna be able to maintain
it. 

940
00:46:50,385 --> 00:46:54,152
So I think, yeah, I advise 
against just producing huge 

941
00:46:54,152 --> 00:46:56,100
amounts of code that you don't 
really understand. 

942
00:46:56,100 --> 00:46:58,286
That, that doesn't seem like a 
recipe for success. 

943
00:46:59,393 --> 00:47:01,993
Right. 
And this gives a much more 

944
00:47:01,993 --> 00:47:05,141
importance for, I dunno, reading
code, rationalizing the design 

945
00:47:05,141 --> 00:47:07,553
that is, you know, generated, 
right? 

946
00:47:07,853 --> 00:47:10,834
So do you think, uh, there are 
like more prominent new skills 

947
00:47:10,834 --> 00:47:12,934
that, I don't know, like 
technical people or maybe 

948
00:47:12,934 --> 00:47:14,513
technical coach needs to be 
aware of? 

949
00:47:14,900 --> 00:47:16,826
That something, you know, 
because of AI, right? 

950
00:47:17,111 --> 00:47:19,151
We have to be more careful about
this. 

951
00:47:19,151 --> 00:47:22,424
Or maybe some skills, I dunno, 
like reading code, making sure 

952
00:47:22,424 --> 00:47:25,781
the code is well written in 
terms of variable naming, design

953
00:47:25,781 --> 00:47:28,159
and all that. 
Maybe some things that you can 

954
00:47:28,159 --> 00:47:31,594
advise us as well. 
Yeah, I'm not, I think the 

955
00:47:31,594 --> 00:47:34,591
fundamentals are still the same.
The modern software engineering 

956
00:47:34,591 --> 00:47:39,544
skills of being able to look at 
a problem and break down the 

957
00:47:39,544 --> 00:47:42,715
complexity of it into a modular 
design. 

958
00:47:43,325 --> 00:47:47,404
And being able to work out how 
to build that design in small 

959
00:47:47,404 --> 00:47:50,246
steps and react. 
As you get more code, you 

960
00:47:50,246 --> 00:47:52,564
realize that the design you 
initially had in your head maybe

961
00:47:52,564 --> 00:47:54,948
wasn't the best. 
And you can adapt and move the 

962
00:47:54,948 --> 00:47:58,480
design in a different direction.
So it's about being able to 

963
00:47:58,480 --> 00:48:02,664
explain to the AI tool this is 
the problem I want you to solve 

964
00:48:02,664 --> 00:48:06,456
now concisely and then to verify
that the code it produces does 

965
00:48:06,456 --> 00:48:08,520
that. 
So as you say, code reading 

966
00:48:08,520 --> 00:48:10,491
skills. 
And then refactoring skills to 

967
00:48:10,491 --> 00:48:12,981
say, actually I wanna move this 
in a different direction. 

968
00:48:13,636 --> 00:48:17,193
At the time I'm speaking now, 
the AI tools aren't that good at

969
00:48:17,193 --> 00:48:19,916
refactoring. 
Um, they tend to introduce 

970
00:48:19,916 --> 00:48:24,458
errors and do unexpected things.
I still think it's a really 

971
00:48:24,458 --> 00:48:27,420
useful to learn refactoring 
tools, deterministic refactoring

972
00:48:27,420 --> 00:48:31,481
tools, because they do it in a 
reliable way that is 

973
00:48:31,481 --> 00:48:34,028
predictable. 
I think that, uh, the 

974
00:48:34,028 --> 00:48:35,610
refactoring skills are still 
valuable. 

975
00:48:35,850 --> 00:48:38,472
But the skill I, you know, 
describing this is the piece of 

976
00:48:38,472 --> 00:48:41,102
the problem I wanna solve now, 
that's test-driven development. 

977
00:48:41,122 --> 00:48:45,354
That's being able to break down 
a problem and describe what the 

978
00:48:45,354 --> 00:48:48,879
next bit should do. 
The abstraction level has gone 

979
00:48:48,879 --> 00:48:52,401
up a little, and I can describe 
it more in words than in a test 

980
00:48:52,401 --> 00:48:53,806
case. 
But still, I think it's 

981
00:48:53,806 --> 00:48:56,876
fundamentally the same skills 
that you need to be a good 

982
00:48:56,876 --> 00:49:00,706
engineer today as it were before
AI was invented, actually. 

983
00:49:02,683 --> 00:49:04,753
Yeah, I like that you mentioned 
about refactoring, right? 

984
00:49:04,753 --> 00:49:07,689
I, from my experience as well, 
using these AI tools, I feel 

985
00:49:07,689 --> 00:49:09,973
that refactoring is very, very 
crucial. 

986
00:49:10,033 --> 00:49:12,373
And if we think about the TDD 
loop, right? 

987
00:49:12,403 --> 00:49:14,653
You know, red, green, refactor, 
right? 

988
00:49:14,983 --> 00:49:19,590
I think these days like prompt, 
I dunno, uh, red, green, the 

989
00:49:19,590 --> 00:49:21,553
refactoring part is actually 
still very important. 

990
00:49:21,553 --> 00:49:24,513
Because I can see AI generating 
code that is still kind of like 

991
00:49:24,513 --> 00:49:27,364
procedural, long lines of code. 
And even they just put comments 

992
00:49:27,364 --> 00:49:30,505
on top of some sections of the 
code rather than creating, you 

993
00:49:30,505 --> 00:49:34,310
know, methods. 
So I think, um, not, not, uh, 

994
00:49:34,310 --> 00:49:37,899
doing refactoring is I think a 
big mistake, uh, especially if 

995
00:49:37,899 --> 00:49:39,914
the software needs to be 
maintainable in the future, 

996
00:49:39,914 --> 00:49:41,601
right? 
'Cause you could end up like 

997
00:49:41,601 --> 00:49:44,502
with so many lines of code in 
just one particular class or 

998
00:49:44,502 --> 00:49:47,192
function, right? 
And it gets so difficult to 

999
00:49:47,192 --> 00:49:50,088
understand over the time. 
So I think thanks for mentioning

1000
00:49:50,088 --> 00:49:52,906
about refactoring. 
I think for people who are still

1001
00:49:52,906 --> 00:49:55,345
not familiar with the 
refactoring technique, please do

1002
00:49:55,345 --> 00:49:58,420
learn about that. 
And what I'm seeing quite 

1003
00:49:58,420 --> 00:50:01,801
interesting as well, people 
actually do the refactoring by 

1004
00:50:01,801 --> 00:50:03,139
prompting the AI to do the 
refactoring. 

1005
00:50:04,129 --> 00:50:06,259
Uh. 
Although it's not deterministic,

1006
00:50:06,259 --> 00:50:08,025
right? 
There's no like compiler thing 

1007
00:50:08,025 --> 00:50:11,205
and the structure of the code, 
static code analysis that is 

1008
00:50:11,205 --> 00:50:13,997
being used. 
Sometimes it gets to produce a 

1009
00:50:13,997 --> 00:50:16,604
decent result. 
But what do you think about this

1010
00:50:16,604 --> 00:50:18,493
refactoring through AI? 
Because it's, again, like I 

1011
00:50:18,493 --> 00:50:19,695
said, right, it's quite 
seductive. 

1012
00:50:19,695 --> 00:50:22,149
You could just instruct 
something to do something for 

1013
00:50:22,149 --> 00:50:25,053
you rather than, you know, the 
mechanics of, you know, doing 

1014
00:50:25,053 --> 00:50:26,355
all this refactoring by 
yourself. 

1015
00:50:27,564 --> 00:50:30,684
I think there's studies to show 
this, that it actually, AI tools

1016
00:50:30,684 --> 00:50:33,911
are very bad at refactoring. 
They make mistakes, they 

1017
00:50:33,911 --> 00:50:37,583
introduce bugs and they forget 
things or they introduce dead 

1018
00:50:37,583 --> 00:50:40,091
code or, you know, they do 
random stuff. 

1019
00:50:40,181 --> 00:50:42,873
And I think the tools are bound 
to get better. 

1020
00:50:42,873 --> 00:50:44,343
They seem to be getting better 
all the time. 

1021
00:50:44,343 --> 00:50:47,547
But at the moment, I don't think
you should trust it to do 

1022
00:50:47,547 --> 00:50:49,383
refactoring, particularly, if 
you've got a significant amount 

1023
00:50:49,383 --> 00:50:52,338
of code in your project. 
It won't find all the places to 

1024
00:50:52,338 --> 00:50:53,905
update. 
It will do random things. 

1025
00:50:54,325 --> 00:50:59,313
But we do have, for many years 
now, reliable deterministic 

1026
00:50:59,313 --> 00:51:02,549
refactoring tools. 
Use them, for goodness sake! 

1027
00:51:03,109 --> 00:51:05,535
I think it's much better to use 
a reliable tool that you know 

1028
00:51:05,535 --> 00:51:08,039
what it's gonna do, and it's 
gonna find all the right spots 

1029
00:51:08,039 --> 00:51:10,229
to update than to ask the AI to 
do it. 

1030
00:51:10,419 --> 00:51:15,679
And the cost, of course, is that
you need to learn how to use the

1031
00:51:15,679 --> 00:51:18,729
refactoring tool and learn what 
the thing is called and where, 

1032
00:51:18,729 --> 00:51:21,369
how to prompt, you know, where 
to put the cursor. 

1033
00:51:21,657 --> 00:51:24,139
One thing I really realize now, 
I've been teaching refactoring 

1034
00:51:24,139 --> 00:51:28,029
tools to so many developers, how
un-user friendly these tools 

1035
00:51:28,029 --> 00:51:31,244
really are. 
I mean, you have to get the 

1036
00:51:31,244 --> 00:51:34,424
cursor in exactly the right 
spots for the menu item to even 

1037
00:51:34,424 --> 00:51:38,059
appear. 
And then the name of the menu 

1038
00:51:38,059 --> 00:51:41,667
item is something that isn't 
perhaps anything you recognize. 

1039
00:51:41,998 --> 00:51:46,290
It's called transform parameter 
or introduce parameter object. 

1040
00:51:46,710 --> 00:51:49,024
And when I first read those, I 
was like, well, I dunno what 

1041
00:51:49,024 --> 00:51:50,959
that is. 
I'm a bit scared to click on 

1042
00:51:50,959 --> 00:51:52,230
that. 
I don't know what it's gonna do.

1043
00:51:52,710 --> 00:51:56,236
Um, and then you... but so you, 
that is the thing that, you 

1044
00:51:56,236 --> 00:51:59,144
know, that the usability isn't 
there, whereas the AI tool, you 

1045
00:51:59,144 --> 00:52:03,171
can say, okay, I need to change 
the class of that parameter and,

1046
00:52:03,171 --> 00:52:06,649
uh, introduce an adapter pattern
and it might understand you. 

1047
00:52:07,789 --> 00:52:10,549
So I think that the, uh, 
refactoring, deterministic 

1048
00:52:10,549 --> 00:52:12,859
refactoring tools have got a 
usability problem. 

1049
00:52:12,859 --> 00:52:16,644
But I think the solution is not 
to just tell people to use AI 

1050
00:52:16,644 --> 00:52:18,427
instead. 
Right. 

1051
00:52:18,427 --> 00:52:20,287
So you mentioned a very valid 
point, right? 

1052
00:52:20,287 --> 00:52:23,167
So I think the vocabulary, 
right, the techniques. 

1053
00:52:23,227 --> 00:52:25,717
I think Martin Fowler has a book
about refactoring. 

1054
00:52:25,717 --> 00:52:28,605
I think some other people, maybe
like Michael Feathers' Working 

1055
00:52:28,605 --> 00:52:30,893
with Legacy Code has some 
techniques for doing this 

1056
00:52:30,893 --> 00:52:33,355
refactoring kind of thing. 
Definitely, knowing the 

1057
00:52:33,355 --> 00:52:36,392
vocabulary helps, right? 
But getting to master the tools 

1058
00:52:36,392 --> 00:52:38,972
in order to do that 
deterministically, I think it's 

1059
00:52:38,972 --> 00:52:40,892
also still crucial for software 
developers as well. 

1060
00:52:41,552 --> 00:52:44,756
So I think it's been a great 
thing to learn from you, Emily. 

1061
00:52:44,756 --> 00:52:48,240
So I dunno whether there are a 
thing or two about ensemble or 

1062
00:52:48,240 --> 00:52:50,396
Samman method that you still 
wanna convey to us. 

1063
00:52:50,396 --> 00:52:52,286
Maybe is there a thing that you 
wanna plug in? 

1064
00:52:53,275 --> 00:52:55,283
I would encourage anyone 
interested in technical coaching

1065
00:52:55,283 --> 00:52:58,753
or the Samman method to come and
look at our website, 

1066
00:52:58,753 --> 00:53:00,589
sammancoaching.org. 
Uh, we have a newsletter that 

1067
00:53:00,589 --> 00:53:03,388
you can sign up for and then 
you'll hear about updates to the

1068
00:53:03,388 --> 00:53:05,294
website and new materials that 
we publish. 

1069
00:53:05,904 --> 00:53:08,793
And of course, we have these 
in-person shorts, online 

1070
00:53:08,793 --> 00:53:11,706
meetings every month. 
If you're on a suitable time 

1071
00:53:11,706 --> 00:53:14,612
zone to come along. 
You can come and meet me and 

1072
00:53:14,612 --> 00:53:17,406
other coaches at those. 
So that's something to try if 

1073
00:53:17,406 --> 00:53:20,473
you're interested. 
Yeah, sounds like it's gonna be 

1074
00:53:20,473 --> 00:53:22,411
fun, right? 
So having technical coaches 

1075
00:53:22,411 --> 00:53:24,949
together and exchanging, you 
know, good practices. 

1076
00:53:25,249 --> 00:53:28,631
I think definitely it'll amplify
a lot of the skills, right? 

1077
00:53:29,201 --> 00:53:32,321
So Emily, I only have one last 
question before, uh, we wrap up 

1078
00:53:32,321 --> 00:53:34,654
this conversation. 
I normally, call this the three 

1079
00:53:34,654 --> 00:53:37,108
technical leadership wisdom. 
I always ask this to my guests. 

1080
00:53:37,108 --> 00:53:40,074
If you can think of it just like
advice that you want to give to 

1081
00:53:40,074 --> 00:53:41,933
the listeners. 
Maybe you can share your version

1082
00:53:41,933 --> 00:53:44,478
today, that would be great. 
Okay, okay. 

1083
00:53:44,478 --> 00:53:47,209
So I've, I, you've told me this 
in advance, so I've prepared, 

1084
00:53:47,209 --> 00:53:50,616
uh, three things. 
So the first technical 

1085
00:53:50,616 --> 00:53:54,006
leadership wisdom is that junior
developers need mentoring to 

1086
00:53:54,006 --> 00:53:58,542
turn into senior developers. 
And mentoring is more than just 

1087
00:53:58,542 --> 00:54:00,246
writing comments and pull 
requests. 

1088
00:54:00,946 --> 00:54:03,806
Find a way to make sure you're 
actually mentoring your juniors.

1089
00:54:04,727 --> 00:54:07,452
The other thing is that about 
technical leadership is you 

1090
00:54:07,452 --> 00:54:11,180
don't learn how to produce 
beautiful code only by looking 

1091
00:54:11,180 --> 00:54:14,255
at a good design and analyzing 
it. 

1092
00:54:14,615 --> 00:54:17,452
You learn to produce a good 
design by watching good 

1093
00:54:17,452 --> 00:54:19,415
designers coming up with that 
design. 

1094
00:54:19,805 --> 00:54:23,855
So you need to involve juniors 
in the design process and show 

1095
00:54:23,855 --> 00:54:28,348
them not just the end result. 
Then the other thing I wanted to

1096
00:54:28,348 --> 00:54:31,051
say is that, in terms of 
technical leadership, that 

1097
00:54:31,051 --> 00:54:33,376
sometimes it helps to have 
someone from outside like a 

1098
00:54:33,376 --> 00:54:35,798
technical coach come in and help
your team. 

1099
00:54:36,516 --> 00:54:39,248
Our priority as a technical 
coach is to level up the team, 

1100
00:54:39,248 --> 00:54:43,458
not to deliver features. 
And that could give you some 

1101
00:54:43,458 --> 00:54:47,427
time and breathing space to 
actually focus on that and not 

1102
00:54:47,427 --> 00:54:50,237
only delivering. 
So, uh, perhaps think about 

1103
00:54:50,237 --> 00:54:54,503
getting in a technical coach for
a short period or to level up if

1104
00:54:54,503 --> 00:54:57,548
you need that. 
Right, I think that's really 

1105
00:54:57,548 --> 00:54:59,706
beautiful, right? 
So you emphasize a lot about 

1106
00:54:59,706 --> 00:55:01,691
bringing people along into the 
journey, right? 

1107
00:55:01,691 --> 00:55:04,494
The juniors or maybe the one who
doesn't understand about good 

1108
00:55:04,494 --> 00:55:06,538
design, right? 
Bringing them along to the 

1109
00:55:06,538 --> 00:55:09,232
journey and making sure they 
learn from, you know, the 

1110
00:55:09,232 --> 00:55:11,140
evolution, right? 
From like the bad to the good, 

1111
00:55:11,140 --> 00:55:13,414
for example. 
But maybe for some people who 

1112
00:55:13,414 --> 00:55:16,450
find it hard to find mentors, 
any last piece for them? 

1113
00:55:16,480 --> 00:55:19,880
Like how do you actually find 
mentors that could actually 

1114
00:55:19,880 --> 00:55:21,910
upskill you, bringing them along
with the journey? 

1115
00:55:22,908 --> 00:55:25,458
I spent a lot of my career 
looking for mentors. 

1116
00:55:25,841 --> 00:55:29,238
I think it's really important to
just, if you are in a team and 

1117
00:55:29,238 --> 00:55:31,560
you're not getting that, then 
perhaps you need to look around 

1118
00:55:31,560 --> 00:55:34,255
and see, is it, could you 
transfer to a team that has 

1119
00:55:34,255 --> 00:55:37,784
somebody who will mentor you? 
And if not, then maybe I don't, 

1120
00:55:37,784 --> 00:55:40,220
I hesitate to ask you to put 
your free time in. 

1121
00:55:40,729 --> 00:55:44,297
But that is also an option. 
Go along to open ensembles and, 

1122
00:55:44,297 --> 00:55:49,326
uh, events by the Samman Society
and so on and see if you can get

1123
00:55:49,326 --> 00:55:52,738
people who will help you. 
I think everyone needs that to 

1124
00:55:52,738 --> 00:55:54,478
progress in your career. 
You need mentors. 

1125
00:55:55,630 --> 00:55:58,660
Yeah, so definitely go to the 
community, go to the forum, 

1126
00:55:58,660 --> 00:56:01,740
maybe online, offline, right? 
Talk to people, I think that's 

1127
00:56:01,740 --> 00:56:04,390
always still the best way to 
find good mentors, right? 

1128
00:56:04,390 --> 00:56:06,920
Sometimes you are lucky you can 
find good mentors at work, 

1129
00:56:06,920 --> 00:56:08,710
right? 
Working side by side with you. 

1130
00:56:09,010 --> 00:56:10,930
I think that will be great 
definitely. 

1131
00:56:10,930 --> 00:56:14,252
But for many people, sometimes 
this is not a thing that they 

1132
00:56:14,252 --> 00:56:16,145
have, not fortunate enough to 
have that. 

1133
00:56:16,505 --> 00:56:20,033
So definitely talk to people. 
Be active, talk around, uh, and 

1134
00:56:20,033 --> 00:56:23,724
maybe join, uh, one of these 
sessions that Emily has. 

1135
00:56:23,784 --> 00:56:26,000
I think that will be great 
things to find good mentors as 

1136
00:56:26,000 --> 00:56:28,686
well. 
So thank you so much for 

1137
00:56:28,686 --> 00:56:31,432
teaching us about Samman method,
ensemble and importance of 

1138
00:56:31,432 --> 00:56:34,129
learning hours. 
So I hope that people can do 

1139
00:56:34,129 --> 00:56:37,543
practice of some of this. 
And also remember about the 

1140
00:56:37,543 --> 00:56:40,868
danger using AI without actually
caring about the quality or the 

1141
00:56:40,868 --> 00:56:42,959
output that they produce. 
So thanks again, Emily. 

1142
00:56:43,577 --> 00:56:44,927
Thank you so much for having me.
