WEBVTT

1
00:00:01.000 --> 00:00:04.759
How'd you like to listen to dot
net Rocks with no ads? Easy?

2
00:00:05.320 --> 00:00:09.400
Become a patron for just five dollars
a month. You get access to a

3
00:00:09.480 --> 00:00:14.240
private RSS feed where all the shows
have no ads. Twenty dollars a month,

4
00:00:14.240 --> 00:00:18.399
we'll get you that and a special
dot net Rocks patron mug. Sign

5
00:00:18.440 --> 00:00:23.679
up now at Patreon dot dot net
rocks dot com. Hey Carlin Richard here.

6
00:00:24.039 --> 00:00:28.480
As you may have heard, NDC
is back offering their incredible in person

7
00:00:28.559 --> 00:00:32.840
conferences around the world, and we'd
like to tell you about them. NDC

8
00:00:32.960 --> 00:00:38.840
Copenhagen is happening August twenty seventh through
the thirty first. Go to NDC Copenhagen

9
00:00:38.960 --> 00:00:44.679
dot com for more information. NDC
Porto is happening October sixteenth through the twentieth.

10
00:00:44.960 --> 00:00:49.039
Go to Eddcporto dot com to register
and check out the full lineup of

11
00:00:49.079 --> 00:00:54.200
conferences at NDC conferences dot com.
Hey there, this is Jeff Fritz,

12
00:00:54.399 --> 00:00:58.759
the purple blazer guy from Microsoft,
letting you in on a little secret about

13
00:00:58.799 --> 00:01:03.479
my friend Carl Frank. You know, the guy who started dot net Rocks,

14
00:01:03.520 --> 00:01:07.000
the first podcast about dot net in
two thousand and two. The guy

15
00:01:07.040 --> 00:01:12.400
who's been teaching Blazer on YouTube since
twenty twenty. Yeah that Carl Franklin.

16
00:01:14.280 --> 00:01:18.200
Well, Carl's joined up with the
folks from Code in a Castle to teach

17
00:01:18.280 --> 00:01:22.239
a week long hands on Blazer class
at Are you ready to get this?

18
00:01:22.840 --> 00:01:29.239
At a castle slash villa in Tuscany. It's sort of a luxury vacation with

19
00:01:29.319 --> 00:01:36.680
Blazer learning built in. Carl's calling
it the Blazer master Class. You'll learn

20
00:01:36.719 --> 00:01:40.680
Blazer from the ground up, finishing
the week with the ability to build and

21
00:01:40.719 --> 00:01:46.439
deploy Blazer applications. Since the training
happens for only four hours in the morning

22
00:01:46.560 --> 00:01:49.439
over six days, you can bring
your significant other, your partner with you

23
00:01:49.920 --> 00:01:56.799
and you should right This part of
Italy is absolutely beautiful. There's so much

24
00:01:56.840 --> 00:02:01.040
to see and do and and Larry
and Marco from Code into Castle are organizing

25
00:02:01.159 --> 00:02:06.760
daily activities both at the castle and
in the area. The castle is in

26
00:02:06.799 --> 00:02:12.400
the Marema, a less touristed region
of Tuscany, offering both classic Tuscan hill

27
00:02:12.520 --> 00:02:16.960
country as well as easy access to
the Etruscan Riviera, with sublime local food,

28
00:02:17.400 --> 00:02:23.719
wine and olive oil around every corner. Breakfast is included every day.

29
00:02:23.840 --> 00:02:28.199
There will be two communal dinners at
the Castle book ending the experience and most

30
00:02:28.280 --> 00:02:32.439
other meals and all activities are included. And did I mention you'll learn Blazer

31
00:02:32.800 --> 00:02:38.840
in person from Carl Franklin. Listen, space is limited and for very good

32
00:02:38.840 --> 00:02:43.960
reason. This is quality training in
a beautiful setting. Go to code in

33
00:02:44.080 --> 00:02:52.199
Acastle dot com slash Blazer twenty twenty
three that's bla z R two zero two

34
00:02:52.400 --> 00:02:57.759
three to take advantage of this amazing
opportunity to join Carl in Tuscany for an

35
00:02:57.840 --> 00:03:04.039
unforgettable week of led dulce vita while
advancing your programming skills in this important new

36
00:03:04.159 --> 00:03:21.479
technology. Hey, guess what's dot
net and rocks. I'm Carl Franklin and

37
00:03:21.560 --> 00:03:25.560
I'm Richard Campbell, and we're bad. We're doing the thing, doing the

38
00:03:25.560 --> 00:03:30.680
thing. The arts off the walls. Oh, I was gonna ask,

39
00:03:30.759 --> 00:03:34.280
you know, in the in the
long running, you know, slowly packing

40
00:03:34.360 --> 00:03:38.560
up the house, all the arts
off the walls except the two really big

41
00:03:38.599 --> 00:03:42.439
pieces, do you I don't even
remember the totem Oh yeah, yeah,

42
00:03:42.479 --> 00:03:46.039
yeah, photographed Rodney Rodney Lowe eight
foot by four and a half feet.

43
00:03:46.080 --> 00:03:53.120
Ask me how I know? Well, and who's got a wall big enough

44
00:03:53.159 --> 00:03:54.360
for it? Right? So we're
really concerned. I don't want to put

45
00:03:54.360 --> 00:04:00.039
it into storage. But our friend
ken All's dad has a place some big

46
00:04:00.120 --> 00:04:02.599
high wall, So I said,
would you take care of this for me?

47
00:04:02.639 --> 00:04:05.840
And he's like, yeah, Now
I have to pay a team to

48
00:04:05.879 --> 00:04:12.520
build a scaffold to take it down
and then take it up there, build

49
00:04:12.520 --> 00:04:15.919
another scaffold and put it back up. But you know, at least it's

50
00:04:15.960 --> 00:04:18.560
going to a good place. I
mean, maybe someday we'll build another house

51
00:04:18.600 --> 00:04:21.480
that has a wall big enough for
this thing. We do love the piece.

52
00:04:23.040 --> 00:04:26.279
Yeah, it's enormous. You don't
want it in storage though, right.

53
00:04:26.519 --> 00:04:28.519
I don't want to put it in
storage. And it's enough. I

54
00:04:28.560 --> 00:04:30.120
mean just cleaning up all the art
or and the rest of the walls.

55
00:04:30.160 --> 00:04:33.120
It's like a lot of this is
going to get stored away, but stored

56
00:04:33.160 --> 00:04:38.800
away under the stairs kind of thing, not something so gigantic that it's going

57
00:04:38.839 --> 00:04:43.439
to crush under its own weight.
Right. Well, that's great news.

58
00:04:44.360 --> 00:04:57.800
I have some news for better No
frameworks for all the crazy music got well

59
00:04:57.879 --> 00:05:02.319
last night. Okay, so this
is the twenty eighth, right, so

60
00:05:02.439 --> 00:05:05.279
last night, this is the twenty
eighth. So last night I was in

61
00:05:05.360 --> 00:05:11.480
New Hampshire with our friends Patrick Hines
and Duane Laflotte. Oh I know those

62
00:05:11.519 --> 00:05:14.959
guys. Yeah. So we do
this little show called Security this Week.

63
00:05:15.199 --> 00:05:20.920
Nice and it is our one hundredth
show. Who congratulations. Yeah, I

64
00:05:21.000 --> 00:05:25.480
know I've done this hundred thing a
couple of times once or twice. Yeah,

65
00:05:25.519 --> 00:05:27.839
it's a great milestone, right,
I mean, it's just there's not

66
00:05:27.879 --> 00:05:30.600
that many podcasts you get to one
hundred episodes. Yeah. So the thing

67
00:05:30.680 --> 00:05:34.279
I want to tell everybody if you
haven't heard Security this Week is be prepared

68
00:05:34.319 --> 00:05:44.120
to laugh. We make tragedy fun. We talk about all the hacks and

69
00:05:44.519 --> 00:05:48.600
you know, ransomware and all the
attacks that have happened over the week,

70
00:05:49.399 --> 00:05:57.680
and often there is a chance to
laugh at something. So and it's necessary

71
00:05:57.759 --> 00:06:00.680
for that for that kind of content, Oh for sure, because it's so

72
00:06:00.800 --> 00:06:05.920
dry it can be without a doubt, And certainly when I do security related

73
00:06:05.959 --> 00:06:09.680
shows on run As. I think
one of my top ten shows of all

74
00:06:09.759 --> 00:06:15.759
time is a show with Dana Ebb
walking through what it took to recover from

75
00:06:15.759 --> 00:06:18.600
a ransomware attack with a company.
Yeah, like it's like six months,

76
00:06:18.600 --> 00:06:23.879
Like that's reality. Yeah. One
of the stories that we talked about this

77
00:06:23.920 --> 00:06:30.079
week. Is Microsoft putting anti ransomware
stuff in Windows eleven. Yeah, Yeah,

78
00:06:30.240 --> 00:06:32.079
they're trying to stem that tide,
just make it that much harder.

79
00:06:32.199 --> 00:06:35.480
Well, in the end, it's
always privilege escalation, right, Yeah,

80
00:06:35.519 --> 00:06:40.240
so another not to plug run as
left, right, and center. But

81
00:06:40.240 --> 00:06:43.600
I just did a show with Sammy
Laho where we talked about the fact that

82
00:06:43.720 --> 00:06:48.560
multi factor authentications work so well that
the number one exploit for ransomware is no

83
00:06:48.639 --> 00:06:54.920
longer fishing, it's on patched servers. Yeah, and so now we're having

84
00:06:54.959 --> 00:07:00.040
this conversation about you can't afford the
time to test the patches before you deploy

85
00:07:00.120 --> 00:07:04.199
him. The risk is higher.
So it's better to just deploy the patch

86
00:07:04.279 --> 00:07:09.000
and deal with the occasional failure from
that than it is to be exposed to

87
00:07:09.040 --> 00:07:12.199
ransomware because you haven't patched immediately.
Oh my god, I gotta I gotta

88
00:07:12.240 --> 00:07:15.439
mention this one and we'll get We'll
get to Thomas in a minute. I

89
00:07:15.439 --> 00:07:18.639
know he's chopped at the bit.
But one of the things that came out

90
00:07:18.680 --> 00:07:30.240
this week was an absolutely undetectable vulnerability
in AMD raise on whatever. There's z

91
00:07:30.879 --> 00:07:42.000
rising AMD rising chips CPUs where you
can take over without any privilege escalation.

92
00:07:42.639 --> 00:07:47.519
You can take over every application or
access every application that is running, even

93
00:07:47.560 --> 00:07:51.399
in a cloud scenario, which is
scary. Yeah, I think you're talking

94
00:07:51.439 --> 00:07:56.279
about zen bleed. Zen bleed.
Yeah, and zenbilied is basically the same

95
00:07:56.319 --> 00:08:01.040
exploit as meltdown in specter on the
Intel side. I mean, they're not

96
00:08:01.199 --> 00:08:05.959
in the wild. It's a theoretical
exploit. Yeah, it's you know,

97
00:08:05.000 --> 00:08:09.759
based on on CPU cashing, so
it's kind of random. But there is

98
00:08:09.800 --> 00:08:13.120
a firmware update, so they've gotta
they gotta fix it. And the and

99
00:08:13.120 --> 00:08:16.319
the trade, of course is costume
performance. They're gonna slow down, that's

100
00:08:16.399 --> 00:08:18.600
right, They're gonna because they're managing
scity cat. And this is the same

101
00:08:18.600 --> 00:08:22.319
problem that we had with you know, specter and meltdown. And I reminded

102
00:08:22.360 --> 00:08:26.800
that AMD made fun of Intel at
the time, oh yeah, and said,

103
00:08:26.839 --> 00:08:28.959
you know, this would never happen
to our CPUs, just like Apple

