1
00:00:00,000 --> 00:00:03,300
Programmers have to come out of 
their cubicles, Innovative 

2
00:00:03,300 --> 00:00:06,700
software development, doesn't 
happen with one person in a 

3
00:00:06,708 --> 00:00:10,600
cubicle with great ideas, 
because it's not just even about

4
00:00:10,600 --> 00:00:14,000
phone, anybody been? 
Like the, it's about what does 

5
00:00:14,000 --> 00:00:17,000
the code accomplish and if the 
quote accomplishes something 

6
00:00:17,000 --> 00:00:23,800
Innovative great. 
Hey everyone. 

7
00:00:24,300 --> 00:00:29,100
My name is Henry Surya be Robin.
And you're listening to the 

8
00:00:29,100 --> 00:00:32,700
tekhelet Juno, the show will be 
bringing you the greatest 

9
00:00:32,700 --> 00:00:36,600
technical leaders practitioners 
and thought leaders in the 

10
00:00:36,600 --> 00:00:41,400
industry to discuss about their 
Journey ideas and practices that

11
00:00:41,400 --> 00:00:44,600
we all can learn and apply to 
build a highly performing 

12
00:00:44,600 --> 00:00:48,100
technical team and to make an 
impact in your personal work. 

13
00:00:48,400 --> 00:00:56,800
So let's dive into our Journal. 
Hey everyone. 

14
00:00:56,800 --> 00:01:00,300
Welcome to The new episode of 
the technique journal in 2021 

15
00:01:00,300 --> 00:01:02,700
with me Ojos Henry Surya without
one. 

16
00:01:02,800 --> 00:01:05,400
Thanks for tuning in and 
spending your time with me 

17
00:01:05,400 --> 00:01:08,800
today, listening to this episode
after a two-week break. 

18
00:01:09,300 --> 00:01:11,000
I'm looking forward to kicking 
off the show. 

19
00:01:11,000 --> 00:01:15,000
Again, in this new year, with a 
number of amazing upcoming 

20
00:01:15,000 --> 00:01:18,400
episodes which are lining up to 
be released in the next few 

21
00:01:18,400 --> 00:01:20,900
weeks. 
And by the way, Happy New Year 

22
00:01:20,900 --> 00:01:23,500
to all of you. 
And I wish that all of us will 

23
00:01:23,500 --> 00:01:25,100
have a marvelous year ahead of 
us. 

24
00:01:25,100 --> 00:01:27,400
And I hope that we will be in a 
much better. 

25
00:01:27,500 --> 00:01:30,700
Better situation in terms of 
recovering from the pandemic. 

26
00:01:31,100 --> 00:01:34,900
If you still remember at the end
of 2020 package, you know, ran 

27
00:01:34,900 --> 00:01:37,500
the 20th episode giveaway 
contest. 

28
00:01:37,800 --> 00:01:40,400
For those of you who took part 
in the contest. 

29
00:01:40,400 --> 00:01:43,500
Thank you for participating and 
subscribing to the show's 

30
00:01:43,500 --> 00:01:46,300
mailing list. 
And here are the five lucky 

31
00:01:46,300 --> 00:01:50,100
winners of the jetbrains, all 
products pack personal licenses.

32
00:01:50,500 --> 00:01:56,100
Congratulations to Anna, Daniel 
Jardin du K and Lynn. 

33
00:01:56,600 --> 00:01:59,800
I hope that the LIE Incest will 
be of great, help for you this 

34
00:01:59,800 --> 00:02:03,200
year. 
Congratulations, again, during 

35
00:02:03,200 --> 00:02:05,800
the two-week break. 
I took the opportunity to 

36
00:02:05,800 --> 00:02:08,900
reflect and look back on how the
show has been performing. 

37
00:02:09,300 --> 00:02:12,000
And I must say that I am 
extremely happy to see the 

38
00:02:12,000 --> 00:02:15,200
listeners growth and the 
vibrancy of the community on the

39
00:02:15,200 --> 00:02:18,100
social media channels. 
For those of you who would like 

40
00:02:18,100 --> 00:02:20,400
to add on to the vibrancy of the
community. 

41
00:02:20,600 --> 00:02:23,800
You can find technology, you 
know, on LinkedIn, Twitter and 

42
00:02:23,800 --> 00:02:26,900
Instagram and make sure to 
follow the show there. 

43
00:02:27,400 --> 00:02:30,500
I'd also like to mention that 
package, you know, is also 

44
00:02:30,500 --> 00:02:33,300
available on YouTube. 
And during the break. 

45
00:02:33,400 --> 00:02:37,400
I added a few new playlist on 
the YouTube channel, especially 

46
00:02:37,400 --> 00:02:41,200
for those of you who, like, to 
consume the podcast content in a

47
00:02:41,200 --> 00:02:45,000
bite-sized manner, make sure to 
check out those new playlist, 

48
00:02:45,000 --> 00:02:49,600
which include each episode short
clip, the patron message, and 

49
00:02:49,600 --> 00:02:53,000
the tree tekhelet wisdom, that 
I've always asked to all my 

50
00:02:53,000 --> 00:02:55,600
amazing guests at the end of 
each episode. 

51
00:02:56,000 --> 00:02:57,300
Subscribe to the YouTube 
channel. 

52
00:02:57,600 --> 00:03:01,200
And get notified for any new 
videos that I upload to the 

53
00:03:01,200 --> 00:03:04,500
channel this year. 
I'm also hoping to increase the 

54
00:03:04,500 --> 00:03:07,900
number of patrons contributing 
back to the show, which would 

55
00:03:07,900 --> 00:03:10,600
help me tremendously in 
producing self-sustaining 

56
00:03:10,600 --> 00:03:15,000
episodes week after week. 
Join us as a patron by going to 

57
00:03:15,000 --> 00:03:18,400
technology, you know, the dev 
slash Patron and helped me to 

58
00:03:18,400 --> 00:03:21,300
achieve the goals that I'm 
currently running on the page 

59
00:03:22,100 --> 00:03:26,800
for our new episode in 2021. 
I am sharing my conversation 

60
00:03:26,800 --> 00:03:31,300
with On Vernon Vaughn is a 
leading expert in domain-driven 

61
00:03:31,300 --> 00:03:34,200
design and reactive software 
development. 

62
00:03:34,300 --> 00:03:38,100
He is extremely well known for 
his best-selling D&D books. 

63
00:03:38,300 --> 00:03:41,800
Implementing domain-driven 
design or the red book and 

64
00:03:41,800 --> 00:03:45,900
domain-driven design, distilled 
the green book and he specially 

65
00:03:45,900 --> 00:03:49,600
commissioned by Pearson 
addison-wesley to curate and 

66
00:03:49,600 --> 00:03:52,500
edit his very own Vaughn Vernon 
Signature. 

67
00:03:52,500 --> 00:03:55,700
Series. 
Vaughn is also well known for 

68
00:03:55,700 --> 00:03:58,800
his ID, D Workshop. 
Which he has been running for 

69
00:03:58,800 --> 00:04:02,700
the past eight years teaching 
people how to implement DDD the 

70
00:04:02,700 --> 00:04:05,300
right way. 
He is also the founder of the 

71
00:04:05,300 --> 00:04:09,600
open-source feeling, go platform
project, a DDD friendly, to set 

72
00:04:09,600 --> 00:04:13,300
for the jvm simplifying, 
reactive event-driven and 

73
00:04:13,300 --> 00:04:16,899
microservices architectures. 
In this episode. 

74
00:04:16,899 --> 00:04:20,200
We discussed many things about 
domain driven design and 

75
00:04:20,200 --> 00:04:23,900
event-driven architecture 
starting from the fundamentals 

76
00:04:23,900 --> 00:04:27,300
and some of the advanced aspects
of them Vaughn. 

77
00:04:27,400 --> 00:04:31,100
And shared many of his insights 
such as why developers should 

78
00:04:31,100 --> 00:04:34,500
learn more about DDD. 
The most important aspect of 

79
00:04:34,500 --> 00:04:39,300
DDD, the benefits of Eda 
eventual consistency event 

80
00:04:39,300 --> 00:04:42,600
storming and event sourcing 
towards the end. 

81
00:04:42,800 --> 00:04:46,000
One also gave a sneak peak about
his new book, Strategic 

82
00:04:46,000 --> 00:04:49,600
monoliths, and microservices, 
and why he wrote it. 

83
00:04:50,000 --> 00:04:53,600
And make sure to listen to his 
advice on why developers should 

84
00:04:53,600 --> 00:04:56,800
get out of their cubicles to 
innovate for the business. 

85
00:04:57,100 --> 00:05:00,200
I That you will enjoy this great
episode. 

86
00:05:00,300 --> 00:05:02,300
Please. 
Consider helping the show in the

87
00:05:02,300 --> 00:05:06,200
smallest possible way by leaving
me a rating and review on Apple 

88
00:05:06,200 --> 00:05:09,200
podcast and other podcast apps 
that allow you to do. 

89
00:05:09,200 --> 00:05:13,200
So, those ratings and reviews 
are one of the best ways to get 

90
00:05:13,200 --> 00:05:15,400
these podcasts to reach more 
listeners. 

91
00:05:15,700 --> 00:05:18,500
And hopefully the show gets 
featured on the podcast 

92
00:05:18,500 --> 00:05:20,900
platform. 
I'm also looking forward to 

93
00:05:20,900 --> 00:05:24,600
hearing any comments and 
feedback on the social media, or

94
00:05:24,600 --> 00:05:27,400
you can also directly send to me
at Tech lead, you know, The 

95
00:05:27,407 --> 00:05:31,100
death / feedback. 
So let's get the episode started

96
00:05:31,100 --> 00:05:35,100
right after our sponsor message.
Are you looking for a new cool 

97
00:05:35,100 --> 00:05:38,800
swag Tecla Journal. 
Now offers you some swags that 

98
00:05:38,800 --> 00:05:42,300
you can purchase online. 
These tracks are printed on 

99
00:05:42,300 --> 00:05:46,200
demand based on your preference 
and will be delivered safely to 

100
00:05:46,200 --> 00:05:48,700
you all over the world. 
We're shipping is available. 

101
00:05:49,200 --> 00:05:51,800
Check out all the cool strikes 
available by visiting 

102
00:05:51,800 --> 00:05:56,300
technology, know that deaf / 
shop, and don't forget to break 

103
00:05:56,300 --> 00:05:58,700
yourself. 
Once you Receive any of those 

104
00:05:58,700 --> 00:06:04,600
tracks, welcome everyone to 
another show of the technology. 

105
00:06:04,600 --> 00:06:05,400
You know. 
Today. 

106
00:06:05,400 --> 00:06:09,000
I'm so excited to have with me. 
One of the foremost spot leaders

107
00:06:09,000 --> 00:06:11,400
in the industry. 
His name is Vaughn Vernon. 

108
00:06:11,600 --> 00:06:14,400
He is well, known for the DDD 
workshops. 

109
00:06:14,400 --> 00:06:17,400
One of the thought leaders about
domain driven design, PS, 

110
00:06:17,400 --> 00:06:20,100
written a few books on dvd. 
One, is the implementing 

111
00:06:20,100 --> 00:06:23,000
domain-driven design and the 
other one is domain-driven, 

112
00:06:23,000 --> 00:06:25,500
design distilled. 
And he's also well known for his

113
00:06:25,500 --> 00:06:29,200
Workshop, which is called idd. 
D Workshop, which has around for

114
00:06:29,200 --> 00:06:31,300
a number of years. 
And he also set up a company 

115
00:06:31,300 --> 00:06:34,900
called feeling go which is also 
doing things around Edd and 

116
00:06:34,900 --> 00:06:37,300
reactive patterns and things 
like that. 

117
00:06:37,500 --> 00:06:39,200
So, welcome everyone to the 
show. 

118
00:06:39,200 --> 00:06:41,500
I'm so excited to have the 
conversation with you today. 

119
00:06:42,000 --> 00:06:44,400
Thank you for inviting. 
You Lads people. 

120
00:06:44,800 --> 00:06:46,700
So one. 
I know you have a very long 

121
00:06:46,700 --> 00:06:49,400
illustrious career Journey, or 
maybe for the audience here. 

122
00:06:49,400 --> 00:06:52,300
Can you share some of your 
highlights and turning points in

123
00:06:52,300 --> 00:06:54,000
your career? 
Sure. 

124
00:06:54,300 --> 00:06:56,600
It's funny that you say in long 
and illustrious. 

125
00:06:56,600 --> 00:07:02,000
I would say lat Illustrious. 
Well, I think I learned a lot 

126
00:07:02,000 --> 00:07:05,800
along the way I have done some 
very nice work. 

127
00:07:05,800 --> 00:07:08,600
But I think everyone will 
consider the row that they've 

128
00:07:08,600 --> 00:07:11,300
been on a bit bumpy, maybe more 
than not. 

129
00:07:11,600 --> 00:07:15,200
So I'll tell you my experience. 
I started in the industry 

130
00:07:15,200 --> 00:07:18,800
working at an insurance 
Clearinghouse company, which was

131
00:07:18,800 --> 00:07:23,000
basically the investors were 11 
largest insurance companies in 

132
00:07:23,000 --> 00:07:25,100
the US. 
I can't even remember all of 

133
00:07:25,108 --> 00:07:27,100
them. 
I think Edna was one of the main

134
00:07:27,100 --> 00:07:29,300
one. 
Ones that was very involved. 

135
00:07:29,300 --> 00:07:33,500
So the idea was that whenever 
someone checked into the 

136
00:07:33,500 --> 00:07:36,900
hospital, whether it was 
emergency or regular check-in, 

137
00:07:37,100 --> 00:07:40,500
they would have to later fill in
insurance forms. 

138
00:07:40,500 --> 00:07:44,500
And it took a long time for them
to get data sort of core domain 

139
00:07:44,500 --> 00:07:48,500
behind this insurance. 
Very house was to setup software

140
00:07:48,500 --> 00:07:51,400
that ran on the IBM PC have 
hospitals. 

141
00:07:51,500 --> 00:07:54,800
And whenever patient was 
admitted, they would basically 

142
00:07:54,800 --> 00:07:57,100
start filling out their 
insurance forms, right? 

143
00:07:57,100 --> 00:07:59,100
Then. 
Of data entry and it's doubled 

144
00:07:59,100 --> 00:08:03,500
as also a record for the 
hospital and then those claims 

145
00:08:03,500 --> 00:08:05,700
would be submitted, eventually, 
whatever. 

146
00:08:05,700 --> 00:08:09,700
All the treatment was identify. 
They would be submitted to a 

147
00:08:09,700 --> 00:08:14,200
central processing system 
validated and then reformatted 

148
00:08:14,200 --> 00:08:18,100
into the actual Target insurance
company like Aetna, like one of 

149
00:08:18,100 --> 00:08:20,300
these other than surance 
companies and they would be 

150
00:08:20,300 --> 00:08:22,900
submitted electronically to the 
insurance companies. 

151
00:08:22,900 --> 00:08:28,300
Now being that I started working
there in 1983, almost was T at 

152
00:08:28,300 --> 00:08:31,500
that stuff, way back then, 
before there was a name, he to 

153
00:08:31,500 --> 00:08:33,700
be and a lot of integration so 
forth. 

154
00:08:33,700 --> 00:08:37,000
But what I ended up doing was 
the software that ended up in 

155
00:08:37,008 --> 00:08:41,000
the hospital's was initially 
implemented, using Microsoft 

156
00:08:41,000 --> 00:08:44,600
COBOL on the TC and not sure 
what ever happened to that. 

