WEBVTT

1
00:00:04.160 --> 00:00:09.400
Hello everybody, this is another episode
of React Round Up. We have our

2
00:00:09.480 --> 00:00:15.839
panelist today's Leslie con Wine He y'all, and Thomas Aila. Hello. And

3
00:00:15.880 --> 00:00:19.199
our guest today is Monica Lent.
How are you doing, Monica, I'm

4
00:00:19.239 --> 00:00:23.039
doing great. Thanks so much for
having me. That's great, so Mondica.

5
00:00:23.120 --> 00:00:25.160
First of all, we would like
to know a little bit about your

6
00:00:25.199 --> 00:00:30.519
background. How come did you get
involved with software engineering? Great question,

7
00:00:30.719 --> 00:00:35.719
So to begin, I kind of
started a bit of an untraditional way.

8
00:00:35.799 --> 00:00:40.119
Let's say my dad was an electrical
engineer, so I kind of always grew

9
00:00:40.200 --> 00:00:45.560
up around computers. And thanks to
looking at Internet archive recently, I found

10
00:00:45.719 --> 00:00:50.280
my first ever domain name, which
dates back to when I was nine years

11
00:00:50.320 --> 00:00:55.479
old. Wow. Yeah, it's
a work of art. You can tell

12
00:00:55.600 --> 00:01:00.679
that I was taking word art and
bringing it into Microsoft Paint and then turning

13
00:01:00.679 --> 00:01:04.000
that into an image map. I'm
so excited all of a sudden. Yeah,

14
00:01:04.959 --> 00:01:12.079
it was honestly worse than I remembered
it. So yeah, that's kind

15
00:01:12.120 --> 00:01:17.840
of how I got started, like
learning HTML and CSS, making my neopets

16
00:01:17.879 --> 00:01:23.439
page amazing. Then eventually I went
to university and I actually studied Latin and

17
00:01:23.519 --> 00:01:30.120
Ancient Greek. But yeah, I
graduated and didn't really have a plan for

18
00:01:30.159 --> 00:01:33.920
how to use these things. Didn't
want to become a grad student, And

19
00:01:34.359 --> 00:01:38.680
yeah, keeping my developer job that
I kind of started in university was well

20
00:01:40.000 --> 00:01:46.719
a pretty convenient fallback. So that's
how I inadvertently actually turned my childhood hobby

21
00:01:46.799 --> 00:01:49.239
into the career that I have been
doing now for more than ten years.

22
00:01:49.480 --> 00:02:00.280
That's funny. So you start studying
legacy languages, the oldest languages of them

23
00:02:00.319 --> 00:02:06.599
all for the language. Oh my
god, that's a yeah. I liked

24
00:02:06.760 --> 00:02:10.360
in your talk that to say that
your first job was the student web master

25
00:02:10.520 --> 00:02:15.919
role exactly. You talked about like
the has at the same time student and

26
00:02:16.159 --> 00:02:21.400
master in the name, which is
really cool. I love it. Yeah,

27
00:02:21.439 --> 00:02:24.000
definitely. I was nineteen years old
when I got that job. It

28
00:02:24.120 --> 00:02:28.479
was pretty funny because they asked me, like how much experience I have.

29
00:02:29.120 --> 00:02:31.520
I was like, well, I
started PHP when I was like fourteen,

30
00:02:31.759 --> 00:02:38.039
so I guess I have five years
of experience senior. They didn't laugh at

31
00:02:38.039 --> 00:02:43.360
me openly, I don't know,
but I was completely serious when I told

32
00:02:43.360 --> 00:02:51.080
them that that's amazing, that's really
good, and today you're working at so

33
00:02:51.560 --> 00:02:55.000
I actually just quit the job that
I've had for the last five years.

34
00:02:55.039 --> 00:02:59.599
So I was working at sum up, which is a fintech company based in

35
00:02:59.639 --> 00:03:02.080
Britain. In So I was there
for five years and I worked as the

36
00:03:02.159 --> 00:03:07.360
lead front end engineer, and there
I grew the team from being like basically

37
00:03:07.479 --> 00:03:13.680
me to more than fifteen people located
in this run end team worldwide. But

38
00:03:14.080 --> 00:03:17.240
I left to build my own startup. So that's what I have been doing

39
00:03:17.280 --> 00:03:23.280
for a grand total of a week
and a half. Congratulations, Thank you

40
00:03:23.439 --> 00:03:29.560
very much. Tell us more about
it. Great question. So it's a

41
00:03:29.599 --> 00:03:32.479
bit of a tricky one because I
think sometimes when I talk to developers about

42
00:03:32.479 --> 00:03:38.159
it, it's like it's a marketing
tool. So marketing is kind of like

43
00:03:38.719 --> 00:03:43.199
a little bit to a lot of
developers when you talk about it, it's

44
00:03:43.199 --> 00:03:46.879
not maybe as sexy as I don't
know the latest library. But in essence,

45
00:03:46.879 --> 00:03:51.879
it's an analytic tool design for bloggers. So you might know that some

46
00:03:52.039 --> 00:03:58.439
bloggers write articles that are intended to
convert people through links to third party e

47
00:03:58.479 --> 00:04:01.479
commerce shops, for example, going
to Amazon or booking dot com or something

48
00:04:01.520 --> 00:04:05.000
like that, and then they earn
a commission. This is called affiliate marketing.

49
00:04:05.520 --> 00:04:11.960
So in essence, the application is
an analytics tool specifically designed around that

50
00:04:12.120 --> 00:04:16.240
use case. So typically bloggers are
not like ultra technical, or they are

51
00:04:16.319 --> 00:04:19.639
technical in a way that's very specific
to blogging. They know a lot about

52
00:04:19.720 --> 00:04:25.800
WordPress plugins, optimizing their theme,
things like that, but it's not really

53
00:04:25.839 --> 00:04:29.439
the same kind of stuff that you
would know if you were I don't know

54
00:04:29.480 --> 00:04:33.000
a product manager or a business analyst
who uses all of the traditional tools.

55
00:04:33.399 --> 00:04:39.199
Plus those tools are too expensive.
So in essence, we kind of take

56
00:04:39.240 --> 00:04:43.319
all of the kind of things you
might do in Google analytics or hot jar

57
00:04:44.120 --> 00:04:46.839
or optimize lead, these types of
things, and then we bundle them together

58
00:04:46.959 --> 00:04:51.079
in a use case strip and analytics
tool around affiliate marketing. That's really cool.

59
00:04:51.120 --> 00:04:57.360
I love the overall theme of taking
all this insane power that we have

60
00:04:57.439 --> 00:05:02.319
in technology and making it accessible and
hyper focused at a specific kind of use

61
00:05:02.399 --> 00:05:09.399
case and focusing on their particular needs
and in a way that makes the most

62
00:05:09.439 --> 00:05:13.079
sense to that specific audience. I
love that kind of thing. Yeah.

63
00:05:13.120 --> 00:05:17.879
Absolutely, It's really interesting because you
have so much data. I recently calculated

64
00:05:17.920 --> 00:05:23.360
it and we are collecting over two
and a half million events every day just

65
00:05:23.439 --> 00:05:27.920
from our beta testers. So this
is a lot of data. But the

66
00:05:28.000 --> 00:05:33.560
question that's really hard is how do
you make this useful to people? So

67
00:05:33.600 --> 00:05:38.480
it's a bit of a process of
discovery for myself as well, because you

68
00:05:38.560 --> 00:05:42.319
just have no idea what kind of
interesting correlations are waiting in that data,

69
00:05:42.839 --> 00:05:46.000
honestly, until you start coding some
graphs and you start to see where it

70
00:05:46.040 --> 00:05:50.560
takes you. Yeah, this is
Yeah, it's really interesting because I think

71
00:05:50.600 --> 00:05:56.720
that at least from the world maybe
twenty or thirty years ago, we were

72
00:05:56.759 --> 00:06:00.759
coming from from an age where we
did not have enough data, right,

73
00:06:00.920 --> 00:06:04.040
did not have enough information. So
it's like the age of the amazing libraries,

74
00:06:04.240 --> 00:06:06.480
or you would go into a library
and it's like, oh my god,

75
00:06:06.519 --> 00:06:10.680
now I have all this information.
This is awesome. Today it's kind

76
00:06:10.720 --> 00:06:15.079
of the opposite moment, where there's
so much information out there and now we

77
00:06:15.120 --> 00:06:20.600
need to like try to get the
wisdom and the knowledge from the amount of

78
00:06:20.680 --> 00:06:25.040
like try to understand what is noise
and what is not right m h.

79
00:06:25.480 --> 00:06:30.360
It's it's a crazy absolutely, and
especially when the audience that's consuming this data

80
00:06:30.519 --> 00:06:35.360
is not necessarily interested in spending all
of their time digging through it, right,

81
00:06:35.399 --> 00:06:41.319
They're busy people, business owners,
Right, So you can't just leave

82
00:06:41.360 --> 00:06:45.000
them to their own devices to hunt
through things. You have to really like

83
00:06:45.120 --> 00:06:48.800
surface that in an actionable way,
and that is something I'm learning every day.

84
00:06:49.839 --> 00:06:54.600
Nice. Okay, so I have
one question for you related to to

85
00:06:54.639 --> 00:06:59.120
your react fillin talk. First of
all, let me say it's one of

86
00:06:59.160 --> 00:07:02.879
the best thoughts tech talks I've seen, like at least in the past year.

87
00:07:03.480 --> 00:07:08.240
It's really good. It's really good, Thank you very much. It's

88
00:07:08.319 --> 00:07:14.279
really interesting, Like when you hear
someone talking about like actually building software,

89
00:07:14.279 --> 00:07:17.160
I mean talking about the problems that
the way you were talking, I don't

90
00:07:17.160 --> 00:07:21.600
know, it's really good. First
of all, would before we go into

91
00:07:21.639 --> 00:07:25.920
the tails of that talk, I
would like to understand like from you now

92
00:07:25.959 --> 00:07:30.000
that you're building something from scratch,
you we're like the only dav for a

93
00:07:30.040 --> 00:07:34.879
while. Maybe it's the only DV
up until this day. Maybe someone is

94
00:07:34.920 --> 00:07:38.839
helping you. I don't know,
Like what's the difference when you were talking

95
00:07:38.839 --> 00:07:44.360
about when you think about building software
in a company that has fifteen hundred people

96
00:07:44.560 --> 00:07:48.800
and a company that has one person. Does it changes the way you think

97
00:07:48.800 --> 00:07:54.680
about things? Of course, I
think not only the fact that the technology

98
00:07:54.759 --> 00:07:58.519
is different, but of course also
the fact that you have different needs and

