1
00:00:00,040 --> 00:00:02,560
A lot of what we do is problem 
solving, and not just on the how

2
00:00:02,560 --> 00:00:05,960
do I write the code part, but I 
think also being able to 

3
00:00:06,160 --> 00:00:09,480
pinpoint where it goes wrong and
you get a feel for that right? 

4
00:00:09,480 --> 00:00:11,640
When you've seen enough 
problems, we're under a lot of 

5
00:00:11,640 --> 00:00:14,120
pressure to. 
Ship new stuff constantly. 

6
00:00:14,280 --> 00:00:17,040
That's the finish line. 
But I like to not think of it as

7
00:00:17,040 --> 00:00:18,640
a finish line. 
That's actually the starting 

8
00:00:18,640 --> 00:00:20,160
line. 
That's where it gets interesting

9
00:00:20,160 --> 00:00:21,520
because that's where you Start 
learning. 

10
00:00:21,600 --> 00:00:23,920
If there's a system where the 
whole team that worked on it 

11
00:00:23,920 --> 00:00:25,960
isn't there anymore, is that 
system legacy? 

12
00:00:26,000 --> 00:00:27,960
Oh yeah, definitely. 
No one wants to touch it. 

13
00:00:28,160 --> 00:00:30,360
Nobody wants to touch it right? 
You build some something you 

14
00:00:30,360 --> 00:00:33,040
assume is wrong, and to be 
honest, usually what you build 

15
00:00:33,040 --> 00:00:35,280
is wrong in some way. 
And then you optimize your 

16
00:00:35,280 --> 00:00:37,840
feedback loop, and then you 
learn and you make sure that 

17
00:00:37,840 --> 00:00:40,000
your code is easy to change, and
then you change it. 

18
00:00:40,600 --> 00:00:43,080
Today we discuss how to build 
software and how to do that 

19
00:00:43,080 --> 00:00:45,600
successfully. 
What are the skills that people 

20
00:00:45,600 --> 00:00:47,680
bring to the table when they 
build it, and what does it look 

21
00:00:47,680 --> 00:00:49,720
like from a system design 
perspective? 

22
00:00:50,120 --> 00:00:54,440
Joining me at the table is Nico 
Crane, Speaker Architect and 

23
00:00:54,440 --> 00:00:56,280
Software Engineer over at 
Luminous. 

24
00:00:56,560 --> 00:00:58,760
And with over 30 years of 
experience, he's seen many 

25
00:00:58,760 --> 00:01:01,960
organizations and built many 
successful projects. 

26
00:01:02,280 --> 00:01:08,440
So enjoy. 
You've had many roles starting 

27
00:01:08,440 --> 00:01:11,320
from software engineer and then 
person that's responsible for 

28
00:01:11,320 --> 00:01:14,360
cloud or agile methodologies, 
even engineering management 

29
00:01:14,880 --> 00:01:17,240
architecture, and now back to 
software engineer. 

30
00:01:17,240 --> 00:01:19,520
What What keeps you coming back 
to software engineering in the 

31
00:01:19,520 --> 00:01:21,200
first place? 
Good question. 

32
00:01:21,200 --> 00:01:25,200
So like if you, if you grow in 
your career, there's, you 

33
00:01:26,040 --> 00:01:29,440
usually see this career letter, 
right, where you can have sort 

34
00:01:29,440 --> 00:01:32,360
of the split in where you, you 
do the software engineer part, 

35
00:01:32,360 --> 00:01:34,080
you're senior. 
And then at some point, either 

36
00:01:34,080 --> 00:01:37,360
you go more like architecture 
wise or more technical or more 

37
00:01:37,360 --> 00:01:39,520
the, the people management side,
right? 

38
00:01:39,520 --> 00:01:42,320
And a lot of people go into this
management side, which I 

39
00:01:42,320 --> 00:01:45,040
sometimes find a bit of a shame 
because we have all this talent 

40
00:01:45,040 --> 00:01:47,360
which takes a lot of time to 
build up really hard. 

41
00:01:47,360 --> 00:01:49,440
It's a, it's a complicated job, 
right? 

42
00:01:49,520 --> 00:01:53,680
What we do and then we shift all
those people into in management 

43
00:01:53,680 --> 00:01:58,160
roles, right, which may not 
necessarily be there, their 

44
00:01:58,920 --> 00:02:02,080
skill set, right? 
You also see people struggle 

45
00:02:02,080 --> 00:02:07,480
with that, but it pays more. 
So it sort of feels like an 

46
00:02:07,520 --> 00:02:12,240
attractive path to follow. 
But on the other hand, the, the 

47
00:02:12,240 --> 00:02:14,560
technical part is right. 
You there's a lot of stuff you 

48
00:02:14,560 --> 00:02:18,840
can grow there. 
And I think in the end, both of 

49
00:02:18,840 --> 00:02:22,000
the both of the sides you get 
into is sort of, yeah, the, the 

50
00:02:22,000 --> 00:02:24,760
fact that there's more of a 
human side to what you're doing,

51
00:02:24,760 --> 00:02:26,600
right? 
You're not just doing the 

52
00:02:26,600 --> 00:02:29,680
technical part, you're also 
facilitating the people around 

53
00:02:29,680 --> 00:02:32,040
you, right? 
If you want to be successful, 

54
00:02:33,680 --> 00:02:37,280
lead what in whatever role, 
right, technical or, or 

55
00:02:37,280 --> 00:02:41,600
management, you need to help the
people around you go faster and,

56
00:02:41,600 --> 00:02:44,680
and perform better and, and feel
better, right? 

57
00:02:44,680 --> 00:02:49,040
Being happier. 
And so that human side becomes 

58
00:02:49,040 --> 00:02:53,040
quite important, I think in both
sides, at least if you want to 

59
00:02:53,040 --> 00:02:54,840
increase the impact you make, 
Right. 

60
00:02:56,960 --> 00:02:59,960
And for me, that human side has 
always been there, I guess. 

61
00:03:00,480 --> 00:03:05,800
I mean, the the first job I had 
out of school, I immediately got

62
00:03:05,800 --> 00:03:08,560
an intern. 
And I mean, like, they probably 

63
00:03:08,560 --> 00:03:11,480
saw something, I don't know. 
But I said, yeah, you're working

64
00:03:11,480 --> 00:03:12,760
now you get an intern. 
OK. 

65
00:03:12,840 --> 00:03:13,880
I just was the intern. 
OK. 

66
00:03:16,960 --> 00:03:20,400
So that was interesting. 
And I've been doing like 

67
00:03:21,040 --> 00:03:23,640
coaching, helping others 
throughout my career. 

68
00:03:23,760 --> 00:03:25,520
It's just at a different scale 
at some point, right? 

69
00:03:28,440 --> 00:03:31,040
But I really like the technology
as well, right? 

70
00:03:31,040 --> 00:03:34,960
I mean, I got into this because 
I like fiddling of like, like 

71
00:03:35,320 --> 00:03:40,840
solving complicated problems. 
And I like just the technology 

72
00:03:40,840 --> 00:03:45,240
side as well a lot. 
So, and I'm really good at that 

73
00:03:45,240 --> 00:03:47,080
as well, right? 
I see I'm good at modelling 

74
00:03:47,080 --> 00:03:49,840
stuff. 
I so I don't want to waste that 

75
00:03:49,840 --> 00:03:52,680
talent. 
At the same time, I see that I 

76
00:03:52,960 --> 00:03:55,240
increase my impact by also doing
other things. 

77
00:03:55,760 --> 00:04:00,440
So that's why I sort of right 
the, the sort of switching to 

78
00:04:00,440 --> 00:04:01,720
engineering management at some 
point. 

79
00:04:01,720 --> 00:04:06,120
It was sort of natural career 
path right at the time. 

80
00:04:06,640 --> 00:04:09,600
Also the, the situation the 
company was in at that point was

81
00:04:09,600 --> 00:04:15,840
sort of a logical step for me. 
But then I right, the more I did

82
00:04:15,840 --> 00:04:19,800
it and the more I saw, right, at
some point you get to a point 

83
00:04:19,800 --> 00:04:24,240
where there is some kind of 
crisis and like, OK, we need to 

84
00:04:24,240 --> 00:04:26,560
fix this problem. 
We need the best people. 

85
00:04:26,560 --> 00:04:29,200
Yeah. 
So you, I'm a good guy, right? 

86
00:04:29,200 --> 00:04:33,080
So also, so I jump in and I 
helped out and I really realized

87
00:04:33,080 --> 00:04:36,760
at that point we were with three
seniors tackling a super 

88
00:04:36,760 --> 00:04:39,400
complicated problem. 
And we nailed it in three weeks,

89
00:04:39,880 --> 00:04:43,680
right? 
And so I was at that point back 

90
00:04:43,680 --> 00:04:47,960
to, OK, I'm, I'm doing all this 
management stuff, but I'm 

91
00:04:47,960 --> 00:04:49,360
actually much better at the 
other stuff. 

92
00:04:50,040 --> 00:04:54,960
And like, I'm not a bad manager,
but I'm better at the other 

93
00:04:54,960 --> 00:04:58,320
stuff. 
So it makes sense to at least 

94
00:04:58,560 --> 00:05:02,560
spend part of my time on that 
and also like it a lot. 

95
00:05:02,600 --> 00:05:06,840
And I also noticed that when I 
was like, I always call it with 

96
00:05:06,840 --> 00:05:14,200
my feet in the mud, right? 
You pick up signals, right? 

97
00:05:14,200 --> 00:05:18,240
Almost going on within a team, 
what works, what doesn't work? 

98
00:05:18,600 --> 00:05:21,080
And when you're in a pure 
management role or a pure agile 

99
00:05:21,080 --> 00:05:23,840
coaching role or something, I 
really missed that during that 

100
00:05:23,840 --> 00:05:27,920
time, I, I tried to help teams, 
but somehow I didn't pick up the

101
00:05:27,920 --> 00:05:29,080
signals. 
And when I was in the team 

102
00:05:29,080 --> 00:05:33,360
again, I immediately see, OK, 
I've been trying to solve XYZ 

103
00:05:33,360 --> 00:05:36,760
the last half year. 
And in three weeks, I, I solved 

104
00:05:36,760 --> 00:05:38,880
the problem, right? 
And we found a much better 

105
00:05:38,880 --> 00:05:43,640
solution together. 
So yeah, so I think that there's

106
00:05:43,640 --> 00:05:47,440
sort of combination being deeply
involved with the technical 

107
00:05:47,440 --> 00:05:53,000
stuff really helps you be able 
to do a better job as a like 

108
00:05:54,320 --> 00:05:59,320
socio technical engineer, right?
So yeah, I think that's that 

109
00:05:59,320 --> 00:06:01,800
combination is really strong. 
And I don't see a lot of people 

110
00:06:02,720 --> 00:06:05,080
necessarily doing that. 
Like a lot of people seem to be 

111
00:06:05,080 --> 00:06:07,200
very comfortable in there. 
I just. 

112
00:06:07,520 --> 00:06:11,080
I'm just. 
Contributor role, right? 

113
00:06:11,080 --> 00:06:14,480
I'm, I'm just doing my job at, 
at fixing go stuff. 

114
00:06:16,400 --> 00:06:18,400
But I think it's so much more 
rewarding if you can help the 

115
00:06:18,400 --> 00:06:21,960
people around you so much better
and create much more of an 

116
00:06:21,960 --> 00:06:24,240
impact. 
In the projects that you've 

117
00:06:24,240 --> 00:06:27,320
worked on from a hands on 
perspective, what are some of 

118
00:06:27,320 --> 00:06:29,680
the skills that you've brought 
to the table that made in the 