157
00:08:44,600 --> 00:08:48,200
But the COBOL code and 
executable format took up ten. 

158
00:08:48,200 --> 00:08:50,200
This guess this gets at the 
time. 

159
00:08:50,200 --> 00:08:53,500
I think word, I guess 256k or 
something like that. 

160
00:08:53,700 --> 00:08:58,200
And so it was distributed across
10 to scats and Time that a new 

161
00:08:58,200 --> 00:09:00,700
module needed to use in the 
program. 

162
00:09:00,900 --> 00:09:05,200
The user would be told soochow, 
whatever to whatever else ended 

163
00:09:05,200 --> 00:09:07,800
up being problematic. 
Because there was a lot of 

164
00:09:07,900 --> 00:09:11,100
Shifting, one of the scats and 
then there was another discount 

165
00:09:11,100 --> 00:09:13,600
for the data sometimes. 
Literally. 

166
00:09:13,600 --> 00:09:16,200
I have a hard time, actually, 
remembering like, I want to say 

167
00:09:16,200 --> 00:09:18,400
Meg, but I know it's not make 
its K. 

168
00:09:18,400 --> 00:09:20,900
And then, when I say can, I was 
like, I just say to myself. 

169
00:09:20,900 --> 00:09:24,800
Wow, that was really, really not
much memory, but I was working 

170
00:09:24,800 --> 00:09:27,100
at the time and I was like, 
that's what you had feel. 

171
00:09:27,300 --> 00:09:30,400
It's so this is what the 
environment I was working in. 

172
00:09:30,400 --> 00:09:33,300
Well, I read an article invite 
magazine. 

173
00:09:33,300 --> 00:09:35,800
It was this very influential 
article. 

174
00:09:35,800 --> 00:09:37,700
It was on the C programming 
language. 

175
00:09:37,700 --> 00:09:40,700
And I think it was 1983 and for 
somewhere. 

176
00:09:40,700 --> 00:09:44,300
I think it was 83. 
I went to the VP of engineering 

177
00:09:44,300 --> 00:09:47,000
and I said, why aren't we using 
C instead of kobol? 

178
00:09:47,000 --> 00:09:51,100
I'd say we could reduce the 
program code. 212 scalp. 

179
00:09:51,400 --> 00:09:54,800
What was my clay early? 
It was like a total swag, but I 

180
00:09:54,800 --> 00:09:57,200
said, I think we can do it and I
did some calculations. 

181
00:09:57,400 --> 00:10:00,300
Relations just based on the 
article that I read, and what I 

182
00:10:00,300 --> 00:10:04,500
thought the sort of idea behind 
the code that was actually there

183
00:10:04,500 --> 00:10:06,700
in Cobol. 
And what I thought it would 

184
00:10:06,700 --> 00:10:10,000
maybe look like in C. 
Although I didn't know see at 

185
00:10:10,000 --> 00:10:11,500
all. 
But just reading and getting 

186
00:10:11,500 --> 00:10:15,400
this excitement over the 
language proposed this and the 

187
00:10:15,400 --> 00:10:17,900
VP was like, you think you could
do that. 

188
00:10:18,900 --> 00:10:21,500
I mean, these are guys that 
worked at EDS. 

189
00:10:21,600 --> 00:10:24,500
I don't know if, you know, he 
dies, but he dies out time was 

190
00:10:24,500 --> 00:10:27,100
like, if you had been in the 
military, you got a job. 

191
00:10:27,300 --> 00:10:30,200
Looking for Ross Perot and he 
made a future for you. 

192
00:10:30,200 --> 00:10:33,300
And so all these guys were 
mostly ex-military of some kind.

193
00:10:33,500 --> 00:10:37,100
And so, they were very strict, 
very demanding, very light blue 

194
00:10:37,100 --> 00:10:40,200
suits, with Pinstripes and white
shirts, and the red and blue 

195
00:10:40,200 --> 00:10:42,000
ties. 
And they totally looked like, 

196
00:10:42,000 --> 00:10:45,500
IBM or Executives off the court,
actually anybody at that time, 

197
00:10:45,500 --> 00:10:49,100
so I had to wear a suit to work 
and that was where it was. 

198
00:10:49,100 --> 00:10:50,800
So that's how I started my 
career. 

199
00:10:50,800 --> 00:10:54,900
And I thought kind of bent in 
this very small amounts of code,

200
00:10:54,900 --> 00:10:57,200
very tight code had to work 
efficiently. 

201
00:10:57,800 --> 00:11:00,100
That just became part of me for 
a long time. 

202
00:11:00,300 --> 00:11:04,000
I know later on, I heard this 
thing that supposedly Donald 

203
00:11:04,000 --> 00:11:07,100
knuth said, premature 
optimization is the root of all 

204
00:11:07,200 --> 00:11:10,800
evil, but the way I found out 
that that was being interpreted 

205
00:11:10,800 --> 00:11:14,300
is never optimize anything. 
Don't care about anything. 

206
00:11:14,300 --> 00:11:17,500
We've got big fast computers, a 
memory is free. 

207
00:11:17,500 --> 00:11:21,700
Disk has free compute cycles and
everything is free and it just 

208
00:11:21,700 --> 00:11:24,500
really bothered me. 
And so what happened is in a lot

209
00:11:24,500 --> 00:11:27,100
of occasions, I would go in as a
consultant. 

210
00:11:27,300 --> 00:11:30,500
And and something wouldn't be 
performing well, and I would say

211
00:11:30,500 --> 00:11:33,500
well, but look, you're not 
breaking out of this move after 

212
00:11:33,600 --> 00:11:36,400
you found something or why 
aren't you using a binary 

213
00:11:36,400 --> 00:11:39,200
search? 
And so just some of these really

214
00:11:39,200 --> 00:11:42,000
fundamental things that you 
learned just by reading the K, 

215
00:11:42,000 --> 00:11:45,800
NR c-- book or to hand in which 
equals the fan of binary search 

216
00:11:45,800 --> 00:11:47,500
in there. 
Something you just learned these

217
00:11:47,500 --> 00:11:52,800
things and your mindset was 
units and see is small tight 

218
00:11:52,800 --> 00:11:55,300
fast code. 
And so I was never really 

219
00:11:55,300 --> 00:11:59,800
bothered by people who wanted to
Ignore any sort of optimizations

220
00:11:59,800 --> 00:12:02,300
because they thought they didn't
need to pay attention to 

221
00:12:02,300 --> 00:12:04,600
Quality. 
And that way I just did it. 

222
00:12:04,600 --> 00:12:07,900
Anyway is just a natural find 
out if I didn't spend any time 

223
00:12:07,900 --> 00:12:09,900
on, it is just made sense to me 
like that. 

224
00:12:09,900 --> 00:12:14,200
Okay, so I can use a binary 
search and I didn't got this 

225
00:12:14,200 --> 00:12:17,800
function or method or whatever 
in a library and I could just 

226
00:12:17,800 --> 00:12:19,500
use that. 
And hey, what? 

227
00:12:19,500 --> 00:12:22,000
I don't even have to write my 
own binary search anymore. 

228
00:12:22,100 --> 00:12:23,600
That's just how I learned to 
think. 

229
00:12:23,800 --> 00:12:28,300
And so it's always really 
bothered me like when I Run into

230
00:12:28,300 --> 00:12:31,200
things these days. 
I mean, all due respect to these

231
00:12:31,200 --> 00:12:34,000
companies that have created 
these very, very popular 

232
00:12:34,000 --> 00:12:36,800
Frameworks and so forth, but 
when I learned that screen boot 

233
00:12:36,800 --> 00:12:41,500
is something like, 3, GB, just 
to be 32 gigabytes of RAM and 

234
00:12:41,500 --> 00:12:46,000
the lingo is 200 MB startup. 
It's not like, I'm trying 

235
00:12:46,100 --> 00:12:49,700
necessarily going out of my way 
to make Vlingo small. 

236
00:12:49,900 --> 00:12:53,400
It's just what happens. 
So, I worked in Unix and see 

237
00:12:53,400 --> 00:12:57,100
early on, I met a guy. 
I'd had written some books about

238
00:12:57,300 --> 00:13:01,900
Ramming, he had been a bell Labs
employee, and he offered me an 

239
00:13:01,900 --> 00:13:04,300
opportunity to write it 
co-author of a book with them, 

240
00:13:04,300 --> 00:13:06,400
because I knew Unix system 
internals. 

241
00:13:06,600 --> 00:13:10,200
This was for, actually the OS 
two, operating system. 

242
00:13:10,400 --> 00:13:13,000
And at the time, we didn't even 
know what the name would be, but

243
00:13:13,000 --> 00:13:15,100
it ended up being called os/2. 
At the time. 

244
00:13:15,100 --> 00:13:19,000
We saw it is called 286 Das. 
Which was the process here at 

245
00:13:19,000 --> 00:13:22,200
the time that could support 
protected mode, execution. 

246
00:13:22,200 --> 00:13:26,000
So you couldn't address could 
reference something outside of 

247
00:13:26,000 --> 00:13:28,200
your dress face. 
Otherwise, That was protection 

248
00:13:28,200 --> 00:13:31,200
fault. 
So that was just a lot of my 

249
00:13:31,300 --> 00:13:33,400
early days. 
I would say I was doing that 

250
00:13:33,400 --> 00:13:36,900
kind of work quite a bit for 
probably at least the first 10 

251
00:13:36,900 --> 00:13:40,600
years or so of my career. 
And then I was introduced to 

252
00:13:40,600 --> 00:13:43,500
Small Talk, actually probably 
yelling seven years, and I 

253
00:13:43,500 --> 00:13:47,100
wanted to small talk and this is
just like this leap mind-bending

254
00:13:47,100 --> 00:13:51,700
experience where I was also 
programming in C++, but C++ was 

255
00:13:51,700 --> 00:13:54,600
mirrored at the time. 
It was no compiler available. 

256
00:13:54,600 --> 00:13:58,300
It was only this thing called 
seafront, which was Translators,

257
00:13:58,300 --> 00:14:02,000
it would read and parse C++ code
and then generate C. 

258
00:14:02,000 --> 00:14:05,100
And you have a c compiler to 
compile that and debugging was 

259
00:14:05,100 --> 00:14:08,200
just horrendous because name 
mangling always, you know, you 

260
00:14:08,200 --> 00:14:10,300
couldn't recognize that build, 
you were working in. 

261
00:14:10,600 --> 00:14:14,200
It wasn't until I think really 
late 80s that a few companies 

262
00:14:14,200 --> 00:14:18,000
started coming out with C++, 
actual compilers, and I think 

263
00:14:18,000 --> 00:14:20,000
maybe Borland. 
And there was another little 

264
00:14:20,000 --> 00:14:23,200
company called Data light and 
probably poems or Tech. 

265
00:14:23,300 --> 00:14:26,900
So we started to get like, some 
real C plus plus programming in 

266
00:14:26,900 --> 00:14:28,900
there. 
But at the same time, learning 

267
00:14:28,900 --> 00:14:32,500
small, talk and being introduced
to that was just mind-blowing. 

268
00:14:32,500 --> 00:14:35,500
It was like, I was talking 
earlier today to Dave Thomas 

269
00:14:35,500 --> 00:14:38,200
Small, Talk, Dave. 
And we're talking small talk. 

270
00:14:38,200 --> 00:14:41,200
And I told him that when I 
learned small talk, I saw those 

271
00:14:41,200 --> 00:14:44,900
some manual or some document. 
I was reading about small talk 

272
00:14:44,900 --> 00:14:48,300
said, this is the small talk 
language and it was one length. 

273
00:14:48,700 --> 00:14:52,200
It explain the entire language 
in one line code, and it just 

274
00:14:52,200 --> 00:14:55,100
blew my mind because they'll 
take there were many, if any 

275
00:14:55,100 --> 00:14:57,100
keywords. 
I don't remember everything. 

276
00:14:57,300 --> 00:15:00,900
Was an object. 
Well, it took me like a lot of 

277
00:15:00,900 --> 00:15:04,700
code just to experiment with 
small talk and I think within 

278
00:15:04,700 --> 00:15:06,700
two weeks, I will, okay, I get 
it. 

279
00:15:06,700 --> 00:15:09,500
Now. 
I understand why this is the 

280
00:15:09,500 --> 00:15:12,500
whole language. 
But until you get over that 

281
00:15:12,500 --> 00:15:16,100
hurdle where there are no key 
words, there are no everything. 

282
00:15:16,100 --> 00:15:20,800
Well, there is a keyword called 
primitive, but that isn't used 

283
00:15:20,800 --> 00:15:24,000
in the small talk code. 
That is a language construct, 

284
00:15:24,000 --> 00:15:26,800
that you have to write like a 
ski binding for something. 

285
00:15:26,800 --> 00:15:29,600
If you You can't actually 
implement it in small talk. 

286
00:15:29,600 --> 00:15:33,100
Or if you need to integrate with
some Library Outsider database, 

287
00:15:33,200 --> 00:15:36,600
then use primitive to make a 
method invoked. 

288
00:15:36,600 --> 00:15:40,400
Well, you sent the message to 
some object and that dispatch to

289
00:15:40,400 --> 00:15:42,900
A Primitive method and that 
primitive method is where you 

290
00:15:42,900 --> 00:15:45,700
called actually like a dll or 
something outside. 

291
00:15:45,700 --> 00:15:49,500
So that was one key quoted. 
But yeah, so that was like the 

292
00:15:49,500 --> 00:15:53,700
beginning and then I got into 
Java when it was pretty clear, 

293
00:15:53,700 --> 00:15:57,100
that small talk wasn't going to 
survive at least in my way. 

294
00:15:57,200 --> 00:16:00,700
All because they weren't 
machines, that could run small 

295
00:16:00,700 --> 00:16:03,200
talk really? 
Well, it wasn't much memory and 

296
00:16:03,200 --> 00:16:07,100
small talk unless you had some 
special tools like and small 

297
00:16:07,100 --> 00:16:09,500
talk, which was Dave Thomas his 
company. 

298
00:16:09,500 --> 00:16:13,400
He couldn't, it took a lot of 
memory to run those but the pure

299
00:16:13,400 --> 00:16:17,800
programming experience and just 
the pace that you could write 

300
00:16:17,800 --> 00:16:21,700
code was just incredible. 
I mean it was 21 so I could out 

301
00:16:21,700 --> 00:16:24,700
code. 20 simplest plus program 
has no problem. 

302
00:16:24,800 --> 00:16:26,900
It was no context. 
We was no questions. 

303
00:16:26,900 --> 00:16:28,200
Asked. 
So you could just do that 

304
00:16:28,200 --> 00:16:31,600
anyway, so that's where I've 
been, thanks for sharing that. 

305
00:16:31,600 --> 00:16:34,500
I mean, it's really, really 
great to hear that history like 

306
00:16:34,500 --> 00:16:37,100
long time. 
Back even 1983 us. 

307
00:16:37,100 --> 00:16:42,400
Like I may not be there yet and 
I couldn't even imagine like one

308
00:16:42,400 --> 00:16:46,000
diskette is around 256 KB like 
what you mentioned. 

309
00:16:46,000 --> 00:16:49,900
It's really, really tiny. 
So one you are well known about 

310
00:16:49,900 --> 00:16:52,600
domain driven design. 
I myself, I won't consider 

311
00:16:52,600 --> 00:16:55,700
myself an expert on it. 
I read the book the initial book

312
00:16:55,700 --> 00:16:59,600
by Eric Evans the Book. 
He was quite difficult to read a

313
00:16:59,608 --> 00:17:02,400
say is very thick as well. 
And you come up with another 