99
00:07:59.120 --> 00:08:01.439
level of stability as a business.
Right, So of course, when you're

100
00:08:01.480 --> 00:08:05.120
in an early stage business, you
don't really know if the code you're writing

101
00:08:05.800 --> 00:08:09.120
is going to be around in six
months. You don't really know whether you're

102
00:08:09.120 --> 00:08:15.920
going to end up becoming profitable,
and of course that puts a different level

103
00:08:15.639 --> 00:08:20.800
of consideration of where to invest your
effort. Definitely. But of course,

104
00:08:20.920 --> 00:08:26.519
on the other hand, what I
find really interesting so far about building something

105
00:08:26.639 --> 00:08:30.720
myself. I'm also working on this
with my boyfriend who's my co founder,

106
00:08:31.120 --> 00:08:35.000
who's also a software engineer. It's
interesting because you know where you want to

107
00:08:35.080 --> 00:08:39.840
invest in quality, and you know
where you shouldn't be investing because that would

108
00:08:39.879 --> 00:08:45.879
be a waste of time. For
example, one thing that makes the analytics

109
00:08:45.919 --> 00:08:50.440
application we're building unique is that it
can scan an existing website to find affiliate

110
00:08:50.440 --> 00:08:54.919
links using an algorithm, And by
algorithm I mean a fancy function, right,

111
00:08:56.399 --> 00:09:01.240
But this fancy function, you better
believe it is the best tested piece

112
00:09:01.279 --> 00:09:05.960
of code you can imagine. It
has so many tests because if it doesn't

113
00:09:05.960 --> 00:09:09.919
work, it means that people aren't
actually finding the thing that they need to

114
00:09:09.000 --> 00:09:13.679
track. And it can be really
easy to say Okay, you know,

115
00:09:13.919 --> 00:09:18.519
I just want to get this working
fast, But when something gets more complicated,

116
00:09:18.639 --> 00:09:22.159
you realize, really, what's the
value in testing? And on the

117
00:09:22.200 --> 00:09:26.240
other hand, the user interface has
pretty few tests, I would say,

118
00:09:26.720 --> 00:09:30.519
and I think that's okay, because
honestly, we don't even know if the

119
00:09:30.639 --> 00:09:35.480
UI is totally good, We're going
to need to change it. So at

120
00:09:35.480 --> 00:09:37.879
the end of the day, I
think it's about finding that balance and understanding

121
00:09:39.279 --> 00:09:43.320
really what context am I in in
order to make those appropriate decisions that make

122
00:09:43.399 --> 00:09:48.240
sense for the business and also for
realistically how long is that software going to

123
00:09:48.679 --> 00:09:54.320
need to be maintainable. It's like
the challenge of finding a connection to the

124
00:09:54.559 --> 00:10:00.000
ultimate value, like what is the
point, what is the purpose? Why

125
00:10:00.000 --> 00:10:03.480
why are we doing this? So
often developers get so caught up on well,

126
00:10:03.519 --> 00:10:05.879
this is the task right in front
of me, and don't think about

127
00:10:05.879 --> 00:10:09.639
the bigger picture, how it connects, how it fits in, how it

128
00:10:09.679 --> 00:10:15.279
actually connects to some outcome in the
real world that anybody cares about. So

129
00:10:15.399 --> 00:10:20.919
kind of that valuing hierarchy gets lost, and that seems to be where a

130
00:10:20.960 --> 00:10:24.679
lot of especially like junior devs,
especially myself when I was a junior de

131
00:10:24.039 --> 00:10:28.679
just like going all in on like
I'm going to make this one random thing,

132
00:10:28.919 --> 00:10:33.360
the investing all your time and effort
without like getting permission to do that,

133
00:10:33.519 --> 00:10:35.879
or getting like really defensive like I
want to do this really really high

134
00:10:35.960 --> 00:10:39.240
quality, or I spent three weeks
on this thing and they were expecting you

135
00:10:39.279 --> 00:10:43.320
to spend three hours on that thing. And then there's just like there's that

136
00:10:43.759 --> 00:10:48.120
miscommunication that everybody just has different assumptions, assumes that everybody's on the same page,

137
00:10:48.120 --> 00:10:52.600
and then there's just like emotions get
in, Like how do you deal

138
00:10:52.679 --> 00:10:58.320
with with those kind of unspoken assumptions
that just kind of get lost in the

139
00:10:58.320 --> 00:11:01.159
weeds. Distilling that down a little
bit, right, I mean, Monica,

140
00:11:01.240 --> 00:11:03.559
Like, now you're in this position
where you sort of get to call

141
00:11:03.600 --> 00:11:07.519
the shots. You're making this decision, so you sort of inherently know what

142
00:11:07.559 --> 00:11:09.799
are the things that are worth spending
the time on, what are things that

143
00:11:09.799 --> 00:11:13.440
are probably going to get refactored,
you know, going down that path,

144
00:11:13.559 --> 00:11:18.159
So putting yourself back maybe in that
first student webmaster job or any of the

145
00:11:18.240 --> 00:11:22.919
jobs you've held in between, right, how do you sort of distill get

146
00:11:22.919 --> 00:11:28.080
that information from the product owner or
whoever is running the project to be able

147
00:11:28.120 --> 00:11:31.120
to make some of those decisions as
maybe just a developer on the team.

148
00:11:31.440 --> 00:11:37.399
Yeah, that's isn't that the age
old question? Where do I actually invest

149
00:11:37.480 --> 00:11:41.440
my time? To be honest,
I think this is something that it's a

150
00:11:41.759 --> 00:11:46.960
so contextual and b it comes with
just so much experience and also so much

151
00:11:48.000 --> 00:11:52.320
failure, right that it takes the
failure in doing it wrong, I think

152
00:11:52.480 --> 00:11:56.919
in order to actually recognize all right, I've actually been through this before.

153
00:11:58.519 --> 00:12:01.000
So at the end of the day, I think it just comes down to

154
00:12:01.120 --> 00:12:07.399
being able to evaluate if I mess
this up, how much is it really

155
00:12:07.440 --> 00:12:09.320
going to hurt me? And there
are a couple of places I think you

156
00:12:09.360 --> 00:12:15.279
can really focus that. For example, if something is very business critical,

157
00:12:15.399 --> 00:12:18.559
for example, is the business going
to lose money if this stops working.

158
00:12:20.159 --> 00:12:24.440
This is why it makes a lot
of sense for us to be investing tests

159
00:12:24.480 --> 00:12:28.480
in our onboarding flows right when people
sign up, anytime they're putting in payment

160
00:12:28.559 --> 00:12:33.720
information, all of those critical pieces
that come together for their very first experience.

161
00:12:35.440 --> 00:12:39.240
This warrants a whole lot of testing
and to some degree a little bit

162
00:12:39.240 --> 00:12:43.559
of paranoia, you know, like
if it goes wrong, especially at certain

163
00:12:43.600 --> 00:12:46.519
times of the year, I can
say working at sum Up when it came

164
00:12:46.559 --> 00:12:50.200
to the end of the year,
right before Christmas. Of course, you

165
00:12:50.200 --> 00:12:56.440
can imagine a lot of people are
getting ready for an increased sale season,

166
00:12:56.679 --> 00:13:00.840
right and you it just makes sense
to be more cautious at that point in

167
00:13:00.879 --> 00:13:03.440
time. I know there's like a
lot of this talk about don't be afraid

168
00:13:03.480 --> 00:13:09.840
to deploy on Fridays, you know, but really like the question is does

169
00:13:09.879 --> 00:13:11.759
that make sense for you or not? You know, what kind of impact

170
00:13:11.879 --> 00:13:16.039
is this going to have on your
users if you have downtime on a Friday.

171
00:13:16.639 --> 00:13:20.000
Otherwise it's just you know, it's
inflated confidence and it's not putting your

172
00:13:20.080 --> 00:13:24.399
users first. If you ask me, that's very interesting point. I may

173
00:13:24.440 --> 00:13:28.320
sound like a broken record, but
I say this on time. I think

174
00:13:28.399 --> 00:13:33.039
that the single most thing that works
is skin in the game. If it

175
00:13:33.159 --> 00:13:37.320
hurts on you, and if you
get the benefits, if it goes,

176
00:13:37.799 --> 00:13:43.399
if it's done correctly, then most
probably you're making like better decisions then.

177
00:13:43.759 --> 00:13:50.200
And I think that this is a
big challenge with larger companies is that the

178
00:13:50.279 --> 00:13:54.440
people actually doing the work when the
company is still large, they're very like

179
00:13:54.519 --> 00:14:00.279
detached from the mission and probably at
this point in your life. Now you

180
00:14:00.320 --> 00:14:05.639
cannot even afford to be detached from
the mission since now it's your like main

181
00:14:05.120 --> 00:14:09.279
source of income or it is right, It's like, so when people say

182
00:14:09.320 --> 00:14:13.480
that, don't deploy on Friday,
I would say, like, I don't

183
00:14:13.480 --> 00:14:16.720
know, Like what does does Monica
say about like deploying day, because she's

184
00:14:16.759 --> 00:14:22.000
the one who really get hurt if
anything goes wrong. Sometimes we talk here

185
00:14:22.080 --> 00:14:28.080
about should we let people deploy anytime? This is a good question, like

186
00:14:28.120 --> 00:14:33.360
should should deploy be like anytime deploy? I think it should be any time

187
00:14:33.360 --> 00:14:37.039
deploy if your team has an on
call thing, and and if you deploy

188
00:14:37.120 --> 00:14:43.840
something bad and goes home, you
need topic of on call is so controversial.

189
00:14:45.960 --> 00:14:48.840
Should engineers be on call? Should
they not be on call? You

190
00:14:48.919 --> 00:14:52.879
hear people who are saying, Okay, I did an on call job,

191
00:14:52.919 --> 00:14:56.440
and now you know, I never
want to do that again. I think

192
00:14:56.440 --> 00:15:00.120
that's totally okay. You know,
like if you don't want to be on

193
00:15:00.200 --> 00:15:03.519
call, then you work somewhere that
doesn't require people to be on call.

194
00:15:03.080 --> 00:15:05.519
But at the same time, it's
like, well, if you do want

195
00:15:05.519 --> 00:15:11.919
to deploy any time of the day, then that's like a responsibility and I've

196
00:15:11.960 --> 00:15:16.519
definitely seen situations where the engineers,
you know, they want the keys to

197
00:15:16.600 --> 00:15:20.919
the kingdom, but they don't necessarily
want to be responsible for something going wrong.

198
00:15:22.360 --> 00:15:28.799
Responsibility. I mean, it's like, okay, well maybe you can

