1
00:00:00,040 --> 00:00:02,920
Architecture is, as we say, it's
on the cost of being rejected 

2
00:00:02,960 --> 00:00:05,800
wholesale by the industry. 
It has been a tough ten years 

3
00:00:05,800 --> 00:00:07,520
for the concept of enterprise 
architecture. 

4
00:00:07,880 --> 00:00:10,520
We have a bunch of really old 
ideas that seem a little bit 

5
00:00:10,520 --> 00:00:12,840
outdated, and our developers are
telling us that they're very 

6
00:00:12,840 --> 00:00:14,680
outdated and they don't want to 
work like this anymore, with 

7
00:00:14,680 --> 00:00:16,960
lines and boxes, with schedules 
and repositories full of 

8
00:00:16,960 --> 00:00:18,880
diagrams. 
At one point they said to me to 

9
00:00:18,880 --> 00:00:20,080
just teach people to do what you
do. 

10
00:00:20,200 --> 00:00:22,080
And I had to answer them and 
say, you know, I don't know what

11
00:00:22,080 --> 00:00:23,160
I do. 
None of us know what we do. 

12
00:00:23,480 --> 00:00:25,160
So I asked a whole bunch of 
architects, the senior 

13
00:00:25,160 --> 00:00:26,640
architects that I work with, 
what do you do? 

14
00:00:26,680 --> 00:00:29,040
We don't know either. 
So many people don't have the 

15
00:00:29,040 --> 00:00:30,640
same definition, and sometimes 
they also don't know how to 

16
00:00:30,640 --> 00:00:32,280
describe it. 
But in your definition, what is 

17
00:00:32,280 --> 00:00:35,360
your definition of architecture?
My definition of architecture is

18
00:00:35,400 --> 00:00:37,280
decision making in the face of 
ignorance. 

19
00:00:37,680 --> 00:00:39,760
As architects, we've got to work
with concepts like customer and 

20
00:00:39,760 --> 00:00:42,240
order and markets and demand and
all of this stuff that none of 

21
00:00:42,240 --> 00:00:44,200
it stays still. 
The only thing we focused on is 

22
00:00:44,200 --> 00:00:46,200
logic. 
And so we try to logically 

23
00:00:46,200 --> 00:00:49,200
describe how the business works.
We try to logically make our 

24
00:00:49,200 --> 00:00:51,440
stakeholders talk about 
requirements in a way that 

25
00:00:51,480 --> 00:00:53,640
satisfies our needs as 
logicians. 

26
00:00:54,000 --> 00:00:57,120
And it completely collapses at 
that point because you cannot 

27
00:00:57,160 --> 00:01:00,360
grasp the the complexity of a 
social organization with logic. 

28
00:01:00,360 --> 00:01:02,520
And this causes frustration for 
our stakeholders. 

29
00:01:02,560 --> 00:01:04,599
They don't like it. 
We have this obsession with 

30
00:01:04,599 --> 00:01:06,120
these abstractions, these 
essences. 

31
00:01:06,440 --> 00:01:09,000
What we don't have sometimes is 
the humility that these 

32
00:01:09,000 --> 00:01:12,200
abstractions die very quickly. 
The problem we have is that to 

33
00:01:12,200 --> 00:01:13,760
build software, you need it to 
be still. 

34
00:01:13,760 --> 00:01:16,880
I taught this to 600 people last
year, and it turns out that they

35
00:01:16,880 --> 00:01:18,880
loved it. 
There's a real hunger out there 

36
00:01:18,960 --> 00:01:22,440
for new thinking, new ideas, 
because everyone sees the gap, 

37
00:01:22,480 --> 00:01:24,200
or there's a gap between 
programming and architecture. 

38
00:01:24,320 --> 00:01:26,080
And the goal of a programmer is 
correctness. 

39
00:01:26,120 --> 00:01:27,320
We have to write code that's 
correct. 

40
00:01:27,320 --> 00:01:43,840
For an architect, the goal is. 
Hello everyone, welcome back to 

41
00:01:43,840 --> 00:01:46,160
the new episode of the Packly 
Journal Podcast. 

42
00:01:46,160 --> 00:01:48,080
Today. 
I'm very excited to meet Barry 

43
00:01:48,080 --> 00:01:50,600
O'Reilly. 
He's kind of like someone who is

44
00:01:50,640 --> 00:01:52,920
into architecture, a lot of 
experience. 

45
00:01:53,080 --> 00:01:54,720
Barry is also partly a 
researcher. 

46
00:01:54,720 --> 00:01:56,960
So Barry, welcome to the show 
and thank you for this 

47
00:01:56,960 --> 00:01:59,080
opportunity. 
Thank you, Henry. 

48
00:01:59,640 --> 00:02:02,640
Good to be here. 
So Barry, before we start diving

49
00:02:02,640 --> 00:02:04,760
into architecture and all that, 
maybe if you can share a little 

50
00:02:04,760 --> 00:02:08,000
bit about yourself to telling us
about your curriculum points 

51
00:02:08,000 --> 00:02:09,520
that you think we all can learn 
from you. 

52
00:02:10,479 --> 00:02:15,400
Yeah, so I, I've been in the 
business for a very long time. 

53
00:02:15,600 --> 00:02:18,120
I was 26 years or something like
that. 

54
00:02:18,480 --> 00:02:21,760
I'm originally a pure 
mathematician who graduated at 

55
00:02:21,760 --> 00:02:25,560
the end of the last century. 
So it was finance or computing, 

56
00:02:25,960 --> 00:02:30,120
and luckily I chose computing. 
I've worked very early on in my 

57
00:02:30,120 --> 00:02:33,840
career, started to work as an 
architect just by luck, which is

58
00:02:33,840 --> 00:02:36,080
a big part of an architectural 
career. 

59
00:02:36,080 --> 00:02:40,320
So in one of the very early 
projects I worked in, the lead 

60
00:02:40,320 --> 00:02:43,640
architects needed to take some 
time off and I had to take over 

61
00:02:43,920 --> 00:02:46,000
mostly within the Microsoft 
stack. 

62
00:02:46,080 --> 00:02:49,640
And then several years later I 
went to to work for Microsoft, 

63
00:02:50,160 --> 00:02:53,720
was eventually a chief architect
on the European level, did a lot

64
00:02:53,720 --> 00:02:58,080
of cool stuff with IoT and large
distributed systems in the 

65
00:02:58,080 --> 00:03:01,880
cloud. 
And when I was there, I led the 

66
00:03:01,880 --> 00:03:05,240
global architecture solution 
architecture community. 

67
00:03:05,240 --> 00:03:08,600
So I spent a lot of time 
teaching and thinking, and what 

68
00:03:08,600 --> 00:03:10,600
is architecture? 
How do we move this to the next 

69
00:03:10,600 --> 00:03:12,760
level? 
And, and most importantly, how 

70
00:03:12,760 --> 00:03:16,160
do we adapt architecture for 
this world of cloud which we've 

71
00:03:16,160 --> 00:03:17,800
created? 
But we don't really have the 

72
00:03:17,800 --> 00:03:20,360
answer to those questions. 
If you go back 15 years, what 

73
00:03:20,760 --> 00:03:25,280
does it mean to be an architect 
in the cloud and nobody knew? 

74
00:03:25,880 --> 00:03:28,480
And so a real turning point in 
the work. 

75
00:03:28,480 --> 00:03:30,640
I do know I was asking the 
question, you know, how do we 

76
00:03:30,640 --> 00:03:32,880
create architects? 
What do we teach them? 

77
00:03:32,920 --> 00:03:36,040
What do they need to know? 
And we have a bunch of really 

78
00:03:36,040 --> 00:03:38,960
old ideas that seem a little bit
outdated. 

79
00:03:39,120 --> 00:03:41,960
And our developers are telling 
us that they're very outdated 

80
00:03:41,960 --> 00:03:44,160
and they don't want to work like
this anymore with lines and 

81
00:03:44,160 --> 00:03:47,200
boxes, with schedules and 
repositories full of diagrams. 

82
00:03:47,760 --> 00:03:50,320
And that was a real turning 
point, I think, for me. 

83
00:03:50,400 --> 00:03:54,000
I started to ask the question, 
what is this architecture thing?

84
00:03:54,000 --> 00:03:56,840
What is it that I do? 
At one point they said to me to 

85
00:03:56,840 --> 00:03:58,440
just teach people to do what you
do. 

86
00:03:58,520 --> 00:04:01,040
And they had to answer them and 
say, you know, I don't know what

87
00:04:01,040 --> 00:04:02,440
I do. 
None of us know what we do. 

88
00:04:02,880 --> 00:04:05,000
So I asked a whole bunch of 
architects, the senior 

89
00:04:05,000 --> 00:04:06,680
architects that I work with, 
what do you do? 

90
00:04:06,720 --> 00:04:09,960
I know we don't know either. 
So I had to do a lot of digging 

91
00:04:10,040 --> 00:04:13,080
to figure that out. 
And I started to realize that 

92
00:04:13,080 --> 00:04:15,520
the thing that made the 
difference between us, the 

93
00:04:15,720 --> 00:04:19,160
senior architects who were 
actually doing well, delivering,

94
00:04:19,440 --> 00:04:21,560
seem to know what they were 
doing, even if they couldn't 

95
00:04:21,560 --> 00:04:23,280
describe it. 
That the difference was 

96
00:04:23,280 --> 00:04:27,520
uncertainty, that we had a much 
easier time dealing with 

97
00:04:28,040 --> 00:04:30,960
situations, business situations 
where no one really knew what 

98
00:04:30,960 --> 00:04:33,360
was happening and, and 
stakeholders would come and say,

99
00:04:33,360 --> 00:04:35,360
look, we, we don't really have 
requirements. 

100
00:04:35,360 --> 00:04:36,960
We don't know what we want. 
We're not even sure what this 

101
00:04:36,960 --> 00:04:39,480
problem is. 
And this would cause in that 

102
00:04:39,480 --> 00:04:42,200
case, a lot of developers would 
say, Hey, we're not doing 

103
00:04:42,200 --> 00:04:43,400
anything. 
You, you haven't told us what 

104
00:04:43,400 --> 00:04:44,480
you want. 
You haven't told us what to 

105
00:04:44,480 --> 00:04:45,680
build. 
You don't know what your, your 

106
00:04:45,680 --> 00:04:47,880
features you want or what 
problem you're trying to solve. 

107
00:04:47,880 --> 00:04:50,600
So you'll go away and come back 
when you know what you want. 

108
00:04:50,600 --> 00:04:52,840
Whereas the architect will step 
in and say, right, we can still 

109
00:04:52,840 --> 00:04:54,720
do something here. 
We can do something with this, 

110
00:04:55,280 --> 00:04:58,960
this information. 
And that took me into a, a 

111
00:04:58,960 --> 00:05:01,680
discussion about what is 
uncertainty and how do we deal 

112
00:05:01,680 --> 00:05:03,640
with it? 
And is there a scientific basis 

113
00:05:03,640 --> 00:05:07,080
for dealing with uncertainty? 
As you step into that as a 

114
00:05:07,080 --> 00:05:10,480
mathematician, you immediately 
turn to probability and base and

115
00:05:10,480 --> 00:05:12,240
all of that. 
And that doesn't work. 

116
00:05:12,240 --> 00:05:13,960
None of it works. 
If, if that worked, we'd have 

117
00:05:13,960 --> 00:05:16,600
figured it out decades ago. 
And you end up realizing that 

118
00:05:16,600 --> 00:05:18,160
there's something else going on 
here. 

119
00:05:18,360 --> 00:05:22,000
And that took me into a 
completely different discipline,

120
00:05:22,000 --> 00:05:25,360
which is the the complexity 
sciences, which, you know, has a

121
00:05:25,360 --> 00:05:28,040
very strong relationship to 
mathematics. 

122
00:05:28,040 --> 00:05:30,720
So it was, it was an easy place 
to start looking. 

123
00:05:31,120 --> 00:05:33,680
And what I started to do was I 
started to read up and those 

124
00:05:33,680 --> 00:05:36,520
ideas, I started to pull them in
and describe my own practice in 

125
00:05:36,520 --> 00:05:38,920
those terms. 
And that caught the attention of

126
00:05:38,920 --> 00:05:40,000
a lot of people. 
A lot of people thought, hey, 

127
00:05:40,000 --> 00:05:41,800
this is cool. 
Can you talk more about this? 

128
00:05:42,240 --> 00:05:45,360
I was sort of nervous about it 
because I didn't want to get up 

129
00:05:45,360 --> 00:05:48,800
on a stage and say, hey, look, 
do this and everything will be 

130
00:05:48,800 --> 00:05:50,040
fine. 
Because I thought that that 

131
00:05:50,040 --> 00:05:53,960
doesn't feel right. 
In our industry, it's perfectly 

132
00:05:53,960 --> 00:05:56,520
acceptable to get up on a stage 
and say, do this and everything 

133
00:05:56,520 --> 00:05:58,240
will be fine. 
People will just nod and they 

134
00:05:58,240 --> 00:05:59,760
believe you and they do whatever
you say. 

135
00:06:00,160 --> 00:06:02,080
But I wanted to take it a bit 
further than that. 

136
00:06:02,080 --> 00:06:05,240
So I talked to a whole bunch of 
people, eventually went back to 

137
00:06:05,240 --> 00:06:07,320
university. 
And when I went back to, you 

138
00:06:07,320 --> 00:06:10,320
know, I went and I decided to do
a PhD and I have these ideas and

139
00:06:10,880 --> 00:06:14,160
I want proof, either proof that 
they work or proof that they 

140
00:06:14,160 --> 00:06:16,080
don't work. 
And if they don't work, then 

141
00:06:16,080 --> 00:06:17,480
why? 
Why don't they work? 

142
00:06:17,480 --> 00:06:20,560
And I developed a bunch of ideas
around how we should be doing 

143
00:06:20,560 --> 00:06:23,360
architecture, which we'll talk 
about, I'm sure about the ideas 

144
00:06:23,360 --> 00:06:27,120
like random simulation and stuff
that I kind of borrowed and 

145
00:06:27,120 --> 00:06:30,040
reformed from the complexity 
sciences to suit our world, 

146
00:06:30,040 --> 00:06:33,040
which it turns out is very, very
different than the world of 

147
00:06:33,040 --> 00:06:36,760
other engineers. 
And I just wanted to see, is 

148
00:06:36,760 --> 00:06:40,080
this real or is it just a bunch 
of things that sound good? 

149
00:06:40,200 --> 00:06:41,960
Because there's an awful lot of 
things in our industry that 

150
00:06:41,960 --> 00:06:44,360
sound good. 
And the ideas about architecture

151
00:06:44,360 --> 00:06:47,200
that I and the rest of the 
industry were in the process of 

152
00:06:47,200 --> 00:06:50,360
abandoning at that point, they 
all sounded good at one point, 

153
00:06:50,360 --> 00:06:53,240
but no one done any work to 
prove that they actually worked.

154
00:06:54,040 --> 00:06:56,600
I didn't want to just do another
loop of the hamster wheel. 

155
00:06:57,000 --> 00:07:01,240
So I I decided to go back and 
prove that this actually held or

156
00:07:01,240 --> 00:07:02,840
didn't. 
And that's the point I've come 

157
00:07:02,840 --> 00:07:06,360
to now. 
That journey has been fantastic 

158
00:07:06,360 --> 00:07:08,760
and I've done it out loud The 
whole time I've been working, 

159
00:07:08,760 --> 00:07:11,000
I've been getting up on stages 
at conferences to say, hey, 

160
00:07:11,000 --> 00:07:13,480
look, this seems to be the right
direction. 

161
00:07:13,480 --> 00:07:16,160
What do you think of this? 
And I've taught a lot of 