119
00:06:29,680 --> 00:06:32,280
end that project successful or 
succeed? 

120
00:06:33,640 --> 00:06:40,920
So a bunch, obviously. 
So a big chunk is being able to 

121
00:06:40,920 --> 00:06:44,760
quickly do problem solving. 
And it sounds very obvious, 

122
00:06:44,800 --> 00:06:46,200
right? 
But a lot of what we do is 

123
00:06:46,200 --> 00:06:49,560
problem solving and not just on 
the like how do I write the code

124
00:06:49,800 --> 00:06:51,720
part? 
But I think also especially on 

125
00:06:51,720 --> 00:06:56,440
when something goes wrong, being
able to pinpoint where it goes 

126
00:06:56,440 --> 00:06:59,560
wrong. 
And you get a feel for that 

127
00:06:59,560 --> 00:07:01,000
right, when you've seen enough 
problems. 

128
00:07:03,560 --> 00:07:06,840
So I think that's the, the, the 
main skill, like being really 

129
00:07:06,840 --> 00:07:12,200
good at problem solving. 
And that's something I think a 

130
00:07:12,200 --> 00:07:14,920
lot of us I think are good at, 
but it's also something you can 

131
00:07:14,920 --> 00:07:19,480
train and you can get better at.
So I think that's the, the key 

132
00:07:19,480 --> 00:07:23,080
skill that that help there. 
It's a bit generic, right? 

133
00:07:23,080 --> 00:07:25,560
So problem solving is broad, but
I think problem solving on the 

134
00:07:25,560 --> 00:07:29,160
operational side and also having
the interest on that part, not 

135
00:07:29,160 --> 00:07:30,920
just on, I build something and 
it's done. 

136
00:07:31,440 --> 00:07:35,240
But understanding that when once
it runs in production, right, it

137
00:07:35,240 --> 00:07:37,600
becomes more interesting because
then you can learn if it 

138
00:07:37,600 --> 00:07:41,200
actually works because it's 
usually different data or 

139
00:07:41,200 --> 00:07:45,600
different behaviour or whatever.
Yeah. 

140
00:07:45,600 --> 00:07:50,440
And then, then you can really, 
yeah, find better solutions for,

141
00:07:50,640 --> 00:07:53,000
for whatever you find, because 
the first solution is not the 

142
00:07:53,000 --> 00:07:54,680
best one, right? 
The first thing you put in 

143
00:07:54,680 --> 00:07:58,200
production is usually, even 
though you might think it's the 

144
00:07:58,200 --> 00:08:02,360
best solution, it's usually once
it hits reality, you start 

145
00:08:02,360 --> 00:08:05,600
finding out what what you really
need because your users will see

146
00:08:05,600 --> 00:08:09,040
it and they say, oh, actually 
now that I see this, I actually 

147
00:08:09,040 --> 00:08:12,440
want it this way. 
So that's one part of feedback, 

148
00:08:12,440 --> 00:08:14,520
right? 
The other part is, well, maybe 

149
00:08:14,520 --> 00:08:16,760
it doesn't perform the way you 
expected it, or maybe, right, 

150
00:08:16,760 --> 00:08:19,200
the data is different. 
So there's a lot of different 

151
00:08:19,200 --> 00:08:22,680
aspects that become really 
interesting once you get that 

152
00:08:22,680 --> 00:08:25,120
feedback loop going on. 
Problem solving. 

153
00:08:25,120 --> 00:08:28,440
You see it in the broadest sense
of the word, as in we have to 

154
00:08:28,440 --> 00:08:30,560
build something. 
How do we solve this on a 

155
00:08:30,560 --> 00:08:32,280
technical sense? 
Something goes wrong in 

156
00:08:32,280 --> 00:08:34,520
operations or in production. 
How do we solve that? 

157
00:08:34,880 --> 00:08:37,559
Users giving us feedback for 
something that we haven't built 

158
00:08:37,559 --> 00:08:40,440
or built differently. 
How do we tackle that from that 

159
00:08:40,440 --> 00:08:42,720
sense? 
I think, I think mainly the the 

160
00:08:42,720 --> 00:08:45,680
fact that you you have to be 
really curious about how 

161
00:08:45,680 --> 00:08:49,240
something works and not just 
assume that you know how it 

162
00:08:49,240 --> 00:08:52,560
works, but that it may behave 
differently than you intended. 

163
00:08:54,040 --> 00:09:00,160
And then being having a a sort 
of internal curiousness to, you 

164
00:09:00,240 --> 00:09:05,160
know, dive deeper into something
that you may based on 

165
00:09:05,160 --> 00:09:07,320
assumptions, already know how it
works, but you know, maybe you 

166
00:09:07,320 --> 00:09:09,400
don't. 
How do you keep that curiosity 

167
00:09:09,400 --> 00:09:11,320
high? 
Because for me it, it comes kind

168
00:09:11,320 --> 00:09:15,000
of in, in peaks and in what the 
opposite is of Pico. 

169
00:09:16,040 --> 00:09:19,320
Yeah, I, I feel like I I've had 
it a lot, especially early in 

170
00:09:19,320 --> 00:09:21,520
career. 
But then when things get be 

171
00:09:22,040 --> 00:09:24,440
quite comfortable, then I feel 
like I need to step out of that 

172
00:09:24,440 --> 00:09:28,320
comfort to get curious again. 
So it's an active curiosity for 

173
00:09:28,320 --> 00:09:29,440
me. 
Yeah. 

174
00:09:29,440 --> 00:09:31,800
So sometimes it's come natural 
because it's just fun stuff that

175
00:09:31,800 --> 00:09:33,000
you're working on, right? 
Yeah. 

176
00:09:33,360 --> 00:09:36,480
And it's usually with new or, or
exciting or innovative stuff. 

177
00:09:38,440 --> 00:09:40,240
And sometimes you have to 
trigger it, right? 

178
00:09:40,240 --> 00:09:43,320
And then you have to do 
exercises or, yeah, maybe, you 

179
00:09:43,320 --> 00:09:51,120
know, maybe you, you have a, a 
way to surface some data that 

180
00:09:51,160 --> 00:09:55,120
may not be what you expected. 
And then, right, your curiosity 

181
00:09:55,320 --> 00:09:59,320
usually kicks in. 
Like if I look at I'm looking at

182
00:09:59,320 --> 00:10:01,440
the actual data now and I see 
something that I didn't expect 

183
00:10:01,440 --> 00:10:03,920
it and then right it it usually 
triggers something. 

184
00:10:04,200 --> 00:10:07,960
Gotcha. 
And the trick is usually what I 

185
00:10:07,960 --> 00:10:10,880
see teams doing is right. 
You build something and then 

186
00:10:10,880 --> 00:10:13,520
it's done and you build the next
thing right. 

187
00:10:13,520 --> 00:10:15,800
You work on stories and then you
pick up the next story when it's

188
00:10:15,800 --> 00:10:17,080
done, and it's done when it's 
deployed. 

189
00:10:18,800 --> 00:10:21,280
Or even worse, it's done when 
it's at the tester. 

190
00:10:21,280 --> 00:10:29,920
But well, it's a different 
topic, but so you try to add 

191
00:10:29,920 --> 00:10:32,800
another aspect to it. 
It's not done when it's in 

192
00:10:32,800 --> 00:10:35,760
production, is done when you've 
seen it work and when you've 

193
00:10:36,120 --> 00:10:37,720
analyse it. 
And sometimes you need a bit of 

194
00:10:37,720 --> 00:10:40,280
time for that, right? 
So usually you have a story, you

195
00:10:40,280 --> 00:10:43,600
build it, you deploy it, and 
then at least come back to it 

196
00:10:43,600 --> 00:10:46,480
like 2 year, 2 weeks later, look
at the data. 

197
00:10:47,240 --> 00:10:49,840
And that's usually will trigger 
some curiosity. 

198
00:10:50,200 --> 00:10:53,560
But I don't see a lot of teams 
doing this, right? 

199
00:10:53,560 --> 00:10:56,560
We're under a lot of pressure to
ship new stuff, yeah. 

200
00:10:57,320 --> 00:10:58,840
Constantly. 
That's the finish line. 

201
00:10:59,320 --> 00:11:02,920
And the finish line is sort of, 
but I like to not think of it as

202
00:11:02,920 --> 00:11:04,840
a finish line. 
It's just that the finish, like 

203
00:11:04,840 --> 00:11:07,800
the finish when it's production,
that's actually the starting 

204
00:11:07,800 --> 00:11:08,560
line. 
Gotcha. 

205
00:11:08,840 --> 00:11:09,640
Right. 
That's where it gets 

206
00:11:09,640 --> 00:11:11,560
interesting, because that's 
where you Start learning. 

207
00:11:12,320 --> 00:11:15,200
So the projects that you've 
worked on for Ingredients of 

208
00:11:15,200 --> 00:11:17,840
Success, you mentioned people 
that are curious, people that 

209
00:11:17,840 --> 00:11:21,240
are good at problem solving, 
tell me more what else is in 

210
00:11:21,240 --> 00:11:23,720
there? 
You need a mix of people. 

211
00:11:24,200 --> 00:11:30,560
So that's really my my learning.
Also again, very early on in my 

212
00:11:30,560 --> 00:11:36,920
career, I was at what we then 
called full surface web. 

213
00:11:38,080 --> 00:11:42,760
I don't know, we built websites 
right back around 2000s and 

214
00:11:44,800 --> 00:11:49,520
state-of-the-art stuff back then
in Netscape couldn't do much, 

215
00:11:49,520 --> 00:11:51,640
but we made it do stuff you you 
couldn't imagine. 

216
00:11:52,120 --> 00:11:56,280
And the reason for that, that we
made such amazing stuff is that 

217
00:11:56,520 --> 00:12:00,520
it's not because we had good 
programmers or engineers, it's 

218
00:12:00,520 --> 00:12:04,760
because we had a combination of 
really good designers and 

219
00:12:04,960 --> 00:12:06,840
programmers, right? 
And designers, they thought of 

220
00:12:07,480 --> 00:12:10,400
really crazy ideas for what a 
website could look like. 

221
00:12:11,360 --> 00:12:16,840
I remember you built something 
for a Litanice which you know, 

222
00:12:16,840 --> 00:12:20,120
it was totally yellow and the 
whole screen was yellow. 

223
00:12:20,120 --> 00:12:24,440
And they created custom 
chroming, what we call sort of 

224
00:12:24,600 --> 00:12:27,480
custom window boundaries and and
close buttons. 

225
00:12:27,480 --> 00:12:29,600
You couldn't do that back then, 
but we found a way to do it. 

226
00:12:29,600 --> 00:12:35,640
Like we made a window pop up, 
open in full screen and then we 

227
00:12:35,640 --> 00:12:38,120
scaled down so we didn't have 
any Chrome and then we put our 

228
00:12:38,120 --> 00:12:40,160
own close buttons and scrollers 
in there. 

229
00:12:40,480 --> 00:12:45,240
Crazy shit. 
And right, so it was the 

230
00:12:45,240 --> 00:12:47,480
combination of the fact that the
designers came up with these 

231
00:12:47,480 --> 00:12:52,200
crazy ideas and the and then we 
as engineers, we didn't say, no,

232
00:12:52,200 --> 00:12:53,640
that's not how the browser 
works. 

233
00:12:53,760 --> 00:12:56,280
No, we said, interesting, that 
looks cool. 

234
00:12:56,680 --> 00:13:00,160
Is there a way we can do that? 
And then we tried it out and we 

235
00:13:00,160 --> 00:13:02,160
found a way and we made it work,
right. 

236
00:13:02,160 --> 00:13:04,600
So, and the designer could never
get that working on their own, 