199
00:15:28.799 --> 00:15:33.519
blame this on QA or someone in
operations, and that's kind of like,

200
00:15:33.799 --> 00:15:37.639
I don't know, it's like the
classic deflection. And you know, Frankly,

201
00:15:37.679 --> 00:15:39.440
if I was in this position and
I heard that kind of thing,

202
00:15:39.480 --> 00:15:43.600
I would say, Okay, then
we go back to a release schedule.

203
00:15:43.919 --> 00:15:48.639
If you're not going to have enough
empathy for the users to you know,

204
00:15:48.879 --> 00:15:54.799
stop playing ping pong and come fix
the problem, then yeah, maybe there

205
00:15:54.879 --> 00:15:58.200
is that missing maturity. And I
mean you just have to recognize that.

206
00:16:00.039 --> 00:16:03.159
Yeah. I think it's partly just
not being held accountable, and so much

207
00:16:03.200 --> 00:16:08.200
of our industry and related industries,
smart people or people who like to think

208
00:16:08.240 --> 00:16:12.840
of themselves as smart, make things
seem more complicated than they really are so

209
00:16:12.879 --> 00:16:18.639
that they can get away with stuff
and kind of hide their shenanigans under a

210
00:16:18.879 --> 00:16:25.440
veneer of ah, it's too complicated, you couldn't understand it. I have

211
00:16:25.519 --> 00:16:32.200
all these great reasons for why I
get to do whatever I want narcissistic design.

212
00:16:32.799 --> 00:16:37.679
I think the a there's a talk
right about Oh yeah, this one

213
00:16:37.759 --> 00:16:45.559
is one of my favorites. Yeah, it's the Closure Stewart something. Yes,

214
00:16:45.879 --> 00:16:49.679
yes, it's great. Yeah,
that talks about making yourself so essential

215
00:16:49.720 --> 00:16:56.279
in the company you work in that
they can never fire you. Yeah,

216
00:16:56.759 --> 00:17:02.759
yes, this is really great.
All right, So let's give one more

217
00:17:03.480 --> 00:17:07.119
step back to the direct feel and
talk. You talk about architecture, right,

218
00:17:07.160 --> 00:17:14.279
software architecture, and when you start
the more practical part of your talk,

219
00:17:14.440 --> 00:17:19.680
you talk about essentially constraints. Right, So when when you write software

220
00:17:19.680 --> 00:17:26.680
and and you want to to make
sure that you have a good lifetime in

221
00:17:26.720 --> 00:17:30.000
your software, it's not going to
become a big ball of mud like that

222
00:17:30.359 --> 00:17:36.359
anything is super costly. You need
to create concerts. Could you go a

223
00:17:36.400 --> 00:17:38.240
little bit further on that, explain
a little bit that concept to us,

224
00:17:38.880 --> 00:17:45.960
Yeah, for sure. So the
idea is that instead of thinking about architecture

225
00:17:45.359 --> 00:17:51.839
as something you know, super abstract
that people who don't write code anymore are

226
00:17:51.880 --> 00:17:56.720
responsible for and then the rest of
us just live with their decisions, instead,

227
00:17:56.799 --> 00:18:03.519
think about architecture as enabling constraints,
so intentionally constraining the way that we're

228
00:18:03.559 --> 00:18:07.680
working. I mean you can also
think about it as best practices under another

229
00:18:07.799 --> 00:18:12.480
name. But putting these constraints in
place, and we basically trade in the

230
00:18:12.480 --> 00:18:18.680
fact that we don't exercise all of
our powers that we could have as developers,

231
00:18:18.200 --> 00:18:23.839
and instead we pick ways to do
less and also end up with code

232
00:18:23.880 --> 00:18:27.880
that is safer to run, going
to last a lot longer, going to

233
00:18:27.960 --> 00:18:33.039
lead to fewer bugs, and so
forth. So one like really common example

234
00:18:33.160 --> 00:18:36.759
of enabling constraints is driving in a
car. When you drive in a car,

235
00:18:36.880 --> 00:18:41.319
the reason you feel safe to drive
super fast down the street is probably

236
00:18:41.440 --> 00:18:45.640
because there are some rules to the
road, right, there are some lines,

237
00:18:45.799 --> 00:18:48.559
I mean, maybe there's even a
police officer that's going to pull you

238
00:18:48.640 --> 00:18:52.519
over if you squit up, right, Maybe that's the ci So you know,

239
00:18:52.759 --> 00:18:56.960
there are things that we use in
the real world to constrain ourselves for

240
00:18:57.000 --> 00:19:00.559
the sake of safety and speed,
and software development is really no different than

241
00:19:00.599 --> 00:19:04.680
that. And so it's yeah,
that's really the main concept. How can

242
00:19:04.720 --> 00:19:08.200
you give away some of the things
that we used to do, you know,

243
00:19:08.279 --> 00:19:12.519
whether this is just you know,
making an enormous mess of the dependencies

244
00:19:12.519 --> 00:19:18.759
in our code and instead putting structure
in place and enforcing that structure. How

245
00:19:18.799 --> 00:19:23.559
can you essentially do that in a
way that's actually maintainable, especially on a

246
00:19:25.319 --> 00:19:29.359
larger team, a team where not
everybody sitting in the same room. Yeah,

247
00:19:29.599 --> 00:19:33.440
it's such a powerful concept. I've
been learning about this recently. It

248
00:19:33.480 --> 00:19:38.880
kind of goes down to the kind
of the psychological need for certainty. You

249
00:19:38.920 --> 00:19:41.799
know, we if we don't have
a certain level of certainty and stability,

250
00:19:41.839 --> 00:19:47.400
then we have a constant feeling of
anxiety. If we have certainty, if

251
00:19:47.440 --> 00:19:49.279
we know what's going to happen,
at least, you know, in certain

252
00:19:49.400 --> 00:19:53.920
areas, we can feel comfortable and
confident. And when you're feeling that level

253
00:19:53.960 --> 00:19:59.359
of certainty, you can move really
really quickly because you know that chaos isn't

254
00:19:59.359 --> 00:20:02.400
coming at you certain ways. You
know, if everybody drives on the right

255
00:20:02.400 --> 00:20:03.839
side of the road, you can
go a lot faster because you don't have

256
00:20:03.880 --> 00:20:11.039
to worry about someone coming at you. And applying that to programming I've gotten

257
00:20:11.079 --> 00:20:14.680
into. I was very much on
the other side of that argument for most

258
00:20:14.759 --> 00:20:18.720
of my career of just like valuing
freedom to an extreme, and I would

259
00:20:18.799 --> 00:20:22.640
kind of rationalize it of like,
well, we want we can't imagine what

260
00:20:22.720 --> 00:20:27.279
future possibilities we want to enable,
so we don't want to paint ourselves into

261
00:20:27.319 --> 00:20:32.640
a corner, which my favorite saying
back then. But what I wasn't realizing

262
00:20:32.720 --> 00:20:37.319
is that by adding all this flexibility, I was making it literally impossible to

263
00:20:37.480 --> 00:20:41.839
test all of the different constraint by
handling any kind of input, I was

264
00:20:41.839 --> 00:20:45.960
making it impossible to have certainty that
I'm using this thing correctly. So if

265
00:20:47.000 --> 00:20:48.640
you accidentally use it wrong, you're
not going to get any errors. You're

266
00:20:48.640 --> 00:20:52.559
not going to get any warnings because
the API that it was designing just like

267
00:20:52.640 --> 00:20:56.039
assumed that you knew what you were
doing and you always did everything perfectly,

268
00:20:56.240 --> 00:21:02.359
Like no, if you constrain things
and be like, immediately throw a warning

269
00:21:02.400 --> 00:21:06.039
in somebody's face. Did you did
something weird? Did you do that on

270
00:21:06.079 --> 00:21:10.039
purpose? Or was that a mistake? Lets you move so much faster,

271
00:21:10.319 --> 00:21:14.559
which is why I love you know. The mutuols guys kind of, I

272
00:21:14.559 --> 00:21:19.000
guess folks were most of the people
involved in creating like React at the beginning,

273
00:21:19.839 --> 00:21:26.440
and the mutuals started off as being
very anti error messages. It was

274
00:21:26.599 --> 00:21:33.119
very it was very easy to shoot
yourself on the foot and react. Thankfully,

275
00:21:33.160 --> 00:21:37.240
it got a lot of wisdom from
the Facebook people who had been around

276
00:21:37.240 --> 00:21:41.599
the block a few times and were
like, let's have very very strict warnings,

277
00:21:41.279 --> 00:21:45.519
very very easy to know when you've
made a mistake. And I love

278
00:21:45.720 --> 00:21:49.279
how React does that at an API
level, but I love how you're bringing

279
00:21:49.319 --> 00:21:53.200
that and thinking about that at as
at a much higher level, not just

280
00:21:53.279 --> 00:21:57.440
at API level, but as like
the architecture of an entire system, and

281
00:21:57.559 --> 00:22:03.680
how an entire company of things can
apply that concept to move faster overall.

282
00:22:06.440 --> 00:22:10.200
One thing I find interesting is that
I think a lot of developers early in

283
00:22:10.240 --> 00:22:15.720
their career tend towards okay, we
need to document everything. Like if we

284
00:22:15.759 --> 00:22:22.039
don't have documentation for absolutely everything,
every single product requirement or every single thing

285
00:22:22.119 --> 00:22:25.440
in the system, I mean I
definitely did that, then how can we

286
00:22:25.519 --> 00:22:29.720
possibly know what's going on? And
the interesting thing is like, when you

287
00:22:29.799 --> 00:22:33.480
get bigger than that, you know
you can. Of course, you can

288
00:22:33.559 --> 00:22:38.279
hire technical writers, you can spend
a lot of time doing documentation, and

289
00:22:38.519 --> 00:22:45.319
documentation is important, but the amount
of certainty that you get from automating as

290
00:22:45.440 --> 00:22:51.079
much of that would be documentation as
possible. It's so much more friendly,

291
00:22:51.240 --> 00:22:53.640
you know, to onboard new people
for example, and as you said,

292
00:22:53.640 --> 00:22:56.799
to give them, you know,
real time feedback. Right. So,

293
00:22:57.200 --> 00:23:03.160
one example that I discuss in the
talk is about forbid independency tests, and

294
00:23:03.640 --> 00:23:07.880
this is something that can tell people
you know, you're violating our architecture constraints,

295
00:23:07.880 --> 00:23:10.839
and it can happen in like just
a couple of minutes after they push

296
00:23:10.920 --> 00:23:15.759
their code. This is like so
much more resilient than relying that someone who's

297
00:23:15.920 --> 00:23:25.400
super good at reading all of the
like imports inside your pull request is totally