314
00:17:02,400 --> 00:17:05,200
version of that domain driven 
design book, which is much 

315
00:17:05,200 --> 00:17:07,800
easier to digest and I really 
appreciate that. 

316
00:17:07,800 --> 00:17:10,400
And even you come up with 
another book for the distilled 

317
00:17:10,400 --> 00:17:13,599
version, which is even smaller 
and thinner which condense all 

318
00:17:13,599 --> 00:17:17,599
the essence of DVD, but for all 
our audience here who may not be

319
00:17:17,599 --> 00:17:20,300
familiar with domain-driven 
design, would you be able to 

320
00:17:20,300 --> 00:17:23,800
explain what is actually a DDD? 
Probably, our exploring. 

321
00:17:23,800 --> 00:17:27,000
Will you do differently today? 
When I do it 10 years ago? 

322
00:17:27,300 --> 00:17:31,100
But you could start with saying 
d d d is, you know, ubiquitous 

323
00:17:31,100 --> 00:17:34,700
language in a battle that 
context and right away, when you

324
00:17:34,700 --> 00:17:38,000
understand what a battle context
is that it's the sort of 

325
00:17:38,100 --> 00:17:43,400
relatively small boundary where 
you program code is application 

326
00:17:43,400 --> 00:17:46,800
code, is within this boundary. 
All of them, 100 percent of a 

327
00:17:46,800 --> 00:17:50,400
single application, or if you 
want to see a service it's 

328
00:17:50,400 --> 00:17:52,700
within their and then you say, 
wait a minute, but the word 

329
00:17:52,700 --> 00:17:55,500
ubiquitous means everywhere 
throughout permeating. 

330
00:17:55,700 --> 00:17:57,000
And then you say, how can that 
be? 

331
00:17:57,200 --> 00:17:59,800
There's this boundary. 
Well, it's because the 

332
00:17:59,800 --> 00:18:03,200
ubiquitous language is 
ubiquitous within that boundary 

333
00:18:03,200 --> 00:18:06,000
and the team lives within that 
boundary and the code links 

334
00:18:06,000 --> 00:18:09,300
within that boundary and all 
conversations that you have 

335
00:18:09,300 --> 00:18:13,100
about the model. 
All learning that you have about

336
00:18:13,100 --> 00:18:16,400
what's in this context in the 
model in this context. 

337
00:18:16,500 --> 00:18:20,100
That is why it's ridiculous. 
It is ubiquitous completely 

338
00:18:20,100 --> 00:18:24,100
permeates everything within the 
context including conversations 

339
00:18:24,100 --> 00:18:26,500
that you have those people. 
And that's the thing is all the 

340
00:18:26,500 --> 00:18:28,000
learning. 
With everything that you're 

341
00:18:28,000 --> 00:18:31,000
doing, you're starting to speak 
a language and you're starting 

342
00:18:31,000 --> 00:18:35,100
to make a language and then when
you write the code to implement 

343
00:18:35,100 --> 00:18:38,600
this language, you are making 
the code, look as close as 

344
00:18:38,600 --> 00:18:41,300
possible to the human 
conversations that you have. 

345
00:18:41,600 --> 00:18:46,400
And the human conversations are 
between not just developers and 

346
00:18:46,400 --> 00:18:49,200
you don't just have like a 
business analyst coming over and

347
00:18:49,200 --> 00:18:51,200
handing. 
You these use cases your 

348
00:18:51,200 --> 00:18:53,400
specification documents and say 
code it up. 

349
00:18:53,500 --> 00:18:56,500
Looks like we're really having 
conversations with the exact 

350
00:18:56,500 --> 00:18:59,500
people who are Very 
knowledgeable about the area of 

351
00:18:59,500 --> 00:19:02,500
expertise that working. 
And so, they're called domain 

352
00:19:02,500 --> 00:19:04,700
exclusive. 
I just like to see business 

353
00:19:04,700 --> 00:19:08,300
experts, as sometimes the word 
domain is just not well 

354
00:19:08,300 --> 00:19:10,500
understood. 
So, I just say business experts 

355
00:19:10,500 --> 00:19:12,500
within that area, likes fruit, 
each. 

356
00:19:12,700 --> 00:19:16,000
I think it's good to clarify 
that the word domain, we look at

357
00:19:16,000 --> 00:19:18,800
an English dictionary and look 
up the word domains. 

358
00:19:18,800 --> 00:19:21,700
I think there are at least three
definitions. 

359
00:19:21,800 --> 00:19:26,100
That's mostly about land 
ownership or Kingdom or a domain

360
00:19:26,100 --> 00:19:28,600
of a king. 
But the fourth entry is what 

361
00:19:28,600 --> 00:19:31,000
actually really applies most to 
be me. 

362
00:19:31,000 --> 00:19:32,700
And that is a spear of 
knowledge. 

363
00:19:32,700 --> 00:19:34,900
That definition is sphere of 
knowledge. 

364
00:19:35,000 --> 00:19:38,900
Well, once you have the sphere 
of knowledge, then you do own, 

365
00:19:38,900 --> 00:19:42,400
this kind of domain land, 
whatever you want to think of 

366
00:19:42,400 --> 00:19:44,400
it. 
As you cut out this area of 

367
00:19:44,400 --> 00:19:48,100
expertise, and you have 
ownership of it is yours and you

368
00:19:48,100 --> 00:19:50,300
make it what it is and we make 
it better. 

369
00:19:50,800 --> 00:19:53,800
But it's all driven by that 
sphere of knowledge that you 

370
00:19:53,800 --> 00:19:57,000
continue to develop. 
So it's all about conversation. 

371
00:19:57,200 --> 00:20:00,400
Learning and then improving the 
code as you can imagine doing 

372
00:20:00,400 --> 00:20:03,900
this very well is more expensive
than not doing that. 

373
00:20:04,000 --> 00:20:07,100
And so you don't want to invest 
that way everywhere. 

374
00:20:07,400 --> 00:20:10,700
You're not going to have that 
level of conversation and 

375
00:20:10,700 --> 00:20:13,700
iteration some things that just 
aren't that important. 

376
00:20:13,700 --> 00:20:17,400
So, you buy what you can, and 
what you buy is generally called

377
00:20:17,400 --> 00:20:20,500
a generic subdomain. 
What you're developing on the 

378
00:20:20,500 --> 00:20:24,100
other end, when I described 
previously is a core domain and 

379
00:20:24,100 --> 00:20:27,000
then in between that you have 
something called a supporting 

380
00:20:27,100 --> 00:20:30,100
sub domain and the supporting 
sub domain is something probably

381
00:20:30,100 --> 00:20:34,400
can't buy almost never, but you 
also don't want to invest a lot 

382
00:20:34,400 --> 00:20:36,900
of it. 
You can't create the core domain

383
00:20:36,900 --> 00:20:39,900
without having this sort of 
Helper, but you also don't want 

384
00:20:39,900 --> 00:20:43,000
to mix this code in with the 
poor because it's not the same 

385
00:20:43,000 --> 00:20:45,800
model and so you separate all 
these models. 

386
00:20:45,800 --> 00:20:48,600
And so you have this core 
domain, of course, sub domain. 

387
00:20:48,900 --> 00:20:51,600
So, if there's a domain that 
you're working in as, in a 

388
00:20:51,608 --> 00:20:55,600
problem space, it has a 
solution, then you have various 

389
00:20:55,600 --> 00:21:00,000
sub domains within that on. 
Subdomains roughly map to our 

390
00:21:00,000 --> 00:21:02,300
contacts. 
That's quite a DDT. 

391
00:21:02,400 --> 00:21:05,800
Those are the kind of strategic 
patterns and then strategically,

392
00:21:05,800 --> 00:21:07,500
you're looking to. 
Okay. 

393
00:21:07,600 --> 00:21:10,700
I've got all these boundaries 
Out, download contacts out 

394
00:21:10,700 --> 00:21:13,600
there, whether its core 
supporting generic. 

395
00:21:13,800 --> 00:21:16,300
How do we integrate all those 
and then use something called 

396
00:21:16,300 --> 00:21:20,300
context mapping to map between 
basically the languages and 

397
00:21:20,300 --> 00:21:23,400
sphere of knowledge in various 
places and integrate. 

398
00:21:23,700 --> 00:21:26,700
So they call it this over there 
and it means that there we need 

399
00:21:26,700 --> 00:21:29,200
little parts of that. 
What do we call it here? 

400
00:21:29,400 --> 00:21:32,000
What is it to us? 
Is it the same name? 

401
00:21:32,000 --> 00:21:35,500
But a different definition and 
that's where a bit of a tricky 

402
00:21:35,500 --> 00:21:39,400
part comes in, but you just have
to take your best shot at it and

403
00:21:39,400 --> 00:21:41,200
see how it goes. 
And then, of course, you can 

404
00:21:41,200 --> 00:21:43,300
Factor if you don't quite get it
right. 

405
00:21:43,800 --> 00:21:45,500
When I'm listening to you. 
I'm interested. 

406
00:21:45,500 --> 00:21:47,800
When you say that, it's not for 
everything. 

407
00:21:47,800 --> 00:21:51,700
You probably doing it right? 
It's very expensive, but can you

408
00:21:51,700 --> 00:21:54,800
explain, why is it expensive to 
do it right? 

409
00:21:54,900 --> 00:21:56,800
Versus example, common 
programming? 

410
00:21:57,300 --> 00:22:02,500
Well, it's expensive because you
are really experimenting and 

411
00:22:02,500 --> 00:22:05,100
having a lot of conversations 
and you're bringing business 

412
00:22:05,100 --> 00:22:08,900
experts into being side, by side
with you at certain times, or 

413
00:22:08,900 --> 00:22:10,900
you go to them. 
And so, you're taking their 

414
00:22:10,900 --> 00:22:13,800
time. 
There are certain points in the 

415
00:22:13,800 --> 00:22:17,000
project where they have to be 
involved for several hours at a 

416
00:22:17,008 --> 00:22:19,600
time. 
And then you're not going to be,

417
00:22:19,600 --> 00:22:21,500
right. 
I don't know how many times 

418
00:22:21,500 --> 00:22:24,500
I've, you know, you draw 
something on the Whiteboard or 

419
00:22:24,500 --> 00:22:26,900
you do events, whatever it is 
that you're doing. 

420
00:22:27,100 --> 00:22:30,300
And then you start coding and I 
mean, you're not voting for 5 or

421
00:22:30,300 --> 00:22:32,000
10 minutes and say, wait a 
minute. 

422
00:22:32,000 --> 00:22:34,300
We didn't think of this and then
you go back and while you have 

423
00:22:34,300 --> 00:22:37,900
to have more conversations, it 
just takes more time and you're 

424
00:22:37,900 --> 00:22:40,400
using probably the people that 
are working on. 

425
00:22:40,400 --> 00:22:43,200
This are some of the most 
experienced and skilled. 

426
00:22:43,300 --> 00:22:46,400
I remember one meeting I was 
sitting in with a client and 

427
00:22:46,400 --> 00:22:49,000
we're in this meeting and one 
guy actually, one of the lead 

428
00:22:49,000 --> 00:22:52,000
says, it's just names. 
We can name it anything. 

429
00:22:52,000 --> 00:22:56,300
It's just names like and I just 
that's when you get a twitch in 

430
00:22:56,300 --> 00:22:59,300
your eye or Your shoulder or 
something and that can do like, 

431
00:22:59,300 --> 00:23:01,500
you know, this is exactly the 
opposite. 

432
00:23:01,500 --> 00:23:04,800
No, it really does matter. 
Well, maybe it doesn't matter in

433
00:23:04,800 --> 00:23:07,900
that generic police who, maybe 
not even so much on the 

434
00:23:07,900 --> 00:23:11,200
supporting place, but in the 
core it absolutely Valves. 

435
00:23:11,400 --> 00:23:15,400
And so it takes time to think of
those things and experiment with

436
00:23:15,400 --> 00:23:18,700
them and decide is this good? 
Or is it good enough now? 

437
00:23:18,900 --> 00:23:22,600
I think if you look back at 
agile in general and X key, 

438
00:23:22,800 --> 00:23:26,600
you'll see a lot of the Box 
behind DVD forming at that point

439
00:23:26,600 --> 00:23:30,300
and this Is where, like XP said,
expert always available or 

440
00:23:30,300 --> 00:23:33,800
customer always loyal customer 
expert were interchangeable 

441
00:23:33,800 --> 00:23:37,600
terms, although they did say 
customer, but even then they 

442
00:23:37,600 --> 00:23:40,900
said, you don't use a proxy 
customer. 

443
00:23:41,000 --> 00:23:45,000
You need the real expert. 
So all this goes back to that 

444
00:23:45,000 --> 00:23:46,900
point. 
Well, I can't say that. 

445
00:23:46,900 --> 00:23:50,700
Absolutely, it did because I 
wasn't there with Eric Lee 

446
00:23:50,700 --> 00:23:54,600
worked on those, but you ask 
them use very much influenced by

447
00:23:54,700 --> 00:23:56,900
X key and I think maybe even 
work. 

448
00:23:57,100 --> 00:23:59,200
Some of those generally XP 
projects. 

449
00:23:59,400 --> 00:24:01,200
Yeah. 
So in the first place, knowing 

450
00:24:01,200 --> 00:24:03,700
about this, it's probably 
expensive to do it, right? 

451
00:24:03,700 --> 00:24:05,000
Involving. 
A lot of people. 

452
00:24:05,200 --> 00:24:08,600
Why is it important for 
programmers to know about this 

453
00:24:08,600 --> 00:24:11,000
technique and know when to 
implement it? 

454
00:24:11,100 --> 00:24:13,900
Why is it so important to nail 
about DDD? 

455
00:24:14,400 --> 00:24:17,000
Because this is where Innovation
occurs. 

456
00:24:17,200 --> 00:24:22,200
If you go back to the days of 
Thomas, Edison Thomas, Edison 

457
00:24:22,200 --> 00:24:26,800
said, some people say that I 
failed six thousand times. 

458
00:24:27,000 --> 00:24:29,600
He said I didn't fail 6,000 
times. 

459
00:24:29,600 --> 00:24:31,600
I just found out six thousand 
ways. 

460
00:24:31,600 --> 00:24:34,900
That didn't work. 
And then 6001 did, it wasn't 

461
00:24:34,900 --> 00:24:38,500
just Thomas, Edison doing that. 
He had a whole Army of, I think 

462
00:24:38,500 --> 00:24:41,600
he had a thousand scientists who
were working with him, and they 

463
00:24:41,600 --> 00:24:44,800
ran all kinds of experiments. 
And this was on the light bulb. 

464
00:24:44,900 --> 00:24:47,300
I think if you just look up that
history. 

465
00:24:47,500 --> 00:24:49,400
And so yeah, that was expensive,
right? 

466
00:24:49,400 --> 00:24:52,300
I mean, how long does it take a 
thousand scientists to run, six 

467
00:24:52,300 --> 00:24:54,500
thousand experiments that don't 
work. 

468
00:24:54,600 --> 00:24:56,800
And how long do the experiments 
last house? 

469
00:24:57,100 --> 00:24:58,900
Does it take to set up the 
experiment? 

470
00:24:59,100 --> 00:25:02,400
What kind of resources do you 
need to make this work? 

471
00:25:02,500 --> 00:25:05,000
Well, finally he got a light 
bulb that didn't burn out as 

472
00:25:05,000 --> 00:25:08,500
quickly as the light bulbs that 
were in Street lamps in the 

473
00:25:08,500 --> 00:25:11,000
early days that would burn out 
rather quickly. 