237
00:13:04,600 --> 00:13:06,280
right? 
And we could never come up with 

238
00:13:06,280 --> 00:13:08,880
that crazy idea or not because 
you would just build some crappy

239
00:13:08,880 --> 00:13:11,560
UI. 
But the combination was super 

240
00:13:11,560 --> 00:13:14,400
cool. 
So that's really my learning at 

241
00:13:14,400 --> 00:13:18,960
that point is when you go alone,
but you, you're never going to 

242
00:13:19,200 --> 00:13:22,040
create super cool stuff. 
So you need different 

243
00:13:22,040 --> 00:13:26,360
disciplines. 
So yeah, that's, that's really 

244
00:13:26,360 --> 00:13:30,040
what I tried to do also in 
everything that I that I get the

245
00:13:30,040 --> 00:13:32,960
chance to create, right? 
I tried to make sure that we 

246
00:13:32,960 --> 00:13:37,960
have good engineers. 
We have both back end, front end

247
00:13:37,960 --> 00:13:41,360
or whatever we need mobile, you 
know, the combination of skills 

248
00:13:41,360 --> 00:13:45,400
that we need a few people that 
are really specialized in some 

249
00:13:45,400 --> 00:13:48,800
areas, a few people that are 
very broad because then they can

250
00:13:48,800 --> 00:13:52,120
fill in all the gaps and people 
can learn from each other. 

251
00:13:52,520 --> 00:13:54,320
I think that's also an important
aspect. 

252
00:13:54,320 --> 00:13:59,040
Let's get back to that and then,
and then also make sure that 

253
00:13:59,200 --> 00:14:07,040
like either you have like 
designers or UX Rs or those kind

254
00:14:07,040 --> 00:14:09,000
of people in your team, 
preferably sometimes the 

255
00:14:09,000 --> 00:14:11,120
organization is not structured 
like that and they're in 

256
00:14:11,120 --> 00:14:14,120
different teams, but then at 
least have very close 

257
00:14:14,120 --> 00:14:17,000
connections with them, right? 
Build up the personal connection

258
00:14:17,480 --> 00:14:19,920
and then make sure you involve 
them in a lot of stuff. 

259
00:14:22,960 --> 00:14:26,120
And then also like I had teams 
where we had, we were launching 

260
00:14:26,120 --> 00:14:28,560
a new product. 
So and a really important part 

261
00:14:28,560 --> 00:14:33,800
was doing marketing and doing 
like crazy marketing stuff, 

262
00:14:33,800 --> 00:14:35,280
right? 
So we actually got a growth 

263
00:14:35,280 --> 00:14:38,800
hacker on the team. 
And so you need to really figure

264
00:14:38,800 --> 00:14:42,560
out what is it I need for this 
job that we're doing at this 

265
00:14:42,560 --> 00:14:45,080
time and then make sure that the
right people are there. 

266
00:14:45,080 --> 00:14:49,040
And either I've also been in a 
sort of a start up mode for 

267
00:14:49,040 --> 00:14:51,680
quite a while. 
And then you don't have the 

268
00:14:51,680 --> 00:14:53,840
luxury because you don't. 
Yeah, we didn't have the money 

269
00:14:53,840 --> 00:14:58,560
to hire all this kind of people.
I did get a UX person and some 

270
00:14:59,160 --> 00:15:01,360
like broadly skilled people, 
engineers. 

271
00:15:01,720 --> 00:15:05,400
But then essentially we learned 
all this stuff ourself, right? 

272
00:15:05,400 --> 00:15:08,440
We did our own website build. 
We did our own marketing stuff. 

273
00:15:09,440 --> 00:15:10,880
We did have a sales guy on the 
team. 

274
00:15:11,240 --> 00:15:14,200
So then between the like, we 
were seven people between all of

275
00:15:14,200 --> 00:15:17,760
us. 
We had many different tests when

276
00:15:17,760 --> 00:15:22,760
we got acquired that later on, I
was writing down the due to 

277
00:15:22,760 --> 00:15:25,160
elegance documentation, like OK,
how's the team? 

278
00:15:25,160 --> 00:15:26,360
What are the roles of the 
people? 

279
00:15:26,360 --> 00:15:29,440
I don't know. 
It's like at least like 5 to 8 

280
00:15:29,440 --> 00:15:31,040
roles behind every person, 
right? 

281
00:15:31,040 --> 00:15:37,280
So that was crazy. 
And so, yeah, so you can also do

282
00:15:37,280 --> 00:15:40,240
it all yourself. 
And no, don't be scared to do 

283
00:15:40,240 --> 00:15:43,360
something. 
You're not the specialist in if 

284
00:15:43,360 --> 00:15:48,000
and he's done and he's done, if 
you send it to some other team 

285
00:15:48,000 --> 00:15:50,880
or other departments, I mean, 
they're bound to have other 

286
00:15:50,880 --> 00:15:52,640
stuff to do. 
They're not going to give it the

287
00:15:52,640 --> 00:15:53,800
priority you need. 
Yeah. 

288
00:15:54,080 --> 00:15:56,840
So maybe you just do it 
yourself, maybe involve them, 

289
00:15:56,840 --> 00:15:59,720
but at least make sure that you 
can continue and do the stuff 

290
00:15:59,720 --> 00:16:02,400
that you need to do. 
Yeah, I feel like I've, I've 

291
00:16:02,400 --> 00:16:05,960
really enjoyed working in, I 
think, quite large teams where 

292
00:16:05,960 --> 00:16:09,520
there was a diverse set of 
skills but also cultural 

293
00:16:09,520 --> 00:16:11,040
diversity. 
That was all the fun. 

294
00:16:11,040 --> 00:16:14,960
I learned a lot from that. 
I feel though, the team that I 

295
00:16:14,960 --> 00:16:17,800
was most productive in was 
really just a team of me and two

296
00:16:17,800 --> 00:16:21,160
other colleagues where this was,
I think quite early on in my 

297
00:16:21,160 --> 00:16:22,720
career still. 
But I learned a lot. 

298
00:16:23,120 --> 00:16:25,200
And through actually forming 
those relationships, which were 

299
00:16:25,200 --> 00:16:27,320
quite close. 
We could trust each other, we 

300
00:16:27,320 --> 00:16:29,200
knew how to communicate with 
each other, and we could really 

301
00:16:29,200 --> 00:16:32,720
just focus on making impact and 
getting getting shit done, which

302
00:16:32,720 --> 00:16:34,920
was really cool. 
The small teams are the most 

303
00:16:34,920 --> 00:16:35,720
fun, right? 
Yeah. 

304
00:16:35,800 --> 00:16:37,960
At least that because you have 
such a close connection. 

305
00:16:37,960 --> 00:16:38,640
Yeah. 
Yeah. 

306
00:16:38,640 --> 00:16:42,280
So 3-4 people, that's for me. 
Also the like, super nice to be 

307
00:16:42,280 --> 00:16:45,000
in team like that. 
I'm not in that situation a lot 

308
00:16:45,000 --> 00:16:50,680
anymore, but sometimes, yeah. 
But depends on what you need to 

309
00:16:50,680 --> 00:16:52,880
do, right? 
If, if, if you have the skills 

310
00:16:52,880 --> 00:16:54,600
within that team to do what you 
need to do. 

311
00:16:55,360 --> 00:16:56,960
I mean, that's brilliant. 
That's super fun. 

312
00:16:57,840 --> 00:17:00,600
But yeah, in a lot of cases you 
need a bit more people to get 

313
00:17:00,600 --> 00:17:03,080
everything done. 
Also, sometimes the amount of 

314
00:17:03,080 --> 00:17:07,880
work just is more and when 
you're smaller, you go faster. 

315
00:17:07,880 --> 00:17:10,800
But if you have more people. 
And you organise it, well, you 

316
00:17:10,800 --> 00:17:14,920
can still go even faster and 
yeah, so or do more stuff or 

317
00:17:14,920 --> 00:17:17,200
whatever. 
I felt a little bit selfish 

318
00:17:17,200 --> 00:17:19,680
though, because I was the person
that was the most early in my 

319
00:17:19,680 --> 00:17:21,800
career. 
So I also felt like when we're 

320
00:17:21,800 --> 00:17:24,040
looking at a learning curve, I 
felt like I was learning the 

321
00:17:24,040 --> 00:17:25,280
most. 
And I don't know how much they 

322
00:17:25,280 --> 00:17:26,880
were learning from me as an 
individual. 

323
00:17:27,319 --> 00:17:30,120
And even though they said XY and
ZI don't know if I believed them

324
00:17:30,120 --> 00:17:33,000
necessarily. 
But when you are in teams, do 

325
00:17:33,000 --> 00:17:35,480
you feel like you still learn 
and grow from the people around 

326
00:17:35,480 --> 00:17:37,520
you? 
How do you view that still? 

327
00:17:38,000 --> 00:17:38,480
Yeah. 
Obviously. 

328
00:17:38,480 --> 00:17:39,920
So I think that's a 
misconception, right? 

329
00:17:39,920 --> 00:17:42,480
So if you're the junior in the 
team, let's say. 

330
00:17:44,800 --> 00:17:47,880
I often get get people asking 
these like, yeah, but I then I'm

331
00:17:47,880 --> 00:17:50,200
pairing with these experienced 
guys and I'm learning how, but 

332
00:17:50,200 --> 00:17:53,000
I'm not getting much back. 
I don't think it works that way 

333
00:17:53,000 --> 00:17:58,360
because in my experience, the 
the more experienced people, 

334
00:17:58,360 --> 00:18:01,200
right, they also have a lot of 
baggage and they have a lot of 

335
00:18:01,560 --> 00:18:05,560
ways of thinking in, in their 
own mindset, physiological, 

336
00:18:05,560 --> 00:18:07,000
because it's shaped by their 
experience. 

337
00:18:08,160 --> 00:18:09,760
That's how our minds work, 
right? 

338
00:18:11,720 --> 00:18:16,520
And the. 
Let's say younger, fresher 

339
00:18:16,520 --> 00:18:18,080
people. 
I always feel I have a lot of 

340
00:18:18,080 --> 00:18:22,840
enthusiasm for stuff right And 
obviously depends on 

341
00:18:22,840 --> 00:18:25,320
personality, but. 
That's what you what I typically

342
00:18:25,320 --> 00:18:30,560
see and that energy is usually 
contagious. 

343
00:18:31,800 --> 00:18:36,680
So that really adds to a team 
and can really revive. 

344
00:18:36,680 --> 00:18:41,480
I say A-Team that's maybe. 
Doesn't have too much energy 

345
00:18:41,480 --> 00:18:43,560
anymore, right? 
If you put a few young people in

346
00:18:43,560 --> 00:18:44,880
there, that's usually a really 
house. 

347
00:18:46,240 --> 00:18:49,440
And then also like the other 
day, I was working with another 

348
00:18:49,440 --> 00:18:52,080
guy in the in the team, like the
youngest guy. 

349
00:18:52,800 --> 00:18:58,840
And I always try to take out 
these people and I learned a new

350
00:18:58,840 --> 00:19:00,800
shortcut. 
Right. 

351
00:19:00,800 --> 00:19:02,840
I saw him do something. 
I thought, wow, what did you do 

352
00:19:02,840 --> 00:19:04,640
now? 
I used this shortcut. 

353
00:19:05,000 --> 00:19:08,080
Oh go. 
Like I'm doing that like 20 

354
00:19:08,080 --> 00:19:11,200
times a day. 
Like, why didn't I look that up?

355
00:19:11,840 --> 00:19:13,400
It makes total sense to have 
that one. 

356
00:19:13,400 --> 00:19:16,600
So I immediately wrote it on a 
sticky, put it on my laptop 