298
00:23:25.440 --> 00:23:27.799
going to find that that one relative
import, you know, is missing a

299
00:23:27.799 --> 00:23:32.680
couple of dot dots to bring it
to the right place. I don't know,

300
00:23:32.759 --> 00:23:37.160
there's no reason not to put as
much of your constraints into automation into

301
00:23:37.200 --> 00:23:41.480
code as possible, because it takes
that burden, you know, off of

302
00:23:41.599 --> 00:23:47.359
people's shoulders. You'll also talk a
little bit in the talk about favoring copying

303
00:23:47.400 --> 00:23:49.640
and pasting over dependencies, which I
think can be a little bit of a

304
00:23:51.200 --> 00:23:56.039
I don't know, scary controversial statement. Can you tell us a little bit

305
00:23:56.079 --> 00:24:00.559
more about that approach and why maybe
that constraint is actually applause? Yeah,

306
00:24:00.599 --> 00:24:07.200
this is definitely something where you have
two camps of people like after I give

307
00:24:07.240 --> 00:24:10.759
this talk, you have the cancer
people who are like, thank you,

308
00:24:11.119 --> 00:24:14.920
someone finally said it. And then
you have the other camps of people who

309
00:24:14.920 --> 00:24:19.240
are just like, I feel so
dirty, you know, And it's like,

310
00:24:19.279 --> 00:24:22.799
okay, well, you know.
Software isn't there just to make you

311
00:24:22.799 --> 00:24:26.440
feel good about yourself. It's to
do things right. It's too value perform

312
00:24:26.519 --> 00:24:32.880
some kind of a function hopefully make
people's lives a little bit better, easier,

313
00:24:32.920 --> 00:24:36.519
or something like that. So,
in essence, the reason I talk

314
00:24:36.599 --> 00:24:42.559
about potentially deciding to copy and paste
code over introducing an implicit dependency is the

315
00:24:42.640 --> 00:24:48.680
fact that sometimes when you create an
abstraction and you bind together two pieces of

316
00:24:48.720 --> 00:24:56.240
code through that abstraction, it often
happens that this binding together ends up creating

317
00:24:56.319 --> 00:25:02.200
code that is more brittle than it
would have been otherwise. So, for

318
00:25:02.240 --> 00:25:04.880
example, let's say you have two
pages in your React app and they're both

319
00:25:06.039 --> 00:25:11.680
using the same like super amazing date
picker component, and this day picker component

320
00:25:11.759 --> 00:25:15.599
is aware of tons of things happening
inside of your app. But what happens

321
00:25:15.599 --> 00:25:19.400
when on one page you want to
introduce the hour picker and on the other

322
00:25:19.480 --> 00:25:23.200
page you want to introduce I don't
know, some kind of schedule picker,

323
00:25:23.319 --> 00:25:27.160
I don't know. These things can
start to diverge over time. And what's

324
00:25:27.279 --> 00:25:33.079
interesting to me is that as soon
as you put a component in the shared

325
00:25:33.119 --> 00:25:40.559
folder, it will almost never ever
leave. So people are afraid to remove

326
00:25:40.599 --> 00:25:42.319
it, right because they're like,
Okay, someone might depend on this,

327
00:25:42.720 --> 00:25:47.799
and you know, I don't want
to upset anybody, so they put it

328
00:25:47.839 --> 00:25:52.880
there. And then over time this
component starts to become very specialized. So

329
00:25:52.240 --> 00:25:57.119
instead of working in all kinds of
scenarios because it contains so much business logic,

330
00:25:57.440 --> 00:26:02.519
it starts to work only in the
those two specific places you're using it.

331
00:26:03.160 --> 00:26:07.119
So you have these if statements,
you know, like where in my

332
00:26:07.200 --> 00:26:11.680
application you're passing in some kind of
like your context. You know, if

333
00:26:11.720 --> 00:26:15.039
I'm on the sign up I got
to do that. If I'm on I

334
00:26:15.039 --> 00:26:22.440
don't know the account screen, I
need to do something different users, it's

335
00:26:22.480 --> 00:26:26.559
like use the mess Yeah. Then
you just keep adding them, right,

336
00:26:26.599 --> 00:26:29.720
you just keep adding more if statements
every time, because that's the model.

337
00:26:30.519 --> 00:26:34.680
Friend is sign friend is time components, I call them. Yeah, And

338
00:26:34.720 --> 00:26:38.559
what's funny is like, you know
you'll make a change and depending on how

339
00:26:38.599 --> 00:26:41.240
your app is set up, and
how your team is set up, you

340
00:26:41.279 --> 00:26:48.279
can make another team very unhappy with
you very quickly, right, because I

341
00:26:48.319 --> 00:26:52.880
mean so much of like software is
it's you know, less about code and

342
00:26:52.960 --> 00:27:00.079
more about people, and those kind
of decisions tend to have effects on the

343
00:27:00.119 --> 00:27:03.519
team. And you can really see
how this puts stress on a lot of

344
00:27:03.559 --> 00:27:10.519
teams, especially in front end applications
that are oftentimes you know, semi monolithic.

345
00:27:10.640 --> 00:27:15.640
Right. Yeah, I've been a
big fan of the copy paste dependency

346
00:27:15.680 --> 00:27:18.119
thing, but I've also seen it
go south. For example, Like I

347
00:27:18.160 --> 00:27:23.480
know you're not talking about like microdependencies
like taking parts of loadash and embedding it

348
00:27:23.519 --> 00:27:27.440
into your source code because of things
like security updates and stuff like that,

349
00:27:27.720 --> 00:27:33.359
but constraining that too app specific things. I think that makes a lot of

350
00:27:33.400 --> 00:27:38.920
sense to think about going south.
It's like problems are going to happen no

351
00:27:38.960 --> 00:27:45.319
matter what, But where will it
be easier to fix if something goes wrong?

352
00:27:45.880 --> 00:27:48.920
Right? So this is one consideration, and that's one point to copy

353
00:27:48.960 --> 00:27:53.400
and paste. I think I usually
like to think about whenever I see shared

354
00:27:53.440 --> 00:28:00.279
code, you need to ask the
question like did business did my use is

355
00:28:00.400 --> 00:28:03.640
asked for it to be shared right, is this only shared because it was

356
00:28:03.680 --> 00:28:10.720
like similar code? Or does like
did this need to be shared because of

357
00:28:11.240 --> 00:28:14.480
the design? Right? If you're
not talking to to a tech person,

358
00:28:15.039 --> 00:28:19.599
So if this should not be shared
because of the business needs or because of

359
00:28:19.640 --> 00:28:25.200
our users' needs, I stop calling
it shared code and I call it coupled

360
00:28:25.240 --> 00:28:30.160
code. This is coupled Oh that's
yeah, you know, like this is

361
00:28:30.759 --> 00:28:33.839
this is this is a bad thing. Sis, it's a bad thing.

362
00:28:33.039 --> 00:28:37.720
Even if they do the same thing
today, most probably with time, they're

363
00:28:37.799 --> 00:28:42.240
gonna they're gonna split, and it's
going to generate a problem for us.

364
00:28:42.559 --> 00:28:47.559
So there's nothing wrong with coupling code, just in the same way there's nothing

365
00:28:47.599 --> 00:28:51.279
wrong with coupling humans. Like the
humans have been coupling for a while.

366
00:28:51.319 --> 00:28:55.720
You just have to know what you're
getting into. Are you are you forming

367
00:28:55.720 --> 00:29:00.359
a relationship that's permanent or are you
just kind of pals hanging out out for

368
00:29:00.880 --> 00:29:03.599
a couple of days. Are you
tightly coupling something permanently, or are you

369
00:29:03.720 --> 00:29:07.920
just kind of adjacent. You also
don't want to think too far ahead,

370
00:29:08.000 --> 00:29:12.440
right, You don't want to be
marrying this person in your head when you're

371
00:29:12.480 --> 00:29:15.279
just coupling up. You know for
a while, right, so you also

372
00:29:15.279 --> 00:29:18.400
have to sort of think about what
are your needs in that moment and making

373
00:29:18.400 --> 00:29:22.559
sure that you're not, you know, at checking prematurely or trying to share

374
00:29:22.599 --> 00:29:26.640
code and when it's not really doesn't
really make sense. Yeah, my favorite

375
00:29:26.720 --> 00:29:33.400
software book is the from John Ulster
House, The Philosophy of Software Design.

376
00:29:33.519 --> 00:29:37.160
I also had sometimes in the picks
here we're doing a book club here at

377
00:29:37.200 --> 00:29:41.200
Compass now. He says that one
of the biggest source of complexities in the

378
00:29:41.279 --> 00:29:48.559
code base is dependencies. Dependencies in
the most like simple way of thinking about

379
00:29:48.559 --> 00:29:52.000
it, It's like, whenever I
change a piece of my code, I

380
00:29:52.039 --> 00:29:56.400
need to think about another piece of
my code, consider it, or even

381
00:29:56.519 --> 00:30:00.559
change it. Whenever this happens,
we have a dependency between two places.

382
00:30:00.960 --> 00:30:04.480
The more dependencies I have, the
more complex the code is. And that's

383
00:30:04.519 --> 00:30:07.759
it. Like in Generate's cognitive lobe, whenever I need to learn a lot

384
00:30:07.799 --> 00:30:12.559
of things before change anything, or
I have change amplification, which means like

385
00:30:12.599 --> 00:30:17.759
to change one thing, I need
to change in fourteen different places. Yes,

386
00:30:18.279 --> 00:30:22.759
or even no one knows because we
don't know all the dependencies. That's

387
00:30:22.759 --> 00:30:26.640
why I love react hooks so much. And why I loved relay so much.

388
00:30:26.720 --> 00:30:33.160
When you're the co locating all inter
tightly coupled things. You know,

389
00:30:33.160 --> 00:30:36.640
if you're married, you should probably
live together. You know. If your

390
00:30:36.680 --> 00:30:41.240
code is absolutely coupled together, it
should probably be in the same file,

391
00:30:41.920 --> 00:30:47.400
or be in the same bolder,
be in the same rebo. It's funny,

392
00:30:47.480 --> 00:30:52.920
but I love like the relay components
that define here's the graph ql that

393
00:30:52.039 --> 00:30:56.720
is needed for just this component,
and that's it. Or and here is

394
00:30:56.799 --> 00:31:00.079
the all of the code that goes
together, and that's it. Nothing else

395
00:31:00.079 --> 00:31:03.519
depends on this. It depends on
all of it together or not at all.

396
00:31:04.119 --> 00:31:11.960
It's not randomly strewn across the entire
world just nightmares. Definitely. That's