104
00:08:30.079 --> 00:08:33.720
made fun of Windows in the day. You know, we never get hacked.

105
00:08:33.919 --> 00:08:35.480
That would never happen. That would
never happen. You know, do

106
00:08:35.519 --> 00:08:41.039
not do not throw rocks. It
is all glasshouses. The gods of vengeance

107
00:08:41.080 --> 00:08:45.600
and irony are hitting you with some
SmackDown. Yeah, they will. They

108
00:08:45.679 --> 00:08:52.159
are upon you anyway. I wish
them well. Get your microcode patched up,

109
00:08:52.200 --> 00:08:54.720
you'll be okay. And listen to
Security this Week and it's episode one

110
00:08:54.759 --> 00:08:58.679
hundred this week Security this Week dot
Com and congrats to you guys. That's

111
00:08:58.679 --> 00:09:03.360
awesome. Yeah, so who's talking
to us today? Richard Campbell grabbed a

112
00:09:03.360 --> 00:09:07.039
comment top A show is eighteen forty
six. Boy, that's a big number.

113
00:09:07.399 --> 00:09:09.120
This is the show we do with
Michael Perry when we're talking about immutable

114
00:09:09.200 --> 00:09:13.519
architecture. You know, we're going
to be upping our architecture game today.

115
00:09:13.639 --> 00:09:18.120
So I figured I would make I
would refer to a previous architecture show because

116
00:09:18.399 --> 00:09:20.519
Michael Smail this is only a couple
of months ago wrote this comment. He

117
00:09:20.559 --> 00:09:24.200
said, Hey, great show,
guys. Especially loved the bit about the

118
00:09:24.320 --> 00:09:30.279
partial refunds, which caused all sorts
of fun in my workplace. You know

119
00:09:30.360 --> 00:09:33.200
this idea, you know, transactions
are immutable kind of thing, and it's

120
00:09:33.240 --> 00:09:35.440
like, okay, but see this
invoice. We're going to give back some

121
00:09:35.440 --> 00:09:37.759
of the money for that. Like
you've got to plan that in just like

122
00:09:37.840 --> 00:09:41.240
back orders, all of that stuff. It's these are business cases to have

123
00:09:41.279 --> 00:09:46.360
to show up in your architecture fantastic
two to hear about operational transformation, which

124
00:09:46.360 --> 00:09:50.600
has eluded my memory since I first
heard about it, and a Mobile develop

125
00:09:50.600 --> 00:09:54.200
our conference in New Zealand. I
will be listening to this one over again,

126
00:09:54.720 --> 00:09:58.399
and that I find really interesting,
right, Like there's and certainly Michael

127
00:09:58.440 --> 00:10:03.120
Perry, you know, that was
some dense material we got from him.

128
00:10:03.279 --> 00:10:07.799
Probably takes a few listens to really
pick up all the detail everything that Michael

129
00:10:07.799 --> 00:10:11.240
said. You can listen to that
while you're driving your X Wing Fighter around

130
00:10:11.279 --> 00:10:13.399
the death Star. There you go, yeah, because I know he does.

131
00:10:16.480 --> 00:10:18.600
Michael, thank you so much for
you're commenting. A copy of music

132
00:10:18.720 --> 00:10:20.639
Cobi is on its way to you. And if you'd like a copy of

133
00:10:20.720 --> 00:10:24.159
Music Cobi, write a comment on
the website at dot net rocks dot com

134
00:10:24.240 --> 00:10:26.159
or on the facebooks to publish every
show there. And if you comment there

135
00:10:26.200 --> 00:10:28.600
and we read on the show,
we'll say Jay, copy of Music Cobi.

136
00:10:28.879 --> 00:10:31.919
And it occurs to me that I
can't say you can follow us on

137
00:10:31.960 --> 00:10:35.639
Twitter anymore because it's not called Twitter. Yeah, the social media service formula

138
00:10:35.679 --> 00:10:39.279
known as Twitter. It's at Twitter
dot com. So go to Twitter dot

139
00:10:39.279 --> 00:10:43.639
com so you can follow us on
X. All right, I just have

140
00:10:43.799 --> 00:10:48.000
three words for you. W t
F Yeah no, has this guy completely

141
00:10:48.080 --> 00:10:52.039
lost his mind? I think I've
said this before. It's like I missed

142
00:10:52.080 --> 00:10:56.600
the Elon that sent his sports card
into space, Like, yeah, yeah,

143
00:10:56.639 --> 00:11:01.440
this Elon is nutty. He's just
nuts. But every time we can

144
00:11:01.480 --> 00:11:03.879
be reminded that just because you've made
a lot of money doesn't mean you're necessarily

145
00:11:03.919 --> 00:11:07.960
smart. Is not a bad thing
either, That's true. It's a cautionary

146
00:11:09.000 --> 00:11:13.120
tale. All right, Well,
you can follow us on X I suppose.

147
00:11:13.279 --> 00:11:16.879
But the fund is happening over on
Mastodon, so join us there.

148
00:11:18.000 --> 00:11:22.600
I'm Carl Franklin at tech Hub dot
social, and I'm Rich Campbell at mastodon

149
00:11:22.679 --> 00:11:26.159
doot social, and you know,
go on there and send us to let

150
00:11:26.240 --> 00:11:28.679
us know you're listening. Yeah,
yeah, yeah. And I'm also hanging

151
00:11:28.679 --> 00:11:31.279
out on the Blue Skies and the
threads. You know, I haven't gotten

152
00:11:31.279 --> 00:11:35.279
to Blue Sky yet and threads.
We talked about that a little bit.

153
00:11:35.360 --> 00:11:37.639
I don't really have a big Instagram
presence, but I guess I'm going to

154
00:11:37.679 --> 00:11:39.919
build it up. Yeah, if
you put it a little time into Instagram

155
00:11:39.960 --> 00:11:43.840
and then activated threads yeah, you
get some useful results, but yeah,

156
00:11:43.879 --> 00:11:46.840
yeah, it is interesting to see
the market fragmenting. We've had a few

157
00:11:46.799 --> 00:11:50.240
folks plugging us about to doing more
stuff on LinkedIn too, because that seems

158
00:11:50.240 --> 00:11:54.440
to be kind of a sensible place. Okay, all right, let's bring

159
00:11:54.480 --> 00:12:00.879
on Thomas. Thomas Betts is the
lead editor for Architecture and Design info Q,

160
00:12:01.840 --> 00:12:05.639
a co host of the info Que
podcast, and a laureate software architect

161
00:12:05.759 --> 00:12:13.039
at Blackbaud that's blac k bau d. That is not an accent black blood.

162
00:12:13.679 --> 00:12:16.919
It sounds a little Boston. That's
like Patrick hind same blackbird, black

163
00:12:16.960 --> 00:12:22.399
blood. For over two decades,
his focus has always been on providing software

164
00:12:22.399 --> 00:12:28.039
solutions that delight his customers. He's
worked in a variety of industries including social

165
00:12:28.120 --> 00:12:33.440
good, retail, finance, healthcare, defense, and travel. Thomas lives

166
00:12:33.480 --> 00:12:37.039
in Denver with his wife and son. They love exploring beautiful Colorado. His

167
00:12:37.120 --> 00:12:43.559
collection of dot net Rocks coffee mugs
he has a collection allows him to use

168
00:12:43.600 --> 00:12:46.120
a different one each day of the
work week. Welcome back, Thomas,

169
00:12:46.320 --> 00:12:48.840
thank you, Yes, and I
do actually change them out every day.

170
00:12:50.000 --> 00:12:54.240
So that's so cool for sustainability,
right right where evenly. I think you

171
00:12:54.279 --> 00:13:00.399
are a number one commenter at one
point. Yeah, pretty pretty probably pretty

172
00:13:00.399 --> 00:13:03.320
confident in saying that, Yeah,
this is you're one of the reasons that

173
00:13:03.519 --> 00:13:07.039
on run As I made different colored
mugs. I know I don't have a

174
00:13:07.120 --> 00:13:09.639
run As mugs one thing I don't
have. What. Well, there's a

175
00:13:09.639 --> 00:13:11.440
simple solution to this, Thomas,
like, it's not that complicated. Really,

176
00:13:13.600 --> 00:13:15.960
Well, then I have to get
all the colors of run As mugs.

177
00:13:15.960 --> 00:13:18.759
And there are eleven of them,
and if you can get them all,

178
00:13:18.799 --> 00:13:22.240
I'll make you a gold one.
So there's twelve. You haven't even

179
00:13:22.279 --> 00:13:28.159
done, and don't ever stop drinking
coffee otherwise we're screwed. So what are

180
00:13:28.159 --> 00:13:31.960
you thinking about these days? Thomas? Thinking more about architecture. So,

181
00:13:31.000 --> 00:13:35.440
like in my bio mentioned, I'm
also I work at blackbod, which is

182
00:13:35.480 --> 00:13:41.840
a software provider for social good and
in my spare time I worked for InfoQ

183
00:13:43.159 --> 00:13:46.919
do some writing and editing. Which
was interesting because they're talking about me commenting

184
00:13:46.960 --> 00:13:50.360
on the show. I actually looked
it up last night. My first comment

185
00:13:50.519 --> 00:13:54.039
back from when it was an emails
a comment, not write a comment on

186
00:13:54.080 --> 00:13:58.200
the website was on episode two twenty
seven or I think it was right on

187
00:13:58.240 --> 00:14:03.840
two twenty seven, and it actually
ties into the theme of infol Q and

188
00:14:03.960 --> 00:14:07.679
q con, which is information Robin
hoods. We want to take information and

189
00:14:07.720 --> 00:14:09.639
spread it out there. So for
people that don't know, infol Q is

190
00:14:11.159 --> 00:14:18.399
a website and a platform for news
and articles and podcasts for mostly on software

191
00:14:18.799 --> 00:14:22.240
early adopters and innovator trends, but
really it covers the whole gamut. So

192
00:14:22.279 --> 00:14:26.840
I cover architecture design over there and
a little bit of everything else because architecture

193
00:14:26.879 --> 00:14:31.080
design is a big umbrella for what
is in software. Did you listen to

194
00:14:31.080 --> 00:14:35.879
that show with Michael Perry by any
chance the I listened to all the shows.

195
00:14:35.519 --> 00:14:39.279
Of course you needible architecture one.
Yeah, yeah, yeah, there's

196
00:14:39.320 --> 00:14:41.440
some good tips, a lot of
things. If you don't have to change

197
00:14:41.440 --> 00:14:46.360
stuff, you know, it makes
makes life easier. But everything in architecture

198
00:14:46.399 --> 00:14:48.879
is trade offs, right, so
you have to think about what are your

199
00:14:48.919 --> 00:14:52.559
business consequences. You can't just go
and implements. I'm in the architecture.

200
00:14:52.519 --> 00:14:56.519
I think it's going to make better
performance. Well what does that mean on

201
00:14:56.559 --> 00:14:58.320
the other side? Yeah, yeah, he was. It was a really

202
00:14:58.399 --> 00:15:03.559
impressive, uh talk. I thought
absolutely, I was impressed with the guy

203
00:15:03.799 --> 00:15:05.639
with Michael. I mean I had, you know, met him in social

204
00:15:05.679 --> 00:15:11.919
situations and stuff, known him a
long time forever. Yeah, but that

205
00:15:11.919 --> 00:15:16.120
that one really was. Like,
so, in terms of shoring up your

206
00:15:16.240 --> 00:15:22.879
architecture, are we going to start
with the over architecture problem or do you

207
00:15:22.879 --> 00:15:26.480
want to start with the under architecture
problem? Well, I think we want

208
00:15:26.480 --> 00:15:30.519
to start with what is architecture?
Because that's good too. People don't know.

209
00:15:31.080 --> 00:15:33.600
I mean, imagine walking down the
street and I live in Denver,