357
00:19:16,600 --> 00:19:19,800
actually, and then yeah. 
So learning a new shortcut. 

358
00:19:20,280 --> 00:19:25,640
So it's small things like that, 
but it's also, I think the fact 

359
00:19:25,640 --> 00:19:30,360
that you don't have all the 
baggage in history then means 

360
00:19:30,360 --> 00:19:33,240
that you have a very fresh view 
also on the problems that you 

361
00:19:33,240 --> 00:19:35,360
face. 
So if you are in a teeny, you've

362
00:19:35,360 --> 00:19:39,720
worked on a piece of software 
for like 10 years and some 

363
00:19:39,720 --> 00:19:42,680
problem pops up, there's going 
to be an obvious solution that 

364
00:19:42,680 --> 00:19:46,120
comes to mind because you know 
this software very well and 

365
00:19:46,600 --> 00:19:49,240
there's going to be obvious 
solutions to that based on also 

366
00:19:49,240 --> 00:19:52,200
the stuff you've done before. 
But maybe the stuff you've done 

367
00:19:52,200 --> 00:19:54,920
before is not the best for the 
current situation because the 

368
00:19:54,920 --> 00:19:57,320
world around us changes. 
So the software needs to adapt 

369
00:19:57,320 --> 00:20:00,520
as well, right? 
In these people with a fresh 

370
00:20:00,520 --> 00:20:02,760
mind, they don't have that 
baggage, right? 

371
00:20:02,760 --> 00:20:04,880
They don't. 
Know how it's supposed to work 

372
00:20:04,880 --> 00:20:06,960
or that it's supposed to work in
a certain way or that it was 

373
00:20:07,520 --> 00:20:12,880
thought of like 2 years back 
like this is how it should work 

374
00:20:13,240 --> 00:20:17,120
maybe this is how it should work
is not true anymore in today's 

375
00:20:17,120 --> 00:20:21,880
world right? 
So that's critical view, or at 

376
00:20:21,880 --> 00:20:26,720
least someone shouting stuff 
that's not the mainstream or the

377
00:20:26,720 --> 00:20:30,320
obvious solution can trigger 
people think, wait a moment. 

378
00:20:30,320 --> 00:20:34,680
Actually in the current current 
scenario that we are in, maybe 

379
00:20:34,680 --> 00:20:37,240
what you're saying is much 
better than the old stuff we 

380
00:20:37,240 --> 00:20:40,680
thought of years back. 
And I see that in a lot of 

381
00:20:40,680 --> 00:20:43,440
teams, right? 
There's legacy in pretty much 

382
00:20:43,440 --> 00:20:45,840
every place you're running into 
today. 

383
00:20:48,080 --> 00:20:51,000
So there's a lot of this 
existing stuff in there and 

384
00:20:51,000 --> 00:20:56,560
existing I DS and having just 
fresh I DS thrown in is super 

385
00:20:56,560 --> 00:21:00,080
valuable. 
It I also feel like it needs a 

386
00:21:00,080 --> 00:21:05,000
certain type of senior person or
personality because if you build

387
00:21:05,000 --> 00:21:07,120
up seniority, then you build up 
experience. 

388
00:21:07,120 --> 00:21:09,600
So then the decisions you make, 
you feel like they are grounded 

389
00:21:09,600 --> 00:21:12,880
in the experience that you have.
So then for someone else to come

390
00:21:12,880 --> 00:21:14,640
in and be like, why don't we do 
XY and Z? 

391
00:21:14,640 --> 00:21:17,240
If you don't believe in that, 
you still have to be the person 

392
00:21:17,240 --> 00:21:20,640
that can say, OK, let's validate
this or let's not shut it down 

393
00:21:21,240 --> 00:21:23,400
and let's still try or at least 
have a dialogue. 

394
00:21:23,680 --> 00:21:25,160
Yeah. 
So this is super important. 

395
00:21:25,160 --> 00:21:27,720
So this is something I, I 
realise I'm not sure when 

396
00:21:27,720 --> 00:21:31,200
exactly, but when you get more 
experience, at some point I had 

397
00:21:31,200 --> 00:21:35,640
this realization that I have my 
own experience, right? 

398
00:21:35,640 --> 00:21:38,600
And I have my own biases based 
on whatever I experienced. 

399
00:21:40,400 --> 00:21:42,920
So I. 
Really try to be very conscious 

400
00:21:42,920 --> 00:21:48,600
on where the IDs that I have 
come from rather than the fact 

401
00:21:48,600 --> 00:21:51,840
that especially when they come 
into a new team and they have a 

402
00:21:51,840 --> 00:21:54,920
certain set up and I have I DS 
like how and our release 

403
00:21:54,920 --> 00:21:58,480
management should should look 
like or how their branching 

404
00:21:58,480 --> 00:22:01,000
structure should be or whatever.
Yeah, but that may not be 

405
00:22:01,000 --> 00:22:03,640
suitable for that project. 
So I really try to force myself 

406
00:22:03,640 --> 00:22:07,000
to have an open mind, listen a 
lot, hear what people are 

407
00:22:07,000 --> 00:22:10,040
saying. 
And then maybe I still have an 

408
00:22:10,040 --> 00:22:13,600
ID that that doesn't get shouted
out and I'll throw it in. 

409
00:22:14,880 --> 00:22:19,560
But it I try to evaluate just 
like my ID is just as valuable 

410
00:22:19,560 --> 00:22:25,600
as the IDs of the rest around me
and me as a key, key skill, to 

411
00:22:25,600 --> 00:22:29,920
be honest. 
And some people are very 

412
00:22:29,920 --> 00:22:31,880
stubborn, right? 
And then they don't have that 

413
00:22:31,880 --> 00:22:38,280
skill more or less of it. 
But trying to be very conscious 

414
00:22:38,280 --> 00:22:43,000
about it. 
Trying to be very, very open and

415
00:22:43,000 --> 00:22:46,080
open and very conscious on, on 
when. 

416
00:22:46,080 --> 00:22:52,400
You're. 
Putting an IDs out and whether 

417
00:22:52,400 --> 00:22:54,920
they are fitting or not and also
the IDs that you're hearing 

418
00:22:54,920 --> 00:22:58,640
whether they are fitting or not.
And I'm assuming your own ID is 

419
00:22:58,640 --> 00:23:03,160
the best and it's so easy but 
it's so wrong, right? 

420
00:23:03,720 --> 00:23:07,120
Also assuming that your first 
own ID is not the best, right? 

421
00:23:07,120 --> 00:23:11,000
Probably the. 3rd or 4th is 
going to be better, so just 

422
00:23:11,720 --> 00:23:14,280
forcing that continuous 
iteration on IDs. 

423
00:23:16,200 --> 00:23:20,720
Sort of doing constant like 
diverge, converge phases with 

424
00:23:20,720 --> 00:23:22,480
the team, right is really 
important. 

425
00:23:23,080 --> 00:23:26,240
And then as an experienced 
person, you can put your ideas 

426
00:23:26,240 --> 00:23:28,760
in there. 
It's fine as long as they're at 

427
00:23:28,760 --> 00:23:31,600
the same level as the rest and 
as long as everybody gets hurt, 

428
00:23:34,480 --> 00:23:36,440
yeah. 
And then you you find much 

429
00:23:36,440 --> 00:23:39,040
better solutions. 
What, what do you tell people 

430
00:23:39,040 --> 00:23:41,240
that do not subscribe to this 
idea? 

431
00:23:41,240 --> 00:23:43,560
Because I do. 
But if I play devil's advocate, 

432
00:23:43,640 --> 00:23:46,760
I can see people say, well, I'm 
senior and I've built up 

433
00:23:46,760 --> 00:23:49,720
excellent years of experience. 
These people only have a couple 

434
00:23:49,720 --> 00:23:52,640
and therefore this decision 
should hold more weight, right? 

435
00:23:52,640 --> 00:23:54,880
It's not a democracy. 
It cannot be kumbaya. 

436
00:23:54,880 --> 00:23:56,800
In the end, we are creating 
software. 

437
00:23:56,800 --> 00:23:58,440
It needs to be effective and 
valuable. 

438
00:23:59,040 --> 00:24:01,560
So I can see the other camp as 
well. 

439
00:24:01,560 --> 00:24:03,800
How do you convince them or how 
do you engage in that 

440
00:24:03,800 --> 00:24:06,200
conversation? 
So there's two things. 

441
00:24:06,200 --> 00:24:12,320
So one is I would use tools like
collaborative modelling or 

442
00:24:13,160 --> 00:24:17,800
anything where you start the 
session with giving everybody 

443
00:24:17,800 --> 00:24:21,560
the chance to silently write 
down the IDs they have, right? 

444
00:24:21,560 --> 00:24:25,840
You, you post the, the problem 
and then usually stickies or 

445
00:24:25,840 --> 00:24:27,840
something, right? 
You, you write down a bunch of 

446
00:24:27,840 --> 00:24:30,680
stuff that everybody in silence 
writes it down. 

447
00:24:30,840 --> 00:24:34,920
Everybody gets a chance to put 
their voice down, right? 

448
00:24:34,920 --> 00:24:37,760
There's always going to be 
people with a stronger voice in 

449
00:24:37,760 --> 00:24:41,000
a group and with a less strong 
voice in a group, but their 

450
00:24:41,000 --> 00:24:44,600
opinion is not necessarily 
stronger or less strong or their

451
00:24:44,600 --> 00:24:45,800
the value of their opinion, 
right. 

452
00:24:46,240 --> 00:24:48,240
So I want to get all this stuff 
out. 

453
00:24:48,600 --> 00:24:50,800
And then usually what happens is
that the person, the stubborn 

454
00:24:50,800 --> 00:24:53,880
person, they automatically get 
to see what the other people 

455
00:24:53,880 --> 00:24:57,480
thought. 
And sometimes it works, right. 

456
00:24:57,480 --> 00:24:59,400
Sometimes they see, oh wow, 
that's actually quite a good 

457
00:24:59,400 --> 00:25:01,240
solution and I didn't come up 
with it. 

458
00:25:01,560 --> 00:25:06,000
So it starts to to force them 
essentially into seeing that 

459
00:25:06,000 --> 00:25:10,440
there's other solutions. 
So just it's like visualising 

460
00:25:10,440 --> 00:25:12,600
servicing the solutions or 
multiple solutions helps. 

461
00:25:13,880 --> 00:25:19,040
The second thing, now I thought 
of something, but now I have to 

462
00:25:19,040 --> 00:25:25,240
come find it back, right? 
It was about convincing people. 

463
00:25:25,240 --> 00:25:26,920
That don't subscribe to their 
ideas. 

464
00:25:27,360 --> 00:25:31,320
It's people have certain 
personalities. 

465
00:25:31,600 --> 00:25:35,040
So what I tried to do is just as
I realised for myself that I 

466
00:25:35,040 --> 00:25:36,600
have experienced coming from 
somewhere. 

467
00:25:38,920 --> 00:25:42,800
I understand that their 
stubbornness, their mindset, 

468
00:25:42,800 --> 00:25:45,760
their way of thinking also comes
from somewhere, right? 

469
00:25:45,760 --> 00:25:47,680
It's not that they decided to be
like that. 

470
00:25:48,320 --> 00:25:51,840
It's the experience that they 
had that shaped them in that 

471
00:25:51,840 --> 00:25:55,520
way. 
So that realization, 

472
00:25:55,680 --> 00:25:57,920
realization, it's almost like 
empathy, right? 

473
00:25:58,480 --> 00:26:01,360
For the situation they're in. 
Like it's not their fault that 

474
00:26:01,360 --> 00:26:05,000
they're thinking like that. 
It's just the experience that 

475
00:26:05,000 --> 00:26:06,640
they had that made them think 
like that. 