397
00:31:11.000 --> 00:31:17.359
also something I need to slightly change. The topic which I love about working

398
00:31:17.440 --> 00:31:22.400
in pipescript. That's kind of connected
to that. It's that and when you

399
00:31:22.480 --> 00:31:25.799
have code that depends on other code, it is you know, something that

400
00:31:25.839 --> 00:31:30.000
fails really really early and tells you, Okay, you didn't realize you were

401
00:31:30.079 --> 00:31:34.079
using this somewhere else, and yeah, you don't even need to write to

402
00:31:34.119 --> 00:31:37.359
the file in order to get that
feedback. That you love me to change

403
00:31:37.400 --> 00:31:41.599
that would have you know, broken
somewhere in your application. And this has

404
00:31:41.680 --> 00:31:48.680
been a huge lifesaver working on an
analytics app that is like so ultra you

405
00:31:48.720 --> 00:31:52.279
know, data heavy and being able
to like share types between front end code

406
00:31:52.319 --> 00:31:56.279
and back end code. I couldn't
imagine doing it without it. Yeah,

407
00:31:56.480 --> 00:32:02.920
just like that's such an undervalued concept
of just having like I totally disrespected types

408
00:32:02.960 --> 00:32:05.920
back in the day. I was, you know, I was kind of

409
00:32:05.960 --> 00:32:09.160
from the Ruby camp, anti Java, no type. But just like the

410
00:32:09.559 --> 00:32:15.240
power and the freedom and the speed
you can get when basically an entire class

411
00:32:15.279 --> 00:32:22.720
of future problems goes away instantly,
when you know for sure high certainty.

412
00:32:22.799 --> 00:32:27.759
Huh, as soon as you type
a character that you just screwed something up,

413
00:32:28.319 --> 00:32:34.519
got these two files married unbeknownst to
you. Now they they're permanently attached,

414
00:32:34.599 --> 00:32:37.039
Like okay, wait, back that
up. They're just they like to

415
00:32:37.039 --> 00:32:40.839
see other files they're not ready to, right. I mean, type systems

416
00:32:40.880 --> 00:32:45.759
are also a great example of enabling
constraints, right, because you don't just

417
00:32:45.799 --> 00:32:52.799
get to reassign your variable to absolutely
any other type it's gonna complain. I

418
00:32:52.839 --> 00:32:55.960
mean, of course you have ways
that you can suppress the type system,

419
00:32:57.640 --> 00:33:01.000
but in general, you know,
it's it's an awesome way to put limits

420
00:33:01.000 --> 00:33:07.119
in your code that ultimately give you
so much security and confidence going forward.

421
00:33:07.920 --> 00:33:15.319
Yeah, but how do you deal
with the situations where like this constraint usually

422
00:33:15.200 --> 00:33:20.160
make us happy ninety five percent of
the time. How do you deal with

423
00:33:20.200 --> 00:33:24.799
those five percent of the time where
typescript is just making your life miserable?

424
00:33:25.559 --> 00:33:30.000
Is it something that with experience and
just learn how to like, yep,

425
00:33:30.119 --> 00:33:34.599
that's life or I mean, I
definitely can't tell you that I am a

426
00:33:34.640 --> 00:33:38.640
typescript expert, like I am learning
typescript every day. I mean just yesterday

427
00:33:38.680 --> 00:33:43.839
I was using reduce and I forgot
to return and I spent so much time

428
00:33:43.920 --> 00:33:47.440
wondering, why does it think that
my thing is void? You know?

429
00:33:49.039 --> 00:33:52.759
And sometimes it just takes a bit
of rubber ducking to realize that you know

430
00:33:52.799 --> 00:33:55.960
what's going on. So I'm not
going to like, yeah, sit here

431
00:33:55.960 --> 00:34:00.359
and pretend that I know. You
know, I am like the source of

432
00:34:00.400 --> 00:34:05.960
wisdom on typescript. But I think
it has to depend a lot on what

433
00:34:06.039 --> 00:34:09.000
is your situation. So here we
knew like, Okay, I'm going to

434
00:34:09.039 --> 00:34:15.079
be building an analytics application, I'm
doing so much data crunching and if it

435
00:34:15.119 --> 00:34:19.280
goes wrong. I mean, this
is data that people are using to make

436
00:34:19.400 --> 00:34:23.119
decisions that affect their income, so
it's really important that this data is accurate.

437
00:34:23.679 --> 00:34:29.320
But probably I don't know, maybe
if I was building something that was

438
00:34:29.719 --> 00:34:35.119
less like less impactful, or maybe
you know, it was not so focused

439
00:34:35.119 --> 00:34:38.920
around data, then I might not
choose to use Typescript. Although these days,

440
00:34:39.639 --> 00:34:45.199
I don't know. The autocompletion and
everything is something that's I get confused

441
00:34:45.199 --> 00:34:51.079
when I open a regular JavaScript file
and like nothing happens when I you know,

442
00:34:51.239 --> 00:34:53.199
I'm just like, oh, this
is so irritating. I don't know.

443
00:34:53.400 --> 00:34:58.480
Apart from configuring build tools, which
is probably my least favorite thing about

444
00:34:58.519 --> 00:35:02.400
software development, I think it's you're
the only one everybody else loves it.

445
00:35:02.840 --> 00:35:08.000
I hate that. It's like my
number one hatred. Like Webpack. It's

446
00:35:08.039 --> 00:35:12.840
like, because I went into management, I wasn't coding a lot, and

447
00:35:12.880 --> 00:35:16.800
so Webpack released several new versions since
I stopped being an individual contributor, and

448
00:35:16.880 --> 00:35:22.320
I felt like every time I needed
Webpack for whatever side project, I'm just

449
00:35:22.320 --> 00:35:23.920
like, oh, my goodness,
I need to go look up what it

450
00:35:24.159 --> 00:35:30.719
What even is the latest Webpack version? And what what's different? And how

451
00:35:30.760 --> 00:35:34.880
many you know, freaking files do
I need to have my web pack?

452
00:35:35.559 --> 00:35:43.800
Yeah, it's gotten so much simpler, still pretty powerful tools. It's complicated.

453
00:35:43.840 --> 00:35:47.519
Yeah, building tools are one of
those things that they almost need to

454
00:35:47.559 --> 00:35:51.880
be a little bit complicated because of
the domain. Domain is a little bit

455
00:35:51.920 --> 00:35:54.679
complicated. And since you only touch
like every two months, it seems that

456
00:35:54.719 --> 00:35:59.679
you never learn, like I just
you just do it enough to hate it.

457
00:36:00.159 --> 00:36:02.079
Yeah, it's it's it's so crazy. Like if I if I did

458
00:36:02.400 --> 00:36:07.519
maybe web pac configurations as a day
job, like eight hours a day,

459
00:36:07.719 --> 00:36:10.320
maybe I would maybe it would be
like really good. But like we only

460
00:36:10.360 --> 00:36:15.960
touch it like every I don't know
every and never. Yeah, projects are

461
00:36:15.000 --> 00:36:22.119
create react app. Yeah that's a
that's a good one. So I have

462
00:36:22.159 --> 00:36:28.000
an example here here Compassly we use
a gRPC to communicate between the services,

463
00:36:28.079 --> 00:36:32.280
right so, and we use it
to use a push shrift before, so

464
00:36:32.440 --> 00:36:38.840
all our products are typed in a
push shrift. It's really interesting because you're

465
00:36:38.880 --> 00:36:43.159
going to create a services, you
create a push strift definition. It creates

466
00:36:43.519 --> 00:36:45.960
everything for you, like clients,
you just need to to fill in the

467
00:36:46.000 --> 00:36:52.519
gaps of the service. It really
makes things really well. It's super fast.

468
00:36:52.280 --> 00:36:57.760
But the type system sometimes it's like, oh my god, like I

469
00:36:57.800 --> 00:37:01.840
had a service, you know,
when you turn adjacent and like watch your

470
00:37:01.880 --> 00:37:06.360
return. You want to be the
key, you know, you don't want

471
00:37:06.360 --> 00:37:09.000
to make like an array. You
want to be like each key is ID

472
00:37:09.480 --> 00:37:13.800
and then I have an object.
Those simple things that we do in JavaScript

473
00:37:13.880 --> 00:37:16.760
all the time, you just can't
do that with a thrift definition. And

474
00:37:16.800 --> 00:37:20.719
that is the moment where I was
like, Okay, so this is the

475
00:37:20.880 --> 00:37:24.119
zen moment. The interface is not
going to be exactly the way you want,

476
00:37:24.840 --> 00:37:30.199
the way you think it's perfect.
It's a little bit like move but

477
00:37:31.679 --> 00:37:39.599
you're but you're like having a lot
of benefits from because everybody is using it.

478
00:37:40.239 --> 00:37:45.559
So that's what I think about typescript
today. Like sometimes typescript is really

479
00:37:45.760 --> 00:37:50.360
I think it you reach those edge
cases that it makes things ten times more

480
00:37:50.400 --> 00:37:53.440
complicated than before. But the fact
that you're using everything and it's it's giving

481
00:37:53.639 --> 00:37:59.679
like all those benefits, I think
it's worth it. But sometimes, yeah,

482
00:37:59.719 --> 00:38:04.320
it's one of these things where I
think sometimes when it depends, sometimes

483
00:38:04.320 --> 00:38:07.840
it's just a pain, right.
But on the other hand, I think

484
00:38:07.920 --> 00:38:12.440
sometimes when you have a constraint in
place and people don't like it. It's

485
00:38:12.559 --> 00:38:15.760
sometimes more of a matter of ego
or control, you know, where you

486
00:38:15.880 --> 00:38:19.679
just kind of want to have it
the way you want it. I think

487
00:38:19.719 --> 00:38:22.360
that's also what happened a lot with
Prettier. Right there, are you know,

488
00:38:22.760 --> 00:38:28.840
just a couple of people out there
lurking that vote occasionally on these polls

489
00:38:28.840 --> 00:38:31.559
in Twitter. You wonder who are
they the ones that are like, I

490
00:38:31.599 --> 00:38:36.320
don't want Prettier and I will never
use it, you know, I just

491
00:38:36.400 --> 00:38:37.880
hate it. And you're like,
I don't know what happens to you,

492
00:38:38.039 --> 00:38:43.760
like what went wrong? Most of
the time, I think, you know,

493
00:38:43.840 --> 00:38:47.920
it comes down to this is my
abstraction. This is like my way

494
00:38:47.920 --> 00:38:52.880
of formatting code. And I think
you have to be careful that when you

495
00:38:52.039 --> 00:38:57.880
design these constraints in your application that
you do what you can to keep your

496
00:38:57.880 --> 00:39:02.719
ego out of it. So using
these kind of standards is super important because