474
00:25:11,000 --> 00:25:14,600
Now, he had a fill-in them that 
lasted a long time, narratively 

475
00:25:14,900 --> 00:25:17,800
in the end, the experiments paid
off and Innovative. 

476
00:25:18,100 --> 00:25:21,300
So this is what I'm talking 
about is programmers. 

477
00:25:21,500 --> 00:25:25,100
If they really want to have a 
strategic impact on the 

478
00:25:25,100 --> 00:25:28,600
business, then they will. 
Will be involved with business 

479
00:25:28,600 --> 00:25:33,000
experts and find where 
investment needs to be made in 

480
00:25:33,000 --> 00:25:36,900
Italy, you know, mating, no one.
These days is really creating. 

481
00:25:37,100 --> 00:25:40,100
Maybe a few people are creating 
the better light bulb with a 

482
00:25:40,108 --> 00:25:42,000
filament that doesn't burn out 
quickly. 

483
00:25:42,200 --> 00:25:45,500
Elon Musk is doing a lot with 
rockets with spaceships and 

484
00:25:46,300 --> 00:25:49,500
because, hey, Erie uses them and
take off a little. 

485
00:25:49,500 --> 00:25:53,200
And so, there's an innovation. 
But is the way that he 

486
00:25:53,200 --> 00:25:56,600
calculates trajectory and path 
and so forth. 

487
00:25:57,100 --> 00:26:00,600
The completely unique from the 
way NASA or whoever launch 

488
00:26:00,600 --> 00:26:04,200
rockets before, probably not, 
probably very similar, but 

489
00:26:04,200 --> 00:26:07,400
that's not as core domain. 
The core domain is launching 

490
00:26:07,400 --> 00:26:10,600
that baby and bringing it back 
and not throwing away. 

491
00:26:10,700 --> 00:26:14,800
Millions of dollars every time 
watching box, the poor donating.

492
00:26:14,900 --> 00:26:17,600
So there's the Innovation. 
And so, that's the thing is 

493
00:26:17,600 --> 00:26:19,700
right now, in Space X. 
I don't know. 

494
00:26:19,700 --> 00:26:22,300
I'm just talking because I don't
know a lot about that project, 

495
00:26:22,300 --> 00:26:26,300
but just imagine that the rocket
itself is supporting. 

496
00:26:26,400 --> 00:26:30,200
I mean, they Need something. 
And the fuel is generic, right? 

497
00:26:30,200 --> 00:26:33,800
Any Lego by the fuel somewhere 
and they'd buy some components 

498
00:26:33,800 --> 00:26:36,400
and things. 
They're generic, but the core is

499
00:26:36,400 --> 00:26:39,300
okay. 
We need some way to not destroy 

500
00:26:39,300 --> 00:26:42,800
the rocket and this patch, a 
bunch of it into oceans around 

501
00:26:42,800 --> 00:26:46,500
the globe as its flying and 
bring it all back and be able to

502
00:26:46,500 --> 00:26:48,700
reuse it. 
And that's the portal name. 

503
00:26:48,900 --> 00:26:52,200
There's the irradiation. 
So, and I read about DDD a lot 

504
00:26:52,200 --> 00:26:56,400
of things seem to be closely 
tied with object-oriented 

505
00:26:56,400 --> 00:26:59,100
programming. 
Candy DD also be applied to 

506
00:26:59,100 --> 00:27:02,200
functional programming, or 
should we well, yeah, I think 

507
00:27:02,200 --> 00:27:04,600
you would say is that can 
functional programming be 

508
00:27:04,600 --> 00:27:07,100
applied to a core domain. 
Absolutely. 

509
00:27:07,200 --> 00:27:09,600
Right fact, we'll talk about a 
little bit, our new book 

510
00:27:09,600 --> 00:27:13,200
discusses that a bit and we'll 
have even more functional, 

511
00:27:13,200 --> 00:27:16,900
programming information later. 
So, you mentioned a number of 

512
00:27:16,900 --> 00:27:19,900
things that will be good. 
This language bounded, contacts 

513
00:27:19,900 --> 00:27:22,300
codomain, generics domain, and 
things like that. 

514
00:27:22,300 --> 00:27:25,800
What do you think are some of 
the basic most important 

515
00:27:25,800 --> 00:27:28,300
Concepts that people? 
Both should get in order to 

516
00:27:28,300 --> 00:27:32,300
understand DDD programmers, have
to come out of their cubicles. 

517
00:27:32,500 --> 00:27:35,100
I mean, that's funny because 
nobody's in humans these days. 

518
00:27:35,100 --> 00:27:38,200
I think maybe a few that no 
one's going to offices or maybe 

519
00:27:38,200 --> 00:27:40,900
a few people are, but the point 
is innovative software 

520
00:27:40,900 --> 00:27:45,000
development, doesn't happen with
one person in a cubicle with 

521
00:27:45,000 --> 00:27:48,000
great ideas. 
And you just keeps bringing them

522
00:27:48,000 --> 00:27:51,900
pizza or Ramen, or clever 
everyday, and noodles, or 

523
00:27:51,900 --> 00:27:54,800
whatever, and they just keep 
eating and turning out this 

524
00:27:54,800 --> 00:27:57,900
incredible code, because it's 
not just even About fold, 

525
00:27:57,900 --> 00:28:01,200
anybody can like those. 
It's about what does the code 

526
00:28:01,200 --> 00:28:03,300
accomplish. 
And if the quote accomplishes 

527
00:28:03,300 --> 00:28:07,300
something Innovative great, but 
there aren't too many single 

528
00:28:07,300 --> 00:28:10,300
individuals. 
Even if they're great coders. 

529
00:28:10,400 --> 00:28:13,800
There are too many single 
individual programmers who are 

530
00:28:13,800 --> 00:28:17,300
just off the top of their head, 
or even after thinking for a 

531
00:28:17,308 --> 00:28:21,200
long time, really Innovative 
about business things. 

532
00:28:21,300 --> 00:28:24,000
And so we have that sort of 
action symbiotic. 

533
00:28:24,000 --> 00:28:27,200
Need to be engaged with the 
business and The Business. - 

534
00:28:27,200 --> 00:28:31,100
with developers because look, 
Marc Andreessen, said ages ago, 

535
00:28:31,100 --> 00:28:34,500
internet time in ages abilities,
been nine or ten years now and 

536
00:28:34,508 --> 00:28:37,600
said software is eating the 
world if software is eating the 

537
00:28:37,600 --> 00:28:41,200
world and it is even more. 
So now than it was before you 

538
00:28:41,200 --> 00:28:44,400
better learn how to innovate. 
There's another quote from 

539
00:28:44,400 --> 00:28:48,400
Forbes Magazine its online. 
Every company is now a soffit 

540
00:28:48,400 --> 00:28:52,600
that me, if you aren't there, if
you'd still consider software a 

541
00:28:52,600 --> 00:28:56,800
cost center in your corporation,
and if that mentality, linger, 

542
00:28:57,000 --> 00:28:59,200
Is for very much longer, you're 
history. 

543
00:28:59,300 --> 00:29:03,300
I mean, there will be these 
companies that are so huge. 

544
00:29:03,400 --> 00:29:07,200
You think they can't fail. 
Well, they're dying, but they're

545
00:29:07,200 --> 00:29:11,300
dying at 200 million dollars a 
year and they don't see because 

546
00:29:11,300 --> 00:29:14,000
they still make billions and 
they're like, wait a minute. 

547
00:29:14,000 --> 00:29:17,400
So what and all of a sudden 
within three years or something,

548
00:29:18,000 --> 00:29:20,600
that's a billion. 
Now, what's going on? 

549
00:29:20,900 --> 00:29:23,600
Well, it's because you still 
have people pushing papers 

550
00:29:23,600 --> 00:29:26,500
around and the stuff. 
Okay, take all those people. 

551
00:29:26,500 --> 00:29:29,600
Who've I'm pushing pink Bruce 
for decades and make them 

552
00:29:29,600 --> 00:29:30,600
business. 
Experts. 

553
00:29:30,600 --> 00:29:33,500
They know this stuff. 
So it's not like you just fire 

554
00:29:33,500 --> 00:29:35,000
them. 
It's not like you go. 

555
00:29:35,000 --> 00:29:37,900
Oh, well, we're going to 
digitally transform and 

556
00:29:37,900 --> 00:29:40,000
therefore these people are 
useless to us. 

557
00:29:40,100 --> 00:29:43,100
No, they're not. 
They're experts at this. 

558
00:29:43,200 --> 00:29:46,400
We simply need to know how to 
make it work with software and 

559
00:29:46,400 --> 00:29:48,700
in a leg. 
Well, then it's interesting that

560
00:29:48,700 --> 00:29:52,500
you mentioned something that is 
non-technical to explain for 

561
00:29:52,500 --> 00:29:55,700
developers to understand. 
So, getting out of the cubicles 

562
00:29:55,700 --> 00:29:58,400
having conversations with 
People, the domain experts, 

563
00:29:58,400 --> 00:30:00,400
especially in an innovate with 
them. 

564
00:30:00,400 --> 00:30:02,800
Because one of these days 
software is going to be really, 

565
00:30:02,800 --> 00:30:05,600
really critical for every every 
company in the world. 

566
00:30:05,600 --> 00:30:08,200
For those people. 
Who are new to Dee Dee Dee. 

567
00:30:08,300 --> 00:30:11,500
How can they start actually? 
Well, I've got two books. 

568
00:30:11,500 --> 00:30:15,700
I would suggest re domain-driven
design distilled, first, get 

569
00:30:15,700 --> 00:30:19,200
some ideas and then use 
implementing domain driven 

570
00:30:19,200 --> 00:30:21,700
design. 
Actually, my first book as a 

571
00:30:21,700 --> 00:30:24,900
deep dive into each of the 
topics and more, even that you 

572
00:30:24,900 --> 00:30:28,700
read about in the still. 
And Then, use that red book. 

573
00:30:28,700 --> 00:30:31,400
Implementing domain driven 
design as a reference. 

574
00:30:32,300 --> 00:30:34,500
And of course, you always want 
to get Eric's book. 

575
00:30:34,700 --> 00:30:38,100
It is the definition but a lot 
of people need a sort of 

576
00:30:38,300 --> 00:30:42,500
stepping stone or something to 
get from what is d d d. 

577
00:30:42,500 --> 00:30:47,100
And how do we use it in 20, let 
me know read what was on Eric's 

578
00:30:47,100 --> 00:30:50,400
mindfully the five years. 
He was writing his book and his 

579
00:30:50,400 --> 00:30:53,300
experience and we'll see that 
then and it will make sense. 

580
00:30:53,500 --> 00:30:56,800
I provide trainings and so 
forth, but thing is you just 

581
00:30:56,900 --> 00:31:00,700
Have to start somewhere. 
You have to understand that 

582
00:31:00,800 --> 00:31:03,400
again d, d. 
D is not about coding. 

583
00:31:03,500 --> 00:31:06,400
It is, but it's not initially 
about coding. 

584
00:31:06,600 --> 00:31:09,600
And so when a lot of developers 
want to do is they see the 

585
00:31:09,600 --> 00:31:11,300
Tactical tools and they're like,
oh cool. 

586
00:31:11,500 --> 00:31:14,200
I need to use Aggregates because
if I use Aggregates that I'm 

587
00:31:14,200 --> 00:31:17,000
using to be. 
Well, not necessarily. 

588
00:31:17,200 --> 00:31:20,300
I mean, you can use the pattern 
and not even get anywhere near 

589
00:31:20,300 --> 00:31:23,300
the value that you get by having
conversations with business 

590
00:31:23,300 --> 00:31:25,900
people about please. 
How do you even know you need an

591
00:31:25,900 --> 00:31:28,900
aggregate in the This case then 
you shouldn't use an adjective 

592
00:31:28,900 --> 00:31:30,800
for him. 
But you all know until you have 

593
00:31:30,800 --> 00:31:34,300
the conversations is this thing?
What we are talking about, does 

594
00:31:34,300 --> 00:31:38,100
it have unique identity and 
being absolutely need this 

595
00:31:38,100 --> 00:31:41,900
transactional scope around this 
small body of data and 

596
00:31:41,900 --> 00:31:44,600
operations. 
That's when you decide that you 

597
00:31:44,600 --> 00:31:47,200
need to use an Aggregate. 
And so you have to really 

598
00:31:47,200 --> 00:31:50,600
understand the Strategic 
modeling tools first, but those 

599
00:31:50,600 --> 00:31:53,100
won't do you much good at all. 
Unless you're having 

600
00:31:53,100 --> 00:31:55,400
conversations with business, 
experts. 

601
00:31:55,600 --> 00:31:57,900
And of course, people are going 
to say Yeah, but who are the 

602
00:31:57,900 --> 00:32:00,400
domain experts in our business? 
Well, I don't know. 

603
00:32:00,600 --> 00:32:03,700
You don't hire people with the 
title domain expert. 

604
00:32:03,900 --> 00:32:06,300
As far as I know. 
There's probably never been a 

605
00:32:06,300 --> 00:32:09,900
classified ad anywhere in 
Monster or, you know, hubby's 

606
00:32:09,900 --> 00:32:13,900
recruiting places that say like 
domain expert form of such and 

607
00:32:13,900 --> 00:32:15,500
such a couple that doesn't 
happen. 

608
00:32:15,500 --> 00:32:19,400
So it's someone he is going to 
carry a vision based on strategy

609
00:32:19,600 --> 00:32:22,900
and then it's not just about 
listening to this person tell 

610
00:32:22,900 --> 00:32:25,600
you, okay, this needs to be the 
swing because they probably 

611
00:32:25,600 --> 00:32:27,700
won't actually know that. 
That you have to have 

612
00:32:27,700 --> 00:32:30,900
conversations. 
Another thing that is also quite

613
00:32:30,900 --> 00:32:33,800
related to domain. 
Driven design is actually even 

614
00:32:33,800 --> 00:32:36,800
driven architecture because you 
have the domain event that comes

615
00:32:36,800 --> 00:32:39,300
up from the modeling exercise 
and things like that. 

616
00:32:39,300 --> 00:32:40,900
First of all, maybe you can 
explain. 

617
00:32:40,900 --> 00:32:42,800
What is event-driven 
architecture? 

618
00:32:42,800 --> 00:32:44,500
Even driven design kind of 
thing. 

619
00:32:45,000 --> 00:32:48,800
Well, event-driven architecture 
involves events at ourselves to 

620
00:32:48,800 --> 00:32:51,200
happiest, but you have a number 
of services. 

621
00:32:51,200 --> 00:32:54,300
Let's say, or applications 
within a whole system. 

622
00:32:54,400 --> 00:32:58,400
And each of those applications 
is Hitting events that have some

623
00:32:58,400 --> 00:33:01,900
meaning to the overall system or
in some services or other 

624
00:33:01,900 --> 00:33:05,500
applications within the system. 
And when you eat those events, 

625
00:33:05,600 --> 00:33:09,100
that is the driven part, that's 
where we are driving. 

626
00:33:09,100 --> 00:33:12,800
Those events toward some other 
services or applications in the 

627
00:33:12,800 --> 00:33:14,900
system and they're going to 
react to those. 

628
00:33:15,200 --> 00:33:19,900
And so really reacting to events
is what the other systems do. 

629
00:33:19,900 --> 00:33:22,900
And when they react it's a 
matter of okay, when I see this 

630
00:33:22,900 --> 00:33:28,900
domain event about just document
created or documents edited or 

631
00:33:28,900 --> 00:33:31,900
anything like that. 
What does that mean over here in

632
00:33:31,900 --> 00:33:34,500
this other application? 
So when you see that event, you 