162
00:07:16,160 --> 00:07:18,040
architects along the way how to 
do this. 

163
00:07:18,280 --> 00:07:20,720
The result of that has been in 
the last year, I've released two

164
00:07:20,720 --> 00:07:24,840
books which are kind of side 
quests from my PhD, which I 

165
00:07:24,840 --> 00:07:27,600
should have finished by now, but
I keep writing books instead of 

166
00:07:27,600 --> 00:07:31,400
the actual dissertation. 
And that's brought us up to the 

167
00:07:31,400 --> 00:07:34,680
present day where these ideas 
are kind of starting to really 

168
00:07:34,960 --> 00:07:37,600
get noticed in the industry, and
a lot of people are excited 

169
00:07:37,600 --> 00:07:39,800
about them. 
And so it's a pretty cool time 

170
00:07:39,880 --> 00:07:42,520
right now. 
This episode is brought to you 

171
00:07:42,520 --> 00:07:47,240
by Swim IO, and I'm excited to 
have its CTO and cofounder Omer 

172
00:07:47,240 --> 00:07:50,320
Rosenbaum with me today to tell 
you more about Swim. 

173
00:07:50,440 --> 00:07:53,040
Hi Henry, very nice to meet you 
and thank you for having me. 

174
00:07:53,480 --> 00:07:56,160
So tell us a little bit more, 
what is swim.com? 

175
00:07:56,320 --> 00:08:00,040
At Swim, we want to help 
companies understand their code 

176
00:08:00,040 --> 00:08:03,000
bases. 
We combine static code analysis 

177
00:08:03,040 --> 00:08:06,960
with generative AI to create 
comprehensive documents that 

178
00:08:06,960 --> 00:08:10,120
help you navigate the code base.
As an engineer myself, I 

179
00:08:10,120 --> 00:08:14,080
wouldn't want engineers to spend
so much time understanding 

180
00:08:14,080 --> 00:08:16,480
existing code. 
I would want them to spend time 

181
00:08:16,680 --> 00:08:20,280
creating and building new stuff.
When you have code that has 

182
00:08:20,280 --> 00:08:24,920
accumulated over decades, and 
especially in legacy languages 

183
00:08:25,280 --> 00:08:30,640
that not many people are adapted
nowadays, then the problem is 

184
00:08:30,640 --> 00:08:34,080
even bigger. 
Swim dot IO is specializing into

185
00:08:34,080 --> 00:08:36,600
helping mainframe developers to 
understand their code base. 

186
00:08:36,720 --> 00:08:39,600
Why mainframes? 
We actually didn't start there. 

187
00:08:39,720 --> 00:08:45,320
Kabul had been by some people 
obsolete for a few years, and I 

188
00:08:45,320 --> 00:08:48,720
discovered that it's not really 
obsolete, not at all. 

189
00:08:48,720 --> 00:08:52,840
There are more than 800 billion 
lines of cobalt code that are in

190
00:08:52,840 --> 00:08:55,680
production and they drive lots 
of the business in the world. 

191
00:08:56,240 --> 00:08:59,160
And we got more and more 
requests. 

192
00:08:59,320 --> 00:09:02,200
From. 
Customers to help them 

193
00:09:02,200 --> 00:09:05,560
understand the legacy code basis
that was written decades ago and

194
00:09:05,680 --> 00:09:08,320
get accumulated over a very long
period of time. 

195
00:09:08,520 --> 00:09:11,880
So from your customers so far, 
what are the some of the success

196
00:09:11,880 --> 00:09:15,320
stories that you can share? 
So we worked with an analyst who

197
00:09:15,560 --> 00:09:19,960
shared with us that it took them
a year to document a single 

198
00:09:19,960 --> 00:09:23,200
mainframe application, and using
SWIM they were able to document 

199
00:09:23,200 --> 00:09:25,800
a similar application in a 
matter of hours. 

200
00:09:26,160 --> 00:09:30,160
So saving that amount of time 
enables them to focus on other 

201
00:09:30,360 --> 00:09:33,280
tasks. 
Thanks, Amir for sharing with us

202
00:09:33,280 --> 00:09:36,040
about SWIM today. 
To learn more about SWIM, check 

203
00:09:36,040 --> 00:09:38,080
out their website at swim dot 
IO. 

204
00:09:39,640 --> 00:09:41,200
Thank you for sharing your 
story, right? 

205
00:09:41,200 --> 00:09:43,840
So in preparation of this 
conversation, actually, I did 

206
00:09:43,840 --> 00:09:46,240
have a look at your previous 
talks, right, in the 

207
00:09:46,240 --> 00:09:48,080
conferences. 
I also read your book. 

208
00:09:48,280 --> 00:09:51,280
I must say that it is really 
fascinating reading this new 

209
00:09:51,280 --> 00:09:53,160
paradigm, I would say about 
architecture, right? 

210
00:09:53,480 --> 00:09:55,560
And I think it's quite 
interesting if you just follow 

211
00:09:55,560 --> 00:09:57,000
the way you explain things, 
right? 

212
00:09:57,000 --> 00:10:00,000
I find it quite novel and 
looking forward to actually have

213
00:10:00,000 --> 00:10:01,600
a good discussion with you 
today. 

214
00:10:02,080 --> 00:10:05,440
And you said that you published 
2 books, one is the Architect's 

215
00:10:05,440 --> 00:10:08,600
paradox and the other one is the
residual theory, right? 

216
00:10:08,920 --> 00:10:11,080
So maybe let's start with the 
Architect's paradox. 

217
00:10:11,240 --> 00:10:13,240
When you mention about paradox, 
what do you mean? 

218
00:10:13,360 --> 00:10:17,000
Can you explain a little bit? 
Yeah, so the architect's paradox

219
00:10:17,000 --> 00:10:20,160
is this unfortunate trap that 
was built for us. 

220
00:10:20,760 --> 00:10:23,600
To be honest, we built it 
ourselves, but we didn't realize

221
00:10:23,600 --> 00:10:26,480
it was there. 
And the paradox is this, that in

222
00:10:26,480 --> 00:10:30,760
order to invent a computer and 
to invent software, you have to 

223
00:10:30,760 --> 00:10:34,640
think in a very, very rigid, 
logical way. 

224
00:10:34,880 --> 00:10:37,760
And you have to be really 
consistent in that logic. 

225
00:10:37,760 --> 00:10:39,400
You have to really know what 
you're doing. 

226
00:10:39,400 --> 00:10:44,520
So you get people like Alan 
Turing, von Neumann, Alfonso 

227
00:10:44,520 --> 00:10:46,320
Church, right? 
They really knew their logic. 

228
00:10:46,320 --> 00:10:48,960
They were really focused on it, 
and they had to be to create 

229
00:10:48,960 --> 00:10:51,560
software. 
And when you really focus in on 

230
00:10:51,560 --> 00:10:55,520
logic, you accidentally adapt a 
way of looking at the world, 

231
00:10:55,520 --> 00:10:57,680
what you try to see logic in 
everything. 

232
00:10:58,040 --> 00:11:01,040
We are working with computers 
and chips and software and 

233
00:11:01,040 --> 00:11:03,560
registers and all of these 
things and functions, and we're 

234
00:11:03,560 --> 00:11:07,200
thinking pure logic. 
And then eventually the machines

235
00:11:07,200 --> 00:11:10,840
get so powerful that we realized
we can solve a whole bunch of 

236
00:11:10,840 --> 00:11:14,080
human problems and business 
problems with these systems. 

237
00:11:14,360 --> 00:11:17,520
And you look out into the real 
world, away from the machine, 

238
00:11:18,080 --> 00:11:20,560
and you see that there's people 
and they're doing stuff and 

239
00:11:20,560 --> 00:11:21,600
they're trying to get stuff 
done. 

240
00:11:21,600 --> 00:11:24,560
And they have all these things 
called emotions and they have 

241
00:11:24,560 --> 00:11:26,560
social groups, they're trying to
achieve something. 

242
00:11:26,560 --> 00:11:28,240
There's markets, everything's 
moving. 

243
00:11:28,480 --> 00:11:30,720
And we look at this and we try 
to analyse it. 

244
00:11:30,760 --> 00:11:34,040
And the only tool we have, the 
only thing we focused on is 

245
00:11:34,040 --> 00:11:36,680
logic. 
And so we try to logically 

246
00:11:36,680 --> 00:11:40,600
describe how the business works.
We try to logically make our 

247
00:11:40,600 --> 00:11:43,400
stakeholders talk about 
requirements in a way that's 

248
00:11:43,400 --> 00:11:47,160
consistent, in a way that 
satisfies our needs as 

249
00:11:47,160 --> 00:11:50,440
logicians. 
And it completely collapses at 

250
00:11:50,440 --> 00:11:54,920
that point because you cannot 
grasp the complexity of a social

251
00:11:54,920 --> 00:11:57,520
organization with logic. 
You can only reduce it. 

252
00:11:57,520 --> 00:12:00,240
You can only make it smaller. 
And everything that we've done 

253
00:12:00,240 --> 00:12:03,200
in the history of our industry, 
from requirements engineering to

254
00:12:03,200 --> 00:12:06,320
user stories, to the mapping and
modelling of domains, it's all 

255
00:12:06,320 --> 00:12:09,920
been about reducing things to a 
point where we can access them 

256
00:12:09,920 --> 00:12:13,160
with logic. 
And this causes frustration for 

257
00:12:13,160 --> 00:12:15,000
our stakeholders. 
They don't like it. 

258
00:12:15,120 --> 00:12:17,560
So that's why they run away when
they see us in the corridor. 

259
00:12:17,560 --> 00:12:19,440
They're, Oh no, I'm going to be 
forced into another one of those

260
00:12:19,440 --> 00:12:21,800
difficult conversations where 
they make me feel stupid because

261
00:12:21,800 --> 00:12:24,440
I can't answer questions in a 
logical way. 

262
00:12:24,760 --> 00:12:27,120
And it limits our ability to 
accept things. 

263
00:12:27,400 --> 00:12:30,280
And it means that what happens 
is that we have the logic down. 

264
00:12:30,280 --> 00:12:32,480
We can build the machines, we 
can make the machine do exactly 

265
00:12:32,480 --> 00:12:36,080
what we wanted to do, but we 
can't translate between the real

266
00:12:36,080 --> 00:12:39,680
business world and the machine 
because we're applying logic in 

267
00:12:39,680 --> 00:12:42,680
the wrong place. 
And this was a problem. 

268
00:12:42,880 --> 00:12:45,520
This had been a problem since 
the beginning, well, since 

269
00:12:45,520 --> 00:12:48,720
computers got powerful enough to
start being used in complex 

270
00:12:48,720 --> 00:12:52,040
human systems like large 
businesses, things like that. 

271
00:12:52,200 --> 00:12:55,880
And our approach to this has 
always been to force our 

272
00:12:55,880 --> 00:12:59,480
stakeholders to force that 
complexity to be still and say, 

273
00:12:59,480 --> 00:13:02,520
look, no, don't talk, just tell 
us requirements. 

274
00:13:02,800 --> 00:13:04,320
Those requirements have to be 
smart. 

275
00:13:04,320 --> 00:13:06,080
They have to be atomic. 
They have to be sharp. 

276
00:13:06,080 --> 00:13:07,880
They have to not contradict each
other. 

277
00:13:07,920 --> 00:13:10,720
If you describe your world in a 
way that follows the laws of our

278
00:13:10,720 --> 00:13:12,760
world, then we can make your 
computer work for you. 

279
00:13:12,760 --> 00:13:16,080
It keeps collapsing. 
And we know from the statistics,

280
00:13:16,080 --> 00:13:19,000
from the standard chaos report 
and all of those other reports 

281
00:13:19,000 --> 00:13:20,760
that we're not doing this 
particularly well. 

282
00:13:20,760 --> 00:13:23,040
And we knew since the late 60s 
that we weren't doing this 

283
00:13:23,440 --> 00:13:25,800
particularly well. 
But no one has ever raised the 

284
00:13:25,800 --> 00:13:28,360
question before, hey, is it the 
way we think? 

285
00:13:28,840 --> 00:13:31,760
Is it the way we think? 
That's the problem Now the agile

286
00:13:31,760 --> 00:13:35,920
movement to its credits 25 years
ago started making some noise 

287
00:13:35,920 --> 00:13:38,680
and said, hey, you know, this 
rigid, stiff way of looking at 

288
00:13:38,680 --> 00:13:41,440
the world is hurting us more 
than it's helping us and we need

289
00:13:41,440 --> 00:13:43,920
to get rid of this. 
They got rid of all the 

290
00:13:43,920 --> 00:13:47,560
immediate aspects of this, like 
the steering, the the idea that 

291
00:13:47,560 --> 00:13:49,600
there's a waterfall process 
that's repeatable. 

292
00:13:49,600 --> 00:13:51,720
That's all part of the 
architects paradox. 

293
00:13:52,200 --> 00:13:55,200
What the agile movement missed 
was the fact that when we build 

294
00:13:55,200 --> 00:13:58,800
conceptual models of the 
business, the same paradoxes 

295
00:13:58,800 --> 00:14:02,160
there, we're still using logic. 
So the the problem with the 

296
00:14:02,160 --> 00:14:04,960
agile movement was that it just 
wasn't extreme enough. 

297
00:14:05,040 --> 00:14:07,520
It should have thrown the baby 
out with the bathwater, but it 

298
00:14:07,520 --> 00:14:10,000
didn't. 
It tried to keep the baby. 

299
00:14:10,320 --> 00:14:13,520
The baby got upset. 
And that's where we we are 

300
00:14:13,640 --> 00:14:16,400
today. 
It, it's a very, very difficult 

301
00:14:16,400 --> 00:14:19,240
thing to separate ourselves. 
For some it's a difficult 

302
00:14:19,240 --> 00:14:22,840
conversation to have because 
we're so entrenched in this 

303
00:14:22,840 --> 00:14:26,240
logical way of thinking about 
the world that to move away from

304
00:14:26,240 --> 00:14:29,320
it, to think a different thought
seems impossible. 

305
00:14:29,760 --> 00:14:32,880
One of the bits of feedback I 
got in the book was from a very 

306
00:14:32,880 --> 00:14:35,680
senior developer in the UK who 
was one of the sort of pre 

307
00:14:35,680 --> 00:14:38,920
readers and he said this is 
great stuff, but the risk is 

308
00:14:38,920 --> 00:14:42,000
that you're kicking away the 
crutches from developers. 

309
00:14:42,000 --> 00:14:44,680
They're going to feel like they 
have nothing left, nothing to 

310
00:14:44,680 --> 00:14:47,360
hang on to, and that's kind of 
dangerous. 

311
00:14:47,360 --> 00:14:50,560
It can make people feel a little
bit nervous and so I guess 

312
00:14:50,560 --> 00:14:53,560
that's the price of progress is 
that we will have to feel a 

313
00:14:53,560 --> 00:14:56,760
little bit nervous, a little bit
out to sea while we have these 

314
00:14:56,760 --> 00:14:58,720
discussions. 
But I think it's important 

315
00:14:58,960 --> 00:15:02,680
because architecture is, as we 
say, it's on the cusp of being 

316
00:15:02,680 --> 00:15:04,840
rejected wholesale by the 
industry. 

317
00:15:04,840 --> 00:15:08,560
It has been a tough ten years 
for the concept of enterprise 

318
00:15:08,560 --> 00:15:11,240
architecture. 
There needs to be a new we have 

319
00:15:11,240 --> 00:15:14,640
a new way of thinking around 
these things and that means sort

320
00:15:14,640 --> 00:15:17,840
of looking inwards and maybe 
reflecting a little bit, facing 