476
00:26:07,240 --> 00:26:10,880
So then I have to come up with 
experience that I can give them 

477
00:26:11,440 --> 00:26:14,120
that will change their way of 
thinking. 

478
00:26:14,960 --> 00:26:18,880
And so some example I just gave 
is one of those experiences, 

479
00:26:18,880 --> 00:26:21,600
right? 
You could also be just talking 

480
00:26:21,600 --> 00:26:24,720
to them about this, right? 
Making them understand that 

481
00:26:24,720 --> 00:26:27,640
they're in the situation and 
that I accept and understand 

482
00:26:27,640 --> 00:26:30,200
that they're in the situation of
where it comes from, that it's 

483
00:26:30,200 --> 00:26:35,760
OK, but also that it's hurting 
the group in a certain way. 

484
00:26:35,760 --> 00:26:39,160
And if they understand that at 
some point, then well, usually 

485
00:26:39,160 --> 00:26:42,440
you can get as you don't. 
Yeah, be careful not to get 

486
00:26:42,440 --> 00:26:46,600
people right to to attack them, 
because then natural reaction is

487
00:26:46,600 --> 00:26:50,120
to push back, push back and you 
don't get anywhere. 

488
00:26:50,360 --> 00:26:53,680
So you need to just have an an 
honest conversation. 

489
00:26:53,920 --> 00:26:56,560
Gotcha. 
Yeah, we discussed a lot about 

490
00:26:56,560 --> 00:27:00,120
the what the team brings to make
a project quite successful. 

491
00:27:00,120 --> 00:27:02,520
But I'm curious from your 
perspective, looking at system 

492
00:27:02,520 --> 00:27:04,680
design, design or systems 
thinking, what are the 

493
00:27:04,680 --> 00:27:08,000
ingredients that the system 
should have to make a project in

494
00:27:08,000 --> 00:27:11,080
the end successful? 
It's interesting, right, because

495
00:27:11,080 --> 00:27:14,160
there's a lot of stuff that from
architecture point of view, 

496
00:27:14,160 --> 00:27:16,200
right? 
You, you know that a good chase 

497
00:27:16,200 --> 00:27:24,880
system should have. 
And on the other hand, the 

498
00:27:24,880 --> 00:27:29,360
systems that are still there are
not all looking like that, 

499
00:27:30,080 --> 00:27:31,800
right? 
All the big legacy systems, 

500
00:27:32,520 --> 00:27:33,800
right? 
They're not necessarily 

501
00:27:33,800 --> 00:27:37,400
necessarily the nicest in the 
nicest shape, but they're there 

502
00:27:37,400 --> 00:27:39,640
for a reason, right? 
They run, they run, they 

503
00:27:39,640 --> 00:27:42,840
survived. 
So I'm not sure if you ever 

504
00:27:42,840 --> 00:27:50,240
heard of the stuff from Barry 
O'Reilly, it's called we'll get 

505
00:27:50,240 --> 00:27:53,800
to it anyway. 
What what he says. 

506
00:27:53,800 --> 00:28:02,600
He is sort of a very, I think 
different and innovative view, I

507
00:28:02,600 --> 00:28:04,800
think on how architecture should
work. 

508
00:28:05,480 --> 00:28:10,400
They're very different from 
what's currently mainstream and 

509
00:28:11,920 --> 00:28:15,960
essentially says it's really 
hard to predict our system will 

510
00:28:15,960 --> 00:28:18,360
evolve. 
We can't predict the future and 

511
00:28:18,360 --> 00:28:22,920
we don't can't predict what's 
going to happen with a system a 

512
00:28:23,520 --> 00:28:27,800
year from now or next week. 
Even if you wanted to survive, 

513
00:28:28,360 --> 00:28:31,400
We need to create elements that 
will allow it to survive. 

514
00:28:31,880 --> 00:28:35,880
And his theory, so he's been 
studying on the stuff and, and 

515
00:28:36,080 --> 00:28:40,760
doing excellent talks on it. 
So his theory is on you sort of 

516
00:28:40,760 --> 00:28:44,280
try to create a random 
simulation of just throwing 

517
00:28:45,400 --> 00:28:47,240
stuff that could break the 
system at it. 

518
00:28:48,080 --> 00:28:51,280
See what the effect is, and then
come up with some component you 

519
00:28:51,280 --> 00:28:56,440
can add to the system to make it
be able to survive that that 

520
00:28:56,440 --> 00:28:58,920
issue, right? 
Or that that challenge that you 

521
00:29:00,080 --> 00:29:02,520
send it. 
So he calls it stressors. 

522
00:29:03,200 --> 00:29:09,240
And then the theory is that the 
theory is that there's only so 

523
00:29:09,240 --> 00:29:13,560
many positions that a system can
end up in that that are going to

524
00:29:13,560 --> 00:29:16,200
be stable. 
There's a lot of like infinite 

525
00:29:16,200 --> 00:29:19,600
number of possible positions 
that it could end up with, but a

526
00:29:19,600 --> 00:29:22,160
lot of them are going to be 
unstable and it will fail. 

527
00:29:22,160 --> 00:29:27,680
It won't survive, but there's 
going to be some that will 

528
00:29:27,680 --> 00:29:30,520
survive. 
And those are very sort of 

529
00:29:31,960 --> 00:29:34,080
almost independent of the stuff 
you throw at it. 

530
00:29:34,640 --> 00:29:38,840
If you throw enough weird random
stuff at it, you'll arrive at 

531
00:29:39,040 --> 00:29:41,560
this unique point where it will 
survive. 

532
00:29:41,720 --> 00:29:44,640
And if you throw something 
really weird else at it, there's

533
00:29:44,880 --> 00:29:48,280
going to be so many components 
that make it survivable. 

534
00:29:48,600 --> 00:29:50,800
It will survive that weird thing
as well. 

535
00:29:51,840 --> 00:29:54,600
So it has the fire breathing 
lizards example. 

536
00:29:54,600 --> 00:29:57,680
Like if you what if you have 
fire breathing lasers in your 

537
00:29:57,680 --> 00:29:59,360
data centre, will your system 
survive? 

538
00:29:59,760 --> 00:30:06,560
So what do you need do you need 
to do to cope with that and all 

539
00:30:06,560 --> 00:30:11,680
sort of really random stuff. 
And if you look into it, it like

540
00:30:11,680 --> 00:30:13,800
the stuff that comes out of 
these kind of sessions. 

541
00:30:13,800 --> 00:30:17,680
If you look at it this way, 
it's, it's really amazing how 

542
00:30:17,680 --> 00:30:20,520
much weird stuff you can throw 
at it where it will survive. 

543
00:30:20,840 --> 00:30:27,240
So what does the system need to 
have to survive or a right to to

544
00:30:27,240 --> 00:30:31,320
be successful? 
Yeah, look at those legacy 

545
00:30:31,320 --> 00:30:32,960
systems. 
Appreciate them a little bit 

546
00:30:32,960 --> 00:30:36,040
more, even though I don't like 
necessarily working on them. 

547
00:30:36,040 --> 00:30:41,720
Like Greenfield's much nicer 
until you make it your own 

548
00:30:41,720 --> 00:30:48,280
legacy, right. 
I've been there, right? 

549
00:30:48,280 --> 00:30:50,800
There must be something in those
systems that's helping them 

550
00:30:50,800 --> 00:30:53,160
survive, even though they're not
perfect. 

551
00:30:53,680 --> 00:30:59,280
And then my approach is usually 
to find that and then also to 

552
00:31:00,040 --> 00:31:03,200
try to think of more things that
we could throw at it and find 

553
00:31:03,200 --> 00:31:06,400
ways that it could break and 
then make sure that it's, it's 

554
00:31:06,400 --> 00:31:09,560
more survivable after we after 
I'm I'm gone, right? 

555
00:31:10,760 --> 00:31:13,760
And that may be stuff like 
technical components, right, 

556
00:31:13,760 --> 00:31:16,480
that you need to add. 
But I think in a lot of cases 

557
00:31:16,480 --> 00:31:19,480
it's knowledge that you need to 
add some knowledge about how it 

558
00:31:19,480 --> 00:31:23,680
works and not just the knowledge
that you write down. 

559
00:31:23,680 --> 00:31:27,680
So the test that you write or 
the documentation rewrite. 

560
00:31:27,680 --> 00:31:31,880
And I don't do too much of that,
but especially I think the 

561
00:31:31,880 --> 00:31:38,400
knowledge in the, the minds of 
the teams usually like when you 

562
00:31:38,400 --> 00:31:42,480
look at a system and, and it 
becomes legacy. 

563
00:31:42,480 --> 00:31:44,320
So what's the reason it will 
become legacy? 

564
00:31:45,480 --> 00:31:46,680
You and I. 
Yeah. 

565
00:31:47,160 --> 00:31:49,840
So what do you would you think 
that a system would make a 

566
00:31:49,840 --> 00:31:52,320
system legacy? 
I don't know what makes a system

567
00:31:52,320 --> 00:31:56,960
legacy, but one of my theories 
is the reason why maybe how a 

568
00:31:56,960 --> 00:31:59,960
system is designed and what we 
now call legacy, the systems we 

569
00:31:59,960 --> 00:32:02,960
don't really want to work in, 
they are running and they have 

570
00:32:02,960 --> 00:32:05,840
solved the problem and they 
might not be at a stage where 

571
00:32:05,840 --> 00:32:10,240
they are evolvable as quickly as
Greenfield projects, but the 

572
00:32:10,240 --> 00:32:13,320
fact that they have, they prove 
value. 

573
00:32:13,320 --> 00:32:15,680
Otherwise we wouldn't run and 
maintain them in production. 

574
00:32:16,560 --> 00:32:20,360
That's kind of their right of 
passage, that's their right of 

575
00:32:20,360 --> 00:32:22,000
existence. 
That's why we still have them. 

576
00:32:22,000 --> 00:32:24,560
If they were not delivering 
value, then we don't need the 

577
00:32:24,560 --> 00:32:27,280
systems. 
We would shut it down in the 

578
00:32:27,280 --> 00:32:29,480
end. 
That for me is quite interesting

579
00:32:29,480 --> 00:32:33,440
because if that assumption, if 
that theory holds true, then the

580
00:32:33,440 --> 00:32:37,000
way we get to that, regardless 
of what you choose kind of early

581
00:32:37,800 --> 00:32:40,520
in early stage projects, you 
need to get to a point where you

582
00:32:40,520 --> 00:32:43,120
deliver value, where you have 
proven value. 

583
00:32:43,720 --> 00:32:47,200
And then it's a stage of, OK, 
how evolvable is the system and 

584
00:32:47,200 --> 00:32:49,960
how much do we want to evolve it
to continuously add revenue. 

585
00:32:50,320 --> 00:32:53,080
That for me is kind of the 
balance in how you design 

586
00:32:53,080 --> 00:32:58,320
systems. 
So you you put the hammer on the

587
00:32:58,320 --> 00:33:01,440
nail, right? 
So evolvability is a key aspect,

588
00:33:01,440 --> 00:33:04,080
right. 
So when a system becomes 

589
00:33:04,080 --> 00:33:08,280
legacies because we we don't 
like, it becomes hard to change 

590
00:33:08,280 --> 00:33:10,600
it, right? 
We don't like working in it. 

591
00:33:11,280 --> 00:33:13,320
And it's sometimes because we 
don't understand it because the 

592
00:33:13,320 --> 00:33:19,680
code is someone else's code is 
because fixing bugs is super 

593
00:33:19,680 --> 00:33:26,040
hard because you don't don't 
understand how it works, right? 

594
00:33:26,040 --> 00:33:29,240
Software, you already heard in 
the, in the word, it's software,