633
00:33:34,500 --> 00:33:38,600
react to it and that is event 
driven and it's an architecture 

634
00:33:38,600 --> 00:33:43,000
because it's not just events 
within a single service or 

635
00:33:43,000 --> 00:33:46,500
application. 
It is events that are happening 

636
00:33:46,500 --> 00:33:49,100
in several of those if not all 
of them. 

637
00:33:49,200 --> 00:33:52,900
And everybody is reacting to 
those in different ways and you 

638
00:33:52,908 --> 00:33:56,200
may even react to you own 
events, but that is where the 

639
00:33:56,200 --> 00:33:58,900
events. 
Driving what happens next. 

640
00:33:59,000 --> 00:34:02,800
So, think of everything in an 
event-driven architecture, but 

641
00:34:02,800 --> 00:34:07,200
everything related to the event 
driven part of it, as passive. 

642
00:34:07,300 --> 00:34:10,600
They aren't doing anything. 
Until they see any event that 

643
00:34:10,600 --> 00:34:13,100
has a meaning to. 
And so you're probably using a 

644
00:34:13,100 --> 00:34:16,400
message bus and some sort of 
messaging messaging, middleware 

645
00:34:16,400 --> 00:34:19,900
or Cloud messaging, whatever 
Kafka everybody wants to talk 

646
00:34:19,900 --> 00:34:21,900
about possible. 
You know, it's just whatever you

647
00:34:21,900 --> 00:34:25,500
need to get events distribute. 
No one good. 

648
00:34:26,400 --> 00:34:30,100
Design technique is when you 
receive an event in an 

649
00:34:30,100 --> 00:34:34,800
event-driven architecture is you
don't consume that event deeply 

650
00:34:34,800 --> 00:34:38,900
internally into your model 
because that creates a very 

651
00:34:38,900 --> 00:34:42,699
strong coupling between whoever 
committed that event and 

652
00:34:42,699 --> 00:34:46,000
published that event to you. 
And now whenever that evoke 

653
00:34:46,000 --> 00:34:48,400
changes, what does that do to 
your model? 

654
00:34:48,600 --> 00:34:52,199
So instead what you typically 
want to do is say at the very 

655
00:34:52,199 --> 00:34:56,800
boundary where that event is 
received you want to Translate 

656
00:34:56,800 --> 00:35:01,100
that event into a command that 
internally means something to 

657
00:35:01,100 --> 00:35:04,000
you. 
So your model knows about, okay,

658
00:35:04,000 --> 00:35:08,000
if I tell it to do this command 
to execute this command, all it 

659
00:35:08,000 --> 00:35:11,300
has to know about is its own 
language and the command was 

660
00:35:11,300 --> 00:35:15,600
part of its ubiquitous language.
So this is where ETA and EDD 

661
00:35:15,700 --> 00:35:18,300
will together right now. 
Saying, okay. 

662
00:35:18,300 --> 00:35:22,700
We don't want our model to be a 
conformist to the other model, 

663
00:35:23,000 --> 00:35:25,200
because if it was a good for 
most right now, it maybe you'd 

664
00:35:25,200 --> 00:35:26,800
seen that pattern. 
In in the MV. 

665
00:35:26,800 --> 00:35:29,800
What's a conformist actually? 
Sometimes it can foremost is the

666
00:35:29,808 --> 00:35:33,900
best thing you can do, but try 
not to if you can avoid it, if 

667
00:35:33,900 --> 00:35:37,500
it's not the best thing to do, 
don't accept could foremost as 

668
00:35:37,800 --> 00:35:39,500
oh, yeah. 
Well, we're conforming to all 

669
00:35:39,500 --> 00:35:44,200
their events and now you have 10
services or hopefully not 50 and

670
00:35:44,200 --> 00:35:47,300
you're just reacting to 50 
different things at all, 50 of 

671
00:35:47,300 --> 00:35:50,400
those other services or 
application start changing their

672
00:35:50,400 --> 00:35:52,400
events. 
What does that do to you? 

673
00:35:52,400 --> 00:35:55,400
So having that little 
translation layer in between 

674
00:35:55,400 --> 00:35:57,800
your model? 
And the Eda part of it. 

675
00:35:57,800 --> 00:36:00,000
And then part of it was quite 
important. 

676
00:36:00,500 --> 00:36:03,400
Is it fair for me to understand 
that when you implement even 

677
00:36:03,400 --> 00:36:06,100
driven architecture? 
Basically, you make your system 

678
00:36:06,200 --> 00:36:10,000
more adaptive to change more 
flexible, or is there other 

679
00:36:10,000 --> 00:36:12,300
benefits that come out of the 
Eda? 

680
00:36:12,900 --> 00:36:16,700
If you do what, I just described
and creating commands from the 

681
00:36:16,700 --> 00:36:20,700
events that does help with the 
pup way, but there is still the 

682
00:36:20,700 --> 00:36:24,200
fact that you now depend on even
at the boundary, even an 

683
00:36:24,200 --> 00:36:28,100
incoming request or mess. 
Serge Livery, you have a bit of 

684
00:36:28,100 --> 00:36:30,000
coupling there. 
And so, you're going to have to 

685
00:36:30,000 --> 00:36:34,000
take on responsibility that if 
that event changes in some way, 

686
00:36:34,000 --> 00:36:37,600
definition or just goes away and
is replaced by another one. 

687
00:36:37,600 --> 00:36:39,900
You're going to have to do 
something about that. 

688
00:36:39,900 --> 00:36:43,300
So there is that to deal with 
but it's not as bad as accepting

689
00:36:43,300 --> 00:36:44,600
it. 
Clear into the middle of your 

690
00:36:44,600 --> 00:36:46,900
model. 
The other thing is because 

691
00:36:46,900 --> 00:36:49,400
you're using messaging to 
deliver these events. 

692
00:36:49,400 --> 00:36:53,200
There is a Time coupling. 
You're not like something 

693
00:36:53,200 --> 00:36:56,000
saying, let me query something 
over on. 

694
00:36:56,200 --> 00:36:58,900
At service and see what it tells
me. 

695
00:36:59,200 --> 00:37:02,000
And then, if it doesn't happen 
in time, I'll tell him L. 

696
00:37:02,300 --> 00:37:04,300
And maybe I have to like bail 
something. 

697
00:37:04,300 --> 00:37:06,200
Clear, back to the user. 
Instead. 

698
00:37:06,200 --> 00:37:09,700
Like I said, your passive and 
you're reacting to what you told

699
00:37:09,700 --> 00:37:14,300
at any given time and that 
latency is actually good. 

700
00:37:14,400 --> 00:37:17,700
Because now, instead of making 
all your rest request for all 

701
00:37:17,700 --> 00:37:20,900
your art, can see request say, 
oh, if I don't get an answer 

702
00:37:20,900 --> 00:37:22,900
within 5 Seconds, something is 
broken. 

703
00:37:23,000 --> 00:37:26,000
Well, I mean, how many times in 
a day there's something takes. 

704
00:37:26,100 --> 00:37:30,300
Six seconds instead of 3 or 7 
Seconds instead of five. 

705
00:37:30,500 --> 00:37:34,000
And so you put this arbitrary 
time out on your rest client, 

706
00:37:34,000 --> 00:37:35,400
right? 
You just say arbitrarily. 

707
00:37:35,400 --> 00:37:39,400
Oh, well, it's put a 5 Second 
timeout because that's our SLA 5

708
00:37:39,400 --> 00:37:41,600
seconds or even 10 seconds or 
whatever. 

709
00:37:41,700 --> 00:37:43,700
Instead. 
You just say, oh, well, it's 

710
00:37:43,700 --> 00:37:45,600
going to happen. 
And what's our worst case 

711
00:37:45,600 --> 00:37:48,100
scenario? 
If we didn't know about the 

712
00:37:48,100 --> 00:37:51,800
outcome of this within a minute.
Would that be too long and 

713
00:37:51,800 --> 00:37:55,200
oftentimes when you talk to 
business experts now say no. 

714
00:37:55,200 --> 00:37:57,700
I mean nothing. 
The take half an hour and it 

715
00:37:57,700 --> 00:38:01,300
would be no problem at all or 
even tomorrow would be okay, but

716
00:38:01,300 --> 00:38:03,500
what happens with the 
developers, they'll just go home

717
00:38:03,500 --> 00:38:06,400
and we need performance. 
So we're going to put a Timeout 

718
00:38:06,400 --> 00:38:09,300
on this and we'll just start 
failing transactions left and 

719
00:38:09,300 --> 00:38:11,400
right. 
We don't hear something within 

720
00:38:11,400 --> 00:38:14,400
five seconds because five 
seconds, that's forever. 

721
00:38:14,600 --> 00:38:16,700
So there is that Advantage with 
Eda. 

722
00:38:16,900 --> 00:38:20,400
The other thing is an important 
part about that is it's related,

723
00:38:20,400 --> 00:38:24,300
but also a little bit different.
Is you do have latency at 

724
00:38:24,300 --> 00:38:27,900
various times in the network. 
You will occasionally have 

725
00:38:27,900 --> 00:38:30,900
Network partitions that occur 
and things like that. 

726
00:38:30,900 --> 00:38:34,400
And so having this sort of 
notion of it. 

727
00:38:34,400 --> 00:38:38,000
We're just going to find out at 
some future time that there was 

728
00:38:38,000 --> 00:38:41,600
a reaction to this. 
Then you are actually embracing 

729
00:38:41,600 --> 00:38:44,000
latency. 
You're embracing the network. 

730
00:38:44,100 --> 00:38:45,800
You don't even care. 
Really. 

731
00:38:45,800 --> 00:38:50,000
If there is latency unless it's 
too much latency like really 

732
00:38:50,000 --> 00:38:53,000
really too much latency, but 
that's not a programmers 

733
00:38:53,000 --> 00:38:55,300
decision. 
That's not a software developers

734
00:38:55,300 --> 00:38:57,800
decision. 
Too much latency is the decision

735
00:38:57,800 --> 00:38:59,800
of the business and you subtract
half. 

736
00:38:59,800 --> 00:39:03,900
That's why again conversations. 
So you ask the business. 

737
00:39:04,100 --> 00:39:06,000
How long is too long? 
Then? 

738
00:39:06,000 --> 00:39:08,200
You can create something that 
checks. 

739
00:39:08,200 --> 00:39:11,900
Okay, this event went out at 
such and such a time or this 

740
00:39:11,900 --> 00:39:15,100
command came in at such and such
a time and we should be able to 

741
00:39:15,100 --> 00:39:18,800
close the loop on this within 
two hours, but we don't roll 

742
00:39:18,800 --> 00:39:22,000
back any transactions. 
We just make it a business part 

743
00:39:22,000 --> 00:39:25,400
of the business process and we 
say, oh well, okay, that's find 

744
00:39:25,400 --> 00:39:27,300
out somebody. 
He needs to know that it timed 

745
00:39:27,300 --> 00:39:29,200
out. 
Does it mean that we need to 

746
00:39:29,200 --> 00:39:32,500
cancel? 
Making that new ship? 

747
00:39:32,700 --> 00:39:35,300
Okay, let's cancel that whole 
ship project. 

748
00:39:35,300 --> 00:39:37,700
That thing that's going to cost 
two hundred million dollars. 

749
00:39:37,700 --> 00:39:39,200
Bill. 
Let's just cancel it because 

750
00:39:39,200 --> 00:39:41,300
something timed out after two 
hours. 

751
00:39:41,400 --> 00:39:44,600
No, I you deal with it in a 
logical business way. 

752
00:39:44,600 --> 00:39:47,300
You tell someone but we didn't 
hear about this. 

753
00:39:47,400 --> 00:39:50,200
Maybe something didn't go right 
on it. 

754
00:39:50,200 --> 00:39:53,300
Was it just the technical 
failures their way to get that 

755
00:39:53,300 --> 00:39:55,900
back on track by clearing a 
living out of the Dead. 

756
00:39:56,100 --> 00:39:59,100
Letter to some. 
But you're now saying, I mean, 

757
00:39:59,100 --> 00:40:02,000
it's not the end of the world. 
Before we had computers. 

758
00:40:02,000 --> 00:40:04,200
We've dealt with stuff like this
all the time. 

759
00:40:04,500 --> 00:40:07,100
There may not be many people. 
That remember those days with 

760
00:40:07,100 --> 00:40:09,600
pending on the domain, the 
business that you're working in.

761
00:40:09,800 --> 00:40:12,900
They probably do probably still 
are a lot of them dealing with 

762
00:40:12,900 --> 00:40:15,100
those things. 
It's interesting, listening to 

763
00:40:15,100 --> 00:40:18,400
you talking about this time, the
coupling, and all these latency.

764
00:40:18,400 --> 00:40:22,200
So I think it's really tightly 
related to eventual consistency 

765
00:40:22,200 --> 00:40:24,800
pattern. 
So do you think that most of the

766
00:40:24,800 --> 00:40:28,200
things should be Mounted using 
eventual consistency way, I 

767
00:40:28,200 --> 00:40:30,300
could hearing what you're 
saying, just now, all you should

768
00:40:30,300 --> 00:40:33,100
confirm with the business. 
What is actually needed for 

769
00:40:33,100 --> 00:40:35,600
Atomic transaction? 
And while the rest of it, if the

770
00:40:35,600 --> 00:40:37,400
base is confirmed. 
Yeah, we don't need straight 

771
00:40:37,400 --> 00:40:39,100
away. 
Maybe we can use eventual 

772
00:40:39,100 --> 00:40:41,300
consistency. 
Yeah, exactly. 

773
00:40:41,300 --> 00:40:44,000
What we serve. 
And the thing is, if to let's 

774
00:40:44,000 --> 00:40:48,600
say entities are dependent on 
some change, like one entity in 

775
00:40:48,600 --> 00:40:53,000
one context, has a change made 
to it and another entity in 

776
00:40:53,000 --> 00:40:55,900
another context needs a 
compensating. 

777
00:40:56,100 --> 00:40:59,900
Change for that or reactive 
change based on the other change

778
00:40:59,900 --> 00:41:02,800
that happened. 
The only really practical way 

779
00:41:02,800 --> 00:41:06,200
that you can do that is through 
eventual consistency. 

780
00:41:06,400 --> 00:41:09,500
It doesn't mean that you can 
never ever use Global 

781
00:41:09,500 --> 00:41:13,100
transactions. 
But as soon as you introduce a 

782
00:41:13,100 --> 00:41:15,500
global transaction, just 
everybody's going to see 

783
00:41:15,500 --> 00:41:17,600
everything as a global 
transaction. 

784
00:41:17,600 --> 00:41:20,200
So, I just think most businesses
are going to say. 

785
00:41:20,200 --> 00:41:23,700
It really, doesn't matter if 
that takes five seconds or five 

786
00:41:23,700 --> 00:41:25,600
hours. 
I'm not saying that's true in 

787
00:41:25,600 --> 00:41:26,500
every case. 
Case. 

788
00:41:26,500 --> 00:41:29,800
But I'm just saying, I think you
would be surprised and I have 

789
00:41:29,800 --> 00:41:33,300
these conversations relatively 
regularly, and I asked those 

790
00:41:33,300 --> 00:41:34,500
questions. 
They're like, yeah, it doesn't 

791
00:41:34,500 --> 00:41:36,200
matter. 
It's like not a problem. 

792
00:41:36,400 --> 00:41:40,000
The only time that it matters is
when the user needs to look at 

793
00:41:40,000 --> 00:41:42,100
this over here. 
And that doesn't seem like 