321
00:15:17,840 --> 00:15:20,240
up to some hard truths. 
Yeah. 

322
00:15:20,560 --> 00:15:23,840
So the way you explain that, I 
think people here who listen, 

323
00:15:23,840 --> 00:15:26,600
right understand the paradox 
where you're coming from, right.

324
00:15:26,600 --> 00:15:29,760
So I think most of the software 
developers, we are trained to 

325
00:15:29,760 --> 00:15:32,360
think in logic, right? 
Even like for example, given a 

326
00:15:32,360 --> 00:15:34,880
certain input, it always comes 
out with the with the same 

327
00:15:34,880 --> 00:15:36,160
output, right? 
Those kind of stuff. 

328
00:15:36,440 --> 00:15:39,400
But we know that every time we 
build software, there's always 

329
00:15:39,560 --> 00:15:43,640
something that make the software
fragile, not easy to evolve, 

330
00:15:43,640 --> 00:15:46,520
right? 
And for that reason, right, many

331
00:15:46,520 --> 00:15:49,320
software projects actually 
statistically considered fail 

332
00:15:49,720 --> 00:15:52,680
either they cannot be delivered 
on time, the scope keeps 

333
00:15:52,680 --> 00:15:54,520
increasing, right, and all 
things like that. 

334
00:15:54,800 --> 00:15:57,000
So I think it's really 
interesting the way you brought 

335
00:15:57,000 --> 00:16:01,200
it up as a paradox and I think 
before we go into more details 

336
00:16:01,200 --> 00:16:04,520
about the inner things, right, 
maybe in your definition, what 

337
00:16:04,520 --> 00:16:06,880
is architecture? 
Because when you mention in the 

338
00:16:06,880 --> 00:16:09,760
beginning you asked so many 
architects, what do you do? 

339
00:16:10,000 --> 00:16:12,120
So many people don't have the 
same definition. 

340
00:16:12,120 --> 00:16:14,320
I guess sometimes they also 
don't know how to describe it. 

341
00:16:14,680 --> 00:16:18,440
But in your definition, maybe if
you can, what is your definition

342
00:16:18,440 --> 00:16:21,880
of architecture? 
So my definition of architecture

343
00:16:21,880 --> 00:16:24,800
is decision making in the face 
of ignorance. 

344
00:16:25,360 --> 00:16:28,920
And for us, what what that means
is that as an architect, you 

345
00:16:28,920 --> 00:16:31,600
know, you're expected to make 
decisions about the structure of

346
00:16:31,600 --> 00:16:34,480
a software application. 
That's a definition in itself 

347
00:16:35,000 --> 00:16:37,960
that some maybe older enterprise
architects don't agree with 

348
00:16:37,960 --> 00:16:39,720
because they think that they 
should move away from the 

349
00:16:39,720 --> 00:16:41,800
technology and just deal with 
business problems. 

350
00:16:41,800 --> 00:16:44,520
And I don't share that view of 
architecture at all. 

351
00:16:45,080 --> 00:16:47,400
Architecture needs to be very 
close to the technology. 

352
00:16:47,520 --> 00:16:50,880
And so an architect is a very 
advanced programmer in in my 

353
00:16:50,880 --> 00:16:53,560
world, what we have to do is 
make decisions about the 

354
00:16:53,560 --> 00:16:56,360
structure of the software, but 
we don't know what's going to 

355
00:16:56,360 --> 00:16:59,040
happen in the future. 
And the function of that 

356
00:16:59,040 --> 00:17:02,640
structure is to make sure that 
the application survives into an

357
00:17:02,640 --> 00:17:04,720
unknown future. 
So we have to make decisions 

358
00:17:04,720 --> 00:17:07,000
about things that we don't yet 
know about. 

359
00:17:07,319 --> 00:17:09,960
And that is what architecture 
is. 

360
00:17:09,960 --> 00:17:12,680
And that's what leads us into a 
lot of problems. 

361
00:17:13,119 --> 00:17:14,680
So that how do you solve that 
problem? 

362
00:17:14,760 --> 00:17:17,079
Well, one way to solve that 
problem is to get better at 

363
00:17:17,079 --> 00:17:20,040
knowing what the future is. 
And that leads to a whole lot of

364
00:17:20,079 --> 00:17:22,280
snake oil, to be honest. 
People saying, I can tell you 

365
00:17:22,280 --> 00:17:23,960
the future, I know what's going 
to happen. 

366
00:17:23,960 --> 00:17:27,440
I've seen this before. 
Or it can lead to some people 

367
00:17:27,440 --> 00:17:29,880
giving up and saying that there 
is no point in architecture 

368
00:17:29,880 --> 00:17:31,840
because we don't know what we're
going to happen in the future. 

369
00:17:31,840 --> 00:17:34,400
So let's just wait for the 
future to happen and then RIP 

370
00:17:34,400 --> 00:17:37,240
everything down and rebuild it. 
And that historically hasn't 

371
00:17:37,240 --> 00:17:39,720
given us good architecture that 
gives us bad architecture. 

372
00:17:40,480 --> 00:17:42,960
It might give us confidence that
it doesn't give us good 

373
00:17:42,960 --> 00:17:46,080
architecture, good structures. 
And so a lot of the challenges 

374
00:17:46,080 --> 00:17:48,480
in how do we handle this fact 
that we don't know what's going 

375
00:17:48,480 --> 00:17:51,600
to happen in the future and what
we've tried to do. 

376
00:17:51,680 --> 00:17:54,320
So a bunch of very smart people 
got together in in a place 

377
00:17:54,320 --> 00:17:57,840
called Garmisch in Germany, 
1968, these NATO conferences. 

378
00:17:57,840 --> 00:17:59,920
And they said, hey, why are we, 
why do we suck at this? 

379
00:17:59,920 --> 00:18:01,320
Why does everything keep going 
wrong? 

380
00:18:01,560 --> 00:18:04,240
And they said it's because we're
not good enough what we're doing

381
00:18:04,240 --> 00:18:06,520
right now, which is we're sort 
of trying to copy other 

382
00:18:06,520 --> 00:18:09,280
engineering disciplines because 
we don't have an identity yet as

383
00:18:09,280 --> 00:18:11,360
software people and we still 
don't. 

384
00:18:11,720 --> 00:18:15,680
And So what we try to do is we 
try to bring in that engineering

385
00:18:15,680 --> 00:18:19,480
paradigm into software. 
And every time we field, we 

386
00:18:19,480 --> 00:18:21,920
said, well, we must not be good 
enough at engineering. 

387
00:18:21,920 --> 00:18:24,520
So we have to engineer harder. 
And that means we have to be 

388
00:18:24,840 --> 00:18:27,080
more explicit about 
requirements. 

389
00:18:27,080 --> 00:18:31,280
We have to be more accurate with
risk predictions and all of 

390
00:18:31,280 --> 00:18:33,520
these things. 
And we're trying to copy or 

391
00:18:33,520 --> 00:18:36,200
steal the clothes of of real 
engineers. 

392
00:18:36,720 --> 00:18:39,240
And what we've never really had 
the conversation, what if what 

393
00:18:39,240 --> 00:18:41,560
we're doing isn't really 
engineering? 

394
00:18:41,560 --> 00:18:45,520
What if it's something way, way 
harder than what engineers have 

395
00:18:45,520 --> 00:18:47,520
to do usually? 
Say, you know, the people who 

396
00:18:47,520 --> 00:18:50,960
build cars, the architects who 
design cars, they have it easy, 

397
00:18:50,960 --> 00:18:52,000
right? 
Because they're working with 

398
00:18:52,000 --> 00:18:55,920
aluminium and gravity and rubber
and fuel, and the physical 

399
00:18:55,920 --> 00:18:58,520
properties of those things don't
keep changing, right? 

400
00:18:58,520 --> 00:19:01,480
They're stable and static and 
everything is still. 

401
00:19:01,480 --> 00:19:04,080
And they can work safe in the 
knowledge that aluminium will 

402
00:19:04,080 --> 00:19:06,560
behave in 10 years from now in 
much the same way as it behaves 

403
00:19:06,560 --> 00:19:08,800
today. 
As architects, we've got to work

404
00:19:08,800 --> 00:19:12,400
with concepts like customer and 
order and markets and demand and

405
00:19:12,400 --> 00:19:14,160
all of this stuff, but none of 
it stays still. 

406
00:19:14,160 --> 00:19:17,200
And so that would be trying to 
design a car in an environment 

407
00:19:17,200 --> 00:19:19,880
with variable gravity and 
variable properties of aluminium

408
00:19:19,880 --> 00:19:22,920
and different types of fuel. 
And, and it's much, much more 

409
00:19:22,920 --> 00:19:24,880
difficult what we're expected to
do. 

410
00:19:25,320 --> 00:19:28,320
And when you try to then apply 
the logic of the paradox to that

411
00:19:28,320 --> 00:19:30,920
environment, it all just gets 
very, very messy. 

412
00:19:31,200 --> 00:19:33,720
And that leads to all kinds of 
speculation. 

413
00:19:33,720 --> 00:19:37,680
But eventually it ends up at 
this rigid waterfall like thing 

414
00:19:37,680 --> 00:19:40,320
that we call enterprise 
architecture, which eventually 

415
00:19:40,320 --> 00:19:43,840
the industry starts to push back
on because we we know and we see

416
00:19:43,840 --> 00:19:46,400
and we feel in our projects 
every day that this approach 

417
00:19:46,720 --> 00:19:48,320
doesn't work. 
It doesn't give us the results 

418
00:19:48,320 --> 00:19:50,200
we need. 
Yeah. 

419
00:19:50,480 --> 00:19:52,800
So I think a lot of people also 
mentioned about this, right? 

420
00:19:52,800 --> 00:19:56,160
We borrow the discipline, maybe 
the practices from other 

421
00:19:56,160 --> 00:19:58,680
engineering, right. 
But most of those engineering, 

422
00:19:58,720 --> 00:20:01,680
you know, it's more like a 
physical thing, be it the civil 

423
00:20:01,680 --> 00:20:03,640
engineering machinery and things
like that. 

424
00:20:03,680 --> 00:20:06,400
But software has its own unique 
properties, I guess, right. 

425
00:20:06,400 --> 00:20:09,120
So one good thing is like it's 
very easy to start. 

426
00:20:09,120 --> 00:20:12,160
You can mold it as and when you 
like, you can deliver it really 

427
00:20:12,160 --> 00:20:13,960
quickly. 
At the same time, those 

428
00:20:13,960 --> 00:20:17,040
properties probably is also the 
challenge how we deal with them,

429
00:20:17,040 --> 00:20:18,360
right? 
Because, for example, if you 

430
00:20:18,360 --> 00:20:19,880
want to change your evolve your 
software. 

431
00:20:20,040 --> 00:20:21,480
Sometimes it's very tricky, 
right? 

432
00:20:21,480 --> 00:20:25,520
Because the business complexity 
changes and you mentioned that 

433
00:20:25,560 --> 00:20:29,000
also architecture typically 
don't survive a few things, 

434
00:20:29,120 --> 00:20:30,640
right? 
So you mentioned just now about 

435
00:20:30,640 --> 00:20:32,480
uncertainty, right? 
We don't know what the future 

436
00:20:32,480 --> 00:20:34,640
will look like. 
The business keeps changing. 

437
00:20:34,720 --> 00:20:36,440
The concepts may be changing as 
well. 

438
00:20:36,440 --> 00:20:40,200
Like you might have customer 
today defined as this, but maybe

439
00:20:40,440 --> 00:20:43,560
in the next month or so, the 
definition might change, new 

440
00:20:43,560 --> 00:20:45,640
business line appears and things
like that. 

441
00:20:45,960 --> 00:20:48,840
And also there are two other 
properties, which is time and 

442
00:20:48,840 --> 00:20:51,720
the change. 
If you can explain us about 

443
00:20:51,720 --> 00:20:55,320
these few things right, Why they
make architecture so much more 

444
00:20:55,320 --> 00:20:58,200
challenging? 
Yeah, the the big problem we 

445
00:20:58,200 --> 00:21:01,640
have in in architecture and that
you'll see as soon as you ask an

446
00:21:01,640 --> 00:21:04,040
architect, show me your 
architecture, they'll show you 

447
00:21:04,280 --> 00:21:07,760
something very static as a set 
of lines and boxes in a nice 

448
00:21:07,760 --> 00:21:10,520
diagram or scribbled on a white 
board, One of those two. 

449
00:21:11,120 --> 00:21:13,160
What you'll see is that it's a 
snapshot. 

450
00:21:13,160 --> 00:21:15,680
It's a picture of the 
architecture in one particular 

451
00:21:15,680 --> 00:21:17,920
moment. 
And everyone knows, if you've 

452
00:21:17,920 --> 00:21:20,360
had more than a few years of 
experience, you know that this 

453
00:21:20,360 --> 00:21:23,200
architecture will not look like 
this one year from now. 

454
00:21:23,240 --> 00:21:25,240
It will not look like this two 
years from now. 

455
00:21:25,240 --> 00:21:27,480
It will definitely not look 
because five years from now. 

456
00:21:27,760 --> 00:21:30,720
That's something that's very 
curious, isn't it? 

457
00:21:30,720 --> 00:21:33,000
Because why don't we have that? 
Why is that not part of our 

458
00:21:33,000 --> 00:21:34,880
diagram? 
Why is it not part of our plan? 

459
00:21:35,600 --> 00:21:38,280
And the reason that time is 
relevant is because things 

460
00:21:38,280 --> 00:21:40,760
change over time. 
And the reason that our 

461
00:21:40,840 --> 00:21:43,400
architectural tools and our 
diagramming and our way of 

462
00:21:43,400 --> 00:21:46,440
thinking doesn't embrace that 
change over time is because of 

463
00:21:46,440 --> 00:21:48,280
the uncertainty. 
It's because we don't know 

464
00:21:48,680 --> 00:21:51,200
what's going to happen. 
And So what we kind of do is 

465
00:21:51,200 --> 00:21:53,320
sweep it under the rug. 
And so we say, look, I'll give 

466
00:21:53,320 --> 00:21:56,640
you a lovely 2 dimensional UML 
diagram of what's going to 

467
00:21:56,640 --> 00:21:58,480
happen when we put it into 
production. 

468
00:21:59,280 --> 00:22:00,760
But we won't talk about the 
change. 

469
00:22:00,760 --> 00:22:03,360
We won't talk about the fact 
that everything's going to move.

470
00:22:03,720 --> 00:22:06,920
We won't talk about the fact 
that today we have identified a 

471
00:22:06,920 --> 00:22:09,840
particular kind of customer with
a particular set of properties. 

472
00:22:09,840 --> 00:22:13,240
And in five years we'll have 
dozens of different kinds of 

473
00:22:13,240 --> 00:22:15,520
customer and they'll all have 
different properties and they'll

474
00:22:15,520 --> 00:22:16,920
all react in different way. 
They'll be in different 

475
00:22:16,920 --> 00:22:19,240
countries with different 
languages and different ways of 

476
00:22:19,240 --> 00:22:22,800
identifying them in different 
legal frameworks around them. 

477
00:22:22,800 --> 00:22:24,960
That makes us need to know other
properties about that. 

478
00:22:25,640 --> 00:22:30,360
And these things are swept under
the rug because it's just too 

479
00:22:30,360 --> 00:22:32,560
difficult. 
It's not that it's too difficult

480
00:22:32,560 --> 00:22:36,880
because if I'm building a 
business without software, it's 

481
00:22:36,880 --> 00:22:38,480
easy for me to think about these
things. 

482
00:22:38,480 --> 00:22:40,600
It's very easy for business 
people to say, hey, you, you 

483
00:22:40,600 --> 00:22:42,680
know, we have a customer today 
because we're in this one 