595
00:33:29,240 --> 00:33:32,480
It's not hardware, it's soft, 
it's flexible or supposed to be 

596
00:33:32,480 --> 00:33:37,880
flexible, right? 
And that's why a lot of the 

597
00:33:37,880 --> 00:33:41,760
stuff on DDD and code quality, 
it's all about improving the 

598
00:33:41,760 --> 00:33:44,440
code to be more readable, to be 
more understandable, to be 

599
00:33:44,440 --> 00:33:48,360
commutative, to allow the system
to evolve. 

600
00:33:48,560 --> 00:33:52,600
I think in the end, like the, 
the, the biggest ground 

601
00:33:52,600 --> 00:33:55,200
principle behind all these 
things is making systems that 

602
00:33:55,200 --> 00:33:58,840
are evolvable and easy to 
change. 

603
00:33:59,000 --> 00:34:03,920
So how often do you have a 
software system where you don't 

604
00:34:03,920 --> 00:34:08,000
need to change anything, right? 
I mean, adding new features 

605
00:34:08,000 --> 00:34:10,199
maybe at some point becomes 
less, but you still need to be 

606
00:34:10,199 --> 00:34:13,400
able to fix bugs because there's
going to be bugs, there's going 

607
00:34:13,400 --> 00:34:17,960
to be stuff that goes wrong, but
also the world around the 

608
00:34:17,960 --> 00:34:21,040
system, the organization around 
the system will evolve and 

609
00:34:21,040 --> 00:34:23,760
change. 
So if the system stays the same 

610
00:34:23,760 --> 00:34:27,760
way as it is and is unable to 
evolve with the organization 

611
00:34:27,760 --> 00:34:31,080
around it, it become less and 
less valuable, right. 

612
00:34:31,080 --> 00:34:34,000
So you say exactly that the 
value, how the system is 

613
00:34:34,000 --> 00:34:37,600
valuable, what that value, how 
valuable it is will diminish 

614
00:34:37,600 --> 00:34:42,840
over time if it stands still. 
So evolvability is the key. 

615
00:34:43,159 --> 00:34:49,560
And I think what we what we look
at things like quality, 

616
00:34:49,560 --> 00:34:52,000
modularity, all those kind of 
things. 

617
00:34:54,320 --> 00:34:57,200
And in my opinion, something 
that's really overlooked a lot 

618
00:34:57,200 --> 00:34:59,440
is this knowledge aspect, right?
And then especially the 

619
00:34:59,440 --> 00:35:03,840
knowledge in people's heads. 
So how much of A theory do you 

620
00:35:03,840 --> 00:35:09,520
have ready on how things work? 
If you, if you worked on a 

621
00:35:09,520 --> 00:35:13,600
system very long, right, you 
know every corner of it, maybe 

622
00:35:13,600 --> 00:35:16,400
not maybe you know a few 
corners, right, But you know, 

623
00:35:16,400 --> 00:35:19,800
generally how it's structured. 
You know, it's, it's rough 

624
00:35:19,800 --> 00:35:22,880
architecture, you know, if 
something breaks roughly where 

625
00:35:22,880 --> 00:35:30,040
it's going to be broken. 
And there's really nice story 

626
00:35:30,040 --> 00:35:32,280
on, on this is not something 
new, right? 

627
00:35:32,280 --> 00:35:34,040
We've known this as an industry 
for very long. 

628
00:35:34,040 --> 00:35:38,200
And there's a guy called piece 
an hour who in the, I think 

629
00:35:38,200 --> 00:35:44,440
1985, he wrote a piece on 
programming theory building. 

630
00:35:45,120 --> 00:35:49,000
And he expressed exactly this, 
like the fact that if you look 

631
00:35:49,000 --> 00:35:52,720
at how we look at software and 
the, the view back then was more

632
00:35:52,720 --> 00:35:57,200
like the production view. 
Like we have specifications 

633
00:35:57,200 --> 00:36:00,160
going in and then we have 
programmers, which is like the 

634
00:36:00,160 --> 00:36:04,760
cogs in the machine and then 
outcomes code and then we can 

635
00:36:04,760 --> 00:36:06,520
run it. 
And then that's it, right? 

636
00:36:06,960 --> 00:36:08,920
That's how the software 
production machine works. 

637
00:36:09,640 --> 00:36:11,800
And I think we still have a lot 
of feature factories today. 

638
00:36:12,160 --> 00:36:15,640
So sadly that's still how our 
industry works. 

639
00:36:18,720 --> 00:36:22,320
What now are noticed is that if 
you looked at actual projects 

640
00:36:22,760 --> 00:36:26,840
that the real world didn't seem 
to work or match with that 

641
00:36:26,840 --> 00:36:32,240
production view. 
Like if a like you saw a system 

642
00:36:32,240 --> 00:36:36,120
where there were was a team of 
like engineers working on the 

643
00:36:36,120 --> 00:36:41,080
system day in, day out. 
And then they, it was installed 

644
00:36:41,080 --> 00:36:44,440
at some, some customers and then
there was support crews who were

645
00:36:45,040 --> 00:36:48,800
maintaining it on that location.
The support teams, if there was 

646
00:36:48,800 --> 00:36:52,040
something wrong, they never 
figured out how to fix stuff. 

647
00:36:52,040 --> 00:36:55,480
They always had to come back to 
the like core team and they were

648
00:36:55,480 --> 00:36:57,360
able to always fix it in like 10
minutes. 

649
00:36:58,400 --> 00:37:01,760
So what's the difference, right?
Because they had like both teams

650
00:37:01,760 --> 00:37:04,240
had access to the same 
documentation, they had access 

651
00:37:04,240 --> 00:37:07,800
to the source code, like so all 
the explicit knowledge, the 

652
00:37:07,800 --> 00:37:10,800
stuff that you can write down, 
that was all there, right? 

653
00:37:10,800 --> 00:37:13,160
There was no difference in that.
So that was not the 

654
00:37:13,160 --> 00:37:15,320
differentiating factor. 
So the code and the 

655
00:37:15,320 --> 00:37:17,960
documentation, the artefacts, 
the output of this software 

656
00:37:18,000 --> 00:37:21,680
process was apparently not 
sufficient to be able to 

657
00:37:21,680 --> 00:37:23,720
maintain, evolve and fix stuff, 
etcetera. 

658
00:37:27,000 --> 00:37:30,000
And then on the other hand, the 
people that had the writing 

659
00:37:30,000 --> 00:37:31,720
knowledge, because they worked 
in it, they had the writing 

660
00:37:31,720 --> 00:37:33,800
knowledge in their brain, the 
experience. 

661
00:37:34,280 --> 00:37:37,080
So it's like riding a bike. 
So there's this tested knowledge

662
00:37:37,080 --> 00:37:39,400
you when you learn to ride a 
bike, it's not by reading a 

663
00:37:39,400 --> 00:37:42,520
book. 
It's really hard to learn too 

664
00:37:42,520 --> 00:37:43,560
hard. 
Write it back. 

665
00:37:43,800 --> 00:37:45,000
It's something you need to 
experience. 

666
00:37:45,680 --> 00:37:47,680
You need to get a feel for the 
balance, right? 

667
00:37:47,680 --> 00:37:52,040
I can tell you just go sit on 
it, move your legs and then you 

668
00:37:52,480 --> 00:37:55,280
don't move your arms too much. 
It's just feel the balance, 

669
00:37:55,280 --> 00:37:58,240
right? 
It's you have to get it build up

670
00:37:58,240 --> 00:37:59,960
that feeling for that balance, 
right? 

671
00:38:00,520 --> 00:38:02,040
So this, that's a, that's a 
knowledge. 

672
00:38:04,520 --> 00:38:07,520
And as programmers, we build up 
this kind of tested knowledge 

673
00:38:07,520 --> 00:38:10,440
for the systems that we work 
with, for the code that we work 

674
00:38:10,440 --> 00:38:14,760
with. 
And when you have the knowledge,

675
00:38:15,280 --> 00:38:18,360
fixing a bug somewhere is super 
easy because you have this ready

676
00:38:18,360 --> 00:38:22,000
theory of how things work. 
So if something doesn't work the

677
00:38:22,000 --> 00:38:24,240
way it's supposed to be, you 
know, well, it's probably in 

678
00:38:24,240 --> 00:38:28,080
this area. 
So this was what now we saw, 

679
00:38:28,080 --> 00:38:30,120
right? 
That there, there's this 

680
00:38:30,400 --> 00:38:34,160
production view, but the code 
artefacts just not enough to be 

681
00:38:34,160 --> 00:38:38,880
able to work on a system. 
You need that theory of the 

682
00:38:38,880 --> 00:38:43,640
programming theory. 
Programming is you have to, you 

683
00:38:43,640 --> 00:38:47,560
have to have built a theory to 
be able to do this. 

684
00:38:48,360 --> 00:38:49,520
And the theory lives in your 
mind. 

685
00:38:49,520 --> 00:38:51,680
And it's not something you can 
say you, you pluck it out and 

686
00:38:51,680 --> 00:38:52,880
you put it in someone else's 
mind. 

687
00:38:53,440 --> 00:38:55,400
How do you transfer that? 
You would transfer that by 

688
00:38:55,400 --> 00:38:57,480
working together on the 
software, right? 

689
00:38:57,480 --> 00:39:00,680
So you have multiple engineers 
working on the system. 

690
00:39:01,400 --> 00:39:04,000
And when a new guy comes along, 
he'll have a lot of trouble 

691
00:39:04,080 --> 00:39:07,040
figuring out how it works. 
But if he works in that team for

692
00:39:07,040 --> 00:39:09,920
a while, you'll learn and you'll
pick it up and you'll learn how 

693
00:39:10,120 --> 00:39:12,680
the system works. 
You get the the details. 

694
00:39:12,680 --> 00:39:15,240
At some point you build up this 
tested knowledge. 

695
00:39:17,200 --> 00:39:21,760
And we don't really, I don't 
think we are very aware of that 

696
00:39:21,760 --> 00:39:23,840
this works this way, right? 
If you think of this theory 

697
00:39:23,840 --> 00:39:26,680
building, it really matches. 
If I look at all the projects 

698
00:39:26,680 --> 00:39:29,080
that I've been, it matches 
completely with what I've seen, 

699
00:39:29,720 --> 00:39:33,760
right? 
So when I when I heard of the I 

700
00:39:33,760 --> 00:39:37,920
only heard of this like 2 years 
ago, I uncovered that this 

701
00:39:37,920 --> 00:39:40,560
theory existed and this narrow 
guy existed, whatever. 

702
00:39:43,200 --> 00:39:46,200
So it really intrigued me. 
So I dove into it and tried to 

703
00:39:46,200 --> 00:39:49,240
learn more about it because it 
matched so much with what I saw 

704
00:39:49,240 --> 00:39:52,640
around me. 
And this is like knowledge we've

705
00:39:52,640 --> 00:39:54,440
had for a while and somehow it 
didn't reach me. 

706
00:39:54,440 --> 00:39:57,680
I don't know, like there's just 
so much we know from years back 

707
00:39:57,680 --> 00:39:59,240
that's still relevant, 
apparently. 

708
00:40:02,120 --> 00:40:10,120
And yeah, so how do we become 
aware as a team, right, that 

709
00:40:10,120 --> 00:40:14,160
this is something that's 
apparently happening and that 

710
00:40:14,680 --> 00:40:18,440
being successful in software and
being able to keep evolving, the

711
00:40:18,440 --> 00:40:23,960
software apparently needs human 
humans to interact, right, to 

712
00:40:23,960 --> 00:40:27,600
build up this knowledge together
on a system before they can be 