497
00:39:02.760 --> 00:39:07.239
you can also have people and I
have seen this, who think, Okay,

498
00:39:07.239 --> 00:39:10.719
I'm gonna build my framework on top
of the framework. Everyone's gonna love

499
00:39:12.079 --> 00:39:21.400
so productive. And the reality is
developers hate other developers abstractions, right,

500
00:39:21.719 --> 00:39:24.280
I mean, they're the worst.
Your first use them, You're like this

501
00:39:24.360 --> 00:39:30.039
sucks, and then you write your
own so the next person has to use

502
00:39:30.079 --> 00:39:35.960
it. Yeah, I think,
I don't know, it's the endless cycle.

503
00:39:36.559 --> 00:39:40.320
I think a lot a lot of
these things are so useful though,

504
00:39:40.360 --> 00:39:45.400
to expose kind of a lot of
that drama that's kind of boiling under the

505
00:39:45.440 --> 00:39:49.519
surface of like if you're searching for
jobs and you find you're interviewing it a

506
00:39:49.519 --> 00:39:53.679
place and somebody's really opinionated there about
why they don't use ready or Okay,

507
00:39:53.800 --> 00:39:59.559
guess I'm not working here. Yeah, definitely, these are some of those

508
00:39:59.639 --> 00:40:02.000
questions, and so you can ask
people. I don't know. I have

509
00:40:02.159 --> 00:40:07.920
done like like literally hundreds of interviews
by now, and sometimes it is really

510
00:40:08.559 --> 00:40:13.320
amazing the things that people have such
strong opinions on, where you're like,

511
00:40:13.880 --> 00:40:16.760
I don't know, you expend a
lot of emotional energy on something that is

512
00:40:16.840 --> 00:40:22.519
probably inconsequential, and you just,
you know, wonder how exhausting is it

513
00:40:22.559 --> 00:40:27.840
to live like that? Attacking me
from the from the late nineties or late

514
00:40:28.239 --> 00:40:30.719
how old was I? I literally
had a like a screaming match with somebody

515
00:40:30.719 --> 00:40:35.960
about tabs versus spaces at one point, like I knew it was like Okay,

516
00:40:36.239 --> 00:40:39.159
I need to dial it back like
that was my lowest point has gone

517
00:40:39.199 --> 00:40:46.760
full circle. Prettier Nobs now talking
about the blog posts that you had that

518
00:40:46.960 --> 00:40:54.400
was really hit. It was everywhere, shared everywhere about junior and senior developers.

519
00:40:54.519 --> 00:41:00.119
Do you think this is a characteristic
of junior professionals? Do you think

520
00:41:00.159 --> 00:41:05.480
the senior professionals are better at that? Or do you think it's just like

521
00:41:05.639 --> 00:41:08.199
across the board. I mean,
I think it all comes down to how

522
00:41:08.239 --> 00:41:14.159
you define junior and senior, because
everybody has a different definition, right,

523
00:41:15.079 --> 00:41:17.880
As I wrote in that post,
like I received a senior job title when

524
00:41:17.880 --> 00:41:22.320
I was I think I was twenty
six, maybe I was twenty four.

525
00:41:22.320 --> 00:41:25.239
I don't even remember. Of course, at that point, looking back on

526
00:41:25.320 --> 00:41:29.239
it, I was a junior even
though I had tech you know, three

527
00:41:29.280 --> 00:41:32.880
and a half years of experience on
paper, because that was still my mindset,

528
00:41:32.960 --> 00:41:37.480
right, it was a very immature
mindset from an engineering and team perspective.

529
00:41:38.000 --> 00:41:42.960
So I think whether or not those
kind of things are had, like

530
00:41:43.599 --> 00:41:46.760
engineering, seniority is such a spectrum
or like even a matrix. I would

531
00:41:46.800 --> 00:41:50.880
say, you can be senior in
some areas, a junior in others,

532
00:41:51.559 --> 00:41:57.840
and sometimes I don't know, you
also have junior developers who exert such wisdom

533
00:41:58.000 --> 00:42:02.320
sometimes in a situation because they haven't, you know, been hardened by all

534
00:42:02.360 --> 00:42:08.039
of those production horror stories yet,
so they're not so worried about something that

535
00:42:08.159 --> 00:42:13.440
ultimately is inconsequential. But I think
it goes both ways. You can have

536
00:42:13.440 --> 00:42:17.880
people who are militant, whether they
are senior or about things that are relevant.

537
00:42:19.239 --> 00:42:22.079
I think it's so much easier to
end up in that spot where you

538
00:42:22.119 --> 00:42:25.360
sort of have such strong opinions that
you're not willing to budge when you're not

539
00:42:25.400 --> 00:42:29.960
necessarily working on a big team.
The first job that I was doing development

540
00:42:30.000 --> 00:42:32.800
AD wasn't a developer job. I
was actually working in a nonprofit and communications.

541
00:42:34.280 --> 00:42:37.119
No one really knew anything about what
I was building, but I was

542
00:42:37.199 --> 00:42:40.320
tasked with sort of like creating these
WordPress themes for these blogs. And it

543
00:42:40.400 --> 00:42:44.079
was really easy to have really strong
opinions about the way I was doing it

544
00:42:44.119 --> 00:42:45.679
because I was the only one looking
at the code right, and so I

545
00:42:45.719 --> 00:42:49.639
could not only do it the way
I wanted to do it, but I

546
00:42:49.920 --> 00:42:53.760
you know, then found blog posts
that supported my strong assertions about why I

547
00:42:53.800 --> 00:42:57.599
was doing it that way. Right. Yeah, you kind of get in

548
00:42:57.639 --> 00:43:00.880
yourn echo chamber of your own head. I don't know. I think,

549
00:43:00.159 --> 00:43:04.639
especially early in your career, it's
so helpful to get on a team and

550
00:43:04.760 --> 00:43:09.639
have that code review, have that
regular kind of cadence of having teammates looking

551
00:43:09.679 --> 00:43:13.679
at your code. Right, because
I did something about that helped you become

552
00:43:13.679 --> 00:43:17.199
a little more pliable, I think, and accept other approaches. Yeah,

553
00:43:17.480 --> 00:43:21.000
in lieu of that, like back
in the mud Tools days, I was

554
00:43:21.079 --> 00:43:23.599
definitely in an echo chamber and there
was like it was, you know,

555
00:43:24.000 --> 00:43:27.320
we were all young, we were
hanging out on an irc. It was

556
00:43:27.480 --> 00:43:30.880
very you know, tribal. We
didn't realize that at the time, but

557
00:43:30.519 --> 00:43:36.480
you know, Mud Tools versus jQuery
tribalism. It was hilarious. But occasionally

558
00:43:36.519 --> 00:43:39.440
there'd just be one person that would
just kind of pierce the bubble that was

559
00:43:39.519 --> 00:43:44.199
just kind of immune to the whole
tribalism thing, and that would kind of

560
00:43:44.239 --> 00:43:47.079
force us all to check ourselves.
Like John David Dalton, the guy who

561
00:43:47.119 --> 00:43:52.000
created low Dash. He really helped
me to see how big of an echo

562
00:43:52.079 --> 00:43:55.280
chamber I was in, because there
was just like this this like holy war

563
00:43:55.480 --> 00:44:00.320
that they sprung up from nothing.
I don't even remember what the issue was

564
00:44:00.599 --> 00:44:04.400
now. But I went and talked
to him of like, let me just

565
00:44:04.440 --> 00:44:07.400
talk to him and see what the
deal is. It turns out he had

566
00:44:07.440 --> 00:44:10.079
a legitimate point, like he'd made
a comment on GitHub and it had been

567
00:44:10.119 --> 00:44:15.880
deleted and like those all this hilarious
teenage drama. I just talked to him

568
00:44:15.880 --> 00:44:17.320
and he's just a cool guy.
He was just like making a point,

569
00:44:17.519 --> 00:44:23.280
like, no emotional identity related drama. He's just like purely technical. You

570
00:44:23.320 --> 00:44:25.920
know, we did the thing and
now we're pals, like we talk regularly,

571
00:44:27.440 --> 00:44:30.119
you know, in lieu of working
on a team, like some of

572
00:44:30.199 --> 00:44:34.239
us don't have the luxury of working
at big places with multiple teams. Like

573
00:44:34.280 --> 00:44:39.519
the best advice that I have is
just force yourself to confront and talk to

574
00:44:39.599 --> 00:44:45.000
the people who have opposite opinions as
you and see why they care about those

575
00:44:45.039 --> 00:44:49.159
things. And maybe you won't change
your mind, but at least you'll you'll

576
00:44:49.320 --> 00:44:53.559
get to know those people on a
human basis. Try to understand why things

577
00:44:53.599 --> 00:44:58.960
are the way they are before trying
to make a revolution. Right, Yes,

578
00:44:59.320 --> 00:45:01.519
I think Jordan Yeah talks about that
a lot. I like the I

579
00:45:01.599 --> 00:45:06.840
like the you start your your react
fiel and talk with that write Monica with

580
00:45:06.960 --> 00:45:09.400
like why do we rewrite software?
Mm hmmm. A lot of it is

581
00:45:09.440 --> 00:45:14.880
that it's like I just joined and
Okay, first of all, let's change

582
00:45:14.920 --> 00:45:20.400
the framework. MM. Yeah,
definitely. I I totally had this experience

583
00:45:20.480 --> 00:45:24.320
where it wasn't me at the time
because actually it was my Well I did

584
00:45:24.320 --> 00:45:28.760
that too. So I have two
experiences. The first one, I joined

585
00:45:28.760 --> 00:45:31.599
the company and there were no tests, and I was like, but I

586
00:45:31.679 --> 00:45:37.239
thought that you had to write tests. Like. I was very confused because

587
00:45:37.280 --> 00:45:40.880
I came from academia and I had
a lot of expectations about how it would

588
00:45:40.920 --> 00:45:46.840
work to be at a startup and
there were no tests and people were not

589
00:45:47.239 --> 00:45:54.320
really open to tests, you know, and I was just like, like,

590
00:45:54.800 --> 00:46:00.199
is this reality? I'm confused.
Like So I had that situation as

591
00:46:00.199 --> 00:46:02.679
well, where I was just like, okay, well then I'm going to

592
00:46:02.679 --> 00:46:06.480
be the one that writes the tests, and I'm going to be test you

593
00:46:06.519 --> 00:46:08.760
know, the test lady. And
if someone submits something without tests, you

594
00:46:08.800 --> 00:46:13.119
know. And then it became like
a like a tiny war of like merging

595
00:46:13.119 --> 00:46:15.000
things without pull request and I was
like, no, you can't do it