484
00:22:42,680 --> 00:22:43,880
country. 
There's one jurisdiction, 

485
00:22:43,880 --> 00:22:46,160
there's one product, but the 
future is going to look 

486
00:22:46,160 --> 00:22:48,480
different. 
How do we make sure that we're 

487
00:22:48,480 --> 00:22:51,240
able to deal with that? 
And the business is very good at

488
00:22:51,240 --> 00:22:53,840
making sure that we can step 
this up, We can make sure that 

489
00:22:53,840 --> 00:22:56,320
we don't close, that we don't 
need to be ready for this 

490
00:22:56,320 --> 00:22:59,680
massive global multi customer 
world tomorrow, but we need to 

491
00:22:59,680 --> 00:23:01,640
make sure that we don't close 
the doors to that. 

492
00:23:01,840 --> 00:23:03,240
So for business people, it's 
easy. 

493
00:23:03,320 --> 00:23:05,880
At least this is natural 
thinking for them. 

494
00:23:06,120 --> 00:23:08,000
For us, it's very, very 
difficult because we think so 

495
00:23:08,000 --> 00:23:10,480
rigidly and so logically. 
And we what we do is we close 

496
00:23:10,480 --> 00:23:13,160
doors with our software. 
We say this is the customer 

497
00:23:13,160 --> 00:23:15,040
object, this is what it looks 
like forever. 

498
00:23:15,320 --> 00:23:17,720
And if it changes, then we're 
going to have to RIP everything 

499
00:23:17,760 --> 00:23:19,080
out and put it all back 
together. 

500
00:23:19,080 --> 00:23:20,960
And it becomes really, really 
difficult for us. 

501
00:23:21,400 --> 00:23:24,000
And so one of the things that 
software does for a business is 

502
00:23:24,000 --> 00:23:25,520
it actually slows the business 
down. 

503
00:23:25,520 --> 00:23:28,960
It makes it much more rigid that
you have to codify what's 

504
00:23:28,960 --> 00:23:30,840
actually happening. 
And that's why we have so much 

505
00:23:30,840 --> 00:23:33,640
frustration sometimes between 
business stakeholders and and 

506
00:23:33,640 --> 00:23:38,120
said to people because we can't 
move at their speed if we think 

507
00:23:38,120 --> 00:23:42,040
in this particular. 
Way, I think that explanation is

508
00:23:42,040 --> 00:23:44,360
quite common, right? 
Maybe in a start up scale up 

509
00:23:44,400 --> 00:23:46,840
those kind of situation, right? 
You will tend to hear that 

510
00:23:46,840 --> 00:23:48,440
software becomes a bottleneck, 
right? 

511
00:23:48,440 --> 00:23:51,800
The team cannot, right? 
The software cannot cope with 

512
00:23:51,800 --> 00:23:53,440
the business changes and things 
like that. 

513
00:23:53,680 --> 00:23:56,160
And I think when you explain 
about that, right, I kind of 

514
00:23:56,160 --> 00:23:59,040
think about the way software 
engineer or architect solves 

515
00:23:59,040 --> 00:24:01,600
this problem is to create 
modeling and abstraction, right?

516
00:24:01,760 --> 00:24:04,720
We try to distill the 
requirement that we hear from 

517
00:24:04,720 --> 00:24:07,880
the business and try to come up 
with some models, the boxes, the

518
00:24:07,880 --> 00:24:10,400
diagrams and things like that. 
And I know in your book you 

519
00:24:10,400 --> 00:24:14,360
explain this is probably one of 
the danger, the risk of trying 

520
00:24:14,360 --> 00:24:17,600
to come up with something that 
is too rigid structure and 

521
00:24:17,600 --> 00:24:20,480
things like that. 
Maybe tell us a little bit why 

522
00:24:20,480 --> 00:24:23,720
this kind of paradigm where we 
want to build more abstraction 

523
00:24:23,720 --> 00:24:26,080
and modeling doesn't actually 
survive? 

524
00:24:27,320 --> 00:24:30,440
Yeah, so this is something that 
comes from mathematics. 

525
00:24:30,440 --> 00:24:33,880
And so I came out of university 
as a naive pure mathematician, 

526
00:24:33,880 --> 00:24:38,120
and abstraction, when I studied,
your ability to work with 

527
00:24:38,120 --> 00:24:41,920
abstraction was praised, 
rewarded, encouraged. 

528
00:24:41,920 --> 00:24:45,320
And when you come into a 
business, then you're looking at

529
00:24:45,320 --> 00:24:46,840
all the things that are moving 
around. 

530
00:24:46,840 --> 00:24:48,880
You try to put a label on some 
things. 

531
00:24:49,320 --> 00:24:51,480
And so, well, that's a customer,
and that's a customer, and 

532
00:24:51,480 --> 00:24:54,440
that's a product. 
And, you know, that's a product.

533
00:24:54,440 --> 00:24:56,840
If we squint a little bit, you 
know, it might be closer to a 

534
00:24:56,840 --> 00:24:59,680
service or, you know, but wait, 
let's call it a product because 

535
00:24:59,680 --> 00:25:02,240
then we only have two words to 
deal with instead of three. 

536
00:25:02,760 --> 00:25:04,840
And abstraction is good. 
And we want to make the world 

537
00:25:04,840 --> 00:25:06,600
smaller and we want to hold it 
still. 

538
00:25:07,120 --> 00:25:10,160
And if you study mathematics or 
computer science, you'll get 

539
00:25:10,160 --> 00:25:12,600
extra points for your ability to
build these beautiful 

540
00:25:12,680 --> 00:25:15,680
abstractions. 
And we can fall in love with our

541
00:25:15,680 --> 00:25:17,760
abstractions. 
And one thing that you'll see 

542
00:25:17,760 --> 00:25:20,400
very common with developers and 
architects across the world is 

543
00:25:20,400 --> 00:25:21,920
they come up with an 
abstraction. 

544
00:25:22,360 --> 00:25:24,240
They love it. 
They fall in love with it, and 

545
00:25:24,240 --> 00:25:26,160
they'll fight you if you try to 
change it. 

546
00:25:26,160 --> 00:25:27,760
They're not. 
No, we will not change. 

547
00:25:27,760 --> 00:25:31,440
This is a customer object, or 
this is what we mean by message.

548
00:25:31,840 --> 00:25:35,600
And what happens is that we 
we're trying to isolate what is 

549
00:25:35,640 --> 00:25:38,080
a customer. 
And this goes right back to 

550
00:25:38,120 --> 00:25:42,280
Plato and Aristotle where they 
talk about trying to identify 

551
00:25:42,280 --> 00:25:45,040
the essence of something. 
What is the essence of customer?

552
00:25:45,040 --> 00:25:47,680
Can we capture this essence? 
Can we hold it still? 

553
00:25:47,960 --> 00:25:51,400
Plato, of course, he believed 
that there's this heavenly realm

554
00:25:51,560 --> 00:25:53,360
that exists outside of the 
earth. 

555
00:25:53,360 --> 00:25:57,040
We can't see it, and it contains
these perfect forms. 

556
00:25:57,160 --> 00:26:00,000
And somewhere in that heavenly 
realm there is a perfect 

557
00:26:00,000 --> 00:26:02,000
customer. 
And the way to find out what the

558
00:26:02,000 --> 00:26:06,040
perfect customer is is to just 
think about it rationally and 

559
00:26:06,040 --> 00:26:07,640
you will eventually come up with
a perfect customer. 

560
00:26:07,640 --> 00:26:11,920
When you do that, you're wise. 
This is rejected of course, by 

561
00:26:11,920 --> 00:26:15,400
his own student Aristotle, but 
we carry that with us. 

562
00:26:15,400 --> 00:26:18,320
And when we have this concept 
within object orientation of the

563
00:26:18,320 --> 00:26:21,240
class which we define, that's 
that perfect heavenly realm 

564
00:26:21,240 --> 00:26:23,680
which doesn't actually exist. 
That's the perfect customer 

565
00:26:23,720 --> 00:26:25,800
customer class. 
And then you have customer 

566
00:26:25,800 --> 00:26:29,440
objects, which are the, the real
world copies of that running in 

567
00:26:29,440 --> 00:26:31,800
memory. 
And so this behavior kind of 

568
00:26:31,800 --> 00:26:36,320
carries over into and this also 
leads us to try and, and 

569
00:26:36,320 --> 00:26:39,840
conceptualize and abstract over 
things and make it efficient all

570
00:26:39,840 --> 00:26:42,240
the time. 
That leads to us thinking things

571
00:26:42,240 --> 00:26:45,800
like security is something that 
is a property of every project. 

572
00:26:46,200 --> 00:26:48,480
And that leads us to thinking 
that there is some magical 

573
00:26:48,480 --> 00:26:51,000
heavenly security. 
That's the CM in every single 

574
00:26:51,000 --> 00:26:53,080
project. 
And so you end up with an 

575
00:26:53,080 --> 00:26:55,880
industry that thinks that 
security is the CM. 

576
00:26:56,000 --> 00:26:59,280
Whether you're building an app 
to share pictures of your lunch 

577
00:26:59,760 --> 00:27:02,840
or an app that runs inside a 
nuclear power station, they both

578
00:27:02,840 --> 00:27:04,800
have security. 
It's the same word, it's the 

579
00:27:04,800 --> 00:27:06,960
same thing. 
It's absolutely not the same 

580
00:27:06,960 --> 00:27:09,360
thing. 
And these abstractions are an 

581
00:27:09,360 --> 00:27:12,760
attempt to make it easier for 
us, but they actually end up 

582
00:27:12,760 --> 00:27:14,480
making things much, much more 
difficult. 

583
00:27:15,040 --> 00:27:17,880
Human history, or the history of
knowledge, tends to be a search 

584
00:27:17,880 --> 00:27:20,480
for abstractions where we 
stumble around getting things 

585
00:27:20,480 --> 00:27:23,440
wrong until one day we suddenly 
find an abstraction like Newton 

586
00:27:23,440 --> 00:27:27,080
did, which really works for us, 
and then we get hung up on it 

587
00:27:27,080 --> 00:27:29,400
for a couple of centuries. 
We haven't really got there in 

588
00:27:29,400 --> 00:27:31,680
software. 
The abstractions that we use are

589
00:27:31,680 --> 00:27:34,800
still they're very dangerous to 
us in very volatile 

590
00:27:34,800 --> 00:27:37,360
environments. 
There is no solution to this 

591
00:27:37,360 --> 00:27:40,400
problem, right, because humans 
have to think an abstraction. 

592
00:27:40,400 --> 00:27:44,360
It's because we can't. 
You have to have the word cat in

593
00:27:44,360 --> 00:27:47,160
your head. 
You can't memorize the name of 

594
00:27:47,160 --> 00:27:49,960
every single cat that you meet 
on earth and refer to them as 

595
00:27:49,960 --> 00:27:52,000
individuals. 
You have to be able to say cat, 

596
00:27:52,240 --> 00:27:56,000
but you also have to be prepared
if you go to the zoo as a kid 

597
00:27:56,000 --> 00:27:59,240
for the first time and see a 
lion, you have to be prepared to

598
00:27:59,240 --> 00:28:02,240
rapidly adjust your idea what is
a cat? 

599
00:28:02,560 --> 00:28:04,640
Because it can be very, very 
different all of a sudden. 

600
00:28:05,000 --> 00:28:08,200
And in software, we have this 
obsession with these 

601
00:28:08,200 --> 00:28:11,880
abstractions, these essences. 
What we don't have sometimes is 

602
00:28:11,880 --> 00:28:15,760
the humility that these 
abstractions die very quickly. 

603
00:28:15,840 --> 00:28:17,720
And so an abstraction is never 
still. 

604
00:28:17,960 --> 00:28:21,240
The problem we have is that to 
build software, you need it to 

605
00:28:21,240 --> 00:28:22,960
be still. 
And so we kind of convince 

606
00:28:22,960 --> 00:28:25,320
ourselves that this is customer 
now, we've arrived, this is what

607
00:28:25,320 --> 00:28:27,400
it's going to be. 
What's needed really is a 

608
00:28:27,400 --> 00:28:30,880
humility that this abstraction 
that I've come up with will not 

609
00:28:30,880 --> 00:28:33,800
survive in the wild. 
Occasionally some abstractions 

610
00:28:33,800 --> 00:28:36,640
do survive for a very long time,
but we don't know which ones 

611
00:28:36,640 --> 00:28:39,560
from the outset. 
And you know, you see these 

612
00:28:39,560 --> 00:28:43,080
problems all the time with these
huge kind of ERP installations 

613
00:28:43,120 --> 00:28:47,080
from large companies. 
That's a set of abstractions 

614
00:28:47,080 --> 00:28:49,560
from somewhere else. 
And someone said these 

615
00:28:49,560 --> 00:28:52,000
abstractions will definitely 
work for you and it will cost 

616
00:28:52,000 --> 00:28:54,840
this much. 
And then you buy the platform 

617
00:28:54,840 --> 00:28:56,480
and you say what we need to 
change a few of these 

618
00:28:56,480 --> 00:28:59,680
abstractions and suddenly it's a
five year project that's 500 

619
00:28:59,680 --> 00:29:03,000
million and no one's happy. 
And that's the constant failure 

620
00:29:03,000 --> 00:29:06,480
of the abstraction that leads to
this kind of misery within 

621
00:29:06,480 --> 00:29:08,880
software architecture. 
And there's no solution to it. 

622
00:29:08,920 --> 00:29:11,720
We have to think like this. 
We're kind of pre programmed to 

623
00:29:11,720 --> 00:29:15,240
think like this, but all that's 
needed is the realization that 

624
00:29:15,240 --> 00:29:19,800
this will crumble constantly and
there are some things we can do 

625
00:29:19,800 --> 00:29:22,720
to protect ourselves against 
that inevitable crumbling. 

626
00:29:22,720 --> 00:29:26,360
We can't get it to be still and 
that's the big issue for us 

627
00:29:26,360 --> 00:29:28,760
because we've got to make the 
still static software for this 

628
00:29:28,760 --> 00:29:32,080
constantly moving world. 
So I think I left when you 

629
00:29:32,080 --> 00:29:34,440
mentioned about, you know, we 
tried to think of the perfect 

630
00:29:34,440 --> 00:29:36,600
abstraction and we fight with 
each other, right? 

631
00:29:36,840 --> 00:29:39,880
And I think you mentioned also a
few famous philosophers, right? 

632
00:29:39,880 --> 00:29:43,120
The scientists also, right? 
And I think it's a good segue to

633
00:29:43,160 --> 00:29:46,240
go into this philosophy of 
architecture because in your 

634
00:29:46,240 --> 00:29:49,480
talks, in your books, right, you
mentioned about this study of 

635
00:29:49,480 --> 00:29:53,280
philosophy that you did and how 
to actually apply that into 

636
00:29:53,400 --> 00:29:55,000
software engineering and 
architecture, right? 

637
00:29:55,280 --> 00:29:58,600
So why exactly philosophy? 
And I think you also kind of 

638
00:29:58,600 --> 00:30:01,320
explained that we all actually 
have a philosophy in the way we 

639
00:30:01,320 --> 00:30:03,640
build software, but we just 
don't know about it or 

640
00:30:03,640 --> 00:30:06,920
unconsciously know about it. 
So tell us the importance of 

641
00:30:06,920 --> 00:30:09,160
understanding this philosophy. 
Yeah. 

642
00:30:09,200 --> 00:30:12,880
So as part of a PhD, which I've 
been doing, you have to write a 

643
00:30:12,880 --> 00:30:16,520
chapter that says, this is my 
philosophical view of the world,