210
00:15:33.720 --> 00:15:35.799
there's a lot of high rises.
Ask anyone on the street, like,

211
00:15:37.240 --> 00:15:39.080
give me an example of architecture.
They point to the buildings, right,

212
00:15:39.519 --> 00:15:43.559
and then you ask them for an
example of software architecture and they probably run

213
00:15:43.600 --> 00:15:48.200
away, honestly. Yeah. But
in the community, you ask someone and

214
00:15:48.399 --> 00:15:52.600
the best they can do is maybe
point to a diagram and it's like here

215
00:15:52.679 --> 00:15:56.360
the blue drawing, isn't it.
It's the UML drawings. It's what the

216
00:15:56.399 --> 00:16:00.679
boxes and arrows. But by the
way, you am, nobody knows that

217
00:16:00.759 --> 00:16:04.360
that is anymore CSML. Is that
the new one? But you know,

218
00:16:04.440 --> 00:16:08.720
we don't have the physical thing to
look at, like software is just it's

219
00:16:08.840 --> 00:16:12.120
electrons, not molecules. You can't
go up and touch the software. You

220
00:16:12.159 --> 00:16:18.960
can touch the hardware, but people
don't know what software architecture is. And

221
00:16:18.039 --> 00:16:22.120
I think the same problem is also
about if you ask someone what is a

222
00:16:22.120 --> 00:16:26.879
software architect? Like imagine introducing yourself
at a party and you say I'm an

223
00:16:26.960 --> 00:16:29.279
architect. They're like, oh,
you design buildings. That's really cool.

224
00:16:29.799 --> 00:16:33.799
You ever introduced yourself as a software
architect? You get the bobble head effect

225
00:16:33.799 --> 00:16:37.000
to someone that looks like you're like, uh huh, that sounds impressive.

226
00:16:37.039 --> 00:16:44.000
They have no idea what that means. But that's true within the community,

227
00:16:44.080 --> 00:16:48.279
like even within software development, we
have all these definitions of what is architecture,

228
00:16:48.360 --> 00:16:52.120
what is the role of a software
architect? Yeah, I'm tending to

229
00:16:52.159 --> 00:16:55.000
call myself a software development and they
asked me to fix their printer and then

230
00:16:55.000 --> 00:16:57.279
I get angry and leave. Right, That's why my mom still says that

231
00:16:57.360 --> 00:17:02.240
he does something with computers, and
that's that's valid. Yeah, it's not

232
00:17:02.320 --> 00:17:06.680
inaccurate. It's not inaccurate, but
we you know, say you say you're

233
00:17:06.680 --> 00:17:08.039
a software architect, once in a
while, you're gonna get some decisis.

234
00:17:08.119 --> 00:17:12.400
So what does that mean? Yeah, well, I think if you look

235
00:17:12.440 --> 00:17:18.799
at what I think of architects need
to do, there's like some common responsibilities

236
00:17:18.839 --> 00:17:22.119
that every architect has to have,
whether you're an enterprise architect or a solution

237
00:17:22.240 --> 00:17:27.240
architect or a software architect, like
just generic terms. It's and this goes

238
00:17:27.279 --> 00:17:30.079
back to the common a little bit. You need to understand both the technical

239
00:17:30.240 --> 00:17:34.799
and the business requirements. You can't
just do one or the other. And

240
00:17:34.839 --> 00:17:40.359
then the architecture part of it is
you have to make those architecture decisions.

241
00:17:40.400 --> 00:17:45.319
You have to design systems, and
then once you've made those design decisions,

242
00:17:45.559 --> 00:17:48.599
you have to explain them to stakeholders. Right now, The thing about all

243
00:17:48.640 --> 00:17:53.960
of those like do this and do
that, understanding the technical and business responsibilities,

244
00:17:55.240 --> 00:17:59.960
Like none of that says you have
to have a title that says architect.

245
00:18:00.480 --> 00:18:03.559
Like I was doing architecture long before
someone said, okay, you're now

246
00:18:03.559 --> 00:18:07.480
an architect. Yeah right, And
so I mean we make the point that

247
00:18:07.640 --> 00:18:11.559
software architecture is more about an activity
than a title, right right, And

248
00:18:11.720 --> 00:18:15.400
any developer that doesn't use an architect
is the architect, right yeah, the

249
00:18:15.400 --> 00:18:21.240
accidental architect. And that goes to
if anyone has to be an architect,

250
00:18:21.319 --> 00:18:26.000
especially if you're the only person on
the team, anyone can practice architecture.

251
00:18:26.400 --> 00:18:30.440
So if we don't really know what
the term means and we're not sure what

252
00:18:30.440 --> 00:18:33.480
we're trying to do, I'm saying, well, we can level up and

253
00:18:33.519 --> 00:18:36.680
get better at it. Well,
how do we get better at it?

254
00:18:37.240 --> 00:18:40.759
And I think if you don't focus
so much on what you're trying to deliver,

255
00:18:40.839 --> 00:18:45.079
don't focus on the UML diagrams or
whatever you're producing, go to the

256
00:18:45.480 --> 00:18:49.880
core skills, the underlying behaviors you
have to have to be an architect.

257
00:18:51.400 --> 00:18:53.680
And the four that I came up
with, and it's kind of like a

258
00:18:53.759 --> 00:18:57.920
pyramid, they build upon each other. First one of the baseline is good

259
00:18:57.960 --> 00:19:03.119
communication, and then second to that
is decision making. Now when I tell

260
00:19:03.160 --> 00:19:07.759
people that but the architect is responsible
for the decisions, why isn't that the

261
00:19:07.839 --> 00:19:12.519
first primary responsibility? And I'll get
back to that, But just to finish

262
00:19:12.519 --> 00:19:17.400
out the list above, that is
adaptability, being able to respond to change.

263
00:19:17.440 --> 00:19:21.000
And then leadership. And I said, all of those are important and

264
00:19:21.119 --> 00:19:23.720
any given day, what you have
to do and what you have to focus

265
00:19:23.759 --> 00:19:29.599
on might change based on your day
to day tasks. But as I've been

266
00:19:29.599 --> 00:19:33.119
observing this for years. This is
kind of the base rank of how they

267
00:19:33.160 --> 00:19:37.880
fallen into play. And I think
I need to say, going back to

268
00:19:37.880 --> 00:19:41.680
when I talked about with in foc, most of what I'm I'm talking about

269
00:19:41.680 --> 00:19:45.000
today is not just my own observations. One of the nice things I get

270
00:19:45.000 --> 00:19:48.640
to do with in foqu is I
work with experts. There are a lot

271
00:19:48.720 --> 00:19:53.160
smarter than me, solving much harder
challenges, and I tend to reference,

272
00:19:53.319 --> 00:19:56.880
you know, this person taught me
this thing, and make sure I give

273
00:19:56.920 --> 00:19:59.599
credit where credit is due. If
you go back, I listen to it

274
00:19:59.680 --> 00:20:03.839
last that first comment that I gave
to dot net Rocks, I actually said,

275
00:20:03.039 --> 00:20:06.799
I'm like, I stopped listening to
the show and send a link to

276
00:20:06.839 --> 00:20:11.759
my coworkers because I thought it was
my responsibility to share information with others.

277
00:20:11.240 --> 00:20:15.440
So this kind of goes to that
whole whole theory of why I like working

278
00:20:15.440 --> 00:20:18.119
with infoqu is because we are trying
to you know, share the share the

279
00:20:18.200 --> 00:20:22.119
knowledge with everyone. Yeah, going
back to the whole you know, people

280
00:20:22.160 --> 00:20:26.440
that understand what a software architect is. I find that using the analogy of

281
00:20:26.480 --> 00:20:30.759
building a house or building a building
is great because people can say, oh,

282
00:20:30.839 --> 00:20:33.680
well, you don't just like start
slapping down bricks. No you you

283
00:20:33.680 --> 00:20:38.640
don't just start you know, hammering, you know, nailing boards together.

284
00:20:38.720 --> 00:20:41.680
No, no, no, no, no. You have to have a

285
00:20:41.720 --> 00:20:44.160
plan. And how do you have
a plan? You make a blueprint?

286
00:20:44.240 --> 00:20:48.640
Well, who designs that? And
it's the architect, right And the architect

287
00:20:48.640 --> 00:20:52.400
has to know the laws of physics, and they have to know the art

288
00:20:52.559 --> 00:20:56.720
of the tools that they're using to
make blueprints or whatever. And then they

289
00:20:56.759 --> 00:21:00.200
also, like you said, the
stakeholders, they have to satisfy the homeowner

290
00:21:00.920 --> 00:21:04.920
who is hiring them to design the
house. And you know, they say,

291
00:21:04.960 --> 00:21:08.200
oh, we want the patio here, and we want the garden here,

292
00:21:08.759 --> 00:21:11.559
and we want a sunken living room
and how does that work? And

293
00:21:11.599 --> 00:21:15.799
so the architect figures out how to
make that work within the laws of physics.

294
00:21:17.200 --> 00:21:18.960
And they may come back and say, you know, you're going to

295
00:21:19.039 --> 00:21:25.319
need a great big beam across this
open ceiling because it's not going to support

296
00:21:25.440 --> 00:21:29.680
blah blah blah, And then okay, the stakeholder says, yeah, all

297
00:21:29.759 --> 00:21:30.960
right, we can live with that, but we have to paint it green.

298
00:21:33.920 --> 00:21:37.720
I think that's a good analogy.
I love having analogies and metaphors because

299
00:21:37.720 --> 00:21:41.440
it helps explain things in different terms
than again, that's software you can't see.

300
00:21:42.400 --> 00:21:45.279
And the house is a great one
because yes, you're clearly working with

301
00:21:45.400 --> 00:21:48.480
different stakeholders. They say I want
my bedroom this big, and I want

302
00:21:48.480 --> 00:21:52.440
the bathroom to have this kind of
stuff. And then the architect has to

303
00:21:52.480 --> 00:21:55.920
know things like and the plumbing has
to do these things so we don't fill

304
00:21:55.960 --> 00:21:59.480
the house up with sewer gas right, and make sure the electrical system doesn't

305
00:21:59.559 --> 00:22:03.200
shorts right, and the homeowner assumes
this I would point out as someone who

306
00:22:03.279 --> 00:22:08.039
has built a couple of houses like
there are actually specialists in each of those

307
00:22:08.039 --> 00:22:12.480
skills that the architect wrangles, right, goes to a structural engineer and says,

308
00:22:12.480 --> 00:22:17.079
what do you think and takes us
put that pushback, and goes to

309
00:22:17.119 --> 00:22:19.440
the plumber. It's going to lay
this stuff out, and who's going to

310
00:22:19.519 --> 00:22:22.759
say, oh, I need a
stack here and a stack there, and

311
00:22:22.799 --> 00:22:25.079
so you know, some walls are
going to have to be a bit bigger

312
00:22:25.079 --> 00:22:27.079
because we've got to fit a three
inch pipe through it. Like it is,

313
00:22:27.359 --> 00:22:32.759
it is all dialogue. Yes,
it's a group of experts collaborates sort

314
00:22:32.759 --> 00:22:37.920
of like the general contractor. But
before anything gets built. They're the general

315
00:22:37.000 --> 00:22:42.079
contractor of all the other architects or
designers of different systems. Yeah, but

316
00:22:42.200 --> 00:22:47.279
I would argue that GC's another role
because they're the implementer, Like they're the

317
00:22:47.319 --> 00:22:51.920
folks that are supervising the implementation.
Yes, but that doesn't start happening until

318
00:22:52.119 --> 00:22:56.559
after the architecture. Yeah. Certainly
in house building, the architect and the

319
00:22:56.559 --> 00:23:00.319
engineer are working to get to They
won't get permits until he submit a plan

320
00:23:00.359 --> 00:23:03.119
that's going to work. That's true. Yeah, we don't have that formality