596
00:46:15.039 --> 00:46:19.039
without poor request. But no one
had to listen to me, I was

597
00:46:19.199 --> 00:46:22.119
just like this random girl who just
joined and they're probably just like, who

598
00:46:22.199 --> 00:46:25.480
do you think you are? And
of course like arguing people with people who

599
00:46:25.519 --> 00:46:30.199
are at least ten years older than
me. I also didn't help. I

600
00:46:30.239 --> 00:46:36.599
love it like tests, you know, because all my experience writing production code.

601
00:46:37.159 --> 00:46:40.320
But I had also the other situation
where we had like people joining the

602
00:46:40.400 --> 00:46:45.199
company from an ACQUI hier and the
first thing was like, why aren't you

603
00:46:45.360 --> 00:46:52.039
using material UI? Why would you
ever have your own design system? And

604
00:46:52.760 --> 00:46:57.440
the amount of discussions was just incredible. But it was like, you know

605
00:46:57.559 --> 00:47:00.280
what, like if you're not open
to the fact that we just we just

606
00:47:00.400 --> 00:47:04.679
don't use materially, why, Like
I'm done explaining it. The fact is

607
00:47:04.679 --> 00:47:07.679
we just don't use it, and
you have to either live with that or

608
00:47:07.719 --> 00:47:13.480
you have to not and then do
something different, you know. And sometimes

609
00:47:13.480 --> 00:47:17.239
that's just the reality because it's not
feasible to change the things that are already

610
00:47:17.280 --> 00:47:21.000
there, even if someone brings in
it a good idea, you know what,

611
00:47:21.159 --> 00:47:23.599
maybe it's not a priority, or
you have to be open minded to

612
00:47:23.679 --> 00:47:29.079
realize, you know, look that
one experience that you had is not valid.

613
00:47:29.480 --> 00:47:31.960
And now I'm building a project that's
using material you I and I'm like,

614
00:47:32.079 --> 00:47:36.360
Okay, it's useful, but I
wouldn't have even wanted to use it

615
00:47:36.400 --> 00:47:39.119
in that situation. So yeah,
I think it's a little bit about getting

616
00:47:39.119 --> 00:47:45.679
it looking at things from a higher
level and picking your battles what really matters

617
00:47:45.679 --> 00:47:47.320
in the long term and what doesn't. Ah, Yes, can I get

618
00:47:47.320 --> 00:47:52.679
that on a shirt? Yeah,
choosing choosing the battles is in and it's

619
00:47:52.679 --> 00:47:57.800
the same thing. It's interesting because
the first situation that you talked about is

620
00:47:57.840 --> 00:48:02.199
like there's no tests or there's no
reviews. Right, it's obviously a good

621
00:48:02.280 --> 00:48:07.039
thing, like we all know we
need to do some things that are good.

622
00:48:07.119 --> 00:48:12.159
But the attitude that sometimes we have
towards solving the problem does not solve

623
00:48:12.199 --> 00:48:15.840
the problem. Sometimes makes a problem
even worse. So this is probably like

624
00:48:15.880 --> 00:48:22.480
a really good sign of senior Like
when I see a dev that is like

625
00:48:22.639 --> 00:48:27.480
choosing the bettle, so like I'm
going to fix this one particular thing.

626
00:48:28.159 --> 00:48:31.559
And the way they approach it is
that like everybody is on board. You

627
00:48:31.639 --> 00:48:37.000
know, you start you don't just
start dropping tests everywhere. If you know

628
00:48:37.119 --> 00:48:39.199
one test, you start like I
don't know, talking about it. First

629
00:48:39.239 --> 00:48:45.360
of all, you know and then
like show one example and make and show

630
00:48:45.440 --> 00:48:51.239
how how this would So this is
this is interesting. Sometimes you may even

631
00:48:51.280 --> 00:48:57.039
have the correct idea on your mind, but your approach to solving it is

632
00:48:57.079 --> 00:49:01.400
making it worse. M One thing
that's been interesting for me is doing this

633
00:49:01.519 --> 00:49:07.519
but from the perspective of a manager, because on the one hand, you

634
00:49:07.519 --> 00:49:09.320
don't want to tell people what to
do right, No one likes to be

635
00:49:09.360 --> 00:49:12.719
told what to do. If my
boss were to just tell me what to

636
00:49:12.760 --> 00:49:15.960
do all day, I would be
irritated. On the other hand, do

637
00:49:15.039 --> 00:49:20.840
you want like that the right decisions
are being made and when something is really

638
00:49:20.880 --> 00:49:23.639
important, you know, you might
have to put your foot down, But

639
00:49:23.880 --> 00:49:28.239
at the end of the day,
people are going to want to implement things

640
00:49:28.320 --> 00:49:31.679
when it's their own idea, and
usually the ability of a lot of people

641
00:49:31.719 --> 00:49:36.440
to come together, put their brains
together about something is going to yield a

642
00:49:36.519 --> 00:49:40.400
way better result than just leaving it
to the senior engineer to solve all of

643
00:49:40.440 --> 00:49:45.400
the problems. I think one thing
that I have learned from leaders who are

644
00:49:45.440 --> 00:49:49.280
like way more senior than me,
Like we are not even on the same

645
00:49:49.320 --> 00:49:52.320
scale, you know, is this
mindset of coming in with loads of questions

646
00:49:52.679 --> 00:50:00.000
and finding out how you can kind
of coach people to asking those inconvenient quests

647
00:50:00.039 --> 00:50:02.000
questions, you know, like,
for example, if you wanted to do

648
00:50:02.039 --> 00:50:07.360
a migration two typescript, how can
you ask people what's going to go wrong?

649
00:50:07.800 --> 00:50:12.679
And really you know, putting them
in that position of thinking about the

650
00:50:12.719 --> 00:50:15.880
impact. Is this going to take
us three months or is it going to

651
00:50:15.920 --> 00:50:19.960
take us twelve months? How much
slower is this going to make our delivery

652
00:50:20.039 --> 00:50:23.800
while everybody learns types for the first
time as JavaScript developers. I think this

653
00:50:23.960 --> 00:50:30.039
is like one of the key things
that I'm still learning how to do on

654
00:50:30.119 --> 00:50:35.559
a team, which is, you
know, basically leading from behind. How

655
00:50:35.599 --> 00:50:39.559
can you actually empower other people to
make those decisions and come to conclusions with

656
00:50:39.599 --> 00:50:44.480
the right questions. Yeah, that's
huge, Like just you know, thinking

657
00:50:44.480 --> 00:50:47.639
of that that again, So like
the super seniors in your experience are coming

658
00:50:47.639 --> 00:50:54.039
in with the questions that force other
people to think. So instead of coming

659
00:50:54.079 --> 00:50:59.159
in with the answer like Okay,
I'm the senior, here here's the answer,

660
00:50:59.360 --> 00:51:02.639
they're coming in with, Okay,
here are the questions you guys,

661
00:51:04.000 --> 00:51:08.599
all of us need to consider before
we make a decision. That's very interesting.

662
00:51:08.679 --> 00:51:12.960
Yeah, Yeah, that's also how
you nurture those other people on your

663
00:51:13.000 --> 00:51:15.639
team. Right, It's not only
like a benefit for the team as a

664
00:51:15.639 --> 00:51:20.119
whole and for the solution that you
land on, but you're then essentially nurturing

665
00:51:20.320 --> 00:51:22.840
these other folks to begin to learn
how to ask those questions themselves. Right.

666
00:51:22.880 --> 00:51:27.320
So it's like you give back in
so many ways. And that's so

667
00:51:27.440 --> 00:51:34.360
critical. Like as we're at this
position in technology and that competition for engineering

668
00:51:34.880 --> 00:51:39.000
people that know how to do this
stuff is so fierce that it's absolutely critical

669
00:51:39.039 --> 00:51:43.960
to know how to take people wherever
they're at and bring them with you,

670
00:51:44.360 --> 00:51:46.880
upgrade their skills, and then leverage
them instead of just like you know,

671
00:51:47.000 --> 00:51:51.840
just throwing a pile of you know, off the shelf people at a problem.

672
00:51:52.199 --> 00:51:57.599
Yes, definitely. Yeah, it
is interesting because I've been working on

673
00:51:58.000 --> 00:52:05.679
this project and it's me and to
very bright but junior devs. I love

674
00:52:05.760 --> 00:52:09.400
them. Shout out to Vienna and
Allen. The way we are we're we

675
00:52:09.400 --> 00:52:15.960
were making the choices, the architectural
coding, everything charges in this in this

676
00:52:15.119 --> 00:52:22.360
project was that we would go to
the whiteboard and put what the questions we're

677
00:52:22.360 --> 00:52:28.639
trying to answer here, come up
together with two or three solutions. Most

678
00:52:28.639 --> 00:52:31.559
of the time the solutions came from
my mind because of experience, but of

679
00:52:31.679 --> 00:52:37.800
course we would and then pros and
cons of each trade offs, and no,

680
00:52:37.000 --> 00:52:42.039
there's no right answer, and then
it's just like which trade offs are

681
00:52:42.119 --> 00:52:47.360
we choosing here? And the interesting
thing is that even though I probably had

682
00:52:47.400 --> 00:52:52.599
an answer for most questions in my
mind for all the ten times, at

683
00:52:52.679 --> 00:53:00.760
least half of the times these situations
brew new solutions from the interactions. And

684
00:53:00.840 --> 00:53:04.360
it's funny because I think that the
three of us, we grew a lot

685
00:53:04.480 --> 00:53:07.039
in this in this last four months, in this project, both by this

686
00:53:07.199 --> 00:53:13.519
exercise and the thing like I cannot
I cannot say I'm more senior just by

687
00:53:13.599 --> 00:53:17.280
saying just by saying, Okay,
let's do this. This is not the

688
00:53:17.320 --> 00:53:22.719
way it works. It's like I'm
only more senior because I've seen more things

689
00:53:22.719 --> 00:53:27.400
and I can map more solutions to
things. But in the end, like

690
00:53:27.440 --> 00:53:31.320
we're all like choosing the solutions together, we're all thinking through the solutions together.

691
00:53:31.400 --> 00:53:36.239
And if a solution that I come
up with is not better than a

692
00:53:36.239 --> 00:53:37.840
solution that they come up with,
that should not be the solution that we

693
00:53:37.840 --> 00:53:43.239
should use. So this is interesting
it's an interesting exercise. It's it's also

694
00:53:43.400 --> 00:53:47.119
very humbly to put yourself in a
situation where you can be wrong even though

695
00:53:47.159 --> 00:53:52.000
you have the senior near your title
and the other person does not. Like