644
00:30:16,520 --> 00:30:19,280
this is how I believe the world 
works. 

645
00:30:19,760 --> 00:30:21,960
And you have to do this because 
you're going to design an 

646
00:30:21,960 --> 00:30:23,480
experiment that's going to have 
a result. 

647
00:30:23,480 --> 00:30:25,880
You're going to interpret those 
results in a particular way, and

648
00:30:26,200 --> 00:30:29,200
it has to be consistent. 
So you have to interpret those. 

649
00:30:29,360 --> 00:30:31,560
You design your experiment, you 
run your experiment, you 

650
00:30:31,560 --> 00:30:34,440
interpret your results all 
through a philosophical lens. 

651
00:30:34,440 --> 00:30:36,840
There's no escape in that. 
Everyone has to do that. 

652
00:30:36,840 --> 00:30:39,400
And so it's very important 
upfront to say, this is how I 

653
00:30:39,400 --> 00:30:41,320
think, this is how I look at the
world. 

654
00:30:41,960 --> 00:30:45,280
And so I was given this project 
and Oh my God, what is this 

655
00:30:45,280 --> 00:30:48,120
nonsense? 
And my wife, who's a scholar, 

656
00:30:48,120 --> 00:30:51,120
she said, ah, you need to read 
this and then this and then 

657
00:30:51,120 --> 00:30:52,440
this. 
And I thought, oh, this is 

658
00:30:52,480 --> 00:30:55,360
overwhelming. 
And I got really interested in 

659
00:30:55,360 --> 00:30:57,920
it in the end of it, a little 
bit too interested in it and 

660
00:30:57,920 --> 00:31:00,280
went a bit too far. 
They say, like, this has to be 7

661
00:31:00,280 --> 00:31:02,600
pages. 
I got to like 200 pages. 

662
00:31:02,600 --> 00:31:06,440
I thought maybe I've gone too 
far again with this idea and I 

663
00:31:06,440 --> 00:31:09,760
started to realize that once I 
started to get what it gave me 

664
00:31:09,760 --> 00:31:12,360
was a vocabulary, I started to 
understand that, hey, a whole 

665
00:31:12,360 --> 00:31:15,200
lot of these discussions that 
we've been having in software 

666
00:31:15,360 --> 00:31:18,440
for the the entire length of my 
career are philosophical in 

667
00:31:18,440 --> 00:31:20,000
nature. 
We think we're on the cutting 

668
00:31:20,000 --> 00:31:21,960
edge. 
We think we're the cool hip kids

669
00:31:21,960 --> 00:31:25,720
doing all this new stuff. 
But there was 2 old man in a 

670
00:31:25,720 --> 00:31:29,560
square in Athens had this exact 
argument 2 1/2 thousand years 

671
00:31:29,560 --> 00:31:31,160
ago. 
And they were smart enough to 

672
00:31:31,160 --> 00:31:34,120
say we'd better just leave it. 
We we haven't really got there 

673
00:31:34,120 --> 00:31:36,720
yet. 
And I started to realize was 

674
00:31:36,720 --> 00:31:41,560
that I had a philosophy and that
philosophy wasn't coming from a 

675
00:31:41,560 --> 00:31:43,840
study of philosophy. 
It was coming from my pure 

676
00:31:43,840 --> 00:31:45,960
mathematics, my computer science
education. 

677
00:31:46,400 --> 00:31:48,400
And that philosophy was coming 
from my professors. 

678
00:31:48,400 --> 00:31:50,640
And they didn't know where their
philosophy was coming from 

679
00:31:50,640 --> 00:31:52,200
either. 
The vast majority of them didn't

680
00:31:52,200 --> 00:31:54,680
know where they got it from. 
And they were inheriting their 

681
00:31:54,680 --> 00:31:58,400
philosophy from a number of 
thinkers at the turn of the last

682
00:31:58,400 --> 00:32:01,080
century. 
So people like Gottlob Figgia in

683
00:32:01,080 --> 00:32:04,480
Germany, logicians, Bertrand 
Russell, Ludwig Wittgenstein, 

684
00:32:05,080 --> 00:32:08,640
people who were very, very 
focused on logic as being at the

685
00:32:08,640 --> 00:32:11,200
center of everything. 
And so these philosophers, they 

686
00:32:11,200 --> 00:32:15,360
created the platform for Turing 
and von Neumann to take the 

687
00:32:15,360 --> 00:32:19,440
steps they needed to take. 
And so we have this invisible 

688
00:32:19,560 --> 00:32:22,120
philosophy that comes from a 
bunch of different thinkers, a 

689
00:32:22,120 --> 00:32:27,120
bunch of different trends across
the millennia that causes us as 

690
00:32:27,440 --> 00:32:29,920
the computer scientists to 
software engineers to think in a

691
00:32:29,920 --> 00:32:32,800
very particular way. 
And what I started to realize 

692
00:32:32,800 --> 00:32:35,480
was that when I talked to 
engineers and I scraped at the 

693
00:32:35,480 --> 00:32:39,520
surface a little bit and asked 
them some awkward questions, and

694
00:32:39,520 --> 00:32:41,560
the ones who didn't get upset 
and actually answered the 

695
00:32:41,560 --> 00:32:46,320
questions would reveal there's a
similar set of ideas in all of 

696
00:32:46,320 --> 00:32:48,800
us. 
We've all inherited the same way

697
00:32:48,800 --> 00:32:51,400
of thinking. 
This default philosophy that 

698
00:32:51,400 --> 00:32:55,480
believes in this heavenly 
customer and constantly seeks 

699
00:32:55,480 --> 00:32:59,720
it, that believes that there's 
an if A then B relationship 

700
00:33:00,000 --> 00:33:03,120
constantly everywhere. 
That believes at the end of the 

701
00:33:03,120 --> 00:33:07,080
day, that an organization of 
people connected to each other 

702
00:33:07,120 --> 00:33:10,920
doing very human things to which
we call a business. 

703
00:33:11,200 --> 00:33:13,480
That it can be reduced and 
modelled. 

704
00:33:13,480 --> 00:33:15,920
In the same way that we talk 
about circuit boards, in the 

705
00:33:15,920 --> 00:33:18,280
same way that we talk about 
classes and objects and all of 

706
00:33:18,280 --> 00:33:22,280
these things and the way that we
act and the way that we behave 

707
00:33:22,280 --> 00:33:25,080
around our stakeholders, the way
that we form conceptual models 

708
00:33:25,080 --> 00:33:29,320
and software is a reflection of 
that inbuilt philosophy that we 

709
00:33:29,320 --> 00:33:32,080
all carry. 
And I realized that as I was 

710
00:33:32,080 --> 00:33:34,880
teaching the ideas in 
residuality, which are kind of 

711
00:33:35,320 --> 00:33:38,760
radical, they ask you to throw 
out a whole lot of all that ways

712
00:33:38,880 --> 00:33:41,800
thinking. 
As I was asking people to do 

713
00:33:41,800 --> 00:33:44,360
that, I noticed that they would 
struggle sometimes. 

714
00:33:44,360 --> 00:33:46,080
There's things they didn't want 
to let go off. 

715
00:33:46,080 --> 00:33:49,720
And I said this is deeper than 
just a tool or knowledge of how 

716
00:33:49,720 --> 00:33:52,080
something works. 
This is philosophical. 

717
00:33:52,080 --> 00:33:54,920
So I'm asking them to change 
philosophically how they look at

718
00:33:54,920 --> 00:33:57,000
the world. 
But the vast majority of 

719
00:33:57,000 --> 00:34:00,600
developers can't even describe, 
and I couldn't how they look at 

720
00:34:00,600 --> 00:34:02,800
the world philosophically. 
So you're asking someone to 

721
00:34:02,800 --> 00:34:04,760
change something that they don't
know is there. 

722
00:34:05,360 --> 00:34:07,400
And that is incredibly 
difficult. 

723
00:34:07,440 --> 00:34:11,480
And so I gave a talk about this 
because I find this fascinating.

724
00:34:11,480 --> 00:34:14,639
I got in the book, I say like 
I'm a software engineer who got 

725
00:34:14,639 --> 00:34:16,320
lost in the wrong part of the 
library. 

726
00:34:16,760 --> 00:34:20,280
And I spent a couple of years 
there and really got into these 

727
00:34:20,280 --> 00:34:23,719
ideas and these thoughts. 
And eventually I started to talk

728
00:34:23,719 --> 00:34:25,199
about it. 
And they talked about it at an 

729
00:34:25,199 --> 00:34:28,040
architecture conference. 
At the architecture conference, 

730
00:34:28,040 --> 00:34:29,840
they said they were really 
interested. 

731
00:34:29,920 --> 00:34:32,080
They thought this is really 
interesting stuff. 

732
00:34:32,080 --> 00:34:34,560
And there was a computer science
professor who came on directly 

733
00:34:34,560 --> 00:34:37,760
after me and he was absolutely 
shell shocked is actually, I 

734
00:34:37,800 --> 00:34:40,520
never heard anything like this. 
How dare you RIP up the rule 

735
00:34:40,520 --> 00:34:43,719
book. 
And then I went to, I spoken to 

736
00:34:43,719 --> 00:34:47,159
developer conference, not a huge
developer conference, a small 1.

737
00:34:47,199 --> 00:34:49,520
And I thought, this is a big 
risk where they're going to 

738
00:34:49,520 --> 00:34:51,400
throw chairs at me, They're 
going to hit this, this is 

739
00:34:51,400 --> 00:34:53,600
boring. 
Because I found that they were 

740
00:34:53,600 --> 00:34:56,719
really interested as well. 
And then they did an even bigger

741
00:34:56,719 --> 00:35:00,080
developer conference, NDC and 
Oslo last year. 

742
00:35:00,480 --> 00:35:02,640
And I thought they said, can you
come and give a talk? 

743
00:35:02,640 --> 00:35:04,760
I said, yeah, OK, I'll give my 
philosophy talk. 

744
00:35:04,760 --> 00:35:07,600
And I figured they'll put me in 
a room far at the back. 

745
00:35:07,600 --> 00:35:09,960
There'll be 4 mostly older 
people there. 

746
00:35:09,960 --> 00:35:12,480
No one will care. 
You know, it'll be fun. 

747
00:35:13,160 --> 00:35:16,240
I got there and they put me in 
the big room, the keynote room. 

748
00:35:16,360 --> 00:35:18,600
So there's these four people are
going to be in. 

749
00:35:18,600 --> 00:35:20,240
There's like 400 chairs of poor 
people. 

750
00:35:20,240 --> 00:35:22,680
This is going to be a disaster. 
And the room filled and there 

751
00:35:22,680 --> 00:35:25,120
were people standing at the back
and standing in the aisles and I

752
00:35:25,120 --> 00:35:28,400
was absolutely terrified. 
But this is too many developers 

753
00:35:28,400 --> 00:35:30,560
to hear about coming to listen 
to philosophy. 

754
00:35:30,880 --> 00:35:33,880
Most of them are going to be 
drastically disappointed that 

755
00:35:33,880 --> 00:35:35,920
this has got nothing to do with 
code really. 

756
00:35:36,520 --> 00:35:38,520
And it turns out that they they 
loved it. 

757
00:35:38,560 --> 00:35:42,480
And I thought, well, there's a 
real hunger out there for new 

758
00:35:42,480 --> 00:35:45,960
thinking, new ideas, because 
everyone sees the gap where 

759
00:35:45,960 --> 00:35:48,120
there's a gap between 
programming and architecture. 

760
00:35:48,480 --> 00:35:50,520
We know that the old ways don't 
fill it. 

761
00:35:50,960 --> 00:35:52,560
We don't have anything to fill 
it with. 

762
00:35:52,560 --> 00:35:55,920
The only way to fill that gap is
to just throw yourself in at the

763
00:35:55,920 --> 00:35:58,640
deep end and suffer for a few 
years until you've sort of 

764
00:35:58,640 --> 00:36:02,000
figured it out. 
And so there's a real hunger for

765
00:36:02,000 --> 00:36:04,400
developers who want to take that
step up to architecture. 

766
00:36:04,520 --> 00:36:07,320
How do we do this? 
And they're very open to the 

767
00:36:07,320 --> 00:36:10,720
idea that we just have to kind 
of change how you think and how 

768
00:36:10,720 --> 00:36:13,680
you look at things a little bit 
and suddenly you can solve new 

769
00:36:13,680 --> 00:36:16,040
problems. 
The, the response of that 

770
00:36:16,040 --> 00:36:19,760
conference then gave me the idea
that, hey, those 200 extra PhDs 

771
00:36:19,760 --> 00:36:21,720
that I have lying around, maybe 
that should be a book. 

772
00:36:21,920 --> 00:36:24,200
And so that's what I've been 
doing for the last couple of 

773
00:36:24,200 --> 00:36:26,480
months instead of the work that 
I'm actually meant to be doing. 

774
00:36:27,080 --> 00:36:30,880
So that that's how I arrived at 
the fact that philosophy is a 

775
00:36:30,880 --> 00:36:35,720
very, very important question 
for us as software architects 

776
00:36:36,240 --> 00:36:39,920
and that it's a very good 
starting point for someone who 

777
00:36:39,920 --> 00:36:43,360
wants to take that journey from,
especially if you're a very 

778
00:36:43,360 --> 00:36:46,080
senior developer and which I 
guess is your audience. 

779
00:36:46,480 --> 00:36:47,920
And you're saying, what's the 
next step? 

780
00:36:47,920 --> 00:36:49,600
And the next step isn't more 
algorithms. 

781
00:36:49,600 --> 00:36:52,000
It isn't getting better at 
leaked, it isn't getting better 

782
00:36:52,320 --> 00:36:54,840
at Kubernetes. 
It's a much more inward 

783
00:36:54,840 --> 00:36:58,640
reflective journey which will 
allow you to solve problems that

784
00:36:58,640 --> 00:37:01,720
are actually a little bit 
outside the machine, but still 

785
00:37:01,720 --> 00:37:04,680
very much related to the code on
the compiler. 

786
00:37:05,520 --> 00:37:07,680
So I think when you mentioned 
about both philosophy, I think 

787
00:37:07,680 --> 00:37:11,360
we all have, it may be inherited
from the study, from the books, 

788
00:37:11,360 --> 00:37:14,920
right, from the logical thinking
that we thought ourselves maybe 

789
00:37:14,920 --> 00:37:17,120
as well. 
I also follow your talks, right?

790
00:37:17,120 --> 00:37:20,800
So I think it's quite refreshing
the way you kind of think about 

791
00:37:20,880 --> 00:37:22,840
architecture. 
And I think it's not something 

792
00:37:22,840 --> 00:37:25,080
that straightforward naturally 
we think about, right. 

793
00:37:25,080 --> 00:37:28,560
So I think this is also a good 
discussion in terms of what you 

794
00:37:28,560 --> 00:37:31,560
think as the unit of 
architecture, because many 

795
00:37:31,560 --> 00:37:34,720
people, if you ask architecture,
they have different answers, 

796
00:37:34,720 --> 00:37:36,040
right? 
They could relate to like 

797
00:37:36,040 --> 00:37:38,760
monolith micro service, they 
could relate to something like 

798
00:37:38,760 --> 00:37:41,320
domain driven design, they could
relate to something like 

799
00:37:41,360 --> 00:37:44,680
evolutionary architecture, event
driven architecture, So many 

800
00:37:44,680 --> 00:37:45,800
different architectures out 
there. 

801
00:37:46,120 --> 00:37:48,520
But the way you actually 
describe in your philosophy, 

802
00:37:48,520 --> 00:37:51,880
architecture, maybe architecture
has a different kind of unit. 

803
00:37:52,040 --> 00:37:55,640
So maybe now it's a good time to
actually introduce us to this 