321
00:23:03.119 --> 00:23:07.319
in software. You know, lawful
people just go off and start writing code.

322
00:23:07.480 --> 00:23:11.119
And I think that's where the software
architect like tends to wear all those

323
00:23:11.119 --> 00:23:14.119
different hats. You have to be
able to communicate with all those people in

324
00:23:14.160 --> 00:23:18.000
those different rules, and then sometimes
step in and do the work. Like

325
00:23:18.079 --> 00:23:19.759
the general contractor can pick up a
hammer and do some of the work.

326
00:23:19.960 --> 00:23:23.279
They can do the plumbing. They
might not be a plumber, but they

327
00:23:23.279 --> 00:23:27.160
know some of the skills. That's
why I think that architects should still write

328
00:23:27.200 --> 00:23:32.079
code. Like some people think architects
are just doing the design, coming up

329
00:23:32.119 --> 00:23:36.279
with the pictures. I think you
have that responsibility to still write code.

330
00:23:36.279 --> 00:23:41.839
It helps you relate to the developers, especially in we've gone hybrid and remote,

331
00:23:41.960 --> 00:23:45.160
and you don't sit there and you
don't get to hear like the people

332
00:23:45.200 --> 00:23:48.559
around you and what they're suffering with, Like write the code, see that

333
00:23:48.559 --> 00:23:51.559
that design that you came up with. You're like, this is the way

334
00:23:51.559 --> 00:23:55.079
it's going to work, and then
you try and implement it and it doesn't

335
00:23:56.079 --> 00:23:57.920
you get to share that pain of
oh, we need to change the design

336
00:23:59.000 --> 00:24:02.720
because I see it that does work. It's harder to hear fourheads hitting keyboards

337
00:24:02.759 --> 00:24:07.680
these days, although I mean I've
I've gotten really good over the years when

338
00:24:07.680 --> 00:24:11.960
I've been responsible for teams is watching
check ins because there's just you know,

339
00:24:12.000 --> 00:24:15.839
I learned the shape of each of
my developers check ins. There's folks at

340
00:24:15.880 --> 00:24:19.200
check in almost every hour, like
they're always pushing code onto their branch,

341
00:24:19.359 --> 00:24:22.759
like that's how they like to work. Ones that typically do it before the

342
00:24:22.839 --> 00:24:26.319
lunch break and before they leave at
the end of the day. And as

343
00:24:26.359 --> 00:24:29.880
soon as you see a change in
the pattern to check in, it's a

344
00:24:29.920 --> 00:24:32.880
good chance to go and look for
keyboard in prints on the forehead like that's

345
00:24:32.960 --> 00:24:36.079
usually There's another key rule, which
is like if you haven't a check in

346
00:24:36.119 --> 00:24:38.079
from that developer in three days,
do you really think on the fourth day

347
00:24:38.079 --> 00:24:41.200
you're gonna get the trade greatest check
in known to man. I'm thinking no,

348
00:24:41.759 --> 00:24:44.960
I'm still waiting for it. I
keep waiting for that to happen.

349
00:24:45.039 --> 00:24:48.240
And I've seen that behavior too many
times. But yeah, you know,

350
00:24:48.279 --> 00:24:51.720
I'm also big on trying not to
interrupt them when they're when they're working.

351
00:24:52.039 --> 00:24:53.759
But if there's two days have gone
by and I haven't seen a check in

352
00:24:55.039 --> 00:24:57.039
and I'm used to them checking in
twice a day, you can kind of

353
00:24:57.079 --> 00:25:00.240
swing, you know, give them
a pain or something and say, hey,

354
00:25:00.720 --> 00:25:04.519
how's it going. I want to
die? I'm like, okay,

355
00:25:04.599 --> 00:25:08.279
yeah, let's talk. I think
that that's all gets back to that idea

356
00:25:08.359 --> 00:25:14.759
that my first skill that every architect
needs to have is good communication. Because

357
00:25:15.599 --> 00:25:22.839
every my statement is every software problem
is fundamentally a communication problem, right everyone.

358
00:25:23.200 --> 00:25:26.480
I look at you send, and
that's that's true, no matter who

359
00:25:26.480 --> 00:25:32.000
are what's communicating. Like, we
can have problems between two servers, two

360
00:25:32.000 --> 00:25:34.759
systems that are trying to talk to
each other, you nevin, communication problems

361
00:25:34.799 --> 00:25:40.119
between the developer trying to write the
code, and that's what you're describing is

362
00:25:40.279 --> 00:25:44.680
the people, the people interacting with
each other about the software, Like maybe

363
00:25:44.680 --> 00:25:48.079
you didn't understand requirements, or maybe
you thought you understand the requirements and you

364
00:25:48.119 --> 00:25:51.039
go and implement it and doesn't do
what you want to? Did you write

365
00:25:51.039 --> 00:25:55.000
a bug? The bug is just
you told the computer to do something and

366
00:25:55.039 --> 00:25:57.000
it's not what you wanted it to
do. Like, whose fault is that?

367
00:25:57.079 --> 00:26:00.559
It's like that? And then you
look at our error. Look at

368
00:26:00.559 --> 00:26:04.119
an HDP four hundred response, like
it's the first of the four hundred clientaries,

369
00:26:04.119 --> 00:26:08.039
and all it says is bad request, which is I don't understand what

370
00:26:08.079 --> 00:26:11.640
you wanted me to do. Right. That's like we understand communication problems are

371
00:26:11.640 --> 00:26:15.039
our problems? Yeah, that's the
that's the web server's way of saying,

372
00:26:15.559 --> 00:26:22.920
now, see what we have here
is a failure to communicate. I mean,

373
00:26:22.960 --> 00:26:27.519
I'm also concerned that often people are
looking at the architectural role as somewhat

374
00:26:27.519 --> 00:26:32.119
dictatorial. It's like, you will
build it this way. I think you

375
00:26:32.160 --> 00:26:33.200
know, when I'm working in that
group, it's like, what does it

376
00:26:33.240 --> 00:26:38.720
take to persuade the architect that we
maybe need to shift the design? Because

377
00:26:38.839 --> 00:26:45.519
Richard and I know some very opinionated
architects, do we not? I think

378
00:26:45.680 --> 00:26:49.119
it was a Scott Hanselman quote that
he likes opinions that are strong, opinions

379
00:26:49.119 --> 00:26:52.799
that are weakly held, right,
like go out there and say here's what

380
00:26:52.799 --> 00:26:56.079
you're gonna do. But once someone
convinces you through data, through analysis,

381
00:26:56.160 --> 00:27:00.960
like I know you said this was
a good plan, but I thought about

382
00:27:00.960 --> 00:27:03.759
these other things, and you're like, yep, you've convinced me. We're

383
00:27:03.759 --> 00:27:07.000
going to change the plan. Be
willing to you know, don't die on

384
00:27:07.039 --> 00:27:08.480
every sword, like not all of
them are good decisions. You're not right

385
00:27:08.519 --> 00:27:11.759
every time. Well, and in
the end, you were all working on

386
00:27:11.799 --> 00:27:15.920
the same problem. You're trying to
deliver results for customers. So it's not

387
00:27:15.039 --> 00:27:19.279
your wrong, I'm right either.
It's that we're helping to mature the plan.

388
00:27:19.640 --> 00:27:25.319
It's a good idea to adopt the
phrase, I think and in check

389
00:27:25.440 --> 00:27:29.200
that into your sentences when you're talking
to people, and the and the presumption

390
00:27:29.279 --> 00:27:30.759
as an architect, and I mean, I've been through this where I'm in

391
00:27:30.799 --> 00:27:37.599
a house that we built, right, and I remember the builder who was

392
00:27:37.599 --> 00:27:41.759
a the general contractor who happened to
be the carpenter. Realizing that both the

393
00:27:41.839 --> 00:27:48.640
architect, the structural engineer and the
city had missed a design flaw in the

394
00:27:48.680 --> 00:27:52.880
blueprint and that there was like a
missing beam and nobody had caught it until

395
00:27:52.960 --> 00:27:56.720
the guy building it said, hey, what's holding this up? Right?

396
00:28:00.000 --> 00:28:04.960
Ecuse me, excuse me, I
just got one question. And that is

397
00:28:06.000 --> 00:28:08.160
often when the developers realize, I
know, you said that this server can

398
00:28:08.160 --> 00:28:11.759
talk to that server, but something's
missing or this code doesn't work, and

399
00:28:11.799 --> 00:28:15.720
it's a glaring hole that once you
see it, how would you have missed

400
00:28:15.759 --> 00:28:19.400
that? But everyone can miss it. Yeah, it absolutely happens, and

401
00:28:19.440 --> 00:28:23.119
it needs to be a pathic communication
to feed that back that bring resume.

402
00:28:23.880 --> 00:28:27.440
You know, you also can't presume
you're right either. Right, It's like,

403
00:28:27.480 --> 00:28:30.240
hey, I cannot make these two
I have not been successful made these

404
00:28:30.240 --> 00:28:33.960
two machines communicate. I don't know
if it's me or it's them, but

405
00:28:34.200 --> 00:28:40.200
this is what's happened. Yeah.
So going back to the idea that if

406
00:28:40.240 --> 00:28:45.799
every software problem is a communication problem, right, The other slip side of

407
00:28:45.839 --> 00:28:49.559
that is that as an architect,
the biggest impact that you can have to

408
00:28:49.599 --> 00:28:55.039
make a project successful is to find
ways to improve communication. Right. We

409
00:28:55.079 --> 00:28:57.920
can improve how our services talk to
each other. Are we using synchronous or

410
00:28:57.920 --> 00:29:02.680
acing as communication we can improve?
This is what you where UML comes in

411
00:29:02.720 --> 00:29:10.119
because UML is a great way to
communicate, right right right. UML is

412
00:29:10.160 --> 00:29:14.200
just a very structured version of the
ad hoc boxes and arrows. That's my

413
00:29:14.319 --> 00:29:18.160
oversimplification. Yeah, cocktail napkin with
circles and arrows on it. Yeah,

414
00:29:18.240 --> 00:29:22.799
boxes and arrows are fine. I
like Simon Brown's C four model, the

415
00:29:22.839 --> 00:29:30.400
C four models, the four seas
are I'm going to test myself context something

416
00:29:30.559 --> 00:29:36.000
something code anyway, It's four different
layers of the architecture, and the differences

417
00:29:36.119 --> 00:29:40.680
each one of those layers you draw
different diagrams because they are intended for a

418
00:29:40.720 --> 00:29:42.680
different audience, which goes to my
thing. I said, this is the

419
00:29:42.720 --> 00:29:47.079
last round on my show. The
number one advice for how to improve communication

420
00:29:47.200 --> 00:29:49.720
is know your audience. Who are
you talking to, what are you trying

421
00:29:49.759 --> 00:29:53.039
to explain to them, and what's
the most expective way to communicate? Context

422
00:29:53.119 --> 00:29:57.160
containers components in code. Thank you, I knew I should have had it

423
00:29:57.200 --> 00:30:03.200
in my fingertips. You can google
faster. I can from the context is

424
00:30:03.720 --> 00:30:06.680
I want to build a house,
and then the code is I want to

425
00:30:07.240 --> 00:30:11.279
install this wall or this electricity,
right, those are the different things.

426
00:30:11.319 --> 00:30:15.880
And just like your general contractor analogy
and your architect to the I'm going to

427
00:30:15.960 --> 00:30:18.480
give sign to my subs to do
the work. You have to provide different

428
00:30:18.519 --> 00:30:23.960
diagrams. So UML might be useful
in one of those situations, but it's

429
00:30:25.000 --> 00:30:30.359
not the right tool for everybody.
And sometimes the diagram isn't the right way

430
00:30:30.400 --> 00:30:33.799
to presentage field. Maybe you have
to give a PowerPoint presentation and you want