794
00:41:42,100 --> 00:41:45,100
anything's happened to it yet 
and five or ten seconds have 

795
00:41:45,100 --> 00:41:48,200
passed. 
But in normal situations five or

796
00:41:48,200 --> 00:41:51,800
ten seconds is plenty of time 
for that compensation. 

797
00:41:51,800 --> 00:41:55,500
To of the third that consistency
update to have occurred, you 

798
00:41:55,500 --> 00:41:57,800
know. 
Users even to make a gesture 

799
00:41:57,800 --> 00:42:00,600
after this, one thing happened, 
if they are going to actually 

800
00:42:00,600 --> 00:42:05,000
drive the reason for viewing, 
the data from another context. 

801
00:42:05,200 --> 00:42:09,100
It may take them that much time,
just to make their own gesture 

802
00:42:09,100 --> 00:42:11,200
to Anna. 
And then a way around that is 

803
00:42:11,200 --> 00:42:15,700
instead of making the user drive
that you simply make the UI 

804
00:42:15,700 --> 00:42:20,200
reactive to web sockets or 
server sent events and whatever 

805
00:42:20,200 --> 00:42:24,200
something that is driven to the 
browser or the UI in any general

806
00:42:24,200 --> 00:42:27,000
way. 
That says look, The user is just

807
00:42:27,000 --> 00:42:29,100
going to be told when ever this 
is ready. 

808
00:42:29,100 --> 00:42:31,900
We will show it to you and so 
they're never taught to be 

809
00:42:31,900 --> 00:42:34,100
concerned about that. 
Now. 

810
00:42:34,100 --> 00:42:37,800
I think one of the thing why 
Global transaction is all over 

811
00:42:37,800 --> 00:42:41,100
the place, I think in my opinion
is that developers like to do it

812
00:42:41,100 --> 00:42:43,000
in a fast way, right? 
Because Global transaction. 

813
00:42:43,000 --> 00:42:45,600
Normally, there's a library that
handles out of the box for you. 

814
00:42:45,700 --> 00:42:48,700
You just put everything in one, 
maybe a scope or boundary. 

815
00:42:48,700 --> 00:42:51,900
Then the librarian handle out of
the box for you while doing 

816
00:42:51,900 --> 00:42:54,900
eventual consistency involves a 
lot of effort, especially 

817
00:42:54,900 --> 00:42:56,800
resolving conflicts. 
And things like that. 

818
00:42:57,000 --> 00:43:00,300
So how do you think we should 
Implement eventual consistency? 

819
00:43:00,300 --> 00:43:02,800
The right way? 
Interesting. 

820
00:43:02,900 --> 00:43:06,000
It's like almost every day. 
You have a conversation with 

821
00:43:06,000 --> 00:43:08,800
someone that kind of influences 
the way you think. 

822
00:43:09,200 --> 00:43:12,500
And today I have this 
conversation with Dave Thomas. 

823
00:43:12,500 --> 00:43:15,300
Like I said, one of the things 
that he said is a lot of 

824
00:43:15,308 --> 00:43:19,800
developers can't deal with some 
of the ways that the V wants to 

825
00:43:19,800 --> 00:43:21,900
deal with this eventual 
consistency. 

826
00:43:21,900 --> 00:43:26,100
So for example, implementing 
sagas with process managers, May

827
00:43:26,100 --> 00:43:29,100
not be the best thing for any 
given the literal. 

828
00:43:29,200 --> 00:43:33,200
Well, I'm going to have a couple
beep tithe workshops of January 

829
00:43:33,300 --> 00:43:35,300
where I teach that very very 
thorough. 

830
00:43:35,400 --> 00:43:39,100
But if you're not ready to deal 
with process managers, it could 

831
00:43:39,100 --> 00:43:41,900
well be that you really don't 
need to create a song error 

832
00:43:41,900 --> 00:43:44,600
process manager and even though 
as much as you may really 

833
00:43:44,600 --> 00:43:48,000
relish, the idea of doing this 
kind of work is going to make 

834
00:43:48,000 --> 00:43:50,700
you a cool software developer 
doing it. 

835
00:43:51,100 --> 00:43:53,300
Maybe choreography will work 
fine. 

836
00:43:53,300 --> 00:43:55,800
And so you will just react to 
events that show. 

837
00:43:56,000 --> 00:43:58,700
Up. 
It was long as the process isn't

838
00:43:58,700 --> 00:44:03,200
super complex than that. 
Is the really correct way to do 

839
00:44:03,200 --> 00:44:05,800
it and it's simpler. 
Now, when something goes wrong 

840
00:44:05,800 --> 00:44:08,200
with choreography, it's more 
difficult. 

841
00:44:08,200 --> 00:44:10,800
Potentially to figure out where 
something went wrong. 

842
00:44:11,100 --> 00:44:14,000
But if you only have one or two 
places where something could go 

843
00:44:14,000 --> 00:44:16,200
wrong, it's not much of a 
challenge. 

844
00:44:16,200 --> 00:44:19,300
And so as soon as you cross, 
that threshold with things where

845
00:44:19,300 --> 00:44:23,200
you just ask yourself, okay, if 
something went wrong here, like 

846
00:44:23,200 --> 00:44:25,800
how difficult would it be to 
figure out what went wrong? 

847
00:44:26,100 --> 00:44:29,700
And that's where process manager
or that orchestrated in contrast

848
00:44:29,700 --> 00:44:32,600
with choreography. 
You can go to that orchestrator 

849
00:44:32,600 --> 00:44:37,200
at any time and safe for this 
thing, this process that began 

850
00:44:37,500 --> 00:44:40,800
where did it gets stopped, where
it's something not work and it 

851
00:44:40,800 --> 00:44:43,000
can tell you right away. 
Well, I've seen these things 

852
00:44:43,000 --> 00:44:47,500
happen, but I haven't seen this 
and probably even you can teach 

853
00:44:47,500 --> 00:44:52,200
the process manager, write code.
That makes this work that says, 

854
00:44:52,300 --> 00:44:55,800
if you don't see this within a 
certain timeframe, tell someone 

855
00:44:56,000 --> 00:44:59,500
Something didn't go right wide. 
It could be technology went bad 

856
00:44:59,500 --> 00:45:03,000
or it could be that someone has 
a bug in the code or it could 

857
00:45:03,000 --> 00:45:05,300
just be that. 
What said someone's workflow and

858
00:45:05,300 --> 00:45:08,500
they didn't approve it that and 
so a person needs to read this 

859
00:45:08,500 --> 00:45:12,200
email or some kind of 
notification that says, oh you 

860
00:45:12,200 --> 00:45:14,900
have to approve this and they 
click, they read it but the 

861
00:45:14,900 --> 00:45:18,000
button and maybe that's all you 
just need to go make a phone 

862
00:45:18,000 --> 00:45:20,300
call and say a did you receive 
this? 

863
00:45:20,300 --> 00:45:22,100
And if you did, would you please
approve it? 

864
00:45:22,700 --> 00:45:25,000
And I don't think that normally,
when you start with d, d d, 

865
00:45:25,000 --> 00:45:27,500
right? 
It is Is one good exercise to do

866
00:45:27,500 --> 00:45:31,200
an event storming exercise in 
which again, like what you said,

867
00:45:31,200 --> 00:45:34,600
conversation is one of the most 
important thing in DDD where you

868
00:45:34,600 --> 00:45:37,900
gather people from the, it 
definitely, from the business 

869
00:45:37,900 --> 00:45:40,900
side, maybe some other people 
that are involved in the whole 

870
00:45:40,900 --> 00:45:42,600
domain to do this event 
storming. 

871
00:45:42,600 --> 00:45:45,700
So what is event storming and 
we'll, how does it play an 

872
00:45:45,700 --> 00:45:48,300
important role in coming up with
a good DDD? 

873
00:45:49,000 --> 00:45:54,300
So, you like storming is an 
activity in lightweight modeling

874
00:45:54,600 --> 00:45:57,500
and there are two levels. 
Rules of you got storming lot. 

875
00:45:57,500 --> 00:46:00,400
See the first level. 
They can start with is called 

876
00:46:00,400 --> 00:46:02,600
Big Picture modeling. 
So this is where you're trying 

877
00:46:02,600 --> 00:46:06,000
to understand the process the 
overall process through an 

878
00:46:06,000 --> 00:46:09,700
entire system as it relates to 
your current or don't lie. 

879
00:46:09,800 --> 00:46:13,100
And so you're using sticky notes
of certain colors. 

880
00:46:13,200 --> 00:46:16,500
And each of the colors represent
a certain kind of thing within 

881
00:46:16,500 --> 00:46:20,700
the model and the primary one is
orange and orange represents 

882
00:46:20,700 --> 00:46:22,800
events. 
Not just going to talk about the

883
00:46:22,800 --> 00:46:25,800
standard colors that have been 
chosen for sticky though. 

884
00:46:25,900 --> 00:46:29,400
Oats as this traditional or I 
hate to call it standard, but 

885
00:46:29,500 --> 00:46:33,000
point is that it's what people 
are taught to use. 

886
00:46:33,200 --> 00:46:36,900
Sometimes you can't find those 
colors of sticky notes, physical

887
00:46:36,900 --> 00:46:39,600
ones, and packages. 
And if that's the case, you 

888
00:46:39,600 --> 00:46:42,100
could change them up according 
to what you do have. 

889
00:46:42,400 --> 00:46:44,400
But I'm just going to talk about
standard look. 

890
00:46:44,400 --> 00:46:48,200
So orange colors are for events.
So you write the name of an 

891
00:46:48,200 --> 00:46:51,200
event that happens in. 
This is primarily what working 

892
00:46:51,200 --> 00:46:54,400
with an event storming and you 
stick that sticky note on a 

893
00:46:54,400 --> 00:46:57,800
modeling surface. 
Is just the sort of limited 

894
00:46:57,800 --> 00:47:01,300
height may be 1 meter high but 
maybe 10 meters. 

895
00:47:01,300 --> 00:47:05,900
Y or 15 meters wide and you have
this modeling space and every 

896
00:47:05,900 --> 00:47:09,000
single sticky note. 
That's put up there is put up 

897
00:47:09,000 --> 00:47:11,600
their relative to the time that 
it occurs. 

898
00:47:11,700 --> 00:47:15,900
And so you may actually start in
your big picture modeling in the

899
00:47:15,908 --> 00:47:18,700
middle of your timeline. 
And you might say, well we don't

900
00:47:18,700 --> 00:47:22,700
really know what happens first 
way over here to the left, but 

901
00:47:22,700 --> 00:47:25,800
we do know what happens here. 
And so let's start. 

902
00:47:25,900 --> 00:47:29,500
Working from here and maybe by 
getting some events up there 

903
00:47:29,500 --> 00:47:32,700
that we do understand will start
to understand what happens 

904
00:47:32,700 --> 00:47:34,100
before. 
That one will start to 

905
00:47:34,100 --> 00:47:35,700
understand what happens after 
it. 

906
00:47:35,900 --> 00:47:39,700
And so it's a discovery tool and
then you use other colors of 

907
00:47:39,700 --> 00:47:41,500
stickies to represent other 
things. 

908
00:47:41,500 --> 00:47:43,300
That are pertinent to this 
model. 

909
00:47:43,300 --> 00:47:47,100
For example, you can use a 
purple sticky, purplish sticky 

910
00:47:47,200 --> 00:47:51,500
that represents policies and a 
policy is basically roughly 

911
00:47:51,500 --> 00:47:53,800
speaking. 
It's a set of some business rule

912
00:47:53,800 --> 00:47:56,500
that says, if this event 
Happens. 

913
00:47:56,800 --> 00:48:01,100
This should be done after it or 
even for this event to occur. 

914
00:48:01,300 --> 00:48:04,900
These constraints have to be 
fulfilled for that to happen. 

915
00:48:04,900 --> 00:48:07,900
So the sort of business rules 
and they just think of a 

916
00:48:07,900 --> 00:48:11,600
business rule if you were 
running a company that provides 

917
00:48:11,600 --> 00:48:14,600
service in gardening. 
So you have a service in 

918
00:48:14,600 --> 00:48:18,700
gardening and you normally want 
to do most of the gardening work

919
00:48:18,700 --> 00:48:22,500
for your clients during a week, 
probably certain times of the 

920
00:48:22,500 --> 00:48:25,400
year and even certain time 
frames when you don't want to be

921
00:48:25,400 --> 00:48:27,400
out. 
And Hot sun, but you do it for 

922
00:48:27,400 --> 00:48:31,700
some extra money, or we normally
don't want to work after 5 p.m. 

923
00:48:31,700 --> 00:48:34,700
Or 1700 hours, but we will, for 
some extra money. 

924
00:48:34,900 --> 00:48:38,700
And so you have these policies 
that say, okay, if you want to 

925
00:48:38,700 --> 00:48:43,900
engage us at six pm 1800 hours, 
and we still have daylight to do

926
00:48:43,900 --> 00:48:47,600
your gardening, we can do that, 
but it's going to cost one and a

927
00:48:47,607 --> 00:48:51,200
half times the normal price or 
if you want to engage us on the 

928
00:48:51,200 --> 00:48:55,600
weekend, we could do that. 
So then you stick up this purple

929
00:48:55,600 --> 00:48:57,700
sticky. 
No by the event before the 

930
00:48:57,700 --> 00:48:59,900
event. 
And so the event that gets 

931
00:48:59,900 --> 00:49:02,900
emitted now is based on the 
pricing policy. 

932
00:49:03,200 --> 00:49:04,800
Maybe you have different ones. 
Is it? 

933
00:49:04,800 --> 00:49:08,200
A holiday is the weekend. 
Is it after hours, then it just 

934
00:49:08,200 --> 00:49:11,500
rained a lot and the grass grow 
very tall because of a lot of 

935
00:49:11,500 --> 00:49:15,400
rain, but just things like that.
So, another quite related. 

936
00:49:15,400 --> 00:49:16,900
Sometimes it is a bit 
tongue-twisting. 

937
00:49:16,900 --> 00:49:20,400
There's another term called 
event sourcing what is event 

938
00:49:20,400 --> 00:49:23,400
sourcing and when should people 
use event sourcing compared to 

939
00:49:23,400 --> 00:49:25,500
traditional database and things 
like that. 

940
00:49:25,900 --> 00:49:31,100
Events or swing users events and
a stream of events to represent 

941
00:49:31,100 --> 00:49:34,800
some State and a stream, some of
your stream and maybe right away

942
00:49:34,800 --> 00:49:38,200
their mind, either thinks 
automatically the right way, or 

943
00:49:38,200 --> 00:49:40,300
they get all confused and 
they're like, wish you would 

944
00:49:40,300 --> 00:49:41,800
just tell us what that really 
means. 

945
00:49:42,000 --> 00:49:44,200
So what a stream is just a 
collection. 

946
00:49:44,200 --> 00:49:46,600
It's an ordered collection of 
events. 

947
00:49:46,800 --> 00:49:50,200
You have your 0th event and you 
have your empty vent on the 

948
00:49:50,200 --> 00:49:52,700
high-end side. 
And so you what you can do is 

949
00:49:52,700 --> 00:49:56,600
take that collection and 
starting with the first Zeroth 

950
00:49:56,700 --> 00:50:01,400
event, interpret that and apply 
what that event means to your 

951
00:50:01,400 --> 00:50:03,400
entity. 
That owns that event. 

952
00:50:03,400 --> 00:50:04,700
Right? 
But he admitted that even in the

953
00:50:04,700 --> 00:50:08,000
first place and apply that. 
And you say okay. 

954
00:50:08,000 --> 00:50:12,500
I'm going to modify my state my 
entity State according to what 