804
00:37:55,640 --> 00:37:58,520
concept of residuality. 
Yeah. 

805
00:37:58,520 --> 00:38:01,880
So if we go back to the ancient 
Greeks, which is where I always 

806
00:38:01,880 --> 00:38:03,520
start this story, does it make 
more sense? 

807
00:38:03,840 --> 00:38:07,440
They looked at the world. 
And for them, you know, this is 

808
00:38:07,720 --> 00:38:09,920
2 1/2 thousand years ago, there 
were a lot of mysteries. 

809
00:38:09,920 --> 00:38:11,920
There were a lot of things we 
know today that they didn't 

810
00:38:11,920 --> 00:38:14,320
know. 
And they would look at things 

811
00:38:14,800 --> 00:38:16,400
and ask questions. 
What is it? 

812
00:38:16,400 --> 00:38:18,840
What is it made of? 
And they would look at these 

813
00:38:18,840 --> 00:38:21,320
things and they'd say, well, 
what if it's made of water? 

814
00:38:21,440 --> 00:38:24,320
One of the sort of renowned as 
one of the first Greek 

815
00:38:24,320 --> 00:38:28,240
philosophers called Talas, who 
came up with this idea, it's 

816
00:38:28,240 --> 00:38:29,800
what if everything is made of 
water? 

817
00:38:30,360 --> 00:38:32,640
That's obviously ridiculous. 
So if we look at that now, 

818
00:38:32,640 --> 00:38:33,720
everything is not made from 
water. 

819
00:38:33,720 --> 00:38:36,240
What a stupid idea. 
But it's not the idea. 

820
00:38:36,240 --> 00:38:38,720
It's not the conclusion that he 
came to that's important. 

821
00:38:38,720 --> 00:38:42,120
It's the thought that what if we
look at the world as if it's all

822
00:38:42,120 --> 00:38:45,560
made of one thing, as if there's
some kind of arcade, they called

823
00:38:45,560 --> 00:38:48,200
it, some kind of building block 
that everything is made of. 

824
00:38:48,960 --> 00:38:50,920
And he came up with water and he
was obviously wrong. 

825
00:38:50,920 --> 00:38:54,400
But that instinct started a way 
of thinking that changed the 

826
00:38:54,400 --> 00:38:57,680
world for us in the West. 
There were other thinkers. 

827
00:38:57,680 --> 00:39:00,360
We will come back to one called 
Heraclitus, and he said 

828
00:39:00,360 --> 00:39:02,600
everything is made of fire, 
everything's on fire, 

829
00:39:02,600 --> 00:39:04,600
everything's moving and changing
all the time. 

830
00:39:04,800 --> 00:39:07,880
That's very much influenced with
ideas from the East, which is 

831
00:39:07,880 --> 00:39:10,400
going to turn out to be much 
more useful to us as architects.

832
00:39:10,920 --> 00:39:14,320
And eventually then they have 
this one guy, the Democritus, 

833
00:39:14,320 --> 00:39:16,280
who comes along and says, what 
if everything's made of tiny, 

834
00:39:16,280 --> 00:39:18,280
tiny little particles called 
atoms? 

835
00:39:18,800 --> 00:39:22,880
And that's an idea that stuck 
around for thousands of years. 

836
00:39:22,880 --> 00:39:24,400
And we've all learned that in 
high school. 

837
00:39:24,840 --> 00:39:28,560
And what we get from that 
journey is that when we all 

838
00:39:28,560 --> 00:39:32,560
assemble and agree temporarily 
that there is this one thing 

839
00:39:32,560 --> 00:39:35,240
that everything else is made out
of, it makes a discipline 

840
00:39:35,240 --> 00:39:37,160
possible. 
It makes a science possible. 

841
00:39:37,520 --> 00:39:40,640
And so as soon as we come up 
with the idea of the atom and we

842
00:39:40,640 --> 00:39:42,920
coalesce around that idea, we 
get physics. 

843
00:39:43,120 --> 00:39:44,640
And then you have the idea of 
the cell. 

844
00:39:44,640 --> 00:39:47,880
Suddenly you have biology and 
the molecule gives us chemistry 

845
00:39:48,120 --> 00:39:51,640
and then in software we have 
this constantly shifting 

846
00:39:51,840 --> 00:39:55,040
picture, right O someone says 
it's the machine, it's the UNCH 

847
00:39:55,040 --> 00:39:59,160
card, it's this function, it's 
the procedure, it's the module, 

848
00:39:59,320 --> 00:40:02,960
it's this actor, the service, 
the object, the the micro 

849
00:40:02,960 --> 00:40:04,960
service. 
So it gets very tiring. 

850
00:40:05,200 --> 00:40:08,200
It changes every couple of years
and we're so we're very much in 

851
00:40:08,200 --> 00:40:11,800
that sort of earth, fire, wind, 
water, fears of what's 

852
00:40:11,800 --> 00:40:13,680
everything made of. 
We don't know, let's make 

853
00:40:13,680 --> 00:40:15,560
something up and see what 
happens. 

854
00:40:15,680 --> 00:40:18,640
And we still haven't really got 
to agree up to result there. 

855
00:40:18,640 --> 00:40:21,040
I mean, the service has been 
revolutionary for us. 

856
00:40:21,040 --> 00:40:22,600
I think it's given us cloud 
computing. 

857
00:40:22,600 --> 00:40:26,360
It's given us network computing.
But we're not quite settled yet.

858
00:40:26,360 --> 00:40:29,680
And in terms of architecture, 
then we, we have to ask the 

859
00:40:29,680 --> 00:40:32,320
question, what is the unit of 
architecture? 

860
00:40:32,680 --> 00:40:35,680
And what I found is that all of 
these units restrict our 

861
00:40:35,680 --> 00:40:38,640
conversations about architecture
because if you combine it with 

862
00:40:38,640 --> 00:40:42,400
this need to conceptualize, what
we try to do then is identify 

863
00:40:42,400 --> 00:40:46,120
these magic objects in the 
world, customer order, product, 

864
00:40:46,120 --> 00:40:48,440
all of these things. 
And we immediately try to map it

865
00:40:48,440 --> 00:40:53,200
to some kind of base unit, a 
service, an object deemisly 

866
00:40:53,200 --> 00:40:56,400
which we wasted decades on 
mapping all of these things. 

867
00:40:56,840 --> 00:40:59,760
And for architecture, I find 
that this can actually limit us,

868
00:40:59,760 --> 00:41:01,360
even if it's very, very 
necessary. 

869
00:41:01,720 --> 00:41:05,840
And So what I managed to do was 
to create a new kind of unit, 

870
00:41:06,040 --> 00:41:10,480
which I call the residue. 
And the residue isn't a single 

871
00:41:10,480 --> 00:41:12,200
thing. 
It's a little collection of 

872
00:41:12,200 --> 00:41:13,760
things. 
And it's a delta. 

873
00:41:13,760 --> 00:41:16,680
It's a little bit different than
all of the other residues around

874
00:41:16,680 --> 00:41:19,280
it. 
So the thing that demarcates is 

875
00:41:19,280 --> 00:41:23,280
difference. 
And these residues are basically

876
00:41:23,280 --> 00:41:25,640
our architecture as it 
collapses. 

877
00:41:26,080 --> 00:41:28,840
And So what we're interested in 
is describing our architecture 

878
00:41:28,840 --> 00:41:33,760
not as this static 2 dimensional
picture, but as a series of 

879
00:41:33,840 --> 00:41:37,520
collapses. 
So we assume with humility that 

880
00:41:37,520 --> 00:41:40,440
the architecture I've designed, 
the concepts that I've used, are

881
00:41:40,440 --> 00:41:42,240
going to collapse no matter what
happens. 

882
00:41:42,280 --> 00:41:44,360
And there's uncertainty as we 
move into the future. 

883
00:41:44,560 --> 00:41:46,840
My architecture collapses when 
it collapses. 

884
00:41:46,840 --> 00:41:49,880
The important question for me as
an architect is it's not to go, 

885
00:41:49,960 --> 00:41:51,080
ah, dying. 
I was wrong. 

886
00:41:51,080 --> 00:41:52,800
That should have been a better 
concept. 

887
00:41:52,800 --> 00:41:55,040
Let's start again. 
The question for me as an 

888
00:41:55,040 --> 00:41:57,160
architect is when it collapses, 
what do we do? 

889
00:41:57,280 --> 00:41:59,640
How do we get out of the hole? 
How do we keep running? 

890
00:41:59,880 --> 00:42:04,280
And So what we do is we randomly
simulate our architecture with 

891
00:42:04,280 --> 00:42:06,120
stress and we say make it 
collapse. 

892
00:42:06,160 --> 00:42:09,240
And when it collapses, we 
observe it and we say, if we'd 

893
00:42:09,240 --> 00:42:12,160
added this little thing, if we'd
done this from the start, it 

894
00:42:12,160 --> 00:42:14,200
wouldn't have collapsed. 
But we haven't built anything 

895
00:42:14,200 --> 00:42:16,320
yet, so let's add it. 
Noi that we know. 

896
00:42:16,320 --> 00:42:19,760
And what we do is we try to 
provoke constant collapse in our

897
00:42:19,760 --> 00:42:22,640
conceptual model of the world 
before we commit to an 

898
00:42:22,640 --> 00:42:25,280
architecture. 
And so we take our ideas. 

899
00:42:25,280 --> 00:42:28,080
So I have an idea in my head 
after I speak to a customer for 

900
00:42:28,080 --> 00:42:29,680
a few minutes. 
You have a customer that looks 

901
00:42:29,680 --> 00:42:31,040
like this. 
You have orders that look like 

902
00:42:31,040 --> 00:42:32,200
this. 
You have products that look like

903
00:42:32,200 --> 00:42:35,400
this, you have billing and 
everything that looks like this.

904
00:42:35,640 --> 00:42:39,040
Let's try and break every single
one of those concepts in as many

905
00:42:39,040 --> 00:42:41,600
ways as we can, randomly 
breaking them. 

906
00:42:42,000 --> 00:42:45,120
And as the models collapse, 
every time the model collapses, 

907
00:42:45,120 --> 00:42:47,440
we have to find a way to make 
sure that that collapse, if it 

908
00:42:47,440 --> 00:42:49,960
happened in real life, would be 
comfortable for us. 

909
00:42:50,480 --> 00:42:53,280
And every time we discover 
something that we can do that 

910
00:42:53,280 --> 00:42:56,880
makes that collapse comfortable,
we assemble that in a residue 

911
00:42:56,880 --> 00:42:59,880
and we set it in a little pile. 
And at the end of our work, we 

912
00:42:59,880 --> 00:43:03,640
have maybe hundreds of these 
residues and that describe how 

913
00:43:03,680 --> 00:43:05,920
our architecture was going to 
look, how it's going to collapse

914
00:43:05,920 --> 00:43:08,280
in different trouser and eggs in
a future that we're not quite 

915
00:43:08,280 --> 00:43:11,200
certain about. 
What this does is because of the

916
00:43:11,440 --> 00:43:14,880
internal mathematics of complex 
systems and the rigidity of 

917
00:43:14,880 --> 00:43:17,760
software. 
So there's a big gap between the

918
00:43:17,760 --> 00:43:20,480
number of possible states in a 
software application and the 

919
00:43:20,480 --> 00:43:22,640
number of possible states in a 
human system. 

920
00:43:22,640 --> 00:43:25,240
The human system is orders of 
magnitude, many orders of 

921
00:43:25,240 --> 00:43:27,640
magnitude bigger. 
And we can leverage that 

922
00:43:27,720 --> 00:43:31,560
distance between these two 
things to make sure that because

923
00:43:31,560 --> 00:43:34,720
the human system will keep 
returning to the same points 

924
00:43:34,720 --> 00:43:37,520
over and over again, something 
called attractors in complexity 

925
00:43:37,520 --> 00:43:41,080
science, we can actually 
manipulate the attractors in our

926
00:43:41,080 --> 00:43:44,360
software through these residues 
to get a system that we can 

927
00:43:44,360 --> 00:43:48,040
prove is more likely going to 
survive in unknown conditions. 

928
00:43:48,440 --> 00:43:50,400
And this is a huge step for 
architecture. 

929
00:43:50,960 --> 00:43:52,640
It's an entirely different way 
of thinking. 

930
00:43:52,640 --> 00:43:54,880
There's a lot of concepts there 
that probably just flew over the

931
00:43:54,880 --> 00:43:56,960
heads of most people. 
It's too many concepts. 

932
00:43:57,440 --> 00:43:59,720
It's something that you need to 
take a bit of time, read and 

933
00:43:59,720 --> 00:44:02,160
listen to the talks. 
The ideas that I'm talking about

934
00:44:02,160 --> 00:44:06,600
here are easily as awful as 
object orientation, right? 

935
00:44:06,600 --> 00:44:09,200
And we take a whole university 
term to suffer through that. 

936
00:44:09,200 --> 00:44:11,680
So this is about the same level 
of intensity. 

937
00:44:12,120 --> 00:44:15,520
But what happens is that we can 
actually mathematically show 

938
00:44:15,560 --> 00:44:18,160
that I've designed an 
architecture more likely to 

939
00:44:18,160 --> 00:44:21,880
survive unknown unknowns in the 
future than what we originally 

940
00:44:21,880 --> 00:44:24,520
started with. 
Just by stressing my model, just

941
00:44:24,520 --> 00:44:27,920
by stressing my concepts through
random simulation. 

942
00:44:28,280 --> 00:44:30,760
And once we get to the end of 
that journey, we realize that 

943
00:44:30,760 --> 00:44:33,480
what we have is this arcade, 
this foundational building block

944
00:44:33,480 --> 00:44:35,280
of an architecture. 
It's called a residue. 

945
00:44:35,280 --> 00:44:37,680
It doesn't look like a service 
or an object or anything like 

946
00:44:37,680 --> 00:44:39,640
that. 
It's more about a related number

947
00:44:39,640 --> 00:44:42,440
of components and how they act 
in a particular situation. 

948
00:44:43,000 --> 00:44:45,120
So it's a collection of little 
deltas. 

949
00:44:45,400 --> 00:44:46,760
And if you read the books, 
you'll see there's very 

950
00:44:46,800 --> 00:44:50,360
philosophical reasons why that 
all fits together very nicely. 

951
00:44:51,040 --> 00:44:53,000
So it's it's an enormous 
subject. 

952
00:44:53,000 --> 00:44:55,040
I think one of the things I've 
heard is someone said that, you 

953
00:44:55,040 --> 00:44:57,880
know, the only way you're going 
to get these ideas to succeed is

954
00:44:57,880 --> 00:45:02,000
if you can explain it like I'm 5
and I said to them that this is 

955
00:45:02,040 --> 00:45:05,040
absolutely not something that 
five year olds should be doing. 

956
00:45:05,120 --> 00:45:07,080
So I don't think that's the 
right way to go. 

957
00:45:07,240 --> 00:45:09,520
A 5 year olds can't do object 
orientation either. 

958
00:45:09,760 --> 00:45:11,640
Yeah. 
So it's, there's a lot going on 

959
00:45:11,640 --> 00:45:12,480
there. 
I understand that. 

960
00:45:12,480 --> 00:45:14,640
It's quite confusing. 
I've managed to put it together 

961
00:45:14,640 --> 00:45:17,360
in the talks on YouTube in a way
that's quite logical, which 

962
00:45:17,680 --> 00:45:20,160
brings 1 concept in after the 
other. 

963
00:45:20,160 --> 00:45:22,440
I don't think I succeeded in the
last three minutes of doing 

964
00:45:22,440 --> 00:45:24,960
that, so to be honest. 
Yeah, definitely. 