431
00:30:33.799 --> 00:30:37.759
the really simplified view of the world
with maybe some boxes and arrows, but

432
00:30:37.799 --> 00:30:42.359
it's just what that audience needs to
hear. So I took a systems analysis

433
00:30:42.359 --> 00:30:47.559
class in college, and I remember
the professor saying on day one, he

434
00:30:47.599 --> 00:30:49.920
says, the most important thing you
can do as an analyst is get an

435
00:30:51.079 --> 00:30:56.000
org chart. Get an organization chart. You should know who you're talking to

436
00:30:56.160 --> 00:31:02.240
before you say one word. And
that's I don't I've never seen anybody offer

437
00:31:02.279 --> 00:31:06.079
an org chart, And I don't
know. Richard probably does that when he

438
00:31:06.119 --> 00:31:10.839
goes into you know, because he
needs to know who's your boss, who's

439
00:31:10.839 --> 00:31:15.519
your boss's boss. I want to
talk to your boss's boss's boss. We

440
00:31:15.599 --> 00:31:19.640
really how our decisions ultimately made right. Because often you know, as the

441
00:31:19.759 --> 00:31:27.920
external guy, as the consultant,
you are less susceptible to siloing yourself.

442
00:31:27.960 --> 00:31:33.880
You tend to go between these layers, and often you're turning up communication failures

443
00:31:33.960 --> 00:31:36.680
that are already happening. I mean, let's face it, you didn't call

444
00:31:36.720 --> 00:31:41.960
me because things were going well,
right, So you know I've said this

445
00:31:41.000 --> 00:31:45.920
before, Like pretty quickly you figure
out in this role you're a marriage counselor

446
00:31:45.440 --> 00:31:49.880
Yeah, it's not a it is
all. It is not that the technology

447
00:31:49.920 --> 00:31:52.480
can't do it is that this team
is struggling to do it. And why

448
00:31:52.720 --> 00:31:57.079
persone complains about person B, person
B complains about PERSONNE and they complain to

449
00:31:57.119 --> 00:32:00.960
you, and you're like, well, yeah, well, and also just

450
00:32:01.160 --> 00:32:06.160
expectations aren't aligned all the way up, so it's always good to press against

451
00:32:06.200 --> 00:32:09.680
all that. But you don't do
in the disguise of this is a dysfunctional

452
00:32:09.720 --> 00:32:13.319
team. You do this in disguise
of hey, I'm the new guy,

453
00:32:13.400 --> 00:32:15.200
I'm only here for a week and
you're paying me a lot of money,

454
00:32:15.759 --> 00:32:23.160
so ask some questions and just the
process of them explaining it to you.

455
00:32:23.359 --> 00:32:28.519
I mean, so I swear it's
very rubber doc. How that first day

456
00:32:28.720 --> 00:32:31.920
where we're just going to use whiteboards
and draw the problem out, the number

457
00:32:31.960 --> 00:32:36.440
of times we turn up the actual
problem in the process. Thomas just held

458
00:32:36.519 --> 00:32:42.640
up a rubber rubber everyone right right
in the hand. That the point that

459
00:32:42.759 --> 00:32:46.160
art chart goes to an idea that
Gregor Hope describes as writing the architect Elevator

460
00:32:46.640 --> 00:32:51.160
that you need to be able to
go from the IT engine room down in

461
00:32:51.200 --> 00:32:55.599
the basement all the way up to
the CEO penthouse and be able to communicate

462
00:32:55.640 --> 00:33:00.920
to all those different stakeholders at all
those different levels to be effective. And

463
00:33:00.400 --> 00:33:05.000
again, once before you open the
doors to get off the floor, think

464
00:33:05.039 --> 00:33:07.279
about who's the audience that's receiving that. What do they need to hear?

465
00:33:07.759 --> 00:33:10.720
And sometimes what do they not need
to hear? Like you're not going to

466
00:33:10.799 --> 00:33:15.240
get an hour sit down with the
CEO. Well maybe Richard does, but

467
00:33:15.359 --> 00:33:19.359
I'm not going to. If I
can get five minutes, I have to

468
00:33:19.400 --> 00:33:22.720
give a really really concise five minute
pitch. Maybe it's thirty seconds. And

469
00:33:22.759 --> 00:33:27.720
so what is the important thing you
need to communicate to help them make the

470
00:33:27.759 --> 00:33:30.720
decision that you're there to provide advice
on gentlemen I get interrupted from one moment

471
00:33:30.759 --> 00:33:37.559
for this very important message, and
we're back. It's Don at Rocks,

472
00:33:37.599 --> 00:33:40.759
I'm Richard Campbell, that's Carl Franklin. Hey, hey, talking to our

473
00:33:40.799 --> 00:33:45.160
friend Thomas Betts about this art of
architecture as much as this, you know,

474
00:33:45.279 --> 00:33:49.119
doing it better. And you hit
on a really key point before the

475
00:33:49.160 --> 00:33:52.920
break there, which is part of
an architect's skills, not just communication,

476
00:33:52.960 --> 00:33:58.680
but communication in multiple languages, effectively
the language of the developer, the language

477
00:33:58.720 --> 00:34:04.519
of the business stakehold, the language
of the system reliability engineer, stite reliability,

478
00:34:04.519 --> 00:34:06.920
the engineer, you know, the
guys who are going to operate this

479
00:34:06.920 --> 00:34:10.679
stuff, Like if you're doing your
job well, you are making sure all

480
00:34:10.760 --> 00:34:16.559
those stakeholders have a seat, are
being heard and that their concerns are manifesting

481
00:34:16.639 --> 00:34:22.559
your diagrams and documents. Yea,
I think that moves us into the second

482
00:34:22.599 --> 00:34:25.239
point level of my skills. You
need to know is decision making, because

483
00:34:25.239 --> 00:34:30.239
it's that first step is understanding the
decision to be made. You have to

484
00:34:30.840 --> 00:34:34.679
gather information from all those stakeholders.
What do you want in your house?

485
00:34:35.920 --> 00:34:42.000
And you know, I've basically distilled
decision making down to almost a simplified scientific

486
00:34:42.039 --> 00:34:45.920
method that you have that first step
of understanding the decision and then take the

487
00:34:45.960 --> 00:34:52.079
time to produce some options, evaluate
those options, and then decide on something.

488
00:34:52.800 --> 00:34:54.239
And then the last step, just
like the scientific method, is to

489
00:34:54.360 --> 00:35:00.239
communicate your decision. Now that first
and last step, say hey, look

490
00:35:00.239 --> 00:35:02.599
how important communication is. If you
don't take the time to talk to the

491
00:35:02.679 --> 00:35:07.920
right people and understand what they need. And again, those different viewpoints are

492
00:35:07.920 --> 00:35:10.440
going to have different impacts on how
you design something. Then you might design

493
00:35:10.440 --> 00:35:14.559
the wrong system. You might have
missed that beam that you needed to put

494
00:35:14.639 --> 00:35:21.000
up. And many times you're the
people that you're interviewing and asking their opinion.

495
00:35:21.119 --> 00:35:22.760
Sometimes they'll say I have no idea, what do you think? And

496
00:35:22.840 --> 00:35:27.559
sometimes they'll be very opinionated, Oh, we want to use the lamp stack

497
00:35:27.719 --> 00:35:32.800
with you know, Kubernetes and all
this stuff. And you have to ask

498
00:35:32.880 --> 00:35:37.880
them why you know, without coming
across like you don't know anything. And

499
00:35:37.920 --> 00:35:40.719
then they're going to throw you under
the bus in the next meeting because you're

500
00:35:40.719 --> 00:35:45.199
an idiot. You know, like
there's a dance to be done there,

501
00:35:45.320 --> 00:35:47.760
right, you need to okay,
you want to do this? Tell me

502
00:35:47.800 --> 00:35:51.719
why what are the benefits. What
are the drawbacks? Yep, I think

503
00:35:51.800 --> 00:35:54.400
there goes. Do any you know, ask any architect any question their default

504
00:35:54.440 --> 00:36:00.400
responses. It depends because it always
depends on what was decision criteria and that

505
00:36:00.440 --> 00:36:04.960
example, I want to use lamp
stack, Well why well we use the

506
00:36:05.039 --> 00:36:07.280
lamp stack? Well why do we
use the lamp stack? It's like,

507
00:36:07.320 --> 00:36:10.639
well, it's in our architectural diagrams, and can you tell me, well,

508
00:36:10.639 --> 00:36:14.440
why was the decision made? Well, it's on the diagrams. The

509
00:36:14.440 --> 00:36:19.800
diagram only it's like watching the Olympics. Imagine they only covered the metal ceremony

510
00:36:19.840 --> 00:36:22.159
and they only showed the gold medalists. You don't get to see anybody else.

511
00:36:22.400 --> 00:36:25.440
You don't get to see any of
the events, like something's missing.

512
00:36:25.599 --> 00:36:30.320
The diagram just captures the winner.
But there was a lot of thought process,

513
00:36:30.360 --> 00:36:35.800
that whole scientific method of here are
the options we chose. And that's

514
00:36:35.800 --> 00:36:38.119
why instead of just having the diagrams
as useful as they can be, I

515
00:36:38.199 --> 00:36:45.960
like to use Architecture Decision Records ADRs
because they capture that why behind the decision?

516
00:36:45.119 --> 00:36:47.760
Why do we use the lamp stack? Here was what we considered.

517
00:36:49.480 --> 00:36:52.440
Here are the trade offs that we
looked at and then this one. Because

518
00:36:52.440 --> 00:36:54.480
of all these decisions. A good
technique that I like to use is,

519
00:36:54.599 --> 00:37:00.280
Okay, pretend I don't know anything
about whatever it is you're suggesting the lamp

520
00:37:00.360 --> 00:37:06.519
stack Kubernetti. Pretend I don't know
anything, convince me go ahead, and

521
00:37:06.800 --> 00:37:10.280
I'm gonna just make some notes here. You know. So it because if

522
00:37:10.280 --> 00:37:15.119
you're an architect, right, you'll
probably know these things and somebody's gonna just

523
00:37:15.199 --> 00:37:17.920
look at you and say, like
you said, well, because that's the

524
00:37:17.960 --> 00:37:21.599
best thing, right, because you
know, why should I explain it to

525
00:37:21.599 --> 00:37:23.440
you? So you have to say, look, pretend I'm your mother.

526
00:37:24.840 --> 00:37:30.679
Explain you know, explain yourself.
Grandma Franklin needs to know why the lamp

527
00:37:30.719 --> 00:37:37.000
stack. Absolutely. I grabbed the
link to adr gethub dot io, which

528
00:37:37.079 --> 00:37:40.760
is a pretty good summary of the
architectural decision records. This is really about

529
00:37:40.920 --> 00:37:46.159
documenting these decisions, to capture why
it's documented decisions. The term I think

530
00:37:46.239 --> 00:37:49.480
was coined as far as I can
tell, by Michael Nygard, like,

531
00:37:51.559 --> 00:37:54.039
yeah, those things come down to
thought works, don't they. And the

532
00:37:54.079 --> 00:37:58.519
other one that you might want to
look up is mad m adr the markdown,

533
00:38:00.159 --> 00:38:02.119
well, it was marked down architecture
decision records. They changed the name

534
00:38:02.199 --> 00:38:07.039
to mark Down Any Decision Records because
what we're talking about this decision making,

535
00:38:07.119 --> 00:38:10.880
it doesn't have to be just software
architecture. Those were just the first people

536
00:38:10.960 --> 00:38:15.880
that needed to find a way to
communicate their decisions, right. I would

537
00:38:15.920 --> 00:38:20.039
love to see more businesses using this
for the business decisions. Why did we

538
00:38:20.079 --> 00:38:22.920
decide to do this project and not
that project? Why did we fund this,