955
00:50:12,500 --> 00:50:16,000
that event means to my state. 
And then I'm going to take the 

956
00:50:16,000 --> 00:50:20,200
next one, the first element one 
now, and I'm going to apply that

957
00:50:20,200 --> 00:50:22,700
over top of the other. 
And then I'm just going to go, 

958
00:50:22,700 --> 00:50:27,300
2, 3, 4, 5, all the way to n and
I'm going to mutate or modify my

959
00:50:27,300 --> 00:50:31,100
entity State based on those as 
those events initially happen, 

960
00:50:31,100 --> 00:50:34,100
right there. 
Very much connected to command. 

961
00:50:34,100 --> 00:50:38,300
So the entity receives a command
says do this, The Entity does 

962
00:50:38,300 --> 00:50:42,700
that and any nits need them and 
that event must somehow 

963
00:50:42,700 --> 00:50:46,500
represent the change that needs 
to happen to that state and you 

964
00:50:46,500 --> 00:50:49,900
actually need iately mutate your
state based on the event that 

965
00:50:49,900 --> 00:50:53,000
you just emitted. 
But then later, you can also 

966
00:50:53,000 --> 00:50:56,300
reconstitute the state of that 
entity from the Anymore. 

967
00:50:56,300 --> 00:51:00,500
Just that ordered collection, 
that sequence of events 0 

968
00:51:00,500 --> 00:51:04,000
through n and we apply them to 
your state and your stated 

969
00:51:04,000 --> 00:51:07,300
recovered. 
And so why do you use that too 

970
00:51:07,300 --> 00:51:10,600
many people use it just because 
they're interested in it. 

971
00:51:10,700 --> 00:51:14,700
What it's really meant to do is 
to make a record of every 

972
00:51:14,700 --> 00:51:18,000
individual thing. 
Every unique thing that happens 

973
00:51:18,100 --> 00:51:21,700
to that entity in the model. 
And then if you use events 

974
00:51:21,700 --> 00:51:25,500
sourcing across every entity 
type, and every entity instance,

975
00:51:25,500 --> 00:51:28,700
then you, You have this Global 
stream of everything that's 

976
00:51:28,700 --> 00:51:31,100
happened in your model ever over
time. 

977
00:51:31,300 --> 00:51:35,400
And so a lot of times this is 
useful in financial systems 

978
00:51:35,400 --> 00:51:39,600
where you need to know, okay on 
such and such a date time, what 

979
00:51:39,600 --> 00:51:43,000
happened or opposite, this 
happen, but it happened at this 

980
00:51:43,000 --> 00:51:45,700
point in time. 
And so you can actually create 

981
00:51:45,800 --> 00:51:48,900
not only a total ordering of 
everything that belongs to that 

982
00:51:48,900 --> 00:51:51,700
entity, but a total ordering 
everything that has happened in 

983
00:51:51,700 --> 00:51:54,000
that entire model or bounded to 
run things. 

984
00:51:54,300 --> 00:51:58,600
If you have compliance. 
To some standards like banking 

985
00:51:58,600 --> 00:52:02,100
standards or stock market, 
standards or whatever. 

986
00:52:02,100 --> 00:52:04,500
It happens to be, then that's 
useful. 

987
00:52:04,700 --> 00:52:08,400
I think that many people use it 
for technical reasons. 

988
00:52:08,500 --> 00:52:12,000
The problem with that is a lot 
of them don't really understand 

989
00:52:12,000 --> 00:52:14,600
it. 
And so they fail with it because

990
00:52:14,600 --> 00:52:17,300
they don't know what they're 
doing and then they blame events

991
00:52:17,300 --> 00:52:19,200
Force. 
Oh, you know, it's going to slot

992
00:52:19,200 --> 00:52:20,400
doesn't work. 
We tried. 

993
00:52:20,400 --> 00:52:22,800
It doesn't look. 
You can't believe how many times

994
00:52:22,800 --> 00:52:26,500
I've read these articles blog 
posts, whatever and I Go read it

995
00:52:26,500 --> 00:52:28,900
and they tell you up front. 
I'm never using events 

996
00:52:28,900 --> 00:52:29,500
tourmaline. 
Again. 

997
00:52:29,500 --> 00:52:31,200
It's trash. 
I hated it. 

998
00:52:31,200 --> 00:52:34,300
And as you read and you read how
they used it, you're just like 

999
00:52:34,300 --> 00:52:36,300
from the beginning. 
They were absolutely long. 

1000
00:52:36,300 --> 00:52:38,900
The way they described it there 
telling on themselves and you're

1001
00:52:38,900 --> 00:52:41,500
kind of embarrassed for them. 
Because you're saying, like, 

1002
00:52:41,600 --> 00:52:44,400
well man, really did not know 
what you were doing. 

1003
00:52:44,500 --> 00:52:47,600
But there's no sense in even 
trying to convince them because 

1004
00:52:47,700 --> 00:52:48,800
they're never going to admit 
that. 

1005
00:52:48,800 --> 00:52:52,500
It was their fault, you know, 
but it is sort of like, should I

1006
00:52:52,500 --> 00:52:55,500
fall embarrassed for them know 
not. 

1007
00:52:55,800 --> 00:52:58,800
It's just their own fault. 
Don't use it just because you 

1008
00:52:58,800 --> 00:53:01,200
think it sounds cool. 
But if you have these specific 

1009
00:53:01,200 --> 00:53:05,400
problems to solve, is probably a
good compliance, has to me like 

1010
00:53:05,400 --> 00:53:08,800
constraints to meet with in a 
certain industry, then use it. 

1011
00:53:09,500 --> 00:53:13,000
The Recently, I saw a tweet by 
you announcing your new book 

1012
00:53:13,000 --> 00:53:15,600
called strategic model eats and 
microservices. 

1013
00:53:15,600 --> 00:53:18,900
And then I also realize that you
have a Vaughn, were none series 

1014
00:53:18,900 --> 00:53:21,300
with Addison Wesley, which is 
pretty cool. 

1015
00:53:21,400 --> 00:53:23,600
Would you mind sharing? 
What is the book all about? 

1016
00:53:23,600 --> 00:53:27,100
Why do you write this book? 
Well, Well, first of all, over 

1017
00:53:27,100 --> 00:53:30,000
the past five, six years, maybe 
longer, but there's been this 

1018
00:53:30,000 --> 00:53:33,400
really huge Groundswell around 
microservices. 

1019
00:53:33,500 --> 00:53:37,900
If I go back, five or six years.
I recall saying like why is 

1020
00:53:37,900 --> 00:53:40,800
everybody getting so excited 
about microservices? 

1021
00:53:41,100 --> 00:53:44,300
Because first of all, according 
to some people's definition, I 

1022
00:53:44,300 --> 00:53:48,800
wrote about microservices in my 
IDE book implementing domain 

1023
00:53:48,800 --> 00:53:51,800
driven design. 
I discuss some multiple bounded 

1024
00:53:51,800 --> 00:53:56,700
context that would match some 
people's definition of So to me,

1025
00:53:56,700 --> 00:54:00,900
it was a really that 
outstandingly me and I guess 

1026
00:54:00,900 --> 00:54:04,400
depending on who you talk to 
microservices may have exist 

1027
00:54:04,400 --> 00:54:07,800
before my book that I had never 
heard of them until afterwards. 

1028
00:54:08,000 --> 00:54:12,600
So there's that but then the 
definition of like no service 

1029
00:54:12,600 --> 00:54:14,800
itself has been very 
problematic. 

1030
00:54:14,900 --> 00:54:18,900
And so while when I do talk 
about microservices, I say well 

1031
00:54:19,100 --> 00:54:22,500
a micro service should probably 
admission be a bound of 

1032
00:54:22,500 --> 00:54:25,600
contracts because bounded 
context are Randy. 

1033
00:54:25,700 --> 00:54:29,100
Allison sighs. 
They may be complex as in 

1034
00:54:29,100 --> 00:54:33,900
solving a complexity, but they 
generally don't have even dozens

1035
00:54:33,900 --> 00:54:37,500
of entity types. 
I mean, I can't arbitrarily say 

1036
00:54:37,500 --> 00:54:40,700
that they don't, but I'm just 
saying in general, they probably

1037
00:54:40,700 --> 00:54:42,500
don't. 
And so, they're probably 

1038
00:54:42,500 --> 00:54:47,000
smallish anyway, and so just 
save yourself a lot of heartache

1039
00:54:47,000 --> 00:54:50,200
and pain and don't make your 
microservices too small. 

1040
00:54:50,300 --> 00:54:53,700
Well, if you go, for example, 
there's some people looking at 

1041
00:54:53,700 --> 00:54:55,600
Uber, who just came up with 
this. 

1042
00:54:55,800 --> 00:54:57,800
Amazing. 
Insight that said, well, we've 

1043
00:54:57,800 --> 00:55:01,400
been using micro services and 
while they really hurt. 

1044
00:55:02,200 --> 00:55:05,600
So what we're going to do is 
rename what we're doing to macro

1045
00:55:05,600 --> 00:55:08,900
Services. 
It's like, okay, wait a minute 

1046
00:55:08,900 --> 00:55:11,200
people through that name. 
I'll five years ago. 

1047
00:55:11,200 --> 00:55:14,400
So you haven't just come up with
anything new idea. 

1048
00:55:14,400 --> 00:55:18,400
So say to yourself all these 
paps on your own back because 

1049
00:55:18,400 --> 00:55:21,400
those names have been flown out 
there and then they get like 

1050
00:55:21,400 --> 00:55:24,500
three thousand likes on their 
tweet about this and you just 

1051
00:55:24,500 --> 00:55:25,500
go. 
Oh my goodness. 

1052
00:55:25,700 --> 00:55:29,100
Because they weren't even using 
microservices the way that 

1053
00:55:29,100 --> 00:55:31,700
probably people who really think
carefully about this and had 

1054
00:55:31,700 --> 00:55:34,300
experience, we would actually 
decide to use them. 

1055
00:55:34,500 --> 00:55:39,700
So if a micro service is one 
entity large and you have 500 

1056
00:55:39,700 --> 00:55:44,700
entities, tights in this system 
or 1,000, just think about what 

1057
00:55:44,700 --> 00:55:48,500
your brain is going to have to 
deal with and understanding that

1058
00:55:48,500 --> 00:55:51,300
in things that are not really 
that complex. 

1059
00:55:51,400 --> 00:55:55,600
We have the ability to 
understand things in numbers of 

1060
00:55:55,800 --> 00:55:58,900
And plus or minus 2. 
When things get complex, we 

1061
00:55:58,900 --> 00:56:03,300
understand things in 5 plus or 
minus 2, which means a lot of 

1062
00:56:03,300 --> 00:56:06,900
brains can only deal with three 
complex ideas at a time of 

1063
00:56:06,900 --> 00:56:11,600
Concepts and as many as maybe 
seven but five maybe average. 

1064
00:56:11,800 --> 00:56:14,600
Now when you're talking about 
complex things and you're 

1065
00:56:14,600 --> 00:56:18,300
talking about hundreds or 
thousands of them, if you've 

1066
00:56:18,300 --> 00:56:21,500
ever worked in a system that has
a million lines of code. 

1067
00:56:21,500 --> 00:56:24,600
I have I worked at systems with 
a couple million lines of point 

1068
00:56:24,700 --> 00:56:26,800
maybe probably We can relate to 
that. 

1069
00:56:26,900 --> 00:56:30,200
If you have two million lines of
code in your system and you 

1070
00:56:30,200 --> 00:56:35,500
follow this single entity idea. 
You could probably have 20,000 

1071
00:56:35,500 --> 00:56:39,300
microservices in your system. 
Just really think about that 

1072
00:56:39,300 --> 00:56:41,900
first. 
And that is just crazy. 

1073
00:56:42,100 --> 00:56:45,100
I don't know who would really 
sign up for that. 

1074
00:56:45,300 --> 00:56:48,300
And now the big companies that 
did all that and thought they 

1075
00:56:48,300 --> 00:56:50,000
were doing the right thing in 
the cool thing. 

1076
00:56:50,000 --> 00:56:52,900
In the whatever thing, they're 
all regretting it now and 

1077
00:56:52,900 --> 00:56:54,700
they're saying we should have 
never have done that. 

1078
00:56:54,700 --> 00:56:57,600
Now we're going to do that. 
Consumer sees which are what 

1079
00:56:57,700 --> 00:56:59,100
right? 
Size Services. 

1080
00:56:59,100 --> 00:57:00,900
Tell me what? 
How do you write size that 

1081
00:57:00,900 --> 00:57:03,200
service? 
Oh, maybe you could use a 

1082
00:57:03,200 --> 00:57:05,400
bounded contacts in a ubiquitous
language. 

1083
00:57:05,600 --> 00:57:08,200
Well, they'll discover that five
years from now that they should 

1084
00:57:08,200 --> 00:57:12,500
have done that because their 
choices in sizing a macro 

1085
00:57:12,500 --> 00:57:14,900
service. 
It's all arbitrary still it's as

1086
00:57:14,900 --> 00:57:18,300
arbitrary as it was for the 
tiny, tiny micro service. 

1087
00:57:18,600 --> 00:57:21,200
So anyway, I really took you 
down the rabbit Trail there, 

1088
00:57:21,500 --> 00:57:25,000
then on the other side, 
monoliths, boom, monoliths are 

1089
00:57:25,000 --> 00:57:29,500
so Or below their formal, every 
single architect in the whole 

1090
00:57:29,500 --> 00:57:33,400
world. 
Right now - 10 are saying Model 

1091
00:57:33,400 --> 00:57:35,500
S are horrible. 
We got to get rid of all of our 

1092
00:57:35,500 --> 00:57:39,700
models and it's just not true. 
What they really mean is if they

1093
00:57:39,800 --> 00:57:43,600
have created some really bad 
monoliths that are known in a 

1094
00:57:43,607 --> 00:57:46,800
DVD world, as big ball of mud 
and even outside the D. 

1095
00:57:47,300 --> 00:57:50,700
I mean, Brian foot and Joey odor
came up with this idea, quite a 

1096
00:57:50,700 --> 00:57:53,500
long time ago, that you can 
create these big balls in Milan,

1097
00:57:53,500 --> 00:57:56,500
go to Wikipedia and look that up
and read all Well, we call of 

1098
00:57:56,500 --> 00:57:59,300
mud. 
That is what's really wrong with

1099
00:57:59,300 --> 00:58:02,200
monoliths. 
It's like this old show, that 

1100
00:58:02,200 --> 00:58:04,800
country folk, and even on 
Country folk in the u.s. 

1101
00:58:04,800 --> 00:58:07,100
Used to watch a long time ago. 
It's called Hee-Haw. 

1102
00:58:07,300 --> 00:58:11,500
I don't know if you ever heard 
of she if you were in Tennessee 

1103
00:58:11,500 --> 00:58:14,500
in the US and your hillbilly 
Newport Country person. 

1104
00:58:14,700 --> 00:58:17,300
You watched Hee Haw. 
So did a lot of other people 

1105
00:58:17,400 --> 00:58:20,200
there is this once get that they
would have almost every week on 

1106
00:58:20,200 --> 00:58:22,200
Hee Haw and the guy would walk 
up to the doctor. 

1107
00:58:22,200 --> 00:58:24,600
He would bend his arm or you say
doctor, it hurts. 

1108
00:58:24,600 --> 00:58:27,300
When I bend my arm. 
The doctors cure for that was 

1109
00:58:27,300 --> 00:58:32,100
don't do that though, you know? 
And so if big ball of mud hurts 