965
00:45:24,960 --> 00:45:28,240
It's a fascinating thing right 
there so many concepts and like 

966
00:45:28,240 --> 00:45:30,480
embed a lot of philosophical 
thinking as well. 

967
00:45:30,640 --> 00:45:35,320
So I think the way that you 
explain it in a long talks is 

968
00:45:35,320 --> 00:45:38,320
much better definitely, But I 
think it's still invite us to 

969
00:45:38,320 --> 00:45:41,280
actually dig deeper, right? 
I think the thing that I can 

970
00:45:41,280 --> 00:45:43,960
summarize maybe from the way you
explain just now, right, instead

971
00:45:43,960 --> 00:45:47,440
of thinking architecture is A1 
solution, right, You should 

972
00:45:47,440 --> 00:45:50,360
think in terms of multiple kind 
of options, which you call 

973
00:45:50,360 --> 00:45:53,600
residue, right? 
And each residue is a result of 

974
00:45:53,600 --> 00:45:57,040
some things that change in which
you mentioned architecture 

975
00:45:57,040 --> 00:45:59,440
collapse, right? 
And yeah, collapse because of a 

976
00:45:59,440 --> 00:46:02,520
certain stressor, right? 
It could be business change, it 

977
00:46:02,520 --> 00:46:05,200
could be some kind of cloud 
computing suddenly exists, 

978
00:46:05,200 --> 00:46:07,440
right? 
So certainly the way you design 

979
00:46:07,440 --> 00:46:10,080
software is different. 
So maybe there are lots more 

980
00:46:10,080 --> 00:46:13,040
paradigm that comes. 
And that's why maybe architect 

981
00:46:13,040 --> 00:46:15,560
needs to think in terms of 
multiple residues, right? 

982
00:46:16,000 --> 00:46:19,360
Series of residues such that we 
can come up with maybe an 

983
00:46:19,360 --> 00:46:22,920
evolution or a plan in which if 
something changes, you can kind 

984
00:46:22,920 --> 00:46:25,080
of like pick the residue that 
you have thought about. 

985
00:46:25,160 --> 00:46:27,560
And maybe that architecture is 
not so bad, right? 

986
00:46:27,800 --> 00:46:30,680
It can still survive whatever 
changes that you have thought 

987
00:46:30,680 --> 00:46:33,000
through before. 
So definitely for people who are

988
00:46:33,000 --> 00:46:36,000
interested in this kind of 
thinking, I invite you to 

989
00:46:36,440 --> 00:46:39,800
Barry's book and also watch 
maybe the past talks and 

990
00:46:39,800 --> 00:46:42,760
definitely hearing about this. 
What do you think are some 

991
00:46:42,760 --> 00:46:45,480
takeaways for us? 
Definitely learn more about it, 

992
00:46:45,480 --> 00:46:47,920
but what are some other 
practical things that you think 

993
00:46:47,920 --> 00:46:50,400
we can do? 
So there are two books out 

994
00:46:50,400 --> 00:46:52,560
there. 
No one is called Residues, and 

995
00:46:52,560 --> 00:46:55,680
that's very much based on how 
you practically attack an 

996
00:46:55,680 --> 00:46:59,280
architecture with these ideas. 
And that involves stressing your

997
00:46:59,280 --> 00:47:01,280
architecture. 
So you start off with a naive 

998
00:47:01,280 --> 00:47:04,920
architecture, which we all do. 
So by the time a customer gets 

999
00:47:04,920 --> 00:47:07,640
to the end of their second 
sentence, we've already designed

1000
00:47:07,640 --> 00:47:10,160
something in our heads, and you 
just start stressing, You start 

1001
00:47:10,160 --> 00:47:12,360
asking questions. 
What if a customer isn't doesn't

1002
00:47:12,360 --> 00:47:14,360
always look like this? 
What if an order changes? 

1003
00:47:14,360 --> 00:47:17,680
What if we have new products? 
What happens if my assumptions 

1004
00:47:17,680 --> 00:47:20,640
about the world are wrong and 
they're constantly changing? 

1005
00:47:21,040 --> 00:47:23,240
And what you naturally get out 
of that is lots and lots of 

1006
00:47:23,240 --> 00:47:25,720
these residues, these 
architectures that are slightly 

1007
00:47:25,720 --> 00:47:28,000
different and you're very, very 
interested in the high 

1008
00:47:28,000 --> 00:47:31,360
architecture collapses. 
Not so much in what it's made 

1009
00:47:31,360 --> 00:47:34,600
of, not so much in what's the 
perfect way to do this, Not so 

1010
00:47:34,600 --> 00:47:38,280
much in solving a particular 
problem, but how does this thing

1011
00:47:38,280 --> 00:47:40,040
collapse? 
How does it break? 

1012
00:47:40,040 --> 00:47:42,280
Where are the crumple zones that
I need to put into this 

1013
00:47:42,280 --> 00:47:45,680
architecture to make it stand 
up, to make it survive over a 

1014
00:47:45,680 --> 00:47:48,880
longer period of time on a high,
very high level? 

1015
00:47:49,200 --> 00:47:51,640
Humility, You're not going to 
get this right ever. 

1016
00:47:51,640 --> 00:47:55,400
It's always going to be wrong. 
And with that pessimism, OK, 

1017
00:47:55,440 --> 00:47:57,120
this is wrong, it's going to go 
wrong. 

1018
00:47:57,120 --> 00:47:59,720
How is it going to go wrong? 
What ways can I make this thing 

1019
00:47:59,720 --> 00:48:02,840
break? 
And that will allow you to 

1020
00:48:03,080 --> 00:48:06,880
formulate and capture what's 
happening in your head as an 

1021
00:48:06,880 --> 00:48:09,000
architect. 
The really interesting thing 

1022
00:48:09,000 --> 00:48:10,760
about these ideas is I've taught
this. 

1023
00:48:10,760 --> 00:48:13,160
I mean, I taught this to 600 
people last year. 

1024
00:48:13,760 --> 00:48:16,000
When I talk to really senior 
architects, people who've been 

1025
00:48:16,000 --> 00:48:19,040
around for a while and, you 
know, have the scars to prove it

1026
00:48:19,040 --> 00:48:22,040
and have built some big stuff, 
they will say, look, this, what 

1027
00:48:22,040 --> 00:48:24,600
you're describing here is 
exactly what we do. 

1028
00:48:24,600 --> 00:48:27,440
This is where you arrive at when
you've had a few decades, when 

1029
00:48:27,440 --> 00:48:30,240
you've seen a few things. 
This is how you start to think. 

1030
00:48:30,640 --> 00:48:33,680
Now, we all think like this, but
we all have different words for 

1031
00:48:33,680 --> 00:48:35,920
what we do. 
And when someone asks what is it

1032
00:48:35,920 --> 00:48:38,560
that you do, exactly the 
question I got, We can't explain

1033
00:48:38,560 --> 00:48:40,240
it, we don't know, but this is 
it. 

1034
00:48:40,280 --> 00:48:43,080
This is what we do. 
Is this random stressing that 

1035
00:48:43,080 --> 00:48:45,880
doesn't have to come from the 
mouth of a stakeholder, doesn't 

1036
00:48:45,880 --> 00:48:48,240
have to be related to 
probability or to proper 

1037
00:48:48,240 --> 00:48:50,520
engineering. 
It's more about the ability to 

1038
00:48:50,640 --> 00:48:54,160
consistently stress your 
conceptual model until you feel 

1039
00:48:54,160 --> 00:48:57,040
happy with it. 
And in the case of residuality, 

1040
00:48:57,240 --> 00:48:59,760
you stress it until you get to a
point where you can't break it 

1041
00:48:59,760 --> 00:49:02,800
anymore, and that's when you're 
ready to start implementing. 

1042
00:49:03,480 --> 00:49:06,040
So I, if I get right, you 
mention it as a criticality, 

1043
00:49:06,040 --> 00:49:07,440
right, the point where you 
think? 

1044
00:49:07,520 --> 00:49:10,640
Yeah, yeah. 
So what what I normally say is 

1045
00:49:10,640 --> 00:49:12,920
that the goal of a programmer is
correctness. 

1046
00:49:12,960 --> 00:49:14,520
We have to write code that's 
correct. 

1047
00:49:14,520 --> 00:49:16,360
It executes the same way every 
single time. 

1048
00:49:16,360 --> 00:49:18,760
It gives us the same results, 
the same inputs every single 

1049
00:49:18,760 --> 00:49:21,520
time. 
For an architect, the goal is 

1050
00:49:21,520 --> 00:49:25,160
criticality, as you say, and 
criticality is the ability of a 

1051
00:49:25,160 --> 00:49:29,560
system to survive things that 
aren't in specification thinks 

1052
00:49:29,560 --> 00:49:32,640
it hasn't been designed for. 
And I call this off spec 

1053
00:49:32,640 --> 00:49:34,600
architecture, which is a big 
part of our jobs. 

1054
00:49:34,600 --> 00:49:37,960
But we have to design a system 
that survives off spec and 

1055
00:49:38,000 --> 00:49:41,680
criticality is appropriate 
exists in biology and it's a 

1056
00:49:41,680 --> 00:49:43,760
function of the number of 
components and the number of 

1057
00:49:43,760 --> 00:49:46,520
links between the components. 
So if you have a biological 

1058
00:49:46,520 --> 00:49:49,760
system, which is very simple, 
very small number of components 

1059
00:49:49,760 --> 00:49:52,440
and links, what we would call a 
monolith, that system is 

1060
00:49:52,440 --> 00:49:55,400
generally not critical because 
it's considered weak. 

1061
00:49:55,400 --> 00:49:58,480
It's only got a few components. 
So if you are one of them, the 

1062
00:49:58,600 --> 00:50:01,800
creature dies in biology or the 
system crash, or the monolith 

1063
00:50:01,800 --> 00:50:05,880
crashes on the other side, you 
have your microservices, right? 

1064
00:50:05,880 --> 00:50:07,920
So you've got a very high number
of components, a very high 

1065
00:50:07,920 --> 00:50:10,480
number of links. 
And if you have a biological 

1066
00:50:10,480 --> 00:50:13,720
system like that, if you had 
one, it would be very hard to 

1067
00:50:13,720 --> 00:50:17,680
kill it in one go because it has
so many pieces and so many 

1068
00:50:17,680 --> 00:50:20,440
links. 
It'll find new ways to survive. 

1069
00:50:20,640 --> 00:50:21,960
And, and our brains are like 
this. 

1070
00:50:21,960 --> 00:50:25,080
They have so many components and
so many connections that you can

1071
00:50:25,080 --> 00:50:27,520
get a, you know, you can get a 
bang in the head and a bit of 

1072
00:50:27,520 --> 00:50:29,720
your brain stops working and 
another bit of your brain will 

1073
00:50:29,720 --> 00:50:31,280
pick up the slack and cover it 
for you. 

1074
00:50:31,280 --> 00:50:33,360
And that's sort of part of the 
goal of criticality. 

1075
00:50:33,800 --> 00:50:35,720
But the problem is that you can 
get to a point where you have 

1076
00:50:35,720 --> 00:50:38,840
too many components and too many
links when the system then 

1077
00:50:38,840 --> 00:50:42,480
collapses under the weight of 
its own management. 

1078
00:50:42,520 --> 00:50:45,920
OK, so in biological systems 
that turns up in one way as 

1079
00:50:45,920 --> 00:50:47,720
cancer. 
There's too many connections, 

1080
00:50:47,720 --> 00:50:49,360
too many things, too much can go
wrong. 

1081
00:50:49,480 --> 00:50:52,360
In another way, as in seeing 
energy needs. 

1082
00:50:52,360 --> 00:50:54,680
It's like you have all these 
components where it's very hard 

1083
00:50:54,680 --> 00:50:56,760
to kill you. 
You're going to have to eat all 

1084
00:50:56,760 --> 00:50:59,400
day every day to keep the energy
in that system. 

1085
00:50:59,480 --> 00:51:01,200
And it makes the system very, 
very vulnerable. 

1086
00:51:01,720 --> 00:51:04,480
Micro service people have 
already realized this. 

1087
00:51:04,680 --> 00:51:07,880
It's the big problem with micro 
services is that it is hard to 

1088
00:51:07,880 --> 00:51:09,560
kill the entire system at one 
go. 

1089
00:51:09,880 --> 00:51:12,960
But when something goes wrong, 
it takes like 3 weeks to figure 

1090
00:51:12,960 --> 00:51:15,960
out what happened and you've got
to sit reading logs in the 

1091
00:51:16,000 --> 00:51:18,280
middle of the night and what 
happened, why did it go wrong? 

1092
00:51:18,280 --> 00:51:20,640
We don't know. 
And the system will collapse 

1093
00:51:20,640 --> 00:51:22,360
under the weight of managing 
itself. 

1094
00:51:22,400 --> 00:51:24,760
For us, that's the cost of 
operations going up. 

1095
00:51:25,040 --> 00:51:27,920
So criticality is this magic 
lying in between the two where 

1096
00:51:27,920 --> 00:51:30,640
you have the right balance of 
components and links and 

1097
00:51:30,640 --> 00:51:32,320
residuality. 
These ideas that we're talking 

1098
00:51:32,320 --> 00:51:34,120
about, all this focus on 
philosophy. 

1099
00:51:34,120 --> 00:51:37,160
The point of all of this is to 
be able to drive our systems to 

1100
00:51:37,160 --> 00:51:40,440
that point of criticality where 
the system has the right balance

1101
00:51:40,440 --> 00:51:44,560
of components and linkage to 
survive off spec, but not so 

1102
00:51:45,040 --> 00:51:47,680
many that it's over engineered 
that it collapses under the 

1103
00:51:47,680 --> 00:51:50,920
weight of its own management. 
This is a very important thing 

1104
00:51:50,920 --> 00:51:54,080
for us because generally the way
we do this is we just guess at 

1105
00:51:54,080 --> 00:51:55,880
it. 
And this gives us a sort of a 

1106
00:51:55,880 --> 00:51:59,600
very pragmatic and very 
structured way of getting to 

1107
00:51:59,600 --> 00:52:02,320
have we actually achieved 
criticality in the system or 

1108
00:52:02,320 --> 00:52:04,600
have we gone too far? 
Have we all overshot? 

1109
00:52:04,840 --> 00:52:07,440
And so this protects us from 2 
very dangerous things. 

1110
00:52:07,640 --> 00:52:10,560
The first is over engineering, 
which we love, and the second is

1111
00:52:10,560 --> 00:52:13,160
under engineering, which we we 
have a tendency to start 

1112
00:52:13,160 --> 00:52:16,560
building systems without really 
exploring the conceptual models 

1113
00:52:17,160 --> 00:52:19,640
that we work with. 
Thanks for explaining that. 

1114
00:52:19,920 --> 00:52:22,360
So what about takeaways for 
non-technical people? 

1115
00:52:22,360 --> 00:52:24,520
Maybe those business 
stakeholders or people who 

1116
00:52:24,520 --> 00:52:26,800
always complain that the 
software engineering team or the

1117
00:52:26,800 --> 00:52:30,040
architects cannot come up with 
some solution that is stable and

1118
00:52:30,040 --> 00:52:33,120
can survive over time. 
Yeah, so this is one of the 

1119
00:52:33,120 --> 00:52:36,560
strange side effects of my work.
I started talking about these 

1120
00:52:36,560 --> 00:52:38,840
things and I thought, well, 
architects should come and 

1121
00:52:38,840 --> 00:52:42,440
listen to me, and then I would 
go to companies and developers 

1122
00:52:42,440 --> 00:52:44,200
were coming as well. 
And they were really interested 

1123
00:52:44,200 --> 00:52:45,960
in what I was saying, though. 
Well, that's good. 