539
00:38:22.440 --> 00:38:25.199
Why are we you know, hiring
these people, why are we doing

540
00:38:25.199 --> 00:38:30.519
whatever? You can capture those decisions
as opposed to oh it was decided from

541
00:38:30.559 --> 00:38:35.000
Yeah, and nobody's ever going to
read these except a large language model.

542
00:38:35.000 --> 00:38:37.519
It's operating your business, which should
be enough, right, Like then you

543
00:38:37.599 --> 00:38:42.280
can ask it questions and it should
have pretty good answers based on the ADR

544
00:38:42.400 --> 00:38:45.320
data. Yeah, there's been a
discussion about that, like can we plug

545
00:38:45.360 --> 00:38:49.719
it in and say, can it
analyze what the next decision? What is

546
00:38:49.800 --> 00:38:53.079
right and what's wrong. I have
to admit when chat GPT first came out

547
00:38:53.119 --> 00:38:57.280
and I was working on this presentation, like I wonder what it would do,

548
00:38:57.400 --> 00:39:00.920
and so I asked it questions and
I found it's it's good in that

549
00:39:00.000 --> 00:39:04.199
rubber duck scenario, give me the
options, what are the trade offs?

550
00:39:04.400 --> 00:39:07.519
And if you are really, really
lazy, you can ask it to write

551
00:39:07.519 --> 00:39:12.119
an a DR for you. Now
check it because what it decides might not

552
00:39:12.199 --> 00:39:15.079
be the right thing for you,
but it might give you that starting point.

553
00:39:15.199 --> 00:39:16.199
Right. Yeah, in the end, all the text is right.

554
00:39:16.320 --> 00:39:20.920
Is no different than a deep fake
made on buy an image generator. It's

555
00:39:20.960 --> 00:39:23.800
sometimes those images aren't half bad,
and sometimes that and sometimes the text isn't

556
00:39:23.800 --> 00:39:28.280
half bad, but it is.
And it's nice to work from something already

557
00:39:28.280 --> 00:39:30.599
written. It's easier to edit than
to write from scratch, but you do

558
00:39:30.719 --> 00:39:35.800
have to edit it. Yeah,
it's and I like a DRS because they

559
00:39:35.800 --> 00:39:37.960
get you out of that blank whiteboard
scenario. Yeah, when you go in

560
00:39:38.000 --> 00:39:40.800
and ask amy, draw your system
and show me where your pain points are.

561
00:39:40.920 --> 00:39:45.639
That that's good. But when you
get down to how are we going

562
00:39:45.679 --> 00:39:49.119
to solve the problem? I have
sat there and stared at the blank whiteboard

563
00:39:49.159 --> 00:39:51.320
or the pen in hand, like
I don't know. The answer is not

564
00:39:51.360 --> 00:39:53.719
coming to me, And you're just
trying to think through and get to that,

565
00:39:54.039 --> 00:39:57.519
like you want to get to the
end of the race without running it.

566
00:39:57.800 --> 00:40:00.079
Yeah, the a DR if you
start with the markdown one. It's

567
00:40:00.079 --> 00:40:02.920
a template, and it's like,
what's the name of the decision? What

568
00:40:04.000 --> 00:40:07.039
are you trying to decide? What
are you considering? And just the act

569
00:40:07.119 --> 00:40:10.280
of having to fill out the template
and write it out, it's the rubber

570
00:40:10.320 --> 00:40:14.840
duck. Again. You are explaining
to yourself because you're going to have to

571
00:40:14.840 --> 00:40:19.239
explain it assuming someone else will read
this document. Well, sometimes the decision

572
00:40:19.760 --> 00:40:27.039
is a bad not a bad decision, but it's unnecessary because of somewhere lower

573
00:40:27.159 --> 00:40:31.760
down in the stack, a decision
was made that is focusing you on the

574
00:40:31.760 --> 00:40:36.960
wrong problem. And so that's where
an architect can come in and say,

575
00:40:37.000 --> 00:40:39.719
you know, I understand why you're
not coming up with a solution to this

576
00:40:39.840 --> 00:40:45.000
is it's because it's architected wrong.
It's designed wrong, and you know,

577
00:40:45.079 --> 00:40:49.239
here's some suggestions of how to avoid
this pitfall. Yeah, that gets to

578
00:40:49.280 --> 00:40:53.920
the third points, a good segue
to adaptability because everything constantly changes, right,

579
00:40:53.960 --> 00:40:59.440
like no architecture plans survives first contact
with the engineers. They are going

580
00:40:59.480 --> 00:41:01.840
to break they are not going to
follow it, or they're going to implement

581
00:41:01.840 --> 00:41:05.880
it exactly the way you told them
to, even the wrong things that you

582
00:41:05.960 --> 00:41:09.840
didn't realize and you have to change
that. We have to have agile architecture.

583
00:41:09.920 --> 00:41:15.519
We have to have an architecture that
can continually evolve. And if you

584
00:41:15.559 --> 00:41:20.199
make your decisions assuming this is the
one only way to do this and they

585
00:41:20.199 --> 00:41:22.840
will never change now, the only
way you're going to fix that is to

586
00:41:22.920 --> 00:41:27.239
replace the system down the line.
It's better to say, here are the

587
00:41:27.280 --> 00:41:30.800
decisions we're making, and we assume
that they're going to change over time,

588
00:41:30.320 --> 00:41:35.519
and if we document them when we
say this isn't working anymore, we need

589
00:41:35.559 --> 00:41:38.239
to change it, instead of well, here's the diagram and try and redraw

590
00:41:38.320 --> 00:41:42.119
the diagram. If you look at
the ad R, it's got a date

591
00:41:42.159 --> 00:41:44.920
on it, and it's got a
decider like you have someone's name, like

592
00:41:44.920 --> 00:41:49.000
who to blame, and go ask
the question like you chose this based on

593
00:41:49.000 --> 00:41:52.800
these criteria, But now we have
a million users sitting on our website.

594
00:41:52.880 --> 00:41:57.840
Maybe our decision criteria was wrong.
It was right at the time, but

595
00:41:57.880 --> 00:42:00.840
it no longer fits. You can
just revisit that decision and you have that

596
00:42:00.920 --> 00:42:05.360
as a starting point, as opposed
to throw it all over and start starting

597
00:42:05.360 --> 00:42:07.840
at you get those names and dates. It's kind of like a walk in

598
00:42:07.960 --> 00:42:12.639
and a restaurant, right, you
know, you have to date things and

599
00:42:12.719 --> 00:42:15.960
you have to name them. What
is this? Is it meet? Is

600
00:42:15.960 --> 00:42:20.679
it cake? We'll call it meat? Yeah, But you also make a

601
00:42:20.719 --> 00:42:22.760
point here. You're implying a point
here, which is the architect's kept to

602
00:42:22.800 --> 00:42:28.159
stay engaged. Yea, because you
know I have run into organizations where they're

603
00:42:28.159 --> 00:42:32.440
working from an architectural template and that
person isn't at the company anymore, right,

604
00:42:32.599 --> 00:42:37.599
And so it's like this idea of
architecture is gospel is disturbing. Yeah,

605
00:42:37.800 --> 00:42:40.960
And maybe if you have at least
their name and not just a department

606
00:42:42.039 --> 00:42:45.039
or the architecture team, what does
that mean? Like, I want to

607
00:42:45.079 --> 00:42:49.840
know Thomas made this decision? You
know? Can I go ask him?

608
00:42:49.880 --> 00:42:53.039
And if you ask me about something
I decided six months ago, I'm going

609
00:42:53.079 --> 00:42:55.440
to scratch my head and wonder.
I'm like, yeah, it seemed like

610
00:42:55.519 --> 00:42:59.239
a good idea at the time,
but I hadn't remember that if I wrote

611
00:42:59.280 --> 00:43:01.960
it down, I can point to
it and we can have a discussion over

612
00:43:02.039 --> 00:43:07.199
that and say, is that's still
valid? And oh we assume that is

613
00:43:07.199 --> 00:43:10.320
this still correct? Or what has
changed? How many problems arise or can

614
00:43:10.360 --> 00:43:15.880
arise from people being afraid of looking
bad. I'm sure you've seen that as

615
00:43:15.960 --> 00:43:21.039
much as I have. There is
sometimes the I want to push forward because

616
00:43:21.039 --> 00:43:22.599
this is what we're doing, and
I don't want to be the person to

617
00:43:23.039 --> 00:43:25.960
hit the brakes. My hardest decision. I'm not going to go into the

618
00:43:27.000 --> 00:43:30.039
details, but people know about this. You know. A year ago was

619
00:43:30.800 --> 00:43:34.480
I think we're going in the wrong
direction, and it was my decision to

620
00:43:34.519 --> 00:43:37.239
go down that path. And then
four or five six months later, it's

621
00:43:37.280 --> 00:43:42.800
like, this is really not the
right way to go. And having gone

622
00:43:42.800 --> 00:43:45.639
through the whole process and document it
the whole way, it's like, hey,

623
00:43:45.840 --> 00:43:50.840
this was a great idea, but
our business requirements changed and we want

624
00:43:50.880 --> 00:43:54.519
to do a slightly different path or
significantly different path. We shouldn't just keep

625
00:43:54.559 --> 00:43:59.960
going blindly down that direction. And
so yeah, we're gonna lose a few

626
00:44:00.039 --> 00:44:02.559
months worth of effort, but in
the long run, and that was part

627
00:44:02.599 --> 00:44:06.599
of the ad R was let me
show you what this looks like on a

628
00:44:06.679 --> 00:44:09.960
timeline, because again, explain to
the right people. The business owner needs

629
00:44:09.960 --> 00:44:13.800
to know, not just oh,
well the technical solution isn't going to work

630
00:44:13.840 --> 00:44:15.599
or it's gonna be hard. What
does that mean? It means that a

631
00:44:15.679 --> 00:44:17.719
year and a half from now,
we're not going to hit our goal.

632
00:44:19.039 --> 00:44:21.719
Yeah, and that's the money you're
going to save. And a year and

633
00:44:21.719 --> 00:44:23.400
a half from now, we're going
to deliver something instead. Oh I like

634
00:44:23.519 --> 00:44:27.639
that. Yeah, I'm gonna I
can quickly deliver you the wrong thing,

635
00:44:27.960 --> 00:44:30.360
oh yeah, or we can spend
a little more time to deliver the right

636
00:44:30.400 --> 00:44:31.639
thing. Which would you prefer.
Actually, we were going to spend a

637
00:44:31.639 --> 00:44:35.639
long time delivering the wrong thing too, so yeah, we's been a long

638
00:44:35.679 --> 00:44:39.559
time delivering the wrong thing. If
you want the worst of all worlds,

639
00:44:40.239 --> 00:44:44.800
yeah, yeah, I guess the
real question is, you know how much

640
00:44:44.840 --> 00:44:49.320
of a refactor of architecture takes place? Like there's lots of incremental twitches you

641
00:44:49.360 --> 00:44:52.679
can do, but that whole hey, we kind of have to relay this

642
00:44:52.719 --> 00:44:55.320
whole thing out again. Yeah yeah, I like. I like when you

643
00:44:55.559 --> 00:45:00.000
can go into a new project and
you say we're going to have an evolution

644
00:45:00.239 --> 00:45:04.000
architecture or a continuous architecture. There's
two different terms. There's different people.

645
00:45:05.000 --> 00:45:07.880
And the guys that I worked with
for an article series on info Queue,

646
00:45:08.679 --> 00:45:14.840
Peer Puer and Curb Bittner, they
talked about a minimum viable architecture. And

647
00:45:14.880 --> 00:45:19.119
I love this idea of the MVA, which is the architecture that supports your

648
00:45:19.239 --> 00:45:24.079
MVP, your minimum viable product.
Again, business stakeholders understand the MVP right,