1110
00:58:32,200 --> 00:58:36,800
and if tiny tiny micro service 
hurts, don't do that, then the 

1111
00:58:36,800 --> 00:58:39,600
subtitle to the book. 
So strategic model is a 

1112
00:58:39,607 --> 00:58:43,600
microservices driving. 
Change with purposeful 

1113
00:58:43,600 --> 00:58:47,300
architecture, purposeful. 
See a very key word. 

1114
00:58:47,400 --> 00:58:49,800
Purposeful. 
Everything should have a 

1115
00:58:49,800 --> 00:58:52,700
purpose. 
Is there any reason other than 

1116
00:58:52,700 --> 00:58:55,500
an arbitrary decision that you 
decided to write? 

1117
00:58:55,700 --> 00:59:01,400
Only 100 lines of java code and 
that will be the microservice. 

1118
00:59:01,400 --> 00:59:05,000
And if it's starting to reach a 
hundred and ten lines of code or

1119
00:59:05,000 --> 00:59:08,800
only 90, will might be something
wrong with this micro stimulus 

1120
00:59:08,800 --> 00:59:11,400
because it's more or less than 
100. 

1121
00:59:11,500 --> 00:59:14,300
So you start adding comments 
just to make yourself feel 

1122
00:59:14,300 --> 00:59:17,200
better or deleting comments. 
Not even the comments or lines 

1123
00:59:17,200 --> 00:59:19,400
of code. 
But oh, maybe we can write this 

1124
00:59:19,400 --> 00:59:23,100
if else on a single line of 
code, I mean, seriously, when 

1125
00:59:23,100 --> 00:59:26,400
people are thinking that way 
there's Something wrong. 

1126
00:59:26,500 --> 00:59:29,600
There is just really something. 
Well, what do you mean 100 lines

1127
00:59:29,600 --> 00:59:31,400
of code? 
You need 100 lines of java code 

1128
00:59:31,400 --> 00:59:35,000
as a good micro service, but 
then what if I write it in 

1129
00:59:35,100 --> 00:59:38,100
enclosure and it's 30 lines, if 
come, is that a bad 

1130
00:59:38,100 --> 00:59:41,200
micro-service? 
Should we add more to that micro

1131
00:59:41,200 --> 00:59:43,500
service? 
So that it'll be a hundred lines

1132
00:59:43,500 --> 00:59:46,500
of closure. 
So when I'll be expecting to see

1133
00:59:46,500 --> 00:59:48,700
the book, it's not going to be 
next. 

1134
00:59:48,700 --> 00:59:52,300
It's not going to be in January.
It has to go through production,

1135
00:59:52,400 --> 00:59:55,500
but hopefully not long either. 
I don't have control over. 

1136
00:59:55,800 --> 00:59:58,900
All that I have control over is 
writing and actually I have to 

1137
00:59:58,900 --> 01:00:02,200
admit, I was about six weeks 
late and my co-author. 

1138
01:00:02,200 --> 01:00:05,500
So we were just dealing with 
covid and I haven't gotten 

1139
01:00:05,500 --> 01:00:08,900
bullet but my co-author did. 
So he had to deal with that and 

1140
01:00:08,900 --> 01:00:11,000
his wife want to. 
So they were sick for three 

1141
01:00:11,000 --> 01:00:12,600
weeks. 
I haven't gotten it. 

1142
01:00:12,600 --> 01:00:15,000
But I've been exhausted just 
like everybody else for the 

1143
01:00:15,000 --> 01:00:18,700
whole pending fatigue thing. 
I think ways on everybody and so

1144
01:00:18,700 --> 01:00:22,100
it the book was about six weeks 
late and being delivered, but, 

1145
01:00:22,100 --> 01:00:24,500
you know, maybe we'll make up 
that time similarly. 

1146
01:00:25,200 --> 01:00:27,600
I'm really looking forward for 
that one. 

1147
01:00:27,600 --> 01:00:29,800
Before we end the conversation 
as usual. 

1148
01:00:29,800 --> 01:00:32,300
I would ask my guests, three 
technical leadership. 

1149
01:00:32,300 --> 01:00:34,700
Wisdom. 
Would you be able to share those

1150
01:00:34,700 --> 01:00:37,900
three wisdom that you have 
throughout your career for us to

1151
01:00:37,900 --> 01:00:40,800
learn? 
Yeah, right really simple code. 

1152
01:00:40,900 --> 01:00:43,800
If you're writing code to 
impress people, you're making a 

1153
01:00:43,808 --> 01:00:45,900
mistake again. 
I was just having this 

1154
01:00:45,900 --> 01:00:49,300
conversation with Dave Thomas 
today, and I said, you know 

1155
01:00:49,300 --> 01:00:52,700
what, sometimes I just really 
like to write imperative code 

1156
01:00:52,700 --> 01:00:55,500
because it's so clear. 
It's just this Is what I'm 

1157
01:00:55,500 --> 01:00:58,600
doing. 
I don't need to use this other 

1158
01:00:58,600 --> 01:01:02,000
mapping approach or flat map or 
map or whatever. 

1159
01:01:02,000 --> 01:01:06,200
It just is going to be so clear.
If I just do a little later and 

1160
01:01:06,200 --> 01:01:08,700
a loom and it's just going to be
crystal clear on. 

1161
01:01:08,707 --> 01:01:10,900
What's Happening. 
Someone could look at my code 

1162
01:01:10,900 --> 01:01:12,300
and go. 
Hey, well you could have used 

1163
01:01:12,300 --> 01:01:13,600
math. 
You know, I mean, yeah. 

1164
01:01:13,600 --> 01:01:15,700
Well I could have also not 
insist that too. 

1165
01:01:15,800 --> 01:01:20,200
So don't feel pressure from the 
crowd and a peer pressure that 

1166
01:01:20,200 --> 01:01:23,100
you're not cool enough because 
you aren't lighting The Stance 

1167
01:01:23,100 --> 01:01:26,600
and felt whatever it is that But
I mean, five years ago, 

1168
01:01:26,600 --> 01:01:29,500
iterating, this little faults 
and now it's all wait. 

1169
01:01:29,500 --> 01:01:32,800
We just heard about functional 
programming or mopping over a 

1170
01:01:32,800 --> 01:01:35,200
collection of. 
Well, let me tell you something 

1171
01:01:35,200 --> 01:01:36,800
with small talk. 
I was mapping all the 

1172
01:01:36,800 --> 01:01:40,600
collections 30 years ago. 
So there I know how it works. 

1173
01:01:40,600 --> 01:01:43,200
In fact, that's pretty much how 
it works is, small talk. 

1174
01:01:43,500 --> 01:01:47,600
Yeah, I've used land has since 
the 1980s and so don't tell me 

1175
01:01:47,600 --> 01:01:51,300
about that, but I don't have to 
use that because maybe the team 

1176
01:01:51,300 --> 01:01:54,400
I'm working with, wouldn't 
understand it as well, and maybe

1177
01:01:54,400 --> 01:01:56,300
there are certain. 
Features, I can't use because 

1178
01:01:56,300 --> 01:01:59,500
I've limited myself to the Java 
jdk that I'm using. 

1179
01:01:59,600 --> 01:02:03,200
So I'm not going to go upgrade 
to Java 16, just to be on the 

1180
01:02:03,200 --> 01:02:06,500
absolute Leading Edge so that I 
can use this feature and say 

1181
01:02:06,500 --> 01:02:09,300
that I used it. 
I really don't care about stuff 

1182
01:02:09,300 --> 01:02:11,600
like that. 
Business-wise what matters most?

1183
01:02:11,600 --> 01:02:13,200
So okay. 
That's the first one. 

1184
01:02:13,600 --> 01:02:15,800
Well, and that also leads into 
the second one. 

1185
01:02:15,800 --> 01:02:19,200
Is the business matters. 
They're paying your paycheck, 

1186
01:02:19,300 --> 01:02:22,600
and I hate to bring it down to 
that only because paying your 

1187
01:02:22,600 --> 01:02:24,800
paycheck, it's not just a matter
of being. 

1188
01:02:24,900 --> 01:02:28,000
Ungrateful, but what value do 
you really offer? 

1189
01:02:28,000 --> 01:02:31,900
Are you simply a cost center to 
the business because you get a 

1190
01:02:31,908 --> 01:02:34,900
paycheck, and what do you give 
to the business and return? 

1191
01:02:34,900 --> 01:02:36,800
Are you helping the business in 
Ali? 

1192
01:02:37,000 --> 01:02:38,900
Do you think, like a business 
person? 

1193
01:02:39,100 --> 01:02:42,800
Go buy some stocks in the stock 
market and start worrying about 

1194
01:02:42,800 --> 01:02:45,600
your Investments? 
Worry about that for a while. 

1195
01:02:45,800 --> 01:02:48,600
You going to talk about, right? 
Like we start taking on those 

1196
01:02:48,600 --> 01:02:51,400
responsibilities. 
You become really conscious 

1197
01:02:51,400 --> 01:02:54,400
about the way you spend your 
money and you're like, well, if 

1198
01:02:54,400 --> 01:02:59,000
I This Equity looks a little 
risky and you have start making 

1199
01:02:59,000 --> 01:03:02,200
decisions like that. 
Now that's the way your CEO 

1200
01:03:02,200 --> 01:03:04,200
things. 
That's the way your CIO. 

1201
01:03:04,200 --> 01:03:07,600
That's the way your CTL things. 
They're not just hey, yeah, 

1202
01:03:07,600 --> 01:03:11,900
let's give so-and-so a big raise
this year because they can map 

1203
01:03:11,900 --> 01:03:14,900
over a collection now, that's 
not what patters. 

1204
01:03:15,100 --> 01:03:18,800
So there's that and then I'm 
just going to say jump back to 

1205
01:03:18,800 --> 01:03:21,400
the first lady one of the first 
things we talked about and 

1206
01:03:21,400 --> 01:03:24,400
that's get out of your cubicle 
talk. 

1207
01:03:24,400 --> 01:03:25,800
If you are. 
An introvert. 

1208
01:03:25,800 --> 01:03:27,300
Get over it. 
Sorry. 

1209
01:03:27,500 --> 01:03:30,300
I'm an introvert on one of the 
worst introverts ever. 

1210
01:03:30,600 --> 01:03:32,700
But you know what? 
We're having this conversation 

1211
01:03:32,700 --> 01:03:35,400
now, because I'm still an 
introvert, but I've learned how 

1212
01:03:35,400 --> 01:03:37,900
to deal with it. 
And so now I can talk in front 

1213
01:03:37,900 --> 01:03:40,900
of thousands of people and it 
doesn't bother me anymore. 

1214
01:03:40,900 --> 01:03:44,900
I mean, yeah, I do get a little 
nervous but I can do it and so 

1215
01:03:45,000 --> 01:03:47,500
learn to do that. 
And one of the best things you 

1216
01:03:47,508 --> 01:03:51,100
can do is teach someone and not 
just someone like teaching 

1217
01:03:51,100 --> 01:03:53,100
workshop when your company once 
a year. 

1218
01:03:53,400 --> 01:03:57,600
Everybody on your team should 
have Teach 3 to 5 days per year 

1219
01:03:57,800 --> 01:03:59,800
and I don't mean just teaching 
for an hour. 

1220
01:04:00,000 --> 01:04:03,600
I mean, teach develop a workshop
one. 

1221
01:04:03,700 --> 01:04:06,300
You're going to learn way more 
than you can possibly teach your

1222
01:04:06,300 --> 01:04:10,000
students until you can become a 
very, very good teacher. 

1223
01:04:10,200 --> 01:04:12,600
Then they'll start to learn as 
much as you deem. 

1224
01:04:12,700 --> 01:04:15,000
Hopefully, you can convey that 
as well. 

1225
01:04:15,200 --> 01:04:17,400
But it will also get you out of 
your shell. 

1226
01:04:17,700 --> 01:04:20,300
We're going to get up there and 
voice might shake or you're 

1227
01:04:20,300 --> 01:04:23,300
going to expire a lot. 
But hey, what was it? 

1228
01:04:23,300 --> 01:04:24,700
Like when you did your first 
podcast? 

1229
01:04:24,800 --> 01:04:26,600
For you nervous? 
Of course. 

1230
01:04:26,700 --> 01:04:28,500
She only. 
Yeah, I mean probably even the 

1231
01:04:28,500 --> 01:04:30,800
first what? 
60 and then you started maybe 

1232
01:04:30,800 --> 01:04:31,900
getting used to. 
I don't know. 

1233
01:04:31,900 --> 01:04:35,200
Maybe it was only 20 for you. 
But you know, sure you're afraid

1234
01:04:35,200 --> 01:04:38,000
of maybe how this is gonna go. 
But look at you now, you're just

1235
01:04:38,000 --> 01:04:40,300
comfortable. 
We're having a nice time. 

1236
01:04:40,500 --> 01:04:42,900
I mean, this is just to me. 
It's a nice conversation. 

1237
01:04:42,900 --> 01:04:45,600
I'm sure for you too. 
So you can learn to do that in 

1238
01:04:45,600 --> 01:04:49,100
any situation and that is what's
going to help you be a business 

1239
01:04:49,100 --> 01:04:50,300
person. 
Wow. 

1240
01:04:50,300 --> 01:04:52,800
It's very insightful. 
Thank you for sharing all that. 

1241
01:04:52,800 --> 01:04:54,600
Thanks for the tips. 
Looking forward for the book. 

1242
01:04:54,600 --> 01:04:57,500
My Said, thanks again. 
One for spending your time here.

1243
01:04:57,500 --> 01:04:59,800
I really learn a lot D. 
D, D, is something that I would 

1244
01:04:59,800 --> 01:05:02,200
like to master myself as well as
a software programmer. 

1245
01:05:02,400 --> 01:05:04,600
So, yeah. 
Thanks for the time and I hope 

1246
01:05:04,600 --> 01:05:06,300
to see you again in the future 
episode. 

1247
01:05:06,500 --> 01:05:08,200
Oh, yeah, absolutely. 
Thank you, honey. 

1248
01:05:09,800 --> 01:05:13,200
Thank you for listening to this 
episode and for staying right 

1249
01:05:13,200 --> 01:05:15,900
till the end. 
If you highly enjoyed, please 

1250
01:05:16,000 --> 01:05:18,800
share it with your friends and 
colleagues who you think would 

1251
01:05:18,800 --> 01:05:21,600
also benefit from listening to 
this episode. 

1252
01:05:21,800 --> 01:05:24,700
And if you're new to the 
podcast, make sure to subscribe 

1253
01:05:24,700 --> 01:05:27,600
and leave me your valuable 
review and feedback. 

1254
01:05:27,700 --> 01:05:31,400
It really, really helps me a lot
in order to grow these podcasts 

1255
01:05:31,400 --> 01:05:34,000
better. 
You can also find the full show 

1256
01:05:34,000 --> 01:05:37,600
notes of this conversation on 
the episode page at technology. 

1257
01:05:37,600 --> 01:05:40,900
No, the death website. 
Including the full transcript 

1258
01:05:40,900 --> 01:05:44,500
interesting quotes, and links to
the resources and mentions from 

1259
01:05:44,500 --> 01:05:47,400
the conversation. 
And lastly make sure to 

1260
01:05:47,400 --> 01:05:49,900
subscribe to the show's mailing 
list on technology. 

1261
01:05:49,900 --> 01:05:53,300
No, the deaf to get notified for
any future episodes. 

1262
01:05:53,600 --> 01:05:56,400
Stay tuned for the next 
technique Journal episode. 

1263
01:05:56,400 --> 01:05:58,100
And until then. 
Goodbye.