713
00:40:27,600 --> 00:40:31,080
able to work on a system. 
Then when you look at current, a

714
00:40:31,120 --> 00:40:34,560
lot of the projects that I come 
across, right there is people, 

715
00:40:34,680 --> 00:40:36,800
especially in the current 
nationally getting getting 

716
00:40:36,800 --> 00:40:38,800
worse, people going with 
pension, right? 

717
00:40:39,480 --> 00:40:43,120
So that's well deserved. 
But they have a lot of knowledge

718
00:40:43,120 --> 00:40:48,920
that then leaves other than 
there's people job hopping. 

719
00:40:49,560 --> 00:40:53,440
So that's knowledge going away. 
So there's a lot of lot of 

720
00:40:53,440 --> 00:40:56,200
knowledge leaving the company, 
you could say constantly. 

721
00:40:56,360 --> 00:41:00,120
Yeah. 
And if you put the theory 

722
00:41:00,120 --> 00:41:05,600
building view on top of like the
legacy systems we see, like if 

723
00:41:05,600 --> 00:41:08,280
there's a system where the whole
team that worked in it isn't 

724
00:41:08,280 --> 00:41:10,040
there anymore, it's a system 
legacy. 

725
00:41:10,080 --> 00:41:13,320
Oh yeah, definitely right. 
Because nobody knows how it 

726
00:41:13,320 --> 00:41:16,200
works anymore. 
And it may not just be the the 

727
00:41:16,200 --> 00:41:19,160
programmers that left, if the 
operational people that run it 

728
00:41:19,240 --> 00:41:21,480
are no longer there and the 
system's still running, but 

729
00:41:21,480 --> 00:41:25,280
nobody knows how to maintain it.
It's going to fail and nobody 

730
00:41:25,280 --> 00:41:27,080
knows how to fix it. 
It's going to take a lot of 

731
00:41:27,080 --> 00:41:28,480
time, no? 
One wants to touch it. 

732
00:41:28,600 --> 00:41:31,440
Nobody wants to touch it, right.
So you, you can't change it, you

733
00:41:31,440 --> 00:41:35,120
can't upgrade it, whatever it's,
it becomes really sort of a, a 

734
00:41:35,120 --> 00:41:37,320
big risk. 
So it's a huge risk. 

735
00:41:37,760 --> 00:41:40,560
And still as an industry we 
don't seem to recognise it so 

736
00:41:40,560 --> 00:41:46,360
much, even be aware of it. 
And also from AI would say from 

737
00:41:46,360 --> 00:41:50,560
an architecture management point
of view, it would be really I 

738
00:41:50,560 --> 00:41:55,600
think beneficial to optimise the
way we organise teams, the way 

739
00:41:55,600 --> 00:42:00,120
we grow and shrink teams, 
whatever, right, to keep at 

740
00:42:00,120 --> 00:42:04,760
least the sort of the minimal 
tacit knowledge part available 

741
00:42:04,760 --> 00:42:07,040
so it can survive. 
So the system is more than just 

742
00:42:07,040 --> 00:42:10,120
the technology, right? 
And the code is the social 

743
00:42:10,120 --> 00:42:12,800
technical system of the system 
and the code and the people that

744
00:42:12,800 --> 00:42:15,040
work on it and the people that 
use it. 

745
00:42:15,840 --> 00:42:20,640
And if one of these goes away 
completely, yeah, the the 

746
00:42:20,640 --> 00:42:25,280
system's sort of doomed. 
In the kind of current day and 

747
00:42:25,280 --> 00:42:29,280
age, there's a lot of at least 
marketing buzz with regards to 

748
00:42:29,280 --> 00:42:33,200
personal productivity with 
genetic tools and specifically 

749
00:42:33,200 --> 00:42:35,360
your mention of retaining 
knowledge. 

750
00:42:35,720 --> 00:42:38,320
If the knowledge is gone, then 
the system quickly becomes 

751
00:42:38,320 --> 00:42:40,800
legacy. 
I feel like the way of working 

752
00:42:40,800 --> 00:42:44,440
that we now have has a risk. 
And I'm not saying it's it's 

753
00:42:44,800 --> 00:42:48,240
100% going to happen, but I feel
like a bigger risk that people 

754
00:42:48,320 --> 00:42:50,080
don't really build up the 
knowledge. 

755
00:42:50,440 --> 00:42:53,080
If they do it in a certain way, 
then the knowledge of the system

756
00:42:53,080 --> 00:42:56,240
will not necessarily build up. 
There is a different way of 

757
00:42:56,240 --> 00:42:58,640
doing it where you specify 
requirements. 

758
00:42:58,640 --> 00:43:01,960
I feel like that's maybe the the
future we will go into where you

759
00:43:01,960 --> 00:43:05,200
are very much conscious of 
knowledge that you capture 

760
00:43:05,200 --> 00:43:07,240
somewhere and then you let 
something else build it. 

761
00:43:07,840 --> 00:43:10,160
But if you don't do that and 
it's kind of a black box, then 

762
00:43:10,160 --> 00:43:13,360
that knowledge will never build 
up, which means likely it will 

763
00:43:13,360 --> 00:43:18,040
become legacy quicker. 
So yeah, I had exactly the same 

764
00:43:18,040 --> 00:43:21,640
observation. 
So also been thinking like, how 

765
00:43:21,640 --> 00:43:24,720
do we tackle that, right? 
Because it's this hygienic stuff

766
00:43:24,720 --> 00:43:26,360
is amazing. 
It's really cool. 

767
00:43:27,000 --> 00:43:28,640
It can really help us in a lot 
of ways. 

768
00:43:29,840 --> 00:43:32,680
But if we don't understand how 
to use the best, it's also going

769
00:43:32,680 --> 00:43:39,680
to hurt us a lot. 
And exactly the example you say,

770
00:43:39,680 --> 00:43:41,440
like write down better 
specifications. 

771
00:43:42,080 --> 00:43:46,000
The risk with that is that it's 
it's explicit knowledge, It's 

772
00:43:46,000 --> 00:43:48,800
written down knowledge, It's not
experienced knowledge. 

773
00:43:49,240 --> 00:43:54,320
So like Peter now would say, 
sorry, doesn't work. 

774
00:43:56,720 --> 00:43:59,760
So that's not I don't think 
that's a full solution. 

775
00:44:00,920 --> 00:44:02,960
I don't think it hurts, right? 
I think it's good to do that. 

776
00:44:02,960 --> 00:44:05,960
And that approach thing, I think
better than just vibing all the 

777
00:44:05,960 --> 00:44:08,400
way and then yallowing and 
seeing where it lands. 

778
00:44:10,080 --> 00:44:12,240
If you want to build something 
sustainable, right? 

779
00:44:14,280 --> 00:44:18,840
But you need another ingredient,
right? 

780
00:44:18,840 --> 00:44:21,160
You need that. 
That's the knowledge part. 

781
00:44:21,160 --> 00:44:23,880
So how do you capture that? 
How do you transfer that? 

782
00:44:23,880 --> 00:44:27,760
How do you keep that alive? 
And there's a bunch of factors, 

783
00:44:27,760 --> 00:44:29,840
I think that made it really hard
in today's age. 

784
00:44:30,400 --> 00:44:34,640
So one is after COVID, a lot of 
people are working remote. 

785
00:44:35,520 --> 00:44:38,840
We're much more isolated than we
were five years ago. 

786
00:44:38,960 --> 00:44:42,440
Yeah. 
So knowledge, this test and 

787
00:44:42,440 --> 00:44:45,360
knowledge transfer is much 
harder, right? 

788
00:44:45,360 --> 00:44:49,080
You can, it works really well 
when you sit together and when 

789
00:44:49,080 --> 00:44:50,960
you can just ask someone a 
question, whatever. 

790
00:44:51,160 --> 00:44:54,160
If you have to go into a Teams 
call to do the question, it's 

791
00:44:54,160 --> 00:44:58,440
not the same, right? 
So that's already a factor. 

792
00:44:58,440 --> 00:45:01,600
I think that's a big risk that 
we have at the current moment. 

793
00:45:02,480 --> 00:45:05,640
The other factor like these 
decident tools makes it make it 

794
00:45:05,640 --> 00:45:07,840
really easy to think that you 
have this bearing partner that 

795
00:45:07,840 --> 00:45:11,400
can help you build something. 
So people also don't necessarily

796
00:45:11,400 --> 00:45:15,160
go work with a buddy anymore, 
much like a human buddy, but 

797
00:45:15,160 --> 00:45:18,200
they work with their AI buddy 
and the AI buddy. 

798
00:45:19,840 --> 00:45:24,920
The context is super important. 
Context like this test and 

799
00:45:24,920 --> 00:45:27,920
knowledge is your your own 
context, right, your human 

800
00:45:27,920 --> 00:45:31,120
context, your AI. 
But he also has a context, 

801
00:45:31,120 --> 00:45:34,800
right, But it loses the context.
It can't it can't grow too big 

802
00:45:34,800 --> 00:45:38,640
because then it's it's well, the
results don't get too too bad, 

803
00:45:38,640 --> 00:45:43,120
too good anymore. 
So unless we tackle that 

804
00:45:43,120 --> 00:45:46,160
problem, right, and there's some
idea of memory, right, which is 

805
00:45:46,440 --> 00:45:51,000
sort of getting better and 
better, but the current state of

806
00:45:51,680 --> 00:45:56,320
enginic tools, they're not going
to help us much with this, 

807
00:45:56,320 --> 00:45:57,360
right? 
They're just going to make it 

808
00:45:57,360 --> 00:45:59,400
worse because they produce a lot
of stuff. 

809
00:45:59,400 --> 00:46:02,000
They don't retain this tested 
knowledge. 

810
00:46:03,320 --> 00:46:05,960
I think it's also really hard 
for an agentic tool to capture 

811
00:46:05,960 --> 00:46:09,160
an agentic tool or to capture 
this tested knowledge. 

812
00:46:10,520 --> 00:46:13,560
It would have to have a similar 
experience as we do, right? 

813
00:46:13,560 --> 00:46:17,160
It would have to live through 
the consequence of what it 

814
00:46:17,160 --> 00:46:20,440
builds. 
So when you do something and you

815
00:46:20,440 --> 00:46:23,160
create it and you don't have a 
production issue, right? 

816
00:46:23,400 --> 00:46:25,880
You. 
Experienced that consequence, 

817
00:46:26,520 --> 00:46:32,200
right, You'll learn from it. 
The current agenda tools, not a 

818
00:46:32,200 --> 00:46:34,440
lot of them do this right. 
There's some tooling out there 

819
00:46:34,440 --> 00:46:39,560
that looks at production stuff, 
super cool by the way, and tries

820
00:46:39,560 --> 00:46:44,240
to figure out what's going on, 
tries to to to fix essentially 

821
00:46:44,240 --> 00:46:47,440
there like do a root cause 
analysis, fix stuff, but there's

822
00:46:47,440 --> 00:46:51,400
not the learning and writing 
down the learnings part yet. 

823
00:46:52,120 --> 00:46:54,680
And I think with all the agile 
stuff, we've been getting better

824
00:46:54,680 --> 00:46:57,520
at learning, right? 
But we haven't done that in the 

825
00:46:57,520 --> 00:47:00,520
agentic stuff yet. 
So yeah, I think that's a big 

826
00:47:00,520 --> 00:47:04,120
challenge still there making 
sure that there's actual 

827
00:47:04,120 --> 00:47:10,040
learning going on, actual like 
safe sandbox iteration with 

828
00:47:10,040 --> 00:47:12,040
feedback loops towards the agent
again. 

829
00:47:12,600 --> 00:47:16,280
And not just building and then 
testing, but also actually 