696
00:53:52.079 --> 00:53:58.079
if this bothers you, it's really
complicated. But if it doesn't, you're

697
00:53:58.119 --> 00:54:01.320
in the sweet spot of like learning. Me and my suit spot of life

698
00:54:01.400 --> 00:54:06.400
is whenever I'm learning a lot and
people around me are learning a lot too,

699
00:54:06.440 --> 00:54:08.239
like we're all growing together. This
is to me, like it's it's

700
00:54:08.760 --> 00:54:13.599
everything. So yeah. The one
thing that I've found kind of that that

701
00:54:13.760 --> 00:54:16.360
ties all these things together, that
really accelerates learning and growth, is to

702
00:54:17.119 --> 00:54:22.639
focus on what makes you uncomfortable,
Like there's a reason why it's uncomfortable.

703
00:54:22.639 --> 00:54:25.719
It's like maybe I, you know, I'm tying my ego to this a

704
00:54:25.719 --> 00:54:30.320
little bit too much, or maybe
i feel like I'm not I'm inadequate here,

705
00:54:30.360 --> 00:54:36.000
and I'm like, maybe I'm doing
some kind of wacky psychology thing.

706
00:54:36.800 --> 00:54:39.760
A question that I use to sort
of gauge myself in those situations is how

707
00:54:39.840 --> 00:54:45.559
much space am I taking up?
That's a really interesting thing to ask yourself

708
00:54:45.599 --> 00:54:47.480
when you're in any of these situations, no matter what whether you're junior or

709
00:54:47.519 --> 00:54:51.400
senior, is like, am I
taking up an appropriate amount of space in

710
00:54:51.400 --> 00:54:54.559
this conversation, in this code,
in whatever it needs to be right?

711
00:54:55.000 --> 00:54:59.159
I found that really useful. Yeah, I need to check myself, like

712
00:54:59.199 --> 00:55:02.679
how much have I been talking?
And boy? Yeah, that's something that

713
00:55:02.719 --> 00:55:08.400
can be really really challenging when you
are in like formally a position of authority

714
00:55:08.800 --> 00:55:13.320
and you have to be like so
conscious about, for example, you know,

715
00:55:13.440 --> 00:55:17.440
letting other people go first and asking
people who haven't volunteered their opinion yet

716
00:55:17.480 --> 00:55:22.400
to share and making it, you
know, extra safe environment for them to

717
00:55:22.440 --> 00:55:27.440
say what they think. Yeah,
it's not even enough just to like be

718
00:55:27.599 --> 00:55:32.079
quiet, but also to like draw
other people in and you know that raises

719
00:55:32.119 --> 00:55:37.079
their confidence, just like you guys
were talking about nice. All right,

720
00:55:37.280 --> 00:55:42.320
so I think we could go to
picks. Now, what do you all

721
00:55:42.320 --> 00:55:46.639
say? Yeah, let's do it. So, Thomas, do you want

722
00:55:46.679 --> 00:55:51.039
to start? Yeah? So,
going off of what Monica was talking about

723
00:55:51.119 --> 00:55:54.760
just like drawing people out. This
book that I've been reading lately is Get

724
00:55:54.800 --> 00:56:00.840
the Truth, a former CIA officer
teaches how to persuade anyone to tell them

725
00:56:00.199 --> 00:56:05.760
the truth. It's such a such
an interesting thing to think about how can

726
00:56:05.840 --> 00:56:10.639
you get people to tell you the
truth when they are incentivized against it,

727
00:56:12.159 --> 00:56:16.280
and always getting to the truth whatever
it is is usually for the best,

728
00:56:16.440 --> 00:56:22.760
and getting past whatever issues are blocking
us from dealing with confronting the truth and

729
00:56:22.800 --> 00:56:25.519
moving past it. It's such a
fascinating thing. It goes in with like

730
00:56:25.559 --> 00:56:30.000
all the psychology stuff that I've been
obsessed with lately and applying it to the

731
00:56:30.000 --> 00:56:37.639
real world with fun stories and such
nice good one Leslie. So mine's totally

732
00:56:37.679 --> 00:56:42.840
off topic, but I was on
a vacation this last week in Mexico City,

733
00:56:43.199 --> 00:56:46.119
and I'm going to pick a specific
area of Mexico City if you ever

734
00:56:46.159 --> 00:56:51.880
get a chance to go. It's
called Zochi Milco. Essentially. You know,

735
00:56:51.920 --> 00:56:54.079
Mexico City was like built on top
of ruins and it used to be

736
00:56:54.480 --> 00:57:00.599
water, so there's still kind of
a canal system in Mexico City certain areas

737
00:57:00.599 --> 00:57:04.280
of the city, and Zochi Milko
is this zone where you basically take like

738
00:57:04.360 --> 00:57:13.039
Mexican gondolas out on canals and there
are other boats around you with full kitchens

739
00:57:13.159 --> 00:57:15.559
essentially, so a boat will come
up next to yours. You can tie

740
00:57:15.599 --> 00:57:20.519
the boats together and they'll like cook
you mole and hand it to you while

741
00:57:20.559 --> 00:57:23.079
you're literally on the boat, and
mariachi bands will come up and play for

742
00:57:23.159 --> 00:57:30.719
you on their boat. Anyways,
it's incredible, highly recommend And then one

743
00:57:30.840 --> 00:57:35.599
related pick, which is that I
saw on Twitter the CSS Working Group put

744
00:57:35.639 --> 00:57:37.119
out really well. I don't know
if they put it out. I think

745
00:57:37.119 --> 00:57:40.320
it's something they've been working on for
a while, but it's essentially an incomplete

746
00:57:40.320 --> 00:57:45.159
list of the mistakes made in the
design of CSS, and it's a bulleted

747
00:57:45.199 --> 00:57:49.920
list. It's a really fascinating look
at some of these conversations we're having about

748
00:57:49.960 --> 00:57:54.039
constraints and once you release something,
you know how hard is it to change

749
00:57:54.199 --> 00:58:00.400
those things? But I think it's
really I'm not sure you'll have to check

750
00:58:00.440 --> 00:58:05.639
out this list. It's pretty long, but anyway, I love the honesty

751
00:58:05.639 --> 00:58:08.360
and transparency behind the decision to kind
of put that out there. That's nice.

752
00:58:08.719 --> 00:58:12.639
It's funny. The picks are getting
very diversified. I think it's the

753
00:58:12.639 --> 00:58:16.760
first time they have a geographical pick. This is really I thought i'd go

754
00:58:16.840 --> 00:58:23.039
bold. All right, so I
have two picks for today that are also

755
00:58:23.280 --> 00:58:30.840
not tech related today. But first
of all, is the love every company

756
00:58:30.599 --> 00:58:37.000
So I have an eight month old
daughter and they have a just love Every

757
00:58:37.000 --> 00:58:42.840
company. They have a subscription thinking
that every two months you get a box

758
00:58:43.280 --> 00:58:50.239
with Montessory toys and other things that
are that are good for that moment in

759
00:58:50.360 --> 00:58:54.360
life of the baby. And it's
the best and cutest toys ever. And

760
00:58:54.559 --> 00:58:58.360
me and my daughter will have a
lot of fun every day in the morning

761
00:58:58.400 --> 00:59:00.960
play with the things that they do. And they have like also of books

762
00:59:00.960 --> 00:59:07.159
with nice ideas on how to make
sure that the kid is developing properly and

763
00:59:07.199 --> 00:59:14.239
giving her challenges and stuff like that. So yeah, and my next pick,

764
00:59:14.760 --> 00:59:20.280
so, whenever we talk about health
and nutrition and everything, there's so

765
00:59:20.400 --> 00:59:24.840
many things that are happening feds here
and there. So if you are so,

766
00:59:24.960 --> 00:59:29.960
I don't claim to know the truth, so it's not this pick is

767
00:59:30.000 --> 00:59:34.880
not about the truth. But if
you want to fest do intermittent fasts and

768
00:59:34.920 --> 00:59:38.400
things like that, there's this app
zero app it's called zero zero, just

769
00:59:38.480 --> 00:59:44.679
zero the name of the app,
and it's really cool and it's helping a

770
00:59:44.719 --> 00:59:47.519
lot. So these are my two
picks. What about you, Monica,

771
00:59:47.599 --> 00:59:52.280
do you have any picks for today? Yes? I was thinking about and

772
00:59:52.360 --> 00:59:57.480
so I'm going to also go traditional
with a book. These days, I'm

773
00:59:57.639 --> 01:00:04.960
you know, learning mostly about developer
related things, but rather building a product,

774
01:00:05.079 --> 01:00:07.679
talking to customers and so on.
So my pick is a book called

775
01:00:07.719 --> 01:00:14.599
The Mom Test. It's by Rob
Fitzpatrick and the subtitle of the book is

776
01:00:14.679 --> 01:00:19.000
how to talk to customers and learn
if your product is a good idea when

777
01:00:19.039 --> 01:00:22.960
everybody is lying to you, and
so basically it talks about, all,

778
01:00:22.079 --> 01:00:25.559
right, what if you were to
do a customer interview with your mom.

779
01:00:25.800 --> 01:00:29.840
Problem is, your mom loves you, so no matter what idea you're going

780
01:00:29.920 --> 01:00:32.360
to tell her, she's going to
say, that's amazing, honey. You

781
01:00:32.400 --> 01:00:39.079
know. But this book is basically
like customer development strategies that you can use

782
01:00:39.159 --> 01:00:45.039
to do a productive customer interview,
even with someone who is as close to

783
01:00:45.079 --> 01:00:50.719
you as your mom. So it's
really funny. I think it's definitely got

784
01:00:50.719 --> 01:00:54.679
the most personality of the customer development
books I've been reading recently. So if

785
01:00:54.719 --> 01:01:00.000
you ever think about, you know, building your own product or just generally

786
01:01:00.239 --> 01:01:04.440
trying to get feedback on something where
you you know, don't want to get

787
01:01:04.519 --> 01:01:07.480
lied to, even unintentionally by people
who love you very much, then yeah,

788
01:01:07.599 --> 01:01:12.400
check out The Mom Test that sounds
awesome. That's so funny. It's

789
01:01:12.440 --> 01:01:15.360
another look. It's two books about
the same subject. If you think about

790
01:01:16.079 --> 01:01:23.360
the mom Pass and the CIA's we
are all people at the end of the

791
01:01:23.440 --> 01:01:29.519
day, right, that's amazing.
All right people, there was a great

792
01:01:29.559 --> 01:01:32.719
episode. So this is it,
see you next week. Bye bye,

793
01:01:34.239 --> 01:01:37.360
thanks so much, Thank you very
much, money, Kait. It was great.