649
00:45:24.199 --> 00:45:29.760
Well, I'm going to give you
just enough architecture to support that because

650
00:45:29.800 --> 00:45:31.480
we're going to put this out in
the wild, let customers use it,

651
00:45:31.559 --> 00:45:35.599
and then wait for feedback to find
out what's our next step. What are

652
00:45:35.639 --> 00:45:38.000
we going to build on top of
it? And as we change which direction

653
00:45:38.039 --> 00:45:42.679
the product heads, we have to
make changes to our architecture as well.

654
00:45:43.280 --> 00:45:46.760
And the fact that you've designed your
architecture to be adaptable and change because it's

655
00:45:46.800 --> 00:45:52.199
based on those decisions that can change
it kind of builds in that agility from

656
00:45:52.199 --> 00:45:54.440
the get go. Yeah, it
sounds if you're comfortable with the idea that

657
00:45:54.480 --> 00:45:58.719
you're going to revise the architecture,
it is going to be revisited, then

658
00:45:58.800 --> 00:46:01.840
you do a lot. You don't
have to overplan, you can just bring

659
00:46:01.880 --> 00:46:08.000
in that minimal viable with this acceptive
of being refactored and infecting this software below

660
00:46:08.000 --> 00:46:14.320
it. I think that being agile
it applies to both the architecturally build and

661
00:46:14.719 --> 00:46:19.679
how we as architects practice our jobs. I mentioned earlier, you're not sitting

662
00:46:19.760 --> 00:46:22.960
in a desk in a cubicle farm
next to everyone. Everyone's remote. How

663
00:46:23.000 --> 00:46:28.559
do you get the pulse of everything? Well, that switch, that abrupt

664
00:46:28.320 --> 00:46:35.920
shift from in person to everyone's hybrid, brought about a bunch of communication challenges,

665
00:46:35.960 --> 00:46:40.079
but people also saw communication opportunities.
We went to more people are doing

666
00:46:40.119 --> 00:46:45.719
asynchronous communication, like I don't need
to have that face to face meeting and

667
00:46:45.119 --> 00:46:47.639
that those are those distractions you talked
about. I don't want to bother the

668
00:46:47.679 --> 00:46:52.840
developer and interrupt their day because this
five minute call is going to actually take

669
00:46:52.880 --> 00:46:57.559
them out of their headspace for an
hour. So asynchronous communication is good.

670
00:46:57.679 --> 00:47:02.119
ADRs support asynchro communication. Instead of
only the people who can go into the

671
00:47:02.159 --> 00:47:06.239
room with the whiteboard and draw on
the conference room whiteboard, get to be

672
00:47:06.280 --> 00:47:07.920
in the decision. Now everybody can
see your decision. I like sticking them

673
00:47:07.920 --> 00:47:12.039
in source control, put them in
get it's a text file. Anybody can

674
00:47:12.039 --> 00:47:16.920
see them. They're highly adaptable,
and I think we've even seen, you

675
00:47:16.960 --> 00:47:22.920
know, kind of the fallout of
the companies that did adapted well to being

676
00:47:22.000 --> 00:47:24.880
remote, like the ones who are
able to just like keep doing business and

677
00:47:24.920 --> 00:47:30.320
didn't have this abrupt like stop in
their business process. Like some of that

678
00:47:30.440 --> 00:47:34.079
is the team and some of it
is the architecture. And you know,

679
00:47:34.119 --> 00:47:37.079
you guys have talked about Conway's law
a few times that your architecture looks like

680
00:47:37.360 --> 00:47:42.599
your teams your team architecture. Yet
Yeah, and I have the COVID corollary

681
00:47:42.639 --> 00:47:47.840
to Conway's law that highly effective distributed
teams are able to build highly effective distributed

682
00:47:47.840 --> 00:47:54.599
systems. And contrary to that,
if your teams struggle with that highly distributed

683
00:47:54.599 --> 00:48:00.239
communication, you are not going to
be successful building a distributed system. If

684
00:48:00.239 --> 00:48:02.239
you're like, we're gonna do micro
services, but our teams have to be

685
00:48:02.280 --> 00:48:06.559
in the office together, Like your
team structure is a monolith, you have

686
00:48:06.559 --> 00:48:09.480
to build a monolith. Yeah,
you're well more relevantly, you're gonna build

687
00:48:09.480 --> 00:48:14.000
a modelith you can call it whatever
you want, but this is what's going

688
00:48:14.039 --> 00:48:16.679
to come out of the other side. It's interesting to point your point.

689
00:48:16.679 --> 00:48:21.360
Then it's like, because the team
is distributed, we've kind of have an

690
00:48:21.400 --> 00:48:24.679
opportunity here to make it easier to
build more distributed systems because they're already working

691
00:48:24.719 --> 00:48:29.159
like that. Yeah, yeah,
and we find where are the teams struggling

692
00:48:29.159 --> 00:48:32.360
to communicate. How do we fix
that's that marriage counselor role. How do

693
00:48:32.400 --> 00:48:36.760
we fix the communication between teams?
If they have to talk to each other

694
00:48:37.199 --> 00:48:39.760
every day, then there's not really
two teams. You have one big team.

695
00:48:39.840 --> 00:48:45.320
First thing is to not use teams. We have a combination with Slack

696
00:48:45.360 --> 00:48:49.440
and teams. And you can tell
guess who uses slack, A big Slack

697
00:48:49.480 --> 00:48:52.360
fan, not a big the engineers
use Slack. Everyone else in the business

698
00:48:52.440 --> 00:48:58.920
uses teams. Yeah, so it
but yeah, interesting, you were talking

699
00:48:58.920 --> 00:49:00.840
about this idea of if you're municating
with a group every day, they're actually

700
00:49:00.840 --> 00:49:06.320
on the same team, right,
And that's that you want loose coupling in

701
00:49:06.360 --> 00:49:09.280
your architecture. You want loose coupling
and your teams. And so if those

702
00:49:09.559 --> 00:49:14.320
teams want to be able to work
independently, you want to reduce how many

703
00:49:14.360 --> 00:49:16.960
communication points they have that will be
in their software as well, that their

704
00:49:17.159 --> 00:49:21.920
software will communicate on the same boundaries. But if you have that we've got

705
00:49:22.000 --> 00:49:24.679
to talk every day, then yeah, you've got two services that are highly

706
00:49:24.679 --> 00:49:28.159
coupled, and they're gonna have to
be deployed in law study as well be

707
00:49:28.199 --> 00:49:30.639
the same service. Yeah, now
you have the distributed monolith, which is

708
00:49:30.639 --> 00:49:35.599
the worst of all worlds. That
I mean. At the same time,

709
00:49:35.639 --> 00:49:38.679
I'm always loath to block communication in
any way, right, but I would

710
00:49:38.800 --> 00:49:42.719
I would think in an architecture role, you're like, Okay, these teams

711
00:49:42.760 --> 00:49:49.000
are need to communicate routinely. You
want useful communication, right, You shouldn't

712
00:49:49.079 --> 00:49:51.679
have to talk all the time to
figure out, Hey, how do I

713
00:49:51.719 --> 00:49:55.079
call your service? And that should
be documented, make a swagger end point

714
00:49:55.079 --> 00:49:59.480
and just generate a client off of
that. And if it doesn't work and

715
00:49:59.519 --> 00:50:00.320
it doesn't do what you need and
say, hey, I need a new

716
00:50:00.400 --> 00:50:04.119
endpoint, how do you submit a
poor request to them? How do you

717
00:50:04.679 --> 00:50:07.800
use those techniques and have a little
bit of discussion over here's what I need

718
00:50:07.840 --> 00:50:12.679
from you. Not let's sit down
together and now I've pulled you off your

719
00:50:12.719 --> 00:50:15.159
task so you can work on my
task with me. You know, this

720
00:50:15.199 --> 00:50:20.239
is a good opportunity to ask you, Thomas, what you thought of the

721
00:50:20.280 --> 00:50:24.559
modular monoliths show we do with Leila, because we're talking about that now.

722
00:50:25.760 --> 00:50:31.679
Yeah, I'm actually halfway through that
episode. But no, the modular monolith

723
00:50:31.760 --> 00:50:37.639
is a topic that's on the INFOCU
Trends report. So every year INFOCU does

724
00:50:37.719 --> 00:50:40.719
several different trends reports, and I'm
responsible for the architecture one, and we've

725
00:50:40.760 --> 00:50:46.840
had some variation of modular monolith moving
across that the graph for a while.

726
00:50:47.400 --> 00:50:52.000
And it's the idea that you don't
like. It's not monolith versus micro services.

727
00:50:52.159 --> 00:50:57.840
It's well architected systems and what are
the modules that you need to build

728
00:50:58.079 --> 00:51:01.760
and recognizing Yeah, you can separate
concerns without going full on micro service,

729
00:51:02.119 --> 00:51:06.760
right, And so if your code
sciences is as simple as how do you

730
00:51:06.880 --> 00:51:13.039
organize your code? I can't remember
who talked about the good architecture. There's

731
00:51:13.079 --> 00:51:15.760
some discussion about how to stu up
your project and it was like very structure

732
00:51:15.800 --> 00:51:17.559
and you had to follow the rules. It's like, this is so much

733
00:51:17.559 --> 00:51:21.920
structure. I'm like, I think
what he was getting at is if I

734
00:51:21.960 --> 00:51:25.000
have a directory structure and I'm going
to change. You know, we do

735
00:51:25.119 --> 00:51:30.559
financial stuff invoices, and here's the
invoices controller and then here's the Invoices business

736
00:51:30.639 --> 00:51:35.559
layer, and here's the invoices data
layer. And I'm any one change to

737
00:51:35.679 --> 00:51:39.239
invoices is touching code in three different
places. Like if you just modify the

738
00:51:39.239 --> 00:51:44.159
folder structure and say it's invoices,
and then underneath that is all the stuff

739
00:51:44.280 --> 00:51:47.119
when you make a change to that
module, Like, all of your change

740
00:51:47.159 --> 00:51:51.119
are under one directory structure. And
mentally you're like, oh, this is

741
00:51:51.159 --> 00:51:55.840
not a big cross cutting concern.
It's that vertical slice and all those vertical

742
00:51:55.840 --> 00:52:00.760
slices stay together. And so when
I see modular monoliths, I think that's

743
00:52:00.800 --> 00:52:05.679
good because you're focusing on the modularity
aspect. The modelis is just the delivery

744
00:52:05.719 --> 00:52:09.119
technique. Yeah, A good way
to find out what's going to get touched

745
00:52:09.239 --> 00:52:15.039
is just change the interface. Let
the compiler tell you. Yeah, I

746
00:52:15.079 --> 00:52:17.679
think it was. You've all lower
you talked about the things you break off

747
00:52:17.719 --> 00:52:22.079
into monoliths or into micro services.
It's not necessarily for the performance gains.

748
00:52:22.159 --> 00:52:25.880
But what is likely to change a
lot, And you want the thing that

749
00:52:25.880 --> 00:52:29.800
you change a lot to be as
small as possible. And the stuff you

750
00:52:29.840 --> 00:52:32.400
don't change a lot is very stable. Like the food in my fridge gets

751
00:52:32.480 --> 00:52:36.599
changed all the time, but my
refrigerator doesn't get changed. Let's be honest.

752
00:52:36.599 --> 00:52:38.599
You don't do this for performance.
In fact, it will often degrade

753
00:52:38.679 --> 00:52:44.840
performance. You do this for Yeah, you want to be agile. It

754
00:52:45.400 --> 00:52:46.960
depends what you mean by performance,
yeah, because I had to throw out

755
00:52:46.960 --> 00:52:52.360
it depends there because if you're you
have a service that needs to do a

756
00:52:52.360 --> 00:52:55.880
million requests, then you need to
be able to scale that to handle a