830
00:47:16,280 --> 00:47:19,840
running and seeing what it does 
in production, the whole chain. 

831
00:47:20,720 --> 00:47:23,560
And then you also introduce a 
lot of risk, right? 

832
00:47:23,560 --> 00:47:26,600
Because if you connect your 
agent to production to read logs

833
00:47:26,600 --> 00:47:30,080
and stuff, yeah, it might log 
some stuff that you don't want 

834
00:47:30,080 --> 00:47:35,120
it to know. 
So it's not an easy thing to 

835
00:47:35,120 --> 00:47:38,920
solve. 
But still, I think this is the 

836
00:47:38,920 --> 00:47:42,880
thing that makes a human really 
good at having this built up 

837
00:47:42,880 --> 00:47:45,560
knowledge and working on systems
effectively. 

838
00:47:46,120 --> 00:47:49,360
So if you want to get that with 
these agents as well, well, 

839
00:47:49,520 --> 00:47:51,760
there's some stuff to do. 
Yeah, for sure. 

840
00:47:52,200 --> 00:47:55,920
One of the last thoughts I had 
was when you were discussing the

841
00:47:55,920 --> 00:47:59,960
evolvability element within a 
software project, because my 

842
00:47:59,960 --> 00:48:01,680
question is mainly around 
timing. 

843
00:48:02,000 --> 00:48:04,800
I've been in projects where 
people have early on made 

844
00:48:04,800 --> 00:48:08,240
conscious decisions to say we 
put down this specific 

845
00:48:08,240 --> 00:48:11,440
architecture or this system 
design to be able to evolve in 

846
00:48:11,440 --> 00:48:13,880
the future and that future might
never come. 

847
00:48:14,120 --> 00:48:17,280
And if I as an individual within
that project really experience 

848
00:48:17,280 --> 00:48:20,320
kind of difficulties with 
regards to the speed and the 

849
00:48:20,320 --> 00:48:24,840
productivity that I want to have
due to these decisions that I 

850
00:48:24,840 --> 00:48:28,040
don't know if will ever come, 
that leads to some frustration 

851
00:48:28,040 --> 00:48:30,640
sometimes. 
But then when that future comes,

852
00:48:31,120 --> 00:48:33,800
then it's quite nice because 
then you've covered a solid base

853
00:48:33,800 --> 00:48:36,200
that you can actually catapult 
on top of. 

854
00:48:36,200 --> 00:48:38,760
So this is for me quite a fine 
balancing act. 

855
00:48:39,200 --> 00:48:41,760
How you how have you balanced 
that in the past? 

856
00:48:41,760 --> 00:48:44,360
So. 
Definitely look into this stuff 

857
00:48:44,360 --> 00:48:47,640
from Mary O'Reilly Right, 
because it's, it's good stuff if

858
00:48:47,640 --> 00:48:50,600
you want to find the right 
balance there, right? 

859
00:48:50,600 --> 00:48:54,960
It's it, it adds complexity if 
you add a lot of stuff early on 

860
00:48:55,080 --> 00:48:57,760
that you don't need in the end, 
it's just complexity that you're

861
00:48:57,760 --> 00:49:00,560
dragging along and it makes 
yourself harder to change. 

862
00:49:02,600 --> 00:49:03,880
And I've definitely done that, 
right. 

863
00:49:03,880 --> 00:49:08,040
I mean, I've built super nice 
generic flexible components, 

864
00:49:08,400 --> 00:49:11,240
whatever. 
And then I needed only a small 

865
00:49:11,240 --> 00:49:13,040
piece of it. 
So that's, yeah, you'll learn 

866
00:49:13,040 --> 00:49:15,520
from that. 
And my learning, like the stuff 

867
00:49:15,520 --> 00:49:19,320
I build nowadays is always the 
minimal, just what I need now. 

868
00:49:20,000 --> 00:49:23,400
And I make really sure that I I 
make it in such a way that it's 

869
00:49:23,400 --> 00:49:28,960
easy to change so that when that
future comes, I can just change 

870
00:49:28,960 --> 00:49:31,240
it. 
So I think that's the biggest 

871
00:49:31,240 --> 00:49:36,240
lesson I've learned on that part
is just optimize for what you 

872
00:49:36,240 --> 00:49:41,480
know now. 
And I think Dave Farley says 

873
00:49:41,480 --> 00:49:46,960
this really well is right. 
You want to assume that you're 

874
00:49:46,960 --> 00:49:50,000
going to be wrong like that the 
whatever you built is going to 

875
00:49:50,000 --> 00:49:53,880
be wrong, and you're going to 
optimize to figure out what is 

876
00:49:53,880 --> 00:49:57,440
wrong as soon as possible. 
So you built something, you 

877
00:49:57,440 --> 00:50:00,280
assume it's wrong. 
And to be honest, usually what 

878
00:50:00,280 --> 00:50:04,600
you built is wrong in some way. 
And then you optimize your 

879
00:50:04,600 --> 00:50:08,280
feedback loop and then you learn
and you make sure that your code

880
00:50:08,280 --> 00:50:11,760
is easy to change and then you 
change it based on what you 

881
00:50:11,760 --> 00:50:17,080
learn and you iterate that as 
fast as you can or as fast as 

882
00:50:17,080 --> 00:50:20,280
useful. 
But I think that's the the key, 

883
00:50:20,440 --> 00:50:22,760
key ingredient there. 
So assuming you're wrong because

884
00:50:22,760 --> 00:50:25,720
that's already going to help you
like N fall in the trap fund, 

885
00:50:25,720 --> 00:50:28,120
we're going to build a super 
amazing fancy stuff that's going

886
00:50:28,200 --> 00:50:29,600
to be able to deal with the 
future. 

887
00:50:30,160 --> 00:50:31,640
That assumption is already 
wrong, right? 

888
00:50:31,640 --> 00:50:32,920
Because you don't know the 
future. 

889
00:50:33,920 --> 00:50:39,360
So being able or being able to 
realize that it might still be a

890
00:50:40,160 --> 00:50:44,040
a good approach for the time 
being, whether maybe take out 

891
00:50:44,040 --> 00:50:46,920
the stuff that you don't that 
you don't need right now. 

892
00:50:47,560 --> 00:50:50,560
Just do the stuff you. 
Need right now and then just 

893
00:50:50,840 --> 00:50:52,800
learn. 
I like that a lot, yeah. 

894
00:50:53,040 --> 00:50:56,960
It made me reflect because the 
the easier to change for me that

895
00:50:56,960 --> 00:50:59,320
needs to then be explicit 
because my colleagues, for 

896
00:50:59,320 --> 00:51:00,960
example, that added the 
complexity. 

897
00:51:01,360 --> 00:51:02,880
Their argument was also what it 
was. 

898
00:51:02,880 --> 00:51:06,040
This will be easy to change or 
rather kind of easier to build 

899
00:51:06,040 --> 00:51:08,840
on top of because that's what 
they're optimizing for a solid 

900
00:51:08,840 --> 00:51:12,320
base to catapult on top of. 
And I like that you mentioned 

901
00:51:12,320 --> 00:51:15,000
that what we build, if we build 
it, build it simple. 

902
00:51:15,720 --> 00:51:18,200
By virtue of it being simple, 
it's easy to change. 

903
00:51:18,320 --> 00:51:21,280
So it can evolve from that 
aspect as well, which is kind of

904
00:51:21,280 --> 00:51:24,640
these two angles. 
And that's where I feel like a 

905
00:51:24,640 --> 00:51:27,600
lot of my conversation went into
because we both want the same 

906
00:51:27,600 --> 00:51:29,480
thing. 
We both want a system that can 

907
00:51:29,480 --> 00:51:31,520
evolve, but the approach is very
different. 

908
00:51:31,640 --> 00:51:33,000
Yeah, that's quite. 
Interesting. 

909
00:51:33,200 --> 00:51:35,880
You may still end up with the 
solution that they came up with 

910
00:51:35,880 --> 00:51:38,200
in the start. 
Yeah, right at some point later.

911
00:51:38,800 --> 00:51:40,240
But it's just like with TDD, 
right? 

912
00:51:40,240 --> 00:51:44,320
When you do actual TD, you start
with a very small, very wrong 

913
00:51:44,320 --> 00:51:46,520
implementation and a test that 
makes it. 

914
00:51:47,480 --> 00:51:49,040
But then you add a test that 
makes it fail. 

915
00:51:49,560 --> 00:51:51,480
And then you figure out, OK, I 
need to change it a little bit 

916
00:51:51,480 --> 00:51:55,080
to make the second test pass. 
And you build up bit by bit a 

917
00:51:55,080 --> 00:51:58,760
piece of working software that 
does only whatever you wrote in 

918
00:51:58,760 --> 00:52:03,080
your tests. 
And if you take the same 

919
00:52:03,080 --> 00:52:05,200
approach to your architecture, 
right, you do something very 

920
00:52:05,200 --> 00:52:09,000
simple that you know will work 
for what you need now and then 

921
00:52:09,040 --> 00:52:11,280
make sure that you can adapt it,
evolve it. 

922
00:52:11,960 --> 00:52:14,440
And that's not always as easy 
with architecture, right? 

923
00:52:14,440 --> 00:52:18,000
Some, some people say like 
architecture is the, the hard 

924
00:52:18,000 --> 00:52:19,640
decisions, right? 
The decisions that are hard to 

925
00:52:19,640 --> 00:52:25,680
change. 
SO1 solution is to right make 

926
00:52:25,680 --> 00:52:28,520
those decisions and then live 
with them. 

927
00:52:29,320 --> 00:52:34,200
The other solution that I really
prefer is don't accept that and 

928
00:52:34,200 --> 00:52:36,720
make the things that are hard 
that is hard to change, make it 

929
00:52:36,720 --> 00:52:39,640
easy to change, right? 
So let's say database schema can

930
00:52:39,640 --> 00:52:42,680
be really hard to change. 
Well, then use tooling to make 

931
00:52:42,680 --> 00:52:45,680
it easy to change, like use some
fly away or something else. 

932
00:52:46,000 --> 00:52:49,600
There's tooling enough to have 
an evolvable schema or maybe you

933
00:52:49,600 --> 00:52:52,240
don't use a relational database,
but something that's easier to 

934
00:52:52,760 --> 00:52:55,080
to change if you don't know the 
exact schema yet, right? 

935
00:52:55,080 --> 00:53:01,520
So there's a lot of solutions 
that people think I need an 

936
00:53:01,520 --> 00:53:03,840
architecture decision record 
because this is a hard thing to 

937
00:53:03,840 --> 00:53:05,600
change. 
Like maybe the programming 

938
00:53:05,600 --> 00:53:08,760
language is a good thing to to 
write down. 

939
00:53:09,960 --> 00:53:12,600
Although even with the Genting 
tooling, maybe there's options. 

940
00:53:12,600 --> 00:53:13,920
Switch. 
Yeah, I have options nowadays. 

941
00:53:13,960 --> 00:53:16,160
So like stuff becomes easy to 
change. 

942
00:53:16,160 --> 00:53:19,560
So just make sure you make it 
easy to change and don't accept 

943
00:53:19,560 --> 00:53:21,120
that it's hard. 
Yeah, definitely. 

944
00:53:21,480 --> 00:53:22,720
Thank you so much for coming on,
Nikkei. 

945
00:53:22,720 --> 00:53:24,480
I really enjoyed this. 
This was great. 

946
00:53:24,880 --> 00:53:28,080
Thanks, it was a pleasure. 
All right, if you're still with 

947
00:53:28,080 --> 00:53:29,920
us listening, let me know in the
comments section what you 

948
00:53:29,920 --> 00:53:31,880
thought of this episode and 
we'll see you in the next one.