1124
00:52:45,960 --> 00:52:48,120
That's interesting. 
And as time went on, I started 

1125
00:52:48,120 --> 00:52:50,840
to notice agile coaches turning 
up. 

1126
00:52:51,000 --> 00:52:53,360
And I was like, oh, do you know,
do you know who I am? 

1127
00:52:53,360 --> 00:52:54,440
Do you know what I'm going to 
talk about? 

1128
00:52:54,440 --> 00:52:57,840
This is really not interesting. 
And then more and more managers 

1129
00:52:57,840 --> 00:53:00,280
were turning up, but business 
people who had nothing to do 

1130
00:53:00,280 --> 00:53:03,080
with software started to turn up
and listen to my talks. 

1131
00:53:03,680 --> 00:53:06,560
I've noticed that these ideas 
are really popular with them 

1132
00:53:06,560 --> 00:53:08,760
because once they start to 
understand this idea about the 

1133
00:53:08,760 --> 00:53:11,680
default philosophy of software 
architecture, they start to 

1134
00:53:11,680 --> 00:53:14,720
understand that uncertainty is 
at the core of this and that 

1135
00:53:14,720 --> 00:53:18,720
requirements and kneeling down 
all of these old waterfall 

1136
00:53:18,720 --> 00:53:22,280
engineering ideas and being more
strict isn't the right answer. 

1137
00:53:22,280 --> 00:53:25,120
That there needs to be more 
looseness, essentially. 

1138
00:53:25,320 --> 00:53:27,520
And it's a different kind of 
agility that you start to get 

1139
00:53:27,520 --> 00:53:32,600
when you architect like this. 
It starts to get really easy to 

1140
00:53:32,600 --> 00:53:35,280
communicate with architects and 
with business people. 

1141
00:53:35,280 --> 00:53:38,400
And I've actually coached senior
executives and this is how you 

1142
00:53:38,400 --> 00:53:40,560
manage your architects. 
This is why they're so weird. 

1143
00:53:40,640 --> 00:53:43,120
This is how they think. 
This is how you talk to them to 

1144
00:53:43,120 --> 00:53:45,800
get the most out of them. 
This is why they get frustrated 

1145
00:53:45,800 --> 00:53:49,160
with you a lot of times. 
And, and a lot of it is about 

1146
00:53:49,160 --> 00:53:52,360
getting them to understand this 
organizational complexity and 

1147
00:53:52,360 --> 00:53:55,480
the structure and order of the 
machines we work with are two so

1148
00:53:55,480 --> 00:53:58,440
wildly, completely different 
things that they cause all kinds

1149
00:53:58,440 --> 00:54:02,760
of contradictions and problems. 
And then this leads to a 

1150
00:54:02,760 --> 00:54:05,600
rebuilding of bridges between 
architecture and development, 

1151
00:54:05,600 --> 00:54:08,640
between architecture and the 
executive function, between 

1152
00:54:08,640 --> 00:54:11,440
stakeholders and business 
people, and getting them to 

1153
00:54:11,440 --> 00:54:14,640
understand that it's not as 
simple as it looks. 

1154
00:54:14,720 --> 00:54:17,640
These ideas actually trigger a 
lot of thinking when business 

1155
00:54:17,640 --> 00:54:20,920
people realize that what we do 
as architects is closer to what 

1156
00:54:20,920 --> 00:54:25,600
they do in this uncertainty, but
that we are kind of limited by 

1157
00:54:25,600 --> 00:54:29,440
our educations, by this logical 
way of looking at the world and 

1158
00:54:29,440 --> 00:54:31,600
getting them to understand. 
That opens up a lot of doors. 

1159
00:54:32,480 --> 00:54:34,160
Thank you for introducing this 
concept. 

1160
00:54:34,160 --> 00:54:36,480
I think I can see some 
encouraging signs, right? 

1161
00:54:36,480 --> 00:54:39,880
Where maybe the architect, 
software engineering team and 

1162
00:54:39,880 --> 00:54:42,560
the business stakeholders, they 
can empathize with each other, 

1163
00:54:42,560 --> 00:54:44,200
right? 
So business stakeholders can 

1164
00:54:44,200 --> 00:54:47,880
understand why software 
sometimes it's not so easy to 

1165
00:54:47,920 --> 00:54:50,960
actually evolve and change. 
And also for software engineers 

1166
00:54:50,960 --> 00:54:53,960
and architects to know that why 
business is complex and keeps 

1167
00:54:53,960 --> 00:54:55,720
changing, right? 
We always complain if, let's 

1168
00:54:55,720 --> 00:54:58,760
say, you know, your requirement 
is not up to what you describe a

1169
00:54:58,960 --> 00:55:00,320
few months ago, for example, 
right? 

1170
00:55:00,360 --> 00:55:01,880
And why we need to change 
things. 

1171
00:55:02,080 --> 00:55:05,120
So I think hopefully there's one
day that we can align and kind 

1172
00:55:05,120 --> 00:55:07,640
of like empathize each other and
we can come up with a much 

1173
00:55:07,640 --> 00:55:09,320
better software and architecture
altogether. 

1174
00:55:09,760 --> 00:55:11,800
So Barry, it's been a pleasant 
conversation. 

1175
00:55:11,920 --> 00:55:14,600
Before I let you go, I have one 
last question that normally I 

1176
00:55:14,600 --> 00:55:17,200
ask for all my guests. 
I call this the three technical 

1177
00:55:17,200 --> 00:55:19,360
leadership wisdom. 
So think of it like advice that 

1178
00:55:19,360 --> 00:55:21,520
you want to give to us. 
Maybe if you can share your 

1179
00:55:21,520 --> 00:55:23,440
version of three technical 
leadership wisdom. 

1180
00:55:24,200 --> 00:55:29,880
OK, so the first one I've stolen
from ATV character called Logan 

1181
00:55:29,880 --> 00:55:31,400
Roy. 
I don't know if you've seen the 

1182
00:55:31,400 --> 00:55:34,840
TV show Succession. 
Logan Roy is a billionaire, 

1183
00:55:34,880 --> 00:55:39,280
media magnets, a very angry man,
but very successful man, very 

1184
00:55:39,280 --> 00:55:42,080
shrewd. 
And he's trying to teach his 

1185
00:55:42,080 --> 00:55:44,760
children because he's very old. 
He's trying to teach his 

1186
00:55:44,760 --> 00:55:46,760
children how to take over his 
business. 

1187
00:55:46,960 --> 00:55:49,520
It doesn't go very well. 
It takes Four Seasons, and they 

1188
00:55:49,520 --> 00:55:52,240
all hate each other. 
And he says in one scene that 

1189
00:55:52,240 --> 00:55:55,200
really stuck in my head, that 
had me screaming, yes, at the 

1190
00:55:55,200 --> 00:55:56,720
TV, he's talking to his 
daughter. 

1191
00:55:56,720 --> 00:55:58,880
He's trying to teach her how to 
live in this world where 

1192
00:55:58,880 --> 00:56:02,480
everything is chaos. 
And he said this is the rule. 

1193
00:56:02,520 --> 00:56:08,560
You know, Everything Everywhere 
is moving, always and forever. 

1194
00:56:09,040 --> 00:56:12,680
And that is the first piece of 
wisdom that every architect 

1195
00:56:12,680 --> 00:56:15,640
needs to grasp immediately. 
And that's the difference 

1196
00:56:15,640 --> 00:56:17,280
between architecture and 
programming. 

1197
00:56:17,680 --> 00:56:21,480
Everything, everywhere is 
moving, always and forever. 

1198
00:56:21,680 --> 00:56:24,320
If you learn that, then, and if 
you understand that as an 

1199
00:56:24,320 --> 00:56:26,960
architect, everything gets 
easier. 

1200
00:56:27,280 --> 00:56:30,600
And as you see in the book, the 
tragedy is that we waste half 

1201
00:56:30,600 --> 00:56:33,200
our careers trying to do what 
every other architect has ever 

1202
00:56:33,200 --> 00:56:36,480
done and hold it all still. 
If you try to hold it still, it 

1203
00:56:36,480 --> 00:56:40,080
will eventually wash you away. 
The second thing in order to be 

1204
00:56:40,080 --> 00:56:44,000
able to succeed with that is to 
advise everyone who wants to be 

1205
00:56:44,000 --> 00:56:48,120
an architect to learn how to and
to practice thinking for 

1206
00:56:48,120 --> 00:56:50,320
yourself. 
Thinking for yourself is 

1207
00:56:50,320 --> 00:56:53,840
probably the most important 
skill you can have as an 

1208
00:56:53,840 --> 00:56:56,600
architect. 
You cannot just think like 

1209
00:56:56,600 --> 00:56:59,200
everyone else because you'll end
up looking at problems that you 

1210
00:56:59,200 --> 00:57:02,120
have to solve that are unique to
your context, to your customer, 

1211
00:57:02,120 --> 00:57:04,360
to your environment, and you'll 
try to solve it with someone 

1212
00:57:04,360 --> 00:57:06,920
else's thinking. 
Lifting and shifting someone 

1213
00:57:06,920 --> 00:57:10,440
else's ideas is not thinking. 
It's not architecture. 

1214
00:57:10,800 --> 00:57:13,320
And we get in this industry 
because there's so much 

1215
00:57:13,320 --> 00:57:15,920
insecurity. 
We get really trapped easily in 

1216
00:57:15,920 --> 00:57:18,440
dogma. 
We want to believe in something,

1217
00:57:18,440 --> 00:57:20,880
we need to believe in something,
and we believe in these things a

1218
00:57:20,880 --> 00:57:23,160
little bit too much, a little 
bit too often. 

1219
00:57:23,760 --> 00:57:27,640
There's an excellent book called
Lateral Thinking by Edward de 

1220
00:57:27,640 --> 00:57:32,000
Bono that teaches you how to 
really think outside of dogma, 

1221
00:57:32,000 --> 00:57:35,200
outside of narrow confines, that
I recommend to all architects. 

1222
00:57:35,600 --> 00:57:39,160
And the third thing, and this is
probably the most important, is 

1223
00:57:39,160 --> 00:57:43,040
that it has to be fun. 
You have to think this is fun. 

1224
00:57:43,360 --> 00:57:48,280
If you come into architecture as
a developer and you're upset 

1225
00:57:48,360 --> 00:57:50,680
because everything keeps moving 
and everything keeps changing, 

1226
00:57:50,680 --> 00:57:53,200
it won't stay stale and you 
can't develop your perfect 

1227
00:57:53,200 --> 00:57:56,280
customer object and you're 
blaming everyone else and you 

1228
00:57:56,280 --> 00:57:58,680
make your stakeholders feel like
we know the reason that you 

1229
00:57:58,680 --> 00:58:00,600
can't do this is because you're 
bad at this. 

1230
00:58:00,960 --> 00:58:03,280
If it's not fun, then don't do 
it. 

1231
00:58:03,560 --> 00:58:06,120
It's architecture is really, 
really difficult. 

1232
00:58:06,480 --> 00:58:09,520
And there's a certain kind of 
person who's possibly a little 

1233
00:58:09,520 --> 00:58:12,480
bit twisted like me, who thinks 
that I'd love it whenever 

1234
00:58:12,480 --> 00:58:14,840
everything's moving and changing
and it's crazy and it won't 

1235
00:58:14,840 --> 00:58:17,680
stand still and nothing works 
and, and it's frustrating. 

1236
00:58:17,680 --> 00:58:21,120
I actually think that's fun. 
And I've noticed that the people

1237
00:58:21,120 --> 00:58:23,400
who've been really, really 
successful as architects in 

1238
00:58:23,400 --> 00:58:26,680
their careers, they also think 
it's fun and they get bored. 

1239
00:58:26,680 --> 00:58:29,360
If everything's easy and 
predictable and it's a crud up, 

1240
00:58:29,360 --> 00:58:32,480
you're like, why am I here? 
You know, we want it to be 

1241
00:58:32,480 --> 00:58:34,840
messy. 
We want it to constantly move. 

1242
00:58:34,840 --> 00:58:38,560
And it's really important that 
you find architecture fun. 

1243
00:58:38,760 --> 00:58:42,840
And if it's not fun, then being 
an engineer is a perfectly 

1244
00:58:42,840 --> 00:58:46,680
acceptable career, and a 
rewarding career is good work. 

1245
00:58:46,840 --> 00:58:49,640
But trying to make architecture 
like engineering is where all 

1246
00:58:49,640 --> 00:58:53,960
the suffering begins. 
So having fun is probably the 

1247
00:58:53,960 --> 00:58:56,720
most important thing that any of
us can do in our careers, I 

1248
00:58:56,800 --> 00:58:59,240
think. 
Wow, lovely wisdom, right? 

1249
00:58:59,240 --> 00:59:01,560
So definitely, everything is 
moving, everything is chaos, 

1250
00:59:01,560 --> 00:59:03,640
right? 
So think laterally, right? 

1251
00:59:03,640 --> 00:59:05,760
So think outside the box, think 
for yourself. 

1252
00:59:06,000 --> 00:59:08,000
And the last thing is, you know,
make it fun, right? 

1253
00:59:08,000 --> 00:59:10,720
So you don't want to suffer 
because of all the changes that 

1254
00:59:10,720 --> 00:59:12,720
is happening without you 
controlling it. 

1255
00:59:13,200 --> 00:59:15,960
So Barry, for people who love 
this conversation, they want to 

1256
00:59:15,960 --> 00:59:18,400
reach out to you, connect with 
you or ask you more questions. 

1257
00:59:18,400 --> 00:59:20,400
Is there a place where they can 
find you online? 

1258
00:59:21,040 --> 00:59:24,520
Yes, I'm I'm very active on 
LinkedIn, which I think a lot of

1259
00:59:24,520 --> 00:59:28,080
people might have seen already. 
I do all of my thinking outlawed

1260
00:59:28,160 --> 00:59:32,000
for better or worse, mostly on 
LinkedIn these days because it's

1261
00:59:32,000 --> 00:59:35,080
become the most stable social 
media platform for doing these 

1262
00:59:35,080 --> 00:59:38,520
kind of things. 
I'm also on blue sky, but I'm 

1263
00:59:38,520 --> 00:59:41,880
more often LinkedIn allows more 
sort of long form conversations 

1264
00:59:41,880 --> 00:59:43,520
and articles and things like 
that. 

1265
00:59:44,000 --> 00:59:46,720
I'm sure you'll share the links.
There are books and there are 

1266
00:59:46,720 --> 00:59:50,680
videos that go into detail on 
the kind of technical details on

1267
00:59:50,720 --> 00:59:52,320
residues. 
Now those things work. 

1268
00:59:52,680 --> 00:59:57,040
I'm on stage constantly all over
the place, so there'll be an 

1269
00:59:57,040 --> 01:00:00,440
opportunity to come and see me, 
talk and talk to me if anyone 

1270
01:00:00,440 --> 01:00:04,400
wants to do that across most of 
the globe across the next year 

1271
01:00:04,400 --> 01:00:06,520
or so. 
Yeah, very nice. 

1272
01:00:06,800 --> 01:00:09,320
So I think if people are 
interested in what we just 

1273
01:00:09,320 --> 01:00:12,760
discussed, I highly recommend 
various books and also talks 

1274
01:00:12,760 --> 01:00:15,280
right in the conferences. 
If you can check out here's 

1275
01:00:15,280 --> 01:00:17,920
presentation live, definitely 
highly recommend that. 

1276
01:00:18,240 --> 01:00:19,840
So Barry, thank you so much for 
your time. 

1277
01:00:20,120 --> 01:00:22,880
I'm sure we all learned 
something new about architecture

1278
01:00:22,880 --> 01:00:24,160
today. 
Thank you.