757
00:52:55.880 --> 00:53:01.039
million requests and the other service doesn't
need to have that much load. Does

758
00:53:01.039 --> 00:53:05.480
it need to be as BIG's And
that's not so much a performance conversation,

759
00:53:05.639 --> 00:53:07.280
is a scaling conversation. Yeah,
and yeah, you need to find the

760
00:53:07.320 --> 00:53:14.559
appropriate level of granularity for all of
these things. Yeah, but I do

761
00:53:14.960 --> 00:53:20.360
agree with that. You've all's positioned
on where where are your points of resonance?

762
00:53:20.559 --> 00:53:24.360
Like where where? And how big
you want the smallest pieces of your

763
00:53:24.360 --> 00:53:28.920
code vibrating. So it's like,
oh, you know, this constant change

764
00:53:28.960 --> 00:53:30.960
happening in this service, but it's
tied to these other four and so now

765
00:53:30.960 --> 00:53:37.000
they're all constantly being redeployed. It's
like peeling that one off and paying a

766
00:53:37.000 --> 00:53:39.880
bit of overhead to it so that
the impact of update is lower. Ye,

767
00:53:40.639 --> 00:53:44.559
you know, we're willing to pay
that overhead, only you know those

768
00:53:45.079 --> 00:53:47.440
often those overheads are milliseconds, so
it's not that big of a deal,

769
00:53:47.519 --> 00:53:52.840
but it is a security boundary.
It's a transactional boundary. Like nothing is

770
00:53:52.840 --> 00:53:54.800
free. Yeah, if you've got
something that has to be really secure,

771
00:53:54.880 --> 00:53:59.639
you've got PII data whatever, and
you PCI data whatever. It is,

772
00:53:59.679 --> 00:54:01.960
like I want nobody to see that
except this little thing over here. That's

773
00:54:01.960 --> 00:54:07.880
easy. It's the convenience factor where
oh, I'll just put this code here

774
00:54:07.639 --> 00:54:12.119
that tends to get to Like the
monolith isn't bad. It's the big ball

775
00:54:12.159 --> 00:54:15.119
of mud that's bad. The code
that we can't understand, that's bad.

776
00:54:15.559 --> 00:54:20.480
So the monolith is fine if it's
the right thing. And for most cases,

777
00:54:20.719 --> 00:54:24.119
don't start with microservices. That's usually
your first step. Like if I

778
00:54:24.159 --> 00:54:27.840
had one problem and then we came
with microservices, now we have ninety nine,

779
00:54:28.079 --> 00:54:34.159
I have a microservices a problem factory. Right, yeah, I think.

780
00:54:34.360 --> 00:54:36.840
I think in that same show with
Leyla, and admittedly it came out

781
00:54:36.960 --> 00:54:39.239
yesterday, so I don't blame you
for not having finishal listening to it.

782
00:54:39.320 --> 00:54:45.239
Yet we're recording it the day after
it was published. There's another Conway's law

783
00:54:45.280 --> 00:54:47.880
element there where you know, I
think lately did a good job of describing

784
00:54:47.920 --> 00:54:52.559
where is the case where you start
with microservice. It's a very large project.

785
00:54:52.679 --> 00:54:55.400
You know it's a large project and
you have a large distributed team working

786
00:54:55.440 --> 00:55:01.400
on it, where now the microservices
boundary is actually simple afy working in parallel

787
00:55:01.440 --> 00:55:05.719
with such a big team. Yeah, but if you don't, if you

788
00:55:05.760 --> 00:55:08.000
don't have all of those things,
like you're just creating ceremony you don't need.

789
00:55:08.320 --> 00:55:10.840
Yeah, I think I think that's
Martin Fowler has a post of you

790
00:55:10.920 --> 00:55:16.119
must be this tall to ride micro
services, love it and and if you

791
00:55:16.159 --> 00:55:20.079
only have ten people, you should
not do it. Yeah. Right,

792
00:55:20.320 --> 00:55:22.960
you need someone to work on your
platform. How do you make it easy

793
00:55:23.039 --> 00:55:27.079
to spin up new services and tear
them down? Like I don't want to

794
00:55:27.119 --> 00:55:30.719
have to be going into the Azure
portal every time I need a new service

795
00:55:30.880 --> 00:55:32.800
I have, I have almost command
line tools. I want to create something,

796
00:55:34.400 --> 00:55:39.199
I spend something up and that that
that platform that we need for the

797
00:55:39.360 --> 00:55:45.119
development to be efficient. You need
people that are just dedicated on that problem

798
00:55:45.159 --> 00:55:49.280
and be able to make that scale
and efficient to your team. Yeah,

799
00:55:49.559 --> 00:55:52.679
very fair done. Coming into the
end here, how do we want to

800
00:55:52.679 --> 00:55:55.840
wrap this up and leaders anything to
call back on? Yeah? The last

801
00:55:55.840 --> 00:56:00.320
thing we didn't get to his leadership, and I think that this back to

802
00:56:00.320 --> 00:56:02.599
the point that every architect still needs
to write some code, and on the

803
00:56:02.599 --> 00:56:07.760
flip side, all developers can do
architecture. I talked to Andrew harm Law,

804
00:56:07.800 --> 00:56:10.960
who I just saw today. The
first two chapters of his new book

805
00:56:10.960 --> 00:56:15.719
are coming out. They're available on
O'Riley or somewhere. But he talked about

806
00:56:15.760 --> 00:56:20.599
the architecture advice process, and it
gets to the idea that anyone can make

807
00:56:20.679 --> 00:56:23.159
architecture decisions. There's only two caveats. You have to talk to all the

808
00:56:23.159 --> 00:56:27.800
people who are going to be impacted
by the decision, and talk to the

809
00:56:27.800 --> 00:56:31.559
people who have knowledge about and the
relevant experience to make the decision. So

810
00:56:31.840 --> 00:56:36.320
this is one of those things like
be the servant leader and help mentor the

811
00:56:36.360 --> 00:56:38.360
next generation of architects. Again,
you don't have to be an architect,

812
00:56:38.400 --> 00:56:42.920
but I want to help you make
good decisions. Maybe it's not even architecture

813
00:56:42.920 --> 00:56:45.280
decision. Maybe it's should I use
this library or that library. Let's think

814
00:56:45.280 --> 00:56:47.960
about it. Maybe we should write
an ADR for that. To just go

815
00:56:49.039 --> 00:56:53.039
through the process and if they see
I've had engineers I work with say I

816
00:56:53.079 --> 00:56:57.880
appreciate that we use a DRS because
it tells me how to make a decision,

817
00:56:57.960 --> 00:57:00.440
like they're seeing why was a decision
made? But also, oh,

818
00:57:00.599 --> 00:57:04.280
I can use that as a template
when I need to make a heart decision.

819
00:57:04.480 --> 00:57:07.679
So right, if I can complete
this ADR document in a sensible way,

820
00:57:07.679 --> 00:57:10.320
I have a better chance of getting
that decision done. Yep. Yeah.

821
00:57:10.360 --> 00:57:14.760
So architecture is a team sport,
you know. We got to find

822
00:57:14.760 --> 00:57:19.719
the ways to work with everybody,
encourage them to get better. I think

823
00:57:19.760 --> 00:57:22.480
the last little shout out I have
to get it is read Domain Dier from

824
00:57:22.559 --> 00:57:27.800
Design by Eric Evans, because when
I talk about communication and I said that

825
00:57:27.880 --> 00:57:31.440
communication is between computers, between people
and computers, and between two people,

826
00:57:34.239 --> 00:57:37.400
DDD really gets to the heart of
that. I mean, the subtitle of

827
00:57:37.440 --> 00:57:42.000
book is tackling complexity at the heart
of software. If you use a ubiquitous

828
00:57:42.079 --> 00:57:45.800
language within a bounded context, and
you take that language of the business,

829
00:57:45.400 --> 00:57:50.039
use it for your requirements, use
it for your code, it's going to

830
00:57:50.119 --> 00:57:52.320
solve a lot of problems because you
don't have those extra translation steps. You

831
00:57:52.360 --> 00:57:55.480
just simplify the communication. And so
that's one of the things that I always

832
00:57:55.519 --> 00:58:00.000
go back to. It's like,
how do we define our domain and recognize

833
00:58:00.360 --> 00:58:04.360
what the language is within my domain? Isn't the same outside the domain.

834
00:58:04.480 --> 00:58:07.880
Like if I say cookies, am
I going to go and give you a

835
00:58:07.880 --> 00:58:09.880
cookie to eat? Or you accepting
the cookies on the website? Right,

836
00:58:10.239 --> 00:58:14.920
words don't always mean the same,
and so make that boundary context, make

837
00:58:14.960 --> 00:58:17.280
the boundary and say, right now, for our problem, here's what we're

838
00:58:17.280 --> 00:58:21.239
talking about. Yeah, good stuff, Thomas. What's next for you?

839
00:58:21.559 --> 00:58:24.400
What's in your inn? So my
bio mentioned that I'm living with my wife

840
00:58:24.400 --> 00:58:30.880
and son here in Denver. My
son starts college in two weeks. Not

841
00:58:30.880 --> 00:58:35.760
not at all nervous or excited about
that. Okay, no, no,

842
00:58:35.920 --> 00:58:40.159
one state over. He's going on
in Nebraska. So yeah, so close

843
00:58:40.239 --> 00:58:44.039
enough he could come over for the
weekend, but far enough away that he

844
00:58:44.079 --> 00:58:46.719
probably won't. So Denver has like
the third busiest airport in the world.

845
00:58:47.039 --> 00:58:50.920
Omaha does not. And I have
to say, having flown in there,

846
00:58:50.960 --> 00:58:53.360
it's amazing. It's so great,
isn't it. So I love getting in

847
00:58:53.400 --> 00:58:57.559
out of smaller reports. And then
the other thing on my to do list

848
00:58:57.559 --> 00:59:02.559
coming up, I'll be speaking at
my company's annual conference, Bbcon in October,

849
00:59:02.760 --> 00:59:07.880
which is back in person for the
first time. Pandemic and it's in

850
00:59:07.920 --> 00:59:12.000
Denver. It moves around the country, and so I'm like I will,

851
00:59:12.280 --> 00:59:15.079
I'm in Denver, so you get
to go home at net. So anyone

852
00:59:15.119 --> 00:59:19.119
listening to the show who is a
black Bug customer and wants to hear about

853
00:59:19.159 --> 00:59:22.599
the architecture we're doing within our systems, that's all. I'll be speaking about

854
00:59:22.679 --> 00:59:25.239
a couple of my coworkers. All
right, Thomas, this has been great.

855
00:59:25.480 --> 00:59:28.800
It's always good to talk to you, and it's been a long time.

856
00:59:28.840 --> 00:59:31.000
And come back soon, will you? Of course? Have you do

857
00:59:31.079 --> 00:59:35.800
help anytime? All right, We'll
see you next time on dot net rocks.

858
00:59:58.159 --> 01:00:01.159
Dot net Rocks is brought to you
by Frankland's Net and produced by Pop

859
01:00:01.239 --> 01:00:07.880
Studios, a full service audio,
video and post production facility located physically in

860
01:00:07.960 --> 01:00:13.280
New London, Connecticut, and of
course in the cloud online at pwop dot

861
01:00:13.320 --> 01:00:17.519
com. Visit our website at dt
n et r o c ks dot com

862
01:00:17.559 --> 01:00:22.400
for RSS feeds, downloads, mobile
apps, comments, and access to the

863
01:00:22.440 --> 01:00:28.039
full archives going back to show number
one, recorded in September two thousand and

864
01:00:28.119 --> 01:00:30.480
two. And make sure you check
out our sponsors. They keep us in

865
01:00:30.599 --> 01:00:37.119
business. Now go write some code, see you next time. We got Van

