WEBVTT
1
00:00:10.359 --> 00:00:14.199
In this Devlife edition of the Angular
Plus Show, we talk with agile coach
2
00:00:14.240 --> 00:00:19.320
and author Woody zul All about software
teaming or mob programming. We explore the
3
00:00:19.399 --> 00:00:23.960
unique aspects of this approach, the
benefits, challenges, considerations, and then
4
00:00:24.000 --> 00:00:30.120
Woody addresses common barriers and concerns to
adopting software teaming before sharing practical steps for
5
00:00:30.160 --> 00:00:34.960
how you can incorporate this collaborative approach
into your workflow. Grab your coding crew,
6
00:00:35.320 --> 00:00:39.280
rally around the keyboard, and turn
your development process into a coding flash
7
00:00:39.320 --> 00:00:46.679
mob. This is the devlfe.
Hey folk, sneaking into your regular program
8
00:00:46.719 --> 00:00:50.479
with a super quick but super important
message. Hold on to your keyboard because
9
00:00:50.640 --> 00:00:53.960
NGI Con twenty twenty four is rolling
in and you don't want to miss it.
10
00:00:54.320 --> 00:00:57.719
We've got tickets up for grabs.
This isn't just any conference, my
11
00:00:57.799 --> 00:01:02.759
friends. It's en g Con,
the epicenter of all things Angular. You
12
00:01:02.799 --> 00:01:06.840
imagine diving deep into the wall of
Angula. It's like Christmas came early for
13
00:01:06.879 --> 00:01:11.319
developers. Workshops, talks, and
yes, your favorite Anglo folks from the
14
00:01:11.359 --> 00:01:15.840
Anglo team and the community will be
there March eighteen to twenty first. So
15
00:01:15.879 --> 00:01:19.879
what are you waiting for go over
to nghiphenconf dot org and secure your spot.
16
00:01:21.079 --> 00:01:26.159
See you at Engi coonf twenty twenty
four. Hey Preston, how are
17
00:01:26.200 --> 00:01:29.719
you. Hey, Brooke, I'm
doing pretty well. How about you doing
18
00:01:29.760 --> 00:01:32.280
well? It's good to have you
back. It's been a couple of weeks
19
00:01:32.319 --> 00:01:37.040
you were traveling, So how were
your travels? They were good, it
20
00:01:37.079 --> 00:01:40.560
was It felt really good to get
out of the cold of northern Utah and
21
00:01:40.640 --> 00:01:42.879
to get into the sun for a
week. So it felt really good.
22
00:01:44.359 --> 00:01:49.920
Yeah, on the beach in the
sun always sounds good. I think January
23
00:01:49.959 --> 00:01:53.040
is a good time just to go
on trips anyway, because the holidays are
24
00:01:53.079 --> 00:01:57.000
over and there's nothing really exciting going
on, so it feels like you need
25
00:01:57.040 --> 00:02:04.560
something in January. Yeah, it
was a nice recovery from the break of
26
00:02:04.599 --> 00:02:07.520
the holidays. The holidays are great, but you're running all over the place
27
00:02:07.560 --> 00:02:10.960
and you're not really relaxing, at
least we aren't, and so it felt
28
00:02:12.000 --> 00:02:14.800
good to just kind of sit back
and relax for a little bit. So
29
00:02:14.879 --> 00:02:16.560
yeah, it was nice. But
it's great to be back and I'm excited
30
00:02:16.599 --> 00:02:20.599
to be here. Yeah, well
me too. So on that note,
31
00:02:21.919 --> 00:02:27.199
you know that I love podcasting in
large because we always get to meet different
32
00:02:27.240 --> 00:02:32.960
people and sometimes they're professional heroes of
mine. And so I'm excited today because
33
00:02:34.719 --> 00:02:39.759
I've been hearing about this thing called
mob programming, and you know me,
34
00:02:40.599 --> 00:02:44.319
if there's something to be learned,
I'm going to turn to a book and
35
00:02:44.319 --> 00:02:46.439
I'm going to start reading. And
so I of course wanted to go to
36
00:02:46.599 --> 00:02:51.680
the best source possible to learn more
about this thing called mob programming, and
37
00:02:52.759 --> 00:02:58.039
came across a book that's called software
Teaming. Now, and so we're really
38
00:02:58.080 --> 00:03:01.680
excited because today we have the author
of this book on the show with us.
39
00:03:01.759 --> 00:03:06.199
So welcome to the show, Woody. It's nice to have you here.
40
00:03:06.599 --> 00:03:09.560
Thank you, bro. Now,
one thing I really like about your
41
00:03:09.919 --> 00:03:13.919
social media, Woody. I always
do a little bit of research on our
42
00:03:13.960 --> 00:03:15.919
guests, but one thing I liked
about yours is that you said that you're
43
00:03:15.919 --> 00:03:21.759
an extreme programmer, which I think
is awesome. Well, now I didn't
44
00:03:21.800 --> 00:03:25.879
originate that term. I hope you
realize that's that there's a whole movement which
45
00:03:27.199 --> 00:03:32.319
mob programming or software teaming grew out
of, which was coined by Kent Beck
46
00:03:32.400 --> 00:03:38.560
and maybe others back around nineteen nine
nine or two thousand called extreme programming.
47
00:03:38.840 --> 00:03:40.639
I love it. I think it's
awesome. So but on that note,
48
00:03:40.680 --> 00:03:45.520
it made me curious because I thought, Okay, well, we know he's
49
00:03:46.080 --> 00:03:50.439
a talented developer. You are clearly
a good author as well, But what
50
00:03:50.560 --> 00:03:54.400
else would you consider? Do you
have any hobbies or interests in your life
51
00:03:54.400 --> 00:04:00.479
outside of programming that you would consider
yourself to be an extreme something? Well
52
00:04:00.520 --> 00:04:04.919
that's a cool question. Well not
really. I love hiking, and I've
53
00:04:04.919 --> 00:04:11.719
always gotten myself stuck out on ledges
or you know, stumbling upon bears and
54
00:04:11.759 --> 00:04:15.480
things like that. Every hiker has
those experiences, but a lot of times
55
00:04:15.519 --> 00:04:21.600
it feels extreme. I have a
background a backyard garden where I like to
56
00:04:21.600 --> 00:04:26.959
do gardening, vegetable gardening, and
it's very steep, downhill, so I
57
00:04:27.000 --> 00:04:31.600
say I do downhill extreme down gardening. But you know, other than that,
58
00:04:32.399 --> 00:04:38.199
I'm an average programer from the point
of view. I've worked on average
59
00:04:38.279 --> 00:04:44.480
projects within average companies that are being
used by average people. Nothing exciting there,
60
00:04:44.879 --> 00:04:48.439
But it's really a challenge because the
work is you're always working with legacy
61
00:04:48.439 --> 00:04:53.240
codes, stuff that you know,
you don't necessarily understand it was written by
62
00:04:53.240 --> 00:04:57.199
someone else. And I think of
that as being that's a super challenge.
63
00:04:57.199 --> 00:05:01.319
I really love is working with software
it's difficult to work on, trying to
64
00:05:01.319 --> 00:05:04.600
make it easier to work on,
and things like that. Nice, I
65
00:05:04.639 --> 00:05:08.319
love it. Preston, what about
you, Do you have anything you'd say
66
00:05:08.319 --> 00:05:13.319
you're extreme at. Well, I
wouldn't call it extreme, but I'm pretty
67
00:05:13.360 --> 00:05:18.879
sure my wife probably would say my
desire to watch basketball might go into the
68
00:05:18.920 --> 00:05:26.360
extreme category. So yeah, I
love watching the Jazz primarily, but I'll
69
00:05:26.399 --> 00:05:31.199
watch lots of other NBA games.
In March, when the NCAA Tournament comes
70
00:05:31.199 --> 00:05:35.279
on, I'll be watching games.
I'll turn on a TV here in the
71
00:05:35.319 --> 00:05:40.519
office with two or three or four
games going on at a time. And
72
00:05:40.600 --> 00:05:46.560
so I think that is probably the
thing that is most extreme that I'm into,
73
00:05:46.759 --> 00:05:51.839
is how much sports in general,
but especially basketball that I watch.
74
00:05:53.920 --> 00:06:00.319
Nice cool. Well, So I'm
kind of one of those people that things
75
00:06:00.360 --> 00:06:03.000
fluctuate for me. So one one
month, I'll be really into something,
76
00:06:03.000 --> 00:06:08.240
in the next month I'm into another
thing. But I think consistently one thing,
77
00:06:08.279 --> 00:06:11.279
and this has kind of been something
part of my life since I was
78
00:06:11.319 --> 00:06:14.360
a child, So it's just one
of those things that's been there for a
79
00:06:14.399 --> 00:06:19.360
long time, but I still love
building Legos and especially those Star Wars sets.
80
00:06:19.399 --> 00:06:26.399
I've had to kind of restrict myself
on which sets in series I let
81
00:06:26.399 --> 00:06:30.399
myself get into because you could you
could go bankrupt with Legos. But it's
82
00:06:30.439 --> 00:06:32.800
just one of those things I think. You know, some people really like
83
00:06:32.879 --> 00:06:39.920
doing puzzles, but for me,
it's just that same kind of meditative building
84
00:06:40.040 --> 00:06:45.199
process. It's very architectural but mechanical. I don't know. So that's just
85
00:06:45.759 --> 00:06:49.240
I really love that and collecting the
little minifigs. So I would say I
86
00:06:49.399 --> 00:06:55.560
probably spend too much money on Legos, but well, you need to do
87
00:06:55.720 --> 00:06:59.160
I told my wife and because she
loves doing Legos as well. But if
88
00:06:59.199 --> 00:07:02.000
you work for the Lego store for
like three months, you get like fifty
89
00:07:02.000 --> 00:07:05.639
percent off, So just in the
evenings, you get like a part time
90
00:07:05.759 --> 00:07:10.480
job. You go work at the
Lego store by all the Lego sets that
91
00:07:10.519 --> 00:07:13.959
you want, and then you can
save a little bit of money. There
92
00:07:14.000 --> 00:07:16.079
we go, There we go.
I love it. I'll have to with
93
00:07:16.160 --> 00:07:23.600
all my spare time. Yeah.
Oh cool. Okay, so now now
94
00:07:23.639 --> 00:07:28.519
we know what we're all extremists sat
But I would love to go talk more
95
00:07:28.560 --> 00:07:41.879
about mob programming. So let's go
get into this all right. So,
96
00:07:42.319 --> 00:07:45.920
like Brooks said, we have Woody
Zuel here on the podcast with us today.
97
00:07:46.000 --> 00:07:49.680
Woody has worked as a senior software
developer, instructor, a consultant,
98
00:07:50.000 --> 00:07:55.120
an agile coach, trainer, and
presenter. He's also the author of the
99
00:07:55.120 --> 00:07:59.800
book called Software Teaming Mob Programming,
a whole Team Approach, which is exactly
100
00:07:59.839 --> 00:08:03.639
what we're looking forward to talking more
about on the podcast today. So once
101
00:08:03.680 --> 00:08:09.480
again, thanks Woodie for joining us. We really appreciate your time. But
102
00:08:09.040 --> 00:08:16.319
just kind of to get started in
the book, you kind of tell us
103
00:08:16.399 --> 00:08:20.319
a little bit more about what team
programming or mob programming is. But for
104
00:08:20.399 --> 00:08:24.439
those who maybe have not heard of
that, could you kind of describe to
105
00:08:24.560 --> 00:08:30.079
us what that is and maybe what
kind of got you interested in it.
106
00:08:31.040 --> 00:08:33.399
Well, that's just right up my
alley. If we're going to talk about
107
00:08:33.480 --> 00:08:41.559
extreme stuff way back in nineteen ninety
nine, my second professional gig, if
108
00:08:41.600 --> 00:08:46.480
you want to call it that,
as a software developer, I've been programming
109
00:08:46.480 --> 00:08:50.720
since nineteen eighty two or three,
but I didn't do it as my career.
110
00:08:50.759 --> 00:08:52.799
I did it to write software I
needed to use in a business that
111
00:08:52.840 --> 00:08:56.879
I had, But I decided to
change my career in the late nineties,
112
00:08:56.879 --> 00:09:01.960
and in nineteen ninety nine I got
a contracts the first one that got done,
113
00:09:01.960 --> 00:09:03.399
I went to the second one and
they put me on a team.
114
00:09:03.840 --> 00:09:09.080
There were about two hundred developers that
were all just hired, and they put
115
00:09:09.080 --> 00:09:11.200
me on a team and we sat
in a room together, but we never
116
00:09:11.240 --> 00:09:16.559
did anything like teamwork. We were
all working on our own things. We
117
00:09:16.639 --> 00:09:20.879
might have meetings or other discussion time, but mostly we were working on individual
118
00:09:20.960 --> 00:09:26.679
stuff. So for those of you
who listen to this podcast, just picture
119
00:09:26.720 --> 00:09:31.639
a software developer as some solo person
sitting at a computer writing some software you
120
00:09:31.679 --> 00:09:35.960
know that they've been assigned to do
or decided to do. That's what we
121
00:09:35.039 --> 00:09:39.360
normally will see. But it really
kind of piqued my interest to that I'm
122
00:09:39.360 --> 00:09:43.840
on a team, but we don't
do anything like a team. It would
123
00:09:43.840 --> 00:09:48.080
be like I'm put on a soccer
team, but we never play a game.
124
00:09:48.559 --> 00:09:52.399
We when we do play, we
go on separate fields and play solo
125
00:09:52.440 --> 00:09:54.080
against someone else or something. You
know, It's like, no, when
126
00:09:54.080 --> 00:09:58.320
you're on a soccer team, you
all get together at the same field,
127
00:09:58.399 --> 00:10:01.200
you play a game all together,
you interact with each other, You pay
128
00:10:01.240 --> 00:10:05.000
attention to each other, You're trying
to support each other, all the things
129
00:10:05.039 --> 00:10:07.360
that we think of as a team. Now, when I was a kid,
130
00:10:07.720 --> 00:10:11.919
I played music, and when I
was really young, kind of rock
131
00:10:11.960 --> 00:10:16.080
and roll in my early teens,
but I got interested in folk music and
132
00:10:16.200 --> 00:10:20.879
became a banjo picker. And this
a long time ago, and so that's
133
00:10:20.919 --> 00:10:24.120
always done as a team. You
know, you can have five or six
134
00:10:24.200 --> 00:10:28.080
members in your band and you do
things as a team. So this got
135
00:10:28.080 --> 00:10:31.919
me thinking. But now, over
time, as I observed how software development
136
00:10:33.039 --> 00:10:39.000
and most work in modern companies goes, we collaborate with others in every single
137
00:10:39.039 --> 00:10:43.120
thing we do. But how good
is our collaboration is my question, and
138
00:10:43.159 --> 00:10:50.039
it's usually not very good. We
collaborate through meetings, written documents, emails,
139
00:10:50.120 --> 00:10:56.480
phone calls, messaging. All these
things are I would say, maybe
140
00:10:56.879 --> 00:11:03.240
replacements or I don't know what's the
right proxies for actually collaborating where we would
141
00:11:03.279 --> 00:11:07.440
sit together and work on something together. So if you picture yourself, you're
142
00:11:07.480 --> 00:11:09.200
gonna move. You called up your
friends and you say, hey, I
143
00:11:09.240 --> 00:11:13.159
gotta move, and they all come
over. And now you've got a couch
144
00:11:13.200 --> 00:11:16.399
you're gonna use. I couldn't move. You don't cut the couch up into
145
00:11:16.440 --> 00:11:22.519
small bits and move each bit and
reconstruct it somewhere else. You just three
146
00:11:22.600 --> 00:11:24.519
of you pick up the couch and
walk it out. You might need to
147
00:11:24.559 --> 00:11:28.480
collaborate, you know a lot in
how do we get it through the door?
148
00:11:28.200 --> 00:11:31.799
Same with the refrigerator. You might
empty it out, of course and
149
00:11:31.840 --> 00:11:37.120
move the boxes individually, but the
refrigerator you might need help moving. So
150
00:11:37.279 --> 00:11:41.559
this is the idea, why do
we bring a bunch of people together and
151
00:11:41.600 --> 00:11:45.519
then have them sit separately and work
individually on things. So the idea of
152
00:11:45.600 --> 00:11:48.759
mod programming is we would bring all
of the people our software teaming together,
153
00:11:50.440 --> 00:11:54.840
five people, six people are more
even sitting at one computer, all looking
154
00:11:54.879 --> 00:11:58.360
at the same screens, talking about
what they're doing, and one person putting
155
00:11:58.360 --> 00:12:03.080
it into the computer. There's a
very fundamental concept here that it comes from
156
00:12:03.240 --> 00:12:09.960
a pair programming idea that for a
concept or it idea to get from somebody's
157
00:12:09.960 --> 00:12:13.039
head into the computer, it must
go through someone else's hands. Now,
158
00:12:13.039 --> 00:12:18.000
that was a saying that I got
from llewell and Falco, who would be
159
00:12:18.039 --> 00:12:20.960
a great interview for your podcast.
If you've never talked with him, he's
160
00:12:22.120 --> 00:12:26.240
just absolutely brilliant. But that's saying
I got from him back I think in
161
00:12:26.240 --> 00:12:30.840
two thousand and seven or eight,
and I start using it for my pair
162
00:12:30.919 --> 00:12:35.120
programming, and it worked so well. We brought it into when we start
163
00:12:35.120 --> 00:12:37.399
working as a team. We brought
it into that, so that meets a
164
00:12:37.440 --> 00:12:43.360
person of the keyboard is not the
one thinking. They're just transferring what the
165
00:12:43.399 --> 00:12:48.240
rest of the group is thinking into
the computer. They're just acting as a
166
00:12:48.279 --> 00:12:52.240
con do it, or like a
human version of the keyboard. You can
167
00:12:52.279 --> 00:12:54.080
say to that human version of the
keyboard, hey, we're going to need
168
00:12:54.080 --> 00:12:58.080
to drop down with all the regions
in it. So if they know how
169
00:12:58.080 --> 00:13:01.159
to get that into the code,
they just start typing it in. If
170
00:13:01.200 --> 00:13:05.360
it's you know, like angular or
whatever or react or something, the doyn't
171
00:13:05.399 --> 00:13:07.960
know how to do that, But
where's the region that it come from.
172
00:13:07.159 --> 00:13:09.840
So somebody on the team will say, oh, we've got a service we
173
00:13:09.879 --> 00:13:13.159
can call for that, or that's
going to come out of the database.
174
00:13:13.559 --> 00:13:16.639
So if you just again picture five
or six people instead of one to get
175
00:13:16.679 --> 00:13:20.840
the computer all focused on the same
thing at the same time. Now,
176
00:13:20.840 --> 00:13:26.039
there's nothing easy about this. If
you practice it and get good at it.
177
00:13:26.039 --> 00:13:30.480
It's not hard, but it's not
easy at first, but that's the
178
00:13:30.519 --> 00:13:35.759
idea. Hopefully that was clear enough. Yeah, I was just sitting here
179
00:13:35.799 --> 00:13:41.159
thinking about, like, your comparisons
are like perfect, because I especially like
180
00:13:41.279 --> 00:13:46.120
the moving the couch, Like it's
really true. We don't take it apart
181
00:13:46.559 --> 00:13:48.399
and cut it up and move it. We just moved the whole thing.
182
00:13:50.159 --> 00:13:54.559
But probably I'd say ninety nine percent
of the time that I've been working at
183
00:13:54.559 --> 00:13:58.720
my current company, we've essentially cut
the couch up into different pieces and we've
184
00:13:58.720 --> 00:14:05.000
each it. And there have been
times where we where for certain parts of
185
00:14:05.000 --> 00:14:11.159
a project, I have sat down
with another developer and we're doing a form
186
00:14:11.200 --> 00:14:15.679
of that. But even then it's
it's still not the exact same And so
187
00:14:15.759 --> 00:14:20.919
I'm I'm interested. I'm it's just
very interesting to talk about this and that
188
00:14:22.080 --> 00:14:24.720
kind of a different way of programming
now in the book, and you kind
189
00:14:24.720 --> 00:14:28.840
of mentioned one of those positions as
you were talking, but you talk about
190
00:14:28.919 --> 00:14:33.120
kind of like different positions. I
specifically talk about like a driver versus a
191
00:14:33.200 --> 00:14:39.120
navigator, stuff like that. Now, why would it not be a good
192
00:14:39.159 --> 00:14:46.159
idea to have a one person kind
of play different roles as you're doing this
193
00:14:46.879 --> 00:14:50.200
team programming, and and why is
it better to have kind of each person
194
00:14:50.279 --> 00:14:54.799
do one thing instead of multiple roles. So this is I think a very
195
00:14:54.919 --> 00:15:03.519
very powerful a concept, and that
is that we are together. We are
196
00:15:03.600 --> 00:15:07.440
separating the cognitive load while we're together, just like with the moving of the
197
00:15:07.480 --> 00:15:13.039
couch, like we are sharing the
lifting of that couch, which alone I
198
00:15:13.080 --> 00:15:16.720
couldn't do, but with one or
two helpers I can do. So we're
199
00:15:16.720 --> 00:15:18.279
getting but how are we going to
do this? The couch is a very
200
00:15:18.320 --> 00:15:22.600
single purpose thing. Think of it
more like a music group and one person.
201
00:15:24.480 --> 00:15:26.159
Let's just say in the bands I
play with, they're taking what we
202
00:15:26.159 --> 00:15:30.720
would call the lead. They're playing
a musical break and they do something that
203
00:15:30.759 --> 00:15:33.480
someone else catches on and they go, hey, that's cool, and they're
204
00:15:33.480 --> 00:15:35.240
going to riff on it in just
a moment when it's their turn. And
205
00:15:35.320 --> 00:15:39.679
so it's the same kind of a
thing. So the concept of the driver
206
00:15:39.440 --> 00:15:43.559
is that the driver is acting as
part of the computer. We call them
207
00:15:43.600 --> 00:15:46.919
the drivers, some people call them
the typist. Whoever's at the keyboard,
208
00:15:46.960 --> 00:15:50.679
she could be, you know,
a coder or not, it doesn't matter,
209
00:15:52.000 --> 00:15:56.120
but we're guiding that person at the
keyboard to get something into the computer.
210
00:15:56.440 --> 00:15:58.639
So why is it better to do
this? I've just found it's better
211
00:15:58.759 --> 00:16:03.000
in I work. It doesn't mean
it's better in others work. But here's
212
00:16:03.039 --> 00:16:06.399
the thing. When you're working with
the idea in your own head and you're
213
00:16:06.399 --> 00:16:10.720
typing it in, it's not being
expressed very well. It's only being expressed
214
00:16:10.759 --> 00:16:12.600
through the code. If we have
to stop and then turn to everyone else
215
00:16:12.639 --> 00:16:17.559
and explain what we're doing, that's
also breaking our train of thought. What
216
00:16:17.679 --> 00:16:22.919
we found is if the people guiding
what's going in are thinking and the person
217
00:16:22.919 --> 00:16:26.399
at the keyboard is merely putting it
in, then the ideas flow better.
218
00:16:26.600 --> 00:16:30.559
Now it takes practice. This isn't
something you're going to automatically be good at.
219
00:16:30.919 --> 00:16:34.039
And I do get this question quite
a bit and some teams. Matter
220
00:16:34.080 --> 00:16:37.840
of fact, I just was.
I was in Japan about earlier this month,
221
00:16:38.279 --> 00:16:41.360
and some guy came up to me
and we talked for quite a while
222
00:16:41.440 --> 00:16:47.279
about their team's way of working,
and often the person at the keyboard is
223
00:16:47.320 --> 00:16:52.320
also doing the thinking. All I
ask is this experiment with both ways.
224
00:16:52.759 --> 00:16:56.240
Find what works best for you.
What worked for us, And this came
225
00:16:56.279 --> 00:17:00.120
from a technique that's used in coding
dojos to be I don't know if you're
226
00:17:00.159 --> 00:17:03.960
familiar with the coding dojo, but
it's where it's a social activity of coding
227
00:17:04.000 --> 00:17:07.759
together, and so I had learned
this before we ever started mob programming.
228
00:17:07.880 --> 00:17:12.480
MOB programming grew out of one style
of coding dojo. In this style of
229
00:17:12.480 --> 00:17:18.160
coding dojo, an individual is sitting
at the keyboard and someone else is guiding
230
00:17:18.200 --> 00:17:22.039
them, and this seemed to work
extremely well. As we would use a
231
00:17:22.039 --> 00:17:26.279
timer. As a timer would go
off every four or five minutes, the
232
00:17:26.319 --> 00:17:30.519
person navigating becomes the driver. They
sit down at the keyboard and somebody else
233
00:17:30.559 --> 00:17:33.599
will guide them. Well, that's
just a social activity, but it turned
234
00:17:33.640 --> 00:17:38.079
into the way we worked. We
just changed that guideline slightly. Whosever is
235
00:17:38.079 --> 00:17:42.160
that the keyboard can be there as
long as they want to or until someone
236
00:17:42.200 --> 00:17:45.319
else says, well, I'd like
to type for a while. But it
237
00:17:45.359 --> 00:17:51.200
allows the rest of the team to
stay in the what I would consider problem
238
00:17:51.240 --> 00:17:56.960
and solution space, whereas the person
the keyboard is just acting as a thinking
239
00:17:59.279 --> 00:18:03.400
human input device where we could say
to them that we'll need to drop down
240
00:18:03.440 --> 00:18:07.400
instead of having to type in the
code for the drop down ourselves. This
241
00:18:07.440 --> 00:18:11.640
separates the cognitive load. We now
have people thinking about the solution the problem.
242
00:18:11.880 --> 00:18:14.839
We have people thinking about, how
does that? How do I type
243
00:18:14.839 --> 00:18:17.400
the code in for that? Now
the whole team can guide on this.
244
00:18:17.440 --> 00:18:19.799
So it's a matter of degree.
If I say we need a drop down
245
00:18:19.920 --> 00:18:23.400
and the person the keyboard really doesn't
know how to get a drop down into
246
00:18:23.839 --> 00:18:27.160
a web page or whatever, then
I might say, well, you got
247
00:18:27.200 --> 00:18:30.119
to do this little chunk of code. There's a template for it, or
248
00:18:30.119 --> 00:18:33.680
in a drag and drop environment,
you drag it in. They'll learn eventually
249
00:18:33.680 --> 00:18:38.640
how to do it. So we
navigate at the right level, and really
250
00:18:38.680 --> 00:18:42.519
we start the level of intent we
need to drop down with the regions in
251
00:18:42.559 --> 00:18:47.000
it. Then we can go to
details. Here's how you specifically do it.
252
00:18:47.119 --> 00:18:49.400
Here's where the regions will come from. So we go into detail only
253
00:18:49.480 --> 00:18:53.039
as needed. But I hope that
wasn't too much of an explanation, no,
254
00:18:53.759 --> 00:18:59.279
because I think one thing I think
is interesting with human nature is that
255
00:18:59.319 --> 00:19:03.559
we when we learn about these kinds
of modalities I guess you could call it
256
00:19:03.359 --> 00:19:07.359
for programming, we almost feel like, well, there's a book and it
257
00:19:07.359 --> 00:19:10.720
gives me these instructions and I need
to follow them to a t and I
258
00:19:10.759 --> 00:19:15.079
have to exactly what they say.
But I like how you're saying, no,
259
00:19:15.279 --> 00:19:18.079
find what works for you. This
is our suggested method. But if
260
00:19:18.079 --> 00:19:22.160
that doesn't quite work, then it's
okay. Every once in a while,
261
00:19:22.240 --> 00:19:27.400
if the driver wants to shout out
something, you know that maybe traditionally the
262
00:19:27.480 --> 00:19:32.799
driver doesn't do a lot of talking, but that's okay. So I think
263
00:19:33.039 --> 00:19:40.160
it's good to hear that you don't
have to follow the rules strictly. There
264
00:19:40.200 --> 00:19:45.039
are no strict rules. I'll be
I have one guideline, you know,
265
00:19:45.079 --> 00:19:47.799
for an idea to go from someone's
head on the computer, it goes through
266
00:19:47.839 --> 00:19:51.799
someone else's hands. But that's merely
a guideline. It doesn't mean it's a
267
00:19:51.880 --> 00:19:55.960
rule. I love it. Well, okay, So this has also brought
268
00:19:56.039 --> 00:20:00.160
up another question for me because you've
mentioned the couch, and you know this
269
00:20:00.240 --> 00:20:03.680
figurative idea of a couch, but
also in your book you do go into
270
00:20:03.640 --> 00:20:07.680
the environment and setting up the workspace. But that's all very physical, and
271
00:20:08.319 --> 00:20:12.359
we all know that since COVID,
especially we've a lot of us have gone
272
00:20:12.440 --> 00:20:18.119
remote. So again, you know, I'm sure that there's no set way
273
00:20:18.160 --> 00:20:21.359
of doing this, and there's a
variety of approaches you could take. But
274
00:20:21.480 --> 00:20:26.160
what have you found to be the
best for remote teams. Well, working
275
00:20:26.200 --> 00:20:32.599
remotely is just a different challenge than
working sitting in the same room, and
276
00:20:33.160 --> 00:20:37.079
I found it to be extremely effective. Starting in March of twenty twenty,
277
00:20:37.119 --> 00:20:41.160
when we all had to switch to
moving to working from home, I had
278
00:20:41.200 --> 00:20:44.720
a bunch of workshops planned for the
next six months, you know, and
279
00:20:44.799 --> 00:20:47.480
I had to cancel them all.
But I started getting a lot of calls
280
00:20:47.480 --> 00:20:52.400
from people who were for the first
time going to start. You know,
281
00:20:52.400 --> 00:20:56.079
they're working remotely for the first time, and they're realizing it's not being very
282
00:20:56.079 --> 00:20:59.079
effective for them. How are we
going to do it? Well? This
283
00:20:59.160 --> 00:21:03.920
way of working, everybody's kind of
in the same remote space. They're in
284
00:21:03.960 --> 00:21:08.680
the same virtual space all day long. Allows us to stay mostly connected,
285
00:21:08.799 --> 00:21:14.599
similar to how if we were sitting
in the same room at work. So
286
00:21:14.599 --> 00:21:17.599
if we were all sitting in the
same room, I could look turn over,
287
00:21:17.720 --> 00:21:19.079
you know, ask over my shoulder, Hey, does anybody know how
288
00:21:19.160 --> 00:21:22.440
this thing works? And somebody say, yeah, come help you. When
289
00:21:22.440 --> 00:21:26.880
we're mob programming or software teaming,
we're all sitting together We often don't even
290
00:21:26.960 --> 00:21:32.160
need to ask a question because the
other person's paying enough attention to say,
291
00:21:32.200 --> 00:21:33.519
oh, it looks like we're going
to have a problem with this before I
292
00:21:33.599 --> 00:21:37.559
even form the question. So when
we're remote, we just need to change
293
00:21:37.559 --> 00:21:42.279
the protocols. It's a little different. So if we've never done software teaming
294
00:21:42.359 --> 00:21:45.599
or mob programming at all, and
all of a sudden we're working remotely,
295
00:21:45.880 --> 00:21:51.039
it's actually a pretty good way to
stay connected throughout the day. So my
296
00:21:51.200 --> 00:21:55.119
recommendation, if I give a recommendation
about anything, it's we need to have
297
00:21:55.480 --> 00:21:59.319
it easy for each person who's going
to use the keyboard, who's going to
298
00:21:59.359 --> 00:22:03.480
be inputting stuff, to make that
easy to do to switch who's using the
299
00:22:03.559 --> 00:22:07.599
keyboard. One of the best ways, if you don't mind me mentioning commercial
300
00:22:07.640 --> 00:22:14.839
products, is something like any desk, where there's a server that contains all
301
00:22:14.880 --> 00:22:18.839
the development tools and everybody can log
into. Now, others have used things
302
00:22:18.920 --> 00:22:27.160
like things like Zoom, like we're
doing right now, Chris using Zoom with
303
00:22:27.240 --> 00:22:32.160
any desk. If you're not familiar
with any desk, it's just a straightforward
304
00:22:33.200 --> 00:22:37.200
place. It's similar to having five
people sitting around a computer in a physical
305
00:22:37.279 --> 00:22:41.599
environment. We're now doing it in
a virtual environment. So if it's my
306
00:22:41.720 --> 00:22:44.680
turn to type, I just click
on the little icon that says I have
307
00:22:44.759 --> 00:22:48.319
control of the keyboard and mouse,
and the other person unclicks that and we
308
00:22:48.480 --> 00:22:52.039
just keep working on. Everybody can
see the code as it changes in their
309
00:22:52.039 --> 00:22:57.440
own instances of the client for any
desk. There's other things too, Team
310
00:22:57.640 --> 00:23:02.799
team viewer. I think it's called
there's another product. There's many products that
311
00:23:02.880 --> 00:23:06.200
do that, but other ways to
do it. There are people that use
312
00:23:07.000 --> 00:23:12.039
there's a two called mob sh which
allows you to do quick check ins and
313
00:23:12.119 --> 00:23:15.759
checkouts of code. I think we
put that on the book so that as
314
00:23:15.799 --> 00:23:19.200
we rotate people it's my turn to
type, I would share my screen.
315
00:23:19.519 --> 00:23:25.559
Everybody could look at my at my
development environment, and I would have just
316
00:23:25.680 --> 00:23:29.319
checked out the code this, you
know, out of some branch that I'm
317
00:23:29.359 --> 00:23:33.680
going to check in when my turn
is over. But the technical stuff's easy
318
00:23:33.160 --> 00:23:38.240
that really we need to get good
at allowing each other to speak. Whiteboards
319
00:23:38.279 --> 00:23:45.400
are more difficult when we're working remotely. I don't think that the remote whiteboards
320
00:23:45.400 --> 00:23:51.839
are nearly as human I guess as
working with a physical whiteboard. I love
321
00:23:51.880 --> 00:23:56.680
whiteboards when we're working together. You
could put sticky notes, drawings, diagrams,
322
00:23:56.720 --> 00:24:00.440
you put it moving stuff around.
It's very I think if a whiteboard
323
00:24:00.480 --> 00:24:06.559
as sort of being a shared memory
location where everybody on the team can see
324
00:24:06.599 --> 00:24:08.440
it, see what's going on,
see it as it changes, keeps us
325
00:24:08.480 --> 00:24:12.000
all focused on the same thing.
But yeah, it can be easily done
326
00:24:12.000 --> 00:24:18.480
remotely. I would say there's it's
different, but not drastically different, and
327
00:24:18.519 --> 00:24:22.000
it can be very effective if word
with probably a dozen or two dozen teams
328
00:24:22.039 --> 00:24:29.279
over the last three years working remotely
and it works well. Say one other
329
00:24:29.480 --> 00:24:33.039
tool for everyone out there, if
you use vs code, there is an
330
00:24:33.079 --> 00:24:37.759
extension called live share that's built by
Microsoft that I've used it just in small
331
00:24:37.759 --> 00:24:42.279
groups. I haven't used it with
big teams, but that could potentially be
332
00:24:42.319 --> 00:24:49.279
another tool that it's kind of like
turns your ID into Google Docs and so
333
00:24:49.400 --> 00:24:52.680
everyone can get a link and they
get kind of signed into that instance,
334
00:24:52.720 --> 00:24:56.640
and then they all have their cursors
and they can go through the file system
335
00:24:56.680 --> 00:25:03.519
and stuff. So you know,
chet Brains has a thing they call code
336
00:25:03.519 --> 00:25:07.559
with Me that gives a collective coding
similar I tried both of those and I
337
00:25:07.599 --> 00:25:15.720
did use the vis code share thing, whatever it's called, and maybe it
338
00:25:15.759 --> 00:25:18.759
wasn't as sophisticated as it is now, and it's definitely worth experimenting with these
339
00:25:18.799 --> 00:25:22.680
things. Those are at least three
options, and I think I share all
340
00:25:22.720 --> 00:25:26.000
three of those in the book.
It's going to get better. You know,
341
00:25:26.079 --> 00:25:27.519
whatever it is is pretty good.
Now, all of these things are
342
00:25:27.559 --> 00:25:30.720
going to get better. Figure out
what works for you. That's where.
343
00:25:30.920 --> 00:25:34.960
So at our company, we have
this thing, an app called gathered Town,
344
00:25:36.319 --> 00:25:40.880
and I spouted a little on the
podcast, but it's that virtual space
345
00:25:40.960 --> 00:25:44.640
and you can create little rooms,
and I think it'd be fun to make
346
00:25:44.680 --> 00:25:48.079
it look like a little race car
type thing, so that it actually is
347
00:25:48.160 --> 00:25:52.359
like your driver and navigator. But
yeah, the other town. I've worked
348
00:25:52.440 --> 00:25:55.440
with people who use that. It
works pretty well if you're going to like
349
00:25:56.119 --> 00:26:00.480
often with mob programming, Let's make
this point. Mob program software teaming doesn't
350
00:26:00.519 --> 00:26:07.400
replace solo work or pair of work. It just adds another way for working.
351
00:26:07.519 --> 00:26:10.880
So I've worked with teams that would
gather together, maybe for an hour
352
00:26:10.960 --> 00:26:12.440
or two in the morning, all
working together, and then a couple of
353
00:26:12.440 --> 00:26:15.920
people may say we're going to split
off and work on this thing for a
354
00:26:15.920 --> 00:26:19.160
while. Then they come back when
that's done. And so gather Town gives
355
00:26:19.200 --> 00:26:23.000
you these different rooms. You can
move easily from space to space if you
356
00:26:23.039 --> 00:26:26.759
set it up well for that,
and it can be a good tool.
357
00:26:26.960 --> 00:26:30.599
Yeah, Zoom gives you the same
thing. Most of the teams I've worked
358
00:26:30.599 --> 00:26:37.960
with have either used Zoom or Microsoft
Teams. You know, not to plug
359
00:26:37.079 --> 00:26:41.400
any particular thing. I like Zoom. Zoom seems to work really well.
360
00:26:41.440 --> 00:26:44.440
You have the breakout rooms, and
there are lots of ways to do this.
361
00:26:44.559 --> 00:26:47.359
I like the dynamic idea though,
if you don't mind, let's stick
362
00:26:47.359 --> 00:26:51.799
with that for just a second.
The really the best teams I've worked with
363
00:26:52.319 --> 00:26:57.559
will notice when something would be better
to be done individually or as a smaller
364
00:26:57.599 --> 00:27:00.880
teams maybe have a team of eight
people, you break into a team of
365
00:27:00.920 --> 00:27:06.480
five and a team of three,
and things like that, that we need
366
00:27:06.519 --> 00:27:12.799
to be flexible so we can dynamically
take advantage of everybody during throughout the day.
367
00:27:15.119 --> 00:27:18.759
So in your experience, as you've
started, as you've implemented this for
368
00:27:19.079 --> 00:27:23.119
projects that you've worked on and with
teams and stuff that you've talked about,
369
00:27:23.119 --> 00:27:26.680
you've helped implement it. What are
some of the biggest benefits that you have
370
00:27:26.880 --> 00:27:34.240
seen this type of programming bring to
teams over solo programming or even pair programming.
371
00:27:36.279 --> 00:27:40.799
Well, the first thing we noticed
so the team that we really went
372
00:27:40.920 --> 00:27:44.680
all out on this. We had
been I've been hired to work with a
373
00:27:44.720 --> 00:27:48.680
team that wasn't doing very well to
be their manager. And when they hired
374
00:27:48.720 --> 00:27:52.599
me, I told the people who
were hiring me, which were other managers,
375
00:27:52.920 --> 00:27:56.519
and the guy above me, the
overall manager of the whole group,
376
00:27:56.039 --> 00:28:02.880
I told him that what I believe
is that people can figure out the people
377
00:28:03.359 --> 00:28:06.440
doing the work can figure out how
best to manage that work. So if
378
00:28:06.440 --> 00:28:08.240
you're going to hire me to work
with a team that's not doing very well,
379
00:28:08.759 --> 00:28:12.680
then let's be focused here. And
that means we're going to try stuff
380
00:28:14.400 --> 00:28:18.440
you've never thought of trying before.
So as we set out to do that,
381
00:28:18.519 --> 00:28:26.359
what we found more or less is
that the team figured out that we
382
00:28:26.440 --> 00:28:29.079
needed to collaborate. So that was
one of the first things. I brought
383
00:28:29.119 --> 00:28:30.279
that to the team in a way. But you know, there were a
384
00:28:30.319 --> 00:28:36.400
lot of things we can improve on, like better code writing clean code,
385
00:28:36.440 --> 00:28:40.559
you know, better refactoring, learning
to do tests. They weren't doing any
386
00:28:40.559 --> 00:28:45.880
test driven stuff or automated tests and
so on and so on. So yeah,
387
00:28:45.920 --> 00:28:49.960
anyways, when we first started doing
it, it was an accident.
388
00:28:51.359 --> 00:28:53.519
So we had been learning to pair
a program. I'd been helping them learn
389
00:28:53.559 --> 00:28:57.680
to pair program and other ways of
collaborating, and we were always looking for
390
00:28:57.759 --> 00:29:00.519
ways to turn up the good.
Now I put that in the book.
391
00:29:00.799 --> 00:29:06.960
The concept is this, when when
something's going good, we often don't pay
392
00:29:07.039 --> 00:29:11.599
much attention. We're always looking and
being excited by the problems we need to
393
00:29:11.640 --> 00:29:17.000
solve, and we're always talking about
what do we need to what problem do
394
00:29:17.039 --> 00:29:19.400
we need to solve, as opposed
to, boy, this was good,
395
00:29:19.480 --> 00:29:22.240
let's get more of that. So
we had been learning That's one of the
396
00:29:22.319 --> 00:29:26.839
things we were learning is every day
we would ask ourselves at the end of
397
00:29:26.880 --> 00:29:30.000
the day, good, what went
well today? And someone would say,
398
00:29:30.039 --> 00:29:33.000
oh, this went well, and
then we say, well, what was
399
00:29:33.000 --> 00:29:34.799
good about it? And they would
say and then we would ask, how
400
00:29:34.839 --> 00:29:40.359
can we get more of that tomorrow? So we literally will say what can
401
00:29:40.400 --> 00:29:44.359
we do tomorrow to get more of
this good? So here's what we noticed.
402
00:29:44.400 --> 00:29:45.960
The day we started doing this.
We had been asked by one of
403
00:29:47.000 --> 00:29:51.599
the team members because mostly they were
working separate at that time to come and
404
00:29:51.599 --> 00:29:53.200
look at some code in a meeting
room. We schedule a room for two
405
00:29:53.200 --> 00:29:56.440
hours, let's look at this code. At the end of two hours,
406
00:29:56.440 --> 00:30:00.319
somebody came into the room and told
us we to leave. Well, during
407
00:30:00.400 --> 00:30:04.039
that two hours, we start working
on it together. Instead of just looking
408
00:30:04.119 --> 00:30:07.680
at the code. As we start
working on it, we used the model
409
00:30:07.839 --> 00:30:14.759
of coding dojo that we had been
doing in practicing becoming better coders. That's
410
00:30:14.799 --> 00:30:19.079
where one person's at the keyboard and
another person's guiding them. But we expanded
411
00:30:19.119 --> 00:30:22.279
on it almost immediately as we looked
at this bad code, we started working
412
00:30:22.319 --> 00:30:27.000
on it doing a thing that's called
read by refactoring, and that means when
413
00:30:27.000 --> 00:30:30.799
you got code it's a mess,
it's better to just start refactoring instead of
414
00:30:30.839 --> 00:30:34.440
trying to understand the code. So
we were doing that for about two hours.
415
00:30:34.480 --> 00:30:37.400
At the end of that that person
came in and said, hey,
416
00:30:37.759 --> 00:30:41.960
you got to get out of here. We've reserved this room. Nobody wanted
417
00:30:41.960 --> 00:30:45.680
to quit, so we went found
another room empty room. They're about fifty
418
00:30:45.720 --> 00:30:48.680
meeting rooms at that company, and
we found an empty one and we kept
419
00:30:48.720 --> 00:30:52.119
working. At the end of the
day, we did our turn up the
420
00:30:52.119 --> 00:30:56.759
good retrospective. Now back to answer
your question, what was good about this?
421
00:30:56.839 --> 00:31:00.359
Well, the first thing we ask
is, well, that was good
422
00:31:00.359 --> 00:31:03.039
today, And the whole team said, boy, working together was really great,
423
00:31:03.319 --> 00:31:07.200
all of a sudden, one thing
at one time. What was good
424
00:31:07.240 --> 00:31:10.160
about it? Well, I learned
a lot, somebody. These are what
425
00:31:10.160 --> 00:31:12.119
people said. I learned a lot, Boy, we got a lot done.
426
00:31:12.279 --> 00:31:17.079
It was really high quality. I
was really enjoying it. It was
427
00:31:17.119 --> 00:31:22.599
stress free, it was fun,
no pressure. Boy, this was great.
428
00:31:22.839 --> 00:31:26.920
So those are some of the benefits. And I would argue this that
429
00:31:27.200 --> 00:31:33.359
we often don't get the benefits of
something that is working well for us because
430
00:31:33.400 --> 00:31:37.599
we're not focused on what is going
good. We're only focused on what was
431
00:31:37.599 --> 00:31:41.240
a problem we need to solve.
We were doing the opposite. We weren't
432
00:31:41.240 --> 00:31:45.880
looking for problems to solve in our
process or in the way we worked together.
433
00:31:45.319 --> 00:31:49.640
What we were looking for was what
was going good so we could get
434
00:31:49.799 --> 00:31:52.640
more of it. So those are
just four other things. I've got a
435
00:31:52.640 --> 00:31:56.559
list. I think I've got a
list of about thirty or forty things we
436
00:31:56.640 --> 00:32:01.279
noticed from it. You have continuous
code review, you continuous design review,
437
00:32:01.599 --> 00:32:08.799
continuous integration of ideas, continuous building
on ideas, like we have a guideline,
438
00:32:08.839 --> 00:32:14.400
nobody really should ever say that won't
work. If somebody says, hey,
439
00:32:14.440 --> 00:32:16.279
i'd like to try this, we
just go ahead and try it instead
440
00:32:16.279 --> 00:32:20.720
of discussing whether it'll work or not, a lot of people will already know,
441
00:32:20.759 --> 00:32:22.359
oh, that's not going to work. Well half the time it turns
442
00:32:22.400 --> 00:32:27.160
out it does work. Maybe we
just weren't thinking about it right. So
443
00:32:27.279 --> 00:32:30.759
this is the thing. There's a
lots more good about it. But there's
444
00:32:30.759 --> 00:32:34.039
a lot that can go wrong too, you know, But there is so
445
00:32:34.119 --> 00:32:37.359
much good about it. But that's
some examples. We were getting more work
446
00:32:37.400 --> 00:32:40.720
done, higher quality, we were
learning a lot. Any one of those
447
00:32:40.759 --> 00:32:45.519
things is enough for me to say, let's get more of this. I
448
00:32:45.559 --> 00:32:49.079
love that because and you go into
this in the book as well, and
449
00:32:49.119 --> 00:32:53.359
you were just mentioning focusing on the
good and then doing more of it and
450
00:32:53.400 --> 00:32:57.359
making that a focus. I think
that's so important because it is it's so
451
00:32:57.400 --> 00:33:00.440
easy to just get get lost and
then well, these are the things we
452
00:33:00.480 --> 00:33:04.440
need to fix, but we forget
to remember and focus on this is what's
453
00:33:04.480 --> 00:33:07.759
going well, let's do more of
that. So yes, I'm glad that
454
00:33:07.799 --> 00:33:10.440
you brought that up. But well, that's the idea of very tiny incremental
455
00:33:10.480 --> 00:33:15.079
improvements has a compounding effect, right, So if we don't allow for those
456
00:33:15.119 --> 00:33:21.079
little, tiny, continuing, continuous
improvements, we'll never get the compounding effect.
457
00:33:21.720 --> 00:33:24.640
We cannot. Well, this is
a very bold statement. We often
458
00:33:25.240 --> 00:33:30.799
when we try to solve a problem, we're just inventing our next problem,
459
00:33:30.960 --> 00:33:34.960
Like today's solution becomes tomorrow's problem,
and we didn't even solve the thing we
460
00:33:34.960 --> 00:33:37.160
were trying to solve in the first
place. I've seen this in companies over
461
00:33:37.279 --> 00:33:40.960
and over, you know, over
a long extended career. Well, I
462
00:33:40.960 --> 00:33:46.079
think that's a profound thank you.
Yeah, So okay, Now, one
463
00:33:46.079 --> 00:33:52.160
thing I think that is a barrier
or a challenge really is just getting started.
464
00:33:52.240 --> 00:33:55.359
I Mean it's one thing to talk
about it and listen to this whole
465
00:33:55.400 --> 00:34:00.359
method, but really, how does
a team get into it. They have
466
00:34:00.440 --> 00:34:02.680
their their way of going through tickets, they have their way of working through
467
00:34:02.720 --> 00:34:10.599
all these projects. But what's the
best way to actually start incorporating mobbing and
468
00:34:10.679 --> 00:34:15.519
software teaming into your day to day, especially for larger teams that have maybe
469
00:34:15.559 --> 00:34:22.960
different projects going on, Like with
anything, If we try to do it
470
00:34:22.960 --> 00:34:27.760
in our work without practicing it,
it might end up being a problem.
471
00:34:27.960 --> 00:34:30.039
Someone months gave me this as an
example of if you want to learn to
472
00:34:30.039 --> 00:34:34.239
be a boxer, which I have
no desire to do, you don't do
473
00:34:34.320 --> 00:34:37.639
it by getting into the ring,
putting some gloves on, and trying to
474
00:34:37.719 --> 00:34:40.519
hit somebody, because they're gonna,
you know, if they know halfway what
475
00:34:40.559 --> 00:34:45.920
they're doing, they're gonna knock you
out. So it's good to practice first.
476
00:34:45.000 --> 00:34:49.280
And I used boxing an example because
somebody else used it with me.
477
00:34:49.360 --> 00:34:52.440
But let's let's continue with that.
To be a decent boxer, you probably
478
00:34:52.440 --> 00:34:55.679
need pretty good cardio or you're gonna
get worn out quickly. So you've got
479
00:34:55.719 --> 00:35:00.280
to work on the cardio. You
need to work on defense. How am
480
00:35:00.280 --> 00:35:04.280
I going to keep from getting hit? Is there some kind of blocking I
481
00:35:04.280 --> 00:35:07.360
need to learn to do, or
footwork or whatever? What about muscles I
482
00:35:07.400 --> 00:35:09.480
need to work on? My mother? There's a lot of stuff to work
483
00:35:09.519 --> 00:35:14.559
on besides just getting in there and
trying to hit somebody. So we need
484
00:35:14.599 --> 00:35:20.679
to practice things first. And this
is my suggestion. Pick something fun and
485
00:35:21.000 --> 00:35:25.159
that's not work, And a lot
of that could just be simple coding problems
486
00:35:25.320 --> 00:35:29.840
that you can find all over the
internet. They call them code katas or
487
00:35:29.880 --> 00:35:35.280
code exercises practice on some stuff focusing
on how are we going to work well
488
00:35:35.280 --> 00:35:40.360
together? The big problem with working
with others is part of it is we're
489
00:35:40.400 --> 00:35:45.719
not used to it. We've been
working alone in our entire career, and
490
00:35:45.639 --> 00:35:52.559
up until nineteen ninety nine when I
heard about or ninety eight when I heard
491
00:35:52.599 --> 00:35:58.000
about pair of programming, I always
coded alone. I didn't know in those
492
00:35:58.079 --> 00:36:02.280
days you have to computer with a
screen and a keyboard. It was a
493
00:36:02.760 --> 00:36:07.000
solo person thing. There was no
ride along seats or anything. You know.
494
00:36:07.079 --> 00:36:10.320
It's like, you know, you're
riding on a unicycle or something.
495
00:36:10.360 --> 00:36:15.119
You're not doing that with five other
people. So this is the issue is
496
00:36:15.159 --> 00:36:19.039
that we've practiced working alone. We've
grown to like it. And a lot
497
00:36:19.039 --> 00:36:22.480
of people will say I can't work
with others or whatever. They'll have excuses
498
00:36:23.079 --> 00:36:27.360
as to it doesn't work well for
them. But I think part of that
499
00:36:27.519 --> 00:36:30.079
is because we haven't practiced it,
we haven't considered it, we haven't worked
500
00:36:30.079 --> 00:36:34.800
on making it enjoyable. There's lots
to get in the way. That's a
501
00:36:34.840 --> 00:36:37.280
really good point that you could just
be like, oh, yeah, it
502
00:36:37.280 --> 00:36:43.000
doesn't work for me or whatever.
But like you said, if you're just
503
00:36:43.079 --> 00:36:45.440
not used to it, if it's
just something that you haven't done before,
504
00:36:45.679 --> 00:36:50.360
none of us are good at anything
that we haven't tried yet. It takes
505
00:36:50.400 --> 00:36:52.920
some time. So I really like
that you kind of touched on this a
506
00:36:52.960 --> 00:36:57.719
little bit, but maybe you could
go into just a little bit more detail
507
00:36:57.760 --> 00:37:00.199
on I could see where I could, you know, I could take this
508
00:37:00.239 --> 00:37:04.239
back to my company and say,
hey, I think this would be a
509
00:37:04.239 --> 00:37:07.920
really good idea. I have this
project that I'm working on that I think
510
00:37:08.199 --> 00:37:13.519
would be perfect for this. I
want to bring five developers in to team
511
00:37:13.559 --> 00:37:16.519
program on it. And I could
see a manager somewhere up the chain saying,
512
00:37:16.559 --> 00:37:21.400
well, hold on, we have
five people working on a project that
513
00:37:21.760 --> 00:37:23.599
you were just working on before.
So now I'm paying five people to do
514
00:37:23.920 --> 00:37:30.599
that project. So what would you
say to somebody in that situation that are
515
00:37:30.639 --> 00:37:35.719
saying, well, this seems way
less productive than just having one developer on
516
00:37:35.760 --> 00:37:39.760
this one and then the other four
developers on their own four projects. Well,
517
00:37:40.119 --> 00:37:45.400
yeah, this deep subject. That
was the first or second question I
518
00:37:45.480 --> 00:37:50.400
was ever asked In the very first
talk that I gave on mob programming in
519
00:37:50.440 --> 00:37:54.440
twenty twelve. We had started doing
this in somewhere around October of twenty eleven,
520
00:37:54.639 --> 00:37:59.079
and we hadn't even been doing it
a year, and just sort of
521
00:37:59.079 --> 00:38:01.159
by accident, other people start hearing
about it. And I was at a
522
00:38:01.159 --> 00:38:06.079
conference and people are coming up and
asking, Hey, what's this thing you're
523
00:38:06.119 --> 00:38:07.679
doing. Somebody tells me you have
five people sitting in at one computer.
524
00:38:08.199 --> 00:38:12.719
And after five or six people came
up asking that, I realized I could
525
00:38:12.760 --> 00:38:16.679
spend the whole conference explaining the same
things over and over, so I invite
526
00:38:16.719 --> 00:38:20.920
everybody will do. They had a
thing they call an open jam where you
527
00:38:21.000 --> 00:38:27.400
could schedule a time slot that wasn't
pre scheduled and give it an impromptu talk,
528
00:38:27.480 --> 00:38:30.760
and I did that. At the
end of the talk, the first
529
00:38:30.880 --> 00:38:35.000
or second question I got was how
can you possibly be productive with five people
530
00:38:35.039 --> 00:38:38.159
at one computer? And at that
time, my easy answer was, because
531
00:38:38.159 --> 00:38:43.519
I'm kind of a snarky guy,
was you know, I don't know why
532
00:38:43.599 --> 00:38:47.159
does that matter? Because it doesn't
matter to me how we're more productive.
533
00:38:49.440 --> 00:38:52.000
It's what matters to me is that
we noticed we were more. So I
534
00:38:52.000 --> 00:38:55.199
don't know how it works. I
don't know why this works better. We're
535
00:38:55.239 --> 00:39:00.480
just experiencing better. However, I
then starts researching it because I got that
536
00:39:00.599 --> 00:39:05.519
question every single time I talked about
this. Now I understand what that question
537
00:39:05.599 --> 00:39:10.760
really is. That question is dogma. So when we phrase a if we
538
00:39:10.920 --> 00:39:16.079
make a problem statement such as,
how could it possibly be productive having five
539
00:39:16.079 --> 00:39:21.239
people one computer, shouldn't we be
separating them and having them workome five different
540
00:39:21.280 --> 00:39:24.760
things? That's often how it's phrased. There's a lot of assumptions in there.
541
00:39:25.360 --> 00:39:30.800
They're assuming it will be better if
you separate the people. What makes
542
00:39:30.840 --> 00:39:35.480
you believe that? You know,
it's like, yeah, we have five
543
00:39:35.559 --> 00:39:38.960
couches to move, why don't we
just have each individual move a couch?
544
00:39:39.239 --> 00:39:43.760
A lot more effective, we'll get
five couches moved. Well, that doesn't
545
00:39:43.760 --> 00:39:46.880
make sense. If we have five
people and two or three each go in
546
00:39:46.920 --> 00:39:50.360
and lift up a couch and take
it out, we'll get our work done
547
00:39:50.440 --> 00:39:53.840
quite a bit faster than if we
tried to have five people move five individual
548
00:39:53.840 --> 00:39:58.239
couches. It's just a silly example, but you get the picture here.
549
00:39:58.679 --> 00:40:00.960
So I would actually go in to
the audience after I gave one of these
550
00:40:00.960 --> 00:40:05.639
talks, find that person who asked
that question, and find out from them.
551
00:40:05.840 --> 00:40:09.599
What is it they picture and they
believe that if we have five people
552
00:40:09.639 --> 00:40:15.360
working on five separate things, we're
gonna get more done, But we don't.
553
00:40:15.480 --> 00:40:19.639
What we have is more being worked
on at the same time. That's
554
00:40:19.679 --> 00:40:22.639
not the same as getting more work
done. We were actually completing things.
555
00:40:22.800 --> 00:40:25.800
And this is the way I think
of it. We go from start to
556
00:40:27.119 --> 00:40:31.039
finish on everything we pick up.
We don't go to start, and then
557
00:40:31.079 --> 00:40:35.920
we get blocked and have to work
on something else for a while. That
558
00:40:36.079 --> 00:40:40.000
introduces cycle times. So if we
break something up into individuals and we have
559
00:40:40.119 --> 00:40:45.320
them, you know, tasks they're
going to work on individually, they're still
560
00:40:45.320 --> 00:40:47.599
going to have questions for each other, so now they have to come back
561
00:40:47.599 --> 00:40:52.960
and ask somebody else a question.
They may get some part into it and
562
00:40:52.000 --> 00:40:54.679
go, I'm not sure how this
should be. I don't want to bother
563
00:40:54.719 --> 00:40:58.960
one anyone else. So they make
some assumptions and they do the work,
564
00:40:59.000 --> 00:41:01.639
and later on it turns those weren't
good. There's a lot of reasons that
565
00:41:01.719 --> 00:41:06.079
separating people may not work well,
so we need to look at it from
566
00:41:06.119 --> 00:41:08.519
both points of view. And the
bottom line to me is, first of
567
00:41:08.559 --> 00:41:13.559
all, boy, I don't know
if you have any managers who listen to
568
00:41:13.599 --> 00:41:16.920
this podcast. But I've been a
manager most of my life. I've owned
569
00:41:17.119 --> 00:41:22.320
sixteen or seventeen businesses. I've had
a lot of employees over the years,
570
00:41:22.039 --> 00:41:30.119
and managers are very often dogmatic in
the way they think about things. So
571
00:41:30.360 --> 00:41:34.480
one of the questions people sometimes ask, and it's usually a manager is asking
572
00:41:34.519 --> 00:41:39.360
about this. They will ask,
where's the research that having five people at
573
00:41:39.400 --> 00:41:44.639
one thing is better? And I
want to reverse that question, where's the
574
00:41:44.679 --> 00:41:49.440
research that having five people working separately
is better? Because it would be the
575
00:41:49.480 --> 00:41:55.079
same exact research. But you go
ahead and separate people without having the research.
576
00:41:57.199 --> 00:42:00.079
So why are you asking about research
about change the way you do things?
577
00:42:00.320 --> 00:42:06.440
And this is now getting to human
nature. We really feel the way
578
00:42:06.440 --> 00:42:08.800
that we are doing things is the
way we should be doing things. It's
579
00:42:08.920 --> 00:42:15.000
really rare in most organizations to get
meaningful change, and it's because of these
580
00:42:15.079 --> 00:42:24.599
dogmatic approaches. I do a little
workshop on dogma and every phrase of dogma
581
00:42:24.639 --> 00:42:30.000
that you hear about these kinds of
things. For example, when I used
582
00:42:30.000 --> 00:42:34.360
to hear it a place I worked. We can't do test driven development because
583
00:42:34.400 --> 00:42:37.639
it takes twice as long. You
have to write twice as much code.
584
00:42:37.800 --> 00:42:43.599
Well, that is totally not correct. That's dogmatic. It's that we jump
585
00:42:43.679 --> 00:42:47.639
to that conclusion because it's obvious and
easy. Let's just keep doing things the
586
00:42:47.639 --> 00:42:52.119
way we're doing it. We're under
pressure to get the work done, so
587
00:42:52.400 --> 00:42:54.800
let's not think about new better ways. We just need to get the work
588
00:42:54.840 --> 00:42:59.800
done. This is problematic. I
have no easy solution. By the way,
589
00:43:00.440 --> 00:43:04.000
you know, if I could make
things the way I wanted them to
590
00:43:04.039 --> 00:43:07.199
be, the managers would be coming
to the people doing the work and saying,
591
00:43:07.239 --> 00:43:10.000
look, you're the experts here.
Let's just make sure we're getting better
592
00:43:10.079 --> 00:43:15.679
every day. Let's find some way
to become better at doing our work,
593
00:43:15.079 --> 00:43:20.239
better at working as a as an
organization, better at getting good results.
594
00:43:21.360 --> 00:43:24.079
Let's all put all of our brains
on that. Let's do that. It's
595
00:43:24.119 --> 00:43:29.719
a rare manager that'll do that.
It's interesting because I'm sitting here thinking about
596
00:43:30.039 --> 00:43:34.840
I used to be a teacher,
and it seemed to me that, of
597
00:43:34.880 --> 00:43:38.760
course, it depended on the project
or the assignment. Some tasks were better
598
00:43:39.039 --> 00:43:44.159
done individually. But I'd say for
the most part, when you put kids
599
00:43:44.199 --> 00:43:49.280
into groups of just you know that
hands on experiential learning, it seemed to
600
00:43:49.360 --> 00:43:52.519
me that that's when the most effective
learning took place. They were helping each
601
00:43:52.519 --> 00:43:58.559
other, they were teaching each other. It wasn't just the one teacher sharing
602
00:43:58.840 --> 00:44:01.480
you know, quote unquote all the
knowledge, because the kids were able to
603
00:44:01.480 --> 00:44:06.800
connect with each other in ways that
I think spoke to their understanding. And
604
00:44:06.880 --> 00:44:12.119
so yes, it's just interesting to
think of that in an actual workplace and
605
00:44:12.159 --> 00:44:19.119
putting developers together and letting them learn
with each other and share their background knowledge
606
00:44:19.159 --> 00:44:22.440
with one another that I think connects
in ways that you can't get when you
607
00:44:22.519 --> 00:44:27.800
work alone. Well, you make
a really good point here, and that
608
00:44:27.960 --> 00:44:31.760
is that My overarching concept here is
we've got a lot of smart people in
609
00:44:31.840 --> 00:44:37.320
software development. We're going to have
many different points of view on how we
610
00:44:37.360 --> 00:44:40.800
should go about doing things. There's
no one right way. So if we
611
00:44:40.880 --> 00:44:45.039
are trying it so well. I
read a book recently. I'm not sure
612
00:44:45.119 --> 00:44:50.239
if it's maybe it's called Think Again, but I've read three or four books
613
00:44:50.239 --> 00:44:57.760
that are closely related where they quote
some somebody to saying something like, if
614
00:44:57.840 --> 00:45:01.000
you do well in school, you're
going to do well at doing things the
615
00:45:01.000 --> 00:45:05.880
way we used to do things.
So this is sort of the issue we're
616
00:45:05.880 --> 00:45:12.280
not teaching how to move into a
better future. We're teaching about what somebody
617
00:45:12.360 --> 00:45:15.880
thinks is good about the past,
and that's what we should learn to do.
618
00:45:15.159 --> 00:45:21.599
So we're not learning to be good
at innovating beyond. We're learning how
619
00:45:21.639 --> 00:45:24.719
to use what somebody else did.
You know, you have the famous saying
620
00:45:24.760 --> 00:45:29.599
from Newton. You know that you
know that he was standing on the shoulders
621
00:45:29.599 --> 00:45:32.639
of giants, but you know he
himself was a massive giant. And of
622
00:45:32.679 --> 00:45:37.440
course I think he knew what he
knows is just going to be for someone
623
00:45:37.440 --> 00:45:43.119
else's to stand on his shoulders,
because he's not the end result. But
624
00:45:43.159 --> 00:45:45.719
I think that that's sort of where
it's at. It's like, we can
625
00:45:45.800 --> 00:45:51.280
learn from what came before, but
he had to take it beyond. We
626
00:45:51.320 --> 00:45:55.639
need to take it beyond. Wherever
we're at, there's a better and most
627
00:45:55.639 --> 00:46:00.400
of the organizations are going to be
really frank about it, are very poor
628
00:46:00.119 --> 00:46:05.639
at being effective at what they do. The beauty of software development is it
629
00:46:05.719 --> 00:46:08.800
is so easy to make money with
software development. We're not too worried that
630
00:46:08.880 --> 00:46:15.599
what we're doing is awfully ineffective,
So being efficient or being productive aren't interesting
631
00:46:15.679 --> 00:46:20.559
to me. Being effective is interesting
to me. So the question how can
632
00:46:20.599 --> 00:46:23.639
we be effective with five people on
computer is certainly one that I would be
633
00:46:23.639 --> 00:46:27.800
happy to explore, and I often
do. I have a talk that I
634
00:46:27.960 --> 00:46:31.000
do called a Power of Flow,
Software Teaming and the Power of Flow,
635
00:46:31.599 --> 00:46:37.239
which is where I explore this concept. Well, we have a couple questions
636
00:46:37.599 --> 00:46:40.360
as we're winding down for you.
But so when we've talked a lot about
637
00:46:40.400 --> 00:46:45.039
how to make this effective and things
going well, but let's flip that a
638
00:46:45.079 --> 00:46:50.320
little bit and talk about some of
the challenges. So what have you found
639
00:46:50.360 --> 00:46:54.880
to be some of the biggest challenges
when you try this approach to programming?
640
00:46:57.199 --> 00:47:00.199
Well, this is we're humans.
That's one of the biggest challenges. There's
641
00:47:00.320 --> 00:47:07.719
nothing about this that's going to be
necessarily easy for everybody. I have had
642
00:47:07.760 --> 00:47:09.719
a few teams I've worked with where
I went in and they picked up on
643
00:47:10.079 --> 00:47:15.960
working well together almost immediately. I
had one team that we really only had
644
00:47:15.000 --> 00:47:19.360
a couple hours. We went in, I did a rapid fire intro.
645
00:47:19.639 --> 00:47:22.000
We started working on some bugs because
they didn't even have time to practice on
646
00:47:22.039 --> 00:47:29.000
something that was easy, you know, like an exercise that wasn't work and
647
00:47:29.039 --> 00:47:30.679
they had a couple they had a
bunch of bugs. They had all long
648
00:47:30.679 --> 00:47:34.360
the list of bugs, and I
said, well, pick the easiest bug
649
00:47:34.360 --> 00:47:36.679
you got, let's work as a
team on it. By the end of
650
00:47:36.679 --> 00:47:39.559
the two hours or three hours they
were running, they were just they were
651
00:47:39.599 --> 00:47:42.960
pulling the things off. And I
said, how long does it normally take
652
00:47:43.000 --> 00:47:45.880
to get a bug fixed? Three
or four days, a couple of weeks.
653
00:47:45.119 --> 00:47:49.960
We did three or four in that
two hours because all the brain powers
654
00:47:50.000 --> 00:47:54.840
focused at the same time. So, yeah, there we go. This
655
00:47:54.920 --> 00:47:59.519
is a human thing. Some people
I've worked with some people who just can't
656
00:47:59.559 --> 00:48:01.639
do this. They're going to have
a heck of a time working with other
657
00:48:01.679 --> 00:48:07.960
people, either because of their nature
or because they aren't going to allow themselves
658
00:48:07.280 --> 00:48:13.519
to be to challenge to move beyond
what they're currently capable of doing so.
659
00:48:13.599 --> 00:48:15.360
And there are many things you get
in the way. One thing is,
660
00:48:15.559 --> 00:48:17.800
if you want me to share a
couple ideas of things that get in the
661
00:48:17.800 --> 00:48:22.400
way, somebody who thinks they know
it all is going to say, no,
662
00:48:22.519 --> 00:48:24.199
that won't work all the time.
No, that's not how we should
663
00:48:24.199 --> 00:48:27.039
do it. No, let's do
it. I'm getting frustrated with this.
664
00:48:27.519 --> 00:48:30.679
Well, it's like learning to be
patient is an important part of this.
665
00:48:31.519 --> 00:48:34.679
That's what I often tell people.
You know, when you if you're old
666
00:48:34.760 --> 00:48:37.679
enough to have kids and you have
a couple of little kids, you love
667
00:48:37.679 --> 00:48:40.719
them to pieces and you want to
be really patient with them, but often
668
00:48:40.760 --> 00:48:45.599
we lose our patient. But when
you become a grandparent, you've learned all
669
00:48:45.639 --> 00:48:47.480
those lessons, and now you've got
your grandchild, you're going to be a
670
00:48:47.519 --> 00:48:51.320
lot more patient with them. You're
going to listen to them, you can
671
00:48:51.440 --> 00:48:53.639
hear what they have to say,
and you're going to try to help them
672
00:48:53.679 --> 00:48:58.679
become better thinkers or whatever it is
you're you know you want for them.
673
00:48:59.119 --> 00:49:02.880
So I tell everybody skip the children
part, just move right on to grandchildren.
674
00:49:04.159 --> 00:49:07.920
That's the way learn to be patient. But I practice being patient myself.
675
00:49:07.079 --> 00:49:13.039
I'm easily frustrated, very impatient person. So even to this day,
676
00:49:13.079 --> 00:49:15.559
my wife will tell you we collaborate
on things. She's an artist, she
677
00:49:15.599 --> 00:49:20.360
writes children's books, and sometimes I
help her with something she's got to do,
678
00:49:21.400 --> 00:49:23.840
and I lose my patience quickly.
I'm not you know, I'm not
679
00:49:23.960 --> 00:49:28.800
even close to perfect. But even
you know, in this close relationship we've
680
00:49:28.800 --> 00:49:31.760
been married forty years, that have
plenty of time to become highly dysfunctional.
681
00:49:32.039 --> 00:49:37.360
I'm still working on being as functional
as possible with her, Like don't I
682
00:49:37.400 --> 00:49:40.400
try not to lose my patience.
I practice that better, just keep my
683
00:49:40.440 --> 00:49:44.480
mouth shut for a while, and
things like that. So that's another So
684
00:49:44.519 --> 00:49:47.559
there's another point. We don't need
to express every idea. We have one
685
00:49:47.599 --> 00:49:51.360
thing that often gets in the way
of a team of five people. Some
686
00:49:51.519 --> 00:49:53.119
onebody person has an idea, someone
else has an idea. All of a
687
00:49:53.119 --> 00:49:57.519
sudden, we got ten ideas to
try. What I like to suggest,
688
00:49:57.599 --> 00:50:00.119
is you the first one that comes
up, you try it. If after
689
00:50:00.159 --> 00:50:05.000
that someone's got another idea, we
try it. We try all the ideas.
690
00:50:05.239 --> 00:50:08.280
That's one of the issues I've seen
is teams stop. You know,
691
00:50:08.280 --> 00:50:10.880
if somebody's got an idea, they
try it good enough and they go on.
692
00:50:12.320 --> 00:50:15.320
We don't get to the better ideas. Often if we try two ideas,
693
00:50:15.440 --> 00:50:19.440
we'll getting an even better third idea. So those are just some examples.
694
00:50:19.760 --> 00:50:22.559
Somebody wants to bully their way through
it. It's not good. Somebody
695
00:50:22.639 --> 00:50:24.519
won't share their ideas, it's not
good. We have to learn as a
696
00:50:24.519 --> 00:50:29.800
team to draw the best out of
each person. And there's a lot to
697
00:50:29.880 --> 00:50:34.440
this, very straightforward, very nice. Yeah, I was thinking about who
698
00:50:34.480 --> 00:50:37.400
I would be, and I'm pretty
sure i'd be the impatient one, as
699
00:50:37.440 --> 00:50:42.079
they were, especially like if I'm
not typing, like yeah, like I
700
00:50:42.159 --> 00:50:45.440
like using you know, VS Code
shortcuts and stuff like that. And so
701
00:50:45.760 --> 00:50:50.159
when I'm typing with somebody and I'm
watching them and they're doing something and I'm
702
00:50:50.159 --> 00:50:52.960
like, oh, you could do
so much faster, like I get impatient
703
00:50:52.159 --> 00:50:57.000
when it really doesn't matter that much, you know. So I think i'd
704
00:50:57.000 --> 00:51:00.679
be the impatient one, and I'd
have to learn how to give up some
705
00:51:00.719 --> 00:51:05.840
of that control. So well,
recognizing that is the beginning point. It's
706
00:51:05.920 --> 00:51:09.079
like, once we recognize it,
then we can catch ourselves. Oh I'm
707
00:51:09.119 --> 00:51:14.239
being impatient? What's triggering the impatience? And when somebody isn't typing very well.
708
00:51:14.239 --> 00:51:16.840
We had somebody you know what they
do, the you know, two
709
00:51:16.880 --> 00:51:22.760
finger type, and they hated typing
in front of everyone because they felt it
710
00:51:22.800 --> 00:51:27.039
was slowing things down. What we
found was that the typing is not the
711
00:51:27.039 --> 00:51:30.320
bottleneck. You know, if you're
really fast at typing in bad ideas,
712
00:51:31.000 --> 00:51:37.079
yeah, that's that's not necessarily that
big of a benefit learning how to analyze
713
00:51:37.079 --> 00:51:40.039
what we're doing as we do it, because it's in the doing of the
714
00:51:40.079 --> 00:51:44.880
work that we learn the work that
we need to do, it's not talking
715
00:51:44.920 --> 00:51:47.559
about it. So you know,
getting something into the computer that we can
716
00:51:47.639 --> 00:51:52.480
see working quickly is not a bad
thing. But yeah, learning to be
717
00:51:52.559 --> 00:51:55.239
patient, Yeah, that's that's that's
a challenge for a lot of us.
718
00:51:57.559 --> 00:52:00.760
Well, this has been great.
I've learned a ton. Really excited for
719
00:52:00.800 --> 00:52:06.159
this episode to come out and for
everybody to get to hear it before we
720
00:52:06.599 --> 00:52:09.039
finish up. Do you have any
final thoughts. Well, for one thing,
721
00:52:09.639 --> 00:52:13.599
we do have a conference that we
try to do every year. Because
722
00:52:13.639 --> 00:52:16.239
COVID we kind of cut back.
We're going to try and do one in
723
00:52:16.280 --> 00:52:19.599
April, but it looks like it's
going to have to move later in the
724
00:52:19.639 --> 00:52:23.239
year. We're going to do a
live session online in April I think it's
725
00:52:23.840 --> 00:52:28.880
eleventh or twelfth. Of course,
I do workshops on this, and I
726
00:52:28.920 --> 00:52:31.760
travel over the world doing this.
I'm always looking for people who want to
727
00:52:31.840 --> 00:52:35.320
have me come in and do a
workshop, but not to make it any
728
00:52:35.320 --> 00:52:38.199
more of an advertisement. I'm also
happy to help in any way I can.
729
00:52:38.920 --> 00:52:43.280
You've mentioned my book enough times that
if anybody wants to learn a little
730
00:52:43.280 --> 00:52:46.199
bit more, you can easily find
that. And I often do free sessions,
731
00:52:46.880 --> 00:52:51.880
not every week or every day,
but I'll post it in LinkedIn or
732
00:52:52.079 --> 00:52:55.519
X as they call it. Now, you know, I've got this thing
733
00:52:55.559 --> 00:53:00.480
coming up on Tuesday or whatever this
week. This probably won't come out time.
734
00:53:00.679 --> 00:53:04.440
I'm doing one on Friday. Did
one last Friday on dogma? Like
735
00:53:04.480 --> 00:53:07.719
what is dogma? Why is it
a plague for us? How do we
736
00:53:07.760 --> 00:53:09.360
analyze it? And what do we
do about it? And I like to
737
00:53:09.400 --> 00:53:13.880
do things like that. Thanks once
again, Woody, We really appreciate your
738
00:53:13.920 --> 00:53:17.239
time. Follow whatdy on X check
him out on LinkedIn. You can find
739
00:53:17.280 --> 00:53:20.960
him on YouTube as well. We'll
put all those links in the show notes
740
00:53:21.000 --> 00:53:24.679
said, and then also check out
his book and read that. It's also
741
00:53:24.880 --> 00:53:28.920
super helpful. So, guys said, I'm excited for everybody to get to
742
00:53:28.920 --> 00:53:32.400
hear this because I have I listened
to a lot of tech podcasts, but
743
00:53:32.719 --> 00:53:36.719
this is a new topic that I
really haven't heard before. So I'm excited
744
00:53:36.719 --> 00:53:38.760
for everybody to get to hear it. Oh, thanks money, thank you,
745
00:53:40.159 --> 00:53:45.000
thanks for listening to this episode of
the DEVLFE edition of the Angular Plus
746
00:53:45.039 --> 00:53:47.320
show. Join us for the meetup
on the second and fourth tuesdays of the
747
00:53:47.360 --> 00:53:52.360
month. The second Tuesday is in
Spanish, the fourth in English. You
748
00:53:52.400 --> 00:53:55.840
can also find us at angularcommunity dot
net or at meetup dot com for more
749
00:53:55.880 --> 00:54:01.760
info. Thank you for listening to
the dev Life an erngiecomf podcast. We
750
00:54:01.760 --> 00:54:06.960
would like to thank the ngcomp organizers, Joe EAMs and Aaron Frost, our
751
00:54:07.000 --> 00:54:12.119
sponsors, and our podcast editor and
audio engineer, Patrick Hayes. You can
752
00:54:12.199 --> 00:54:15.079
hire him and find him everywhere on
social media at pat John Hayes. This
753
00:54:15.280 --> 00:54:20.480
podcast was mixed and mastered by Spoonful
of Media. You can find out more
754
00:54:20.480 --> 00:54:24.000
information about their work and the services
that they offer by going to spoonful ofmedia
755
00:54:24.079 --> 00:54:35.679
dot com.
1
00:00:10.359 --> 00:00:14.199
In this Devlife edition of the Angular
Plus Show, we talk with agile coach
2
00:00:14.240 --> 00:00:19.320
and author Woody zul All about software
teaming or mob programming. We explore the
3
00:00:19.399 --> 00:00:23.960
unique aspects of this approach, the
benefits, challenges, considerations, and then
4
00:00:24.000 --> 00:00:30.120
Woody addresses common barriers and concerns to
adopting software teaming before sharing practical steps for
5
00:00:30.160 --> 00:00:34.960
how you can incorporate this collaborative approach
into your workflow. Grab your coding crew,
6
00:00:35.320 --> 00:00:39.280
rally around the keyboard, and turn
your development process into a coding flash
7
00:00:39.320 --> 00:00:46.679
mob. This is the devlfe.
Hey folk, sneaking into your regular program
8
00:00:46.719 --> 00:00:50.479
with a super quick but super important
message. Hold on to your keyboard because
9
00:00:50.640 --> 00:00:53.960
NGI Con twenty twenty four is rolling
in and you don't want to miss it.
10
00:00:54.320 --> 00:00:57.719
We've got tickets up for grabs.
This isn't just any conference, my
11
00:00:57.799 --> 00:01:02.759
friends. It's en g Con,
the epicenter of all things Angular. You
12
00:01:02.799 --> 00:01:06.840
imagine diving deep into the wall of
Angula. It's like Christmas came early for
13
00:01:06.879 --> 00:01:11.319
developers. Workshops, talks, and
yes, your favorite Anglo folks from the
14
00:01:11.359 --> 00:01:15.840
Anglo team and the community will be
there March eighteen to twenty first. So
15
00:01:15.879 --> 00:01:19.879
what are you waiting for go over
to nghiphenconf dot org and secure your spot.
16
00:01:21.079 --> 00:01:26.159
See you at Engi coonf twenty twenty
four. Hey Preston, how are
17
00:01:26.200 --> 00:01:29.719
you. Hey, Brooke, I'm
doing pretty well. How about you doing
18
00:01:29.760 --> 00:01:32.280
well? It's good to have you
back. It's been a couple of weeks
19
00:01:32.319 --> 00:01:37.040
you were traveling, So how were
your travels? They were good, it
20
00:01:37.079 --> 00:01:40.560
was It felt really good to get
out of the cold of northern Utah and
21
00:01:40.640 --> 00:01:42.879
to get into the sun for a
week. So it felt really good.
22
00:01:44.359 --> 00:01:49.920
Yeah, on the beach in the
sun always sounds good. I think January
23
00:01:49.959 --> 00:01:53.040
is a good time just to go
on trips anyway, because the holidays are
24
00:01:53.079 --> 00:01:57.000
over and there's nothing really exciting going
on, so it feels like you need
25
00:01:57.040 --> 00:02:04.560
something in January. Yeah, it
was a nice recovery from the break of
26
00:02:04.599 --> 00:02:07.520
the holidays. The holidays are great, but you're running all over the place
27
00:02:07.560 --> 00:02:10.960
and you're not really relaxing, at
least we aren't, and so it felt
28
00:02:12.000 --> 00:02:14.800
good to just kind of sit back
and relax for a little bit. So
29
00:02:14.879 --> 00:02:16.560
yeah, it was nice. But
it's great to be back and I'm excited
30
00:02:16.599 --> 00:02:20.599
to be here. Yeah, well
me too. So on that note,
31
00:02:21.919 --> 00:02:27.199
you know that I love podcasting in
large because we always get to meet different
32
00:02:27.240 --> 00:02:32.960
people and sometimes they're professional heroes of
mine. And so I'm excited today because
33
00:02:34.719 --> 00:02:39.759
I've been hearing about this thing called
mob programming, and you know me,
34
00:02:40.599 --> 00:02:44.319
if there's something to be learned,
I'm going to turn to a book and
35
00:02:44.319 --> 00:02:46.439
I'm going to start reading. And
so I of course wanted to go to
36
00:02:46.599 --> 00:02:51.680
the best source possible to learn more
about this thing called mob programming, and
37
00:02:52.759 --> 00:02:58.039
came across a book that's called software
Teaming. Now, and so we're really
38
00:02:58.080 --> 00:03:01.680
excited because today we have the author
of this book on the show with us.
39
00:03:01.759 --> 00:03:06.199
So welcome to the show, Woody. It's nice to have you here.
40
00:03:06.599 --> 00:03:09.560
Thank you, bro. Now,
one thing I really like about your
41
00:03:09.919 --> 00:03:13.919
social media, Woody. I always
do a little bit of research on our
42
00:03:13.960 --> 00:03:15.919
guests, but one thing I liked
about yours is that you said that you're
43
00:03:15.919 --> 00:03:21.759
an extreme programmer, which I think
is awesome. Well, now I didn't
44
00:03:21.800 --> 00:03:25.879
originate that term. I hope you
realize that's that there's a whole movement which
45
00:03:27.199 --> 00:03:32.319
mob programming or software teaming grew out
of, which was coined by Kent Beck
46
00:03:32.400 --> 00:03:38.560
and maybe others back around nineteen nine
nine or two thousand called extreme programming.
47
00:03:38.840 --> 00:03:40.639
I love it. I think it's
awesome. So but on that note,
48
00:03:40.680 --> 00:03:45.520
it made me curious because I thought, Okay, well, we know he's
49
00:03:46.080 --> 00:03:50.439
a talented developer. You are clearly
a good author as well, But what
50
00:03:50.560 --> 00:03:54.400
else would you consider? Do you
have any hobbies or interests in your life
51
00:03:54.400 --> 00:04:00.479
outside of programming that you would consider
yourself to be an extreme something? Well
52
00:04:00.520 --> 00:04:04.919
that's a cool question. Well not
really. I love hiking, and I've
53
00:04:04.919 --> 00:04:11.719
always gotten myself stuck out on ledges
or you know, stumbling upon bears and
54
00:04:11.759 --> 00:04:15.480
things like that. Every hiker has
those experiences, but a lot of times
55
00:04:15.519 --> 00:04:21.600
it feels extreme. I have a
background a backyard garden where I like to
56
00:04:21.600 --> 00:04:26.959
do gardening, vegetable gardening, and
it's very steep, downhill, so I
57
00:04:27.000 --> 00:04:31.600
say I do downhill extreme down gardening. But you know, other than that,
58
00:04:32.399 --> 00:04:38.199
I'm an average programer from the point
of view. I've worked on average
59
00:04:38.279 --> 00:04:44.480
projects within average companies that are being
used by average people. Nothing exciting there,
60
00:04:44.879 --> 00:04:48.439
But it's really a challenge because the
work is you're always working with legacy
61
00:04:48.439 --> 00:04:53.240
codes, stuff that you know,
you don't necessarily understand it was written by
62
00:04:53.240 --> 00:04:57.199
someone else. And I think of
that as being that's a super challenge.
63
00:04:57.199 --> 00:05:01.319
I really love is working with software
it's difficult to work on, trying to
64
00:05:01.319 --> 00:05:04.600
make it easier to work on,
and things like that. Nice, I
65
00:05:04.639 --> 00:05:08.319
love it. Preston, what about
you, Do you have anything you'd say
66
00:05:08.319 --> 00:05:13.319
you're extreme at. Well, I
wouldn't call it extreme, but I'm pretty
67
00:05:13.360 --> 00:05:18.879
sure my wife probably would say my
desire to watch basketball might go into the
68
00:05:18.920 --> 00:05:26.360
extreme category. So yeah, I
love watching the Jazz primarily, but I'll
69
00:05:26.399 --> 00:05:31.199
watch lots of other NBA games.
In March, when the NCAA Tournament comes
70
00:05:31.199 --> 00:05:35.279
on, I'll be watching games.
I'll turn on a TV here in the
71
00:05:35.319 --> 00:05:40.519
office with two or three or four
games going on at a time. And
72
00:05:40.600 --> 00:05:46.560
so I think that is probably the
thing that is most extreme that I'm into,
73
00:05:46.759 --> 00:05:51.839
is how much sports in general,
but especially basketball that I watch.
74
00:05:53.920 --> 00:06:00.319
Nice cool. Well, So I'm
kind of one of those people that things
75
00:06:00.360 --> 00:06:03.000
fluctuate for me. So one one
month, I'll be really into something,
76
00:06:03.000 --> 00:06:08.240
in the next month I'm into another
thing. But I think consistently one thing,
77
00:06:08.279 --> 00:06:11.279
and this has kind of been something
part of my life since I was
78
00:06:11.319 --> 00:06:14.360
a child, So it's just one
of those things that's been there for a
79
00:06:14.399 --> 00:06:19.360
long time, but I still love
building Legos and especially those Star Wars sets.
80
00:06:19.399 --> 00:06:26.399
I've had to kind of restrict myself
on which sets in series I let
81
00:06:26.399 --> 00:06:30.399
myself get into because you could you
could go bankrupt with Legos. But it's
82
00:06:30.439 --> 00:06:32.800
just one of those things I think. You know, some people really like
83
00:06:32.879 --> 00:06:39.920
doing puzzles, but for me,
it's just that same kind of meditative building
84
00:06:40.040 --> 00:06:45.199
process. It's very architectural but mechanical. I don't know. So that's just
85
00:06:45.759 --> 00:06:49.240
I really love that and collecting the
little minifigs. So I would say I
86
00:06:49.399 --> 00:06:55.560
probably spend too much money on Legos, but well, you need to do
87
00:06:55.720 --> 00:06:59.160
I told my wife and because she
loves doing Legos as well. But if
88
00:06:59.199 --> 00:07:02.000
you work for the Lego store for
like three months, you get like fifty
89
00:07:02.000 --> 00:07:05.639
percent off, So just in the
evenings, you get like a part time
90
00:07:05.759 --> 00:07:10.480
job. You go work at the
Lego store by all the Lego sets that
91
00:07:10.519 --> 00:07:13.959
you want, and then you can
save a little bit of money. There
92
00:07:14.000 --> 00:07:16.079
we go, There we go.
I love it. I'll have to with
93
00:07:16.160 --> 00:07:23.600
all my spare time. Yeah.
Oh cool. Okay, so now now
94
00:07:23.639 --> 00:07:28.519
we know what we're all extremists sat
But I would love to go talk more
95
00:07:28.560 --> 00:07:41.879
about mob programming. So let's go
get into this all right. So,
96
00:07:42.319 --> 00:07:45.920
like Brooks said, we have Woody
Zuel here on the podcast with us today.
97
00:07:46.000 --> 00:07:49.680
Woody has worked as a senior software
developer, instructor, a consultant,
98
00:07:50.000 --> 00:07:55.120
an agile coach, trainer, and
presenter. He's also the author of the
99
00:07:55.120 --> 00:07:59.800
book called Software Teaming Mob Programming,
a whole Team Approach, which is exactly
100
00:07:59.839 --> 00:08:03.639
what we're looking forward to talking more
about on the podcast today. So once
101
00:08:03.680 --> 00:08:09.480
again, thanks Woodie for joining us. We really appreciate your time. But
102
00:08:09.040 --> 00:08:16.319
just kind of to get started in
the book, you kind of tell us
103
00:08:16.399 --> 00:08:20.319
a little bit more about what team
programming or mob programming is. But for
104
00:08:20.399 --> 00:08:24.439
those who maybe have not heard of
that, could you kind of describe to
105
00:08:24.560 --> 00:08:30.079
us what that is and maybe what
kind of got you interested in it.
106
00:08:31.040 --> 00:08:33.399
Well, that's just right up my
alley. If we're going to talk about
107
00:08:33.480 --> 00:08:41.559
extreme stuff way back in nineteen ninety
nine, my second professional gig, if
108
00:08:41.600 --> 00:08:46.480
you want to call it that,
as a software developer, I've been programming
109
00:08:46.480 --> 00:08:50.720
since nineteen eighty two or three,
but I didn't do it as my career.
110
00:08:50.759 --> 00:08:52.799
I did it to write software I
needed to use in a business that
111
00:08:52.840 --> 00:08:56.879
I had, But I decided to
change my career in the late nineties,
112
00:08:56.879 --> 00:09:01.960
and in nineteen ninety nine I got
a contracts the first one that got done,
113
00:09:01.960 --> 00:09:03.399
I went to the second one and
they put me on a team.
114
00:09:03.840 --> 00:09:09.080
There were about two hundred developers that
were all just hired, and they put
115
00:09:09.080 --> 00:09:11.200
me on a team and we sat
in a room together, but we never
116
00:09:11.240 --> 00:09:16.559
did anything like teamwork. We were
all working on our own things. We
117
00:09:16.639 --> 00:09:20.879
might have meetings or other discussion time, but mostly we were working on individual
118
00:09:20.960 --> 00:09:26.679
stuff. So for those of you
who listen to this podcast, just picture
119
00:09:26.720 --> 00:09:31.639
a software developer as some solo person
sitting at a computer writing some software you
120
00:09:31.679 --> 00:09:35.960
know that they've been assigned to do
or decided to do. That's what we
121
00:09:35.039 --> 00:09:39.360
normally will see. But it really
kind of piqued my interest to that I'm
122
00:09:39.360 --> 00:09:43.840
on a team, but we don't
do anything like a team. It would
123
00:09:43.840 --> 00:09:48.080
be like I'm put on a soccer
team, but we never play a game.
124
00:09:48.559 --> 00:09:52.399
We when we do play, we
go on separate fields and play solo
125
00:09:52.440 --> 00:09:54.080
against someone else or something. You
know, It's like, no, when
126
00:09:54.080 --> 00:09:58.320
you're on a soccer team, you
all get together at the same field,
127
00:09:58.399 --> 00:10:01.200
you play a game all together,
you interact with each other, You pay
128
00:10:01.240 --> 00:10:05.000
attention to each other, You're trying
to support each other, all the things
129
00:10:05.039 --> 00:10:07.360
that we think of as a team. Now, when I was a kid,
130
00:10:07.720 --> 00:10:11.919
I played music, and when I
was really young, kind of rock
131
00:10:11.960 --> 00:10:16.080
and roll in my early teens,
but I got interested in folk music and
132
00:10:16.200 --> 00:10:20.879
became a banjo picker. And this
a long time ago, and so that's
133
00:10:20.919 --> 00:10:24.120
always done as a team. You
know, you can have five or six
134
00:10:24.200 --> 00:10:28.080
members in your band and you do
things as a team. So this got
135
00:10:28.080 --> 00:10:31.919
me thinking. But now, over
time, as I observed how software development
136
00:10:33.039 --> 00:10:39.000
and most work in modern companies goes, we collaborate with others in every single
137
00:10:39.039 --> 00:10:43.120
thing we do. But how good
is our collaboration is my question, and
138
00:10:43.159 --> 00:10:50.039
it's usually not very good. We
collaborate through meetings, written documents, emails,
139
00:10:50.120 --> 00:10:56.480
phone calls, messaging. All these
things are I would say, maybe
140
00:10:56.879 --> 00:11:03.240
replacements or I don't know what's the
right proxies for actually collaborating where we would
141
00:11:03.279 --> 00:11:07.440
sit together and work on something together. So if you picture yourself, you're
142
00:11:07.480 --> 00:11:09.200
gonna move. You called up your
friends and you say, hey, I
143
00:11:09.240 --> 00:11:13.159
gotta move, and they all come
over. And now you've got a couch
144
00:11:13.200 --> 00:11:16.399
you're gonna use. I couldn't move. You don't cut the couch up into
145
00:11:16.440 --> 00:11:22.519
small bits and move each bit and
reconstruct it somewhere else. You just three
146
00:11:22.600 --> 00:11:24.519
of you pick up the couch and
walk it out. You might need to
147
00:11:24.559 --> 00:11:28.480
collaborate, you know a lot in
how do we get it through the door?
148
00:11:28.200 --> 00:11:31.799
Same with the refrigerator. You might
empty it out, of course and
149
00:11:31.840 --> 00:11:37.120
move the boxes individually, but the
refrigerator you might need help moving. So
150
00:11:37.279 --> 00:11:41.559
this is the idea, why do
we bring a bunch of people together and
151
00:11:41.600 --> 00:11:45.519
then have them sit separately and work
individually on things. So the idea of
152
00:11:45.600 --> 00:11:48.759
mod programming is we would bring all
of the people our software teaming together,
153
00:11:50.440 --> 00:11:54.840
five people, six people are more
even sitting at one computer, all looking
154
00:11:54.879 --> 00:11:58.360
at the same screens, talking about
what they're doing, and one person putting
155
00:11:58.360 --> 00:12:03.080
it into the computer. There's a
very fundamental concept here that it comes from
156
00:12:03.240 --> 00:12:09.960
a pair programming idea that for a
concept or it idea to get from somebody's
157
00:12:09.960 --> 00:12:13.039
head into the computer, it must
go through someone else's hands. Now,
158
00:12:13.039 --> 00:12:18.000
that was a saying that I got
from llewell and Falco, who would be
159
00:12:18.039 --> 00:12:20.960
a great interview for your podcast.
If you've never talked with him, he's
160
00:12:22.120 --> 00:12:26.240
just absolutely brilliant. But that's saying
I got from him back I think in
161
00:12:26.240 --> 00:12:30.840
two thousand and seven or eight,
and I start using it for my pair
162
00:12:30.919 --> 00:12:35.120
programming, and it worked so well. We brought it into when we start
163
00:12:35.120 --> 00:12:37.399
working as a team. We brought
it into that, so that meets a
164
00:12:37.440 --> 00:12:43.360
person of the keyboard is not the
one thinking. They're just transferring what the
165
00:12:43.399 --> 00:12:48.240
rest of the group is thinking into
the computer. They're just acting as a
166
00:12:48.279 --> 00:12:52.240
con do it, or like a
human version of the keyboard. You can
167
00:12:52.279 --> 00:12:54.080
say to that human version of the
keyboard, hey, we're going to need
168
00:12:54.080 --> 00:12:58.080
to drop down with all the regions
in it. So if they know how
169
00:12:58.080 --> 00:13:01.159
to get that into the code,
they just start typing it in. If
170
00:13:01.200 --> 00:13:05.360
it's you know, like angular or
whatever or react or something, the doyn't
171
00:13:05.399 --> 00:13:07.960
know how to do that, But
where's the region that it come from.
172
00:13:07.159 --> 00:13:09.840
So somebody on the team will say, oh, we've got a service we
173
00:13:09.879 --> 00:13:13.159
can call for that, or that's
going to come out of the database.
174
00:13:13.559 --> 00:13:16.639
So if you just again picture five
or six people instead of one to get
175
00:13:16.679 --> 00:13:20.840
the computer all focused on the same
thing at the same time. Now,
176
00:13:20.840 --> 00:13:26.039
there's nothing easy about this. If
you practice it and get good at it.
177
00:13:26.039 --> 00:13:30.480
It's not hard, but it's not
easy at first, but that's the
178
00:13:30.519 --> 00:13:35.759
idea. Hopefully that was clear enough. Yeah, I was just sitting here
179
00:13:35.799 --> 00:13:41.159
thinking about, like, your comparisons
are like perfect, because I especially like
180
00:13:41.279 --> 00:13:46.120
the moving the couch, Like it's
really true. We don't take it apart
181
00:13:46.559 --> 00:13:48.399
and cut it up and move it. We just moved the whole thing.
182
00:13:50.159 --> 00:13:54.559
But probably I'd say ninety nine percent
of the time that I've been working at
183
00:13:54.559 --> 00:13:58.720
my current company, we've essentially cut
the couch up into different pieces and we've
184
00:13:58.720 --> 00:14:05.000
each it. And there have been
times where we where for certain parts of
185
00:14:05.000 --> 00:14:11.159
a project, I have sat down
with another developer and we're doing a form
186
00:14:11.200 --> 00:14:15.679
of that. But even then it's
it's still not the exact same And so
187
00:14:15.759 --> 00:14:20.919
I'm I'm interested. I'm it's just
very interesting to talk about this and that
188
00:14:22.080 --> 00:14:24.720
kind of a different way of programming
now in the book, and you kind
189
00:14:24.720 --> 00:14:28.840
of mentioned one of those positions as
you were talking, but you talk about
190
00:14:28.919 --> 00:14:33.120
kind of like different positions. I
specifically talk about like a driver versus a
191
00:14:33.200 --> 00:14:39.120
navigator, stuff like that. Now, why would it not be a good
192
00:14:39.159 --> 00:14:46.159
idea to have a one person kind
of play different roles as you're doing this
193
00:14:46.879 --> 00:14:50.200
team programming, and and why is
it better to have kind of each person
194
00:14:50.279 --> 00:14:54.799
do one thing instead of multiple roles. So this is I think a very
195
00:14:54.919 --> 00:15:03.519
very powerful a concept, and that
is that we are together. We are
196
00:15:03.600 --> 00:15:07.440
separating the cognitive load while we're together, just like with the moving of the
197
00:15:07.480 --> 00:15:13.039
couch, like we are sharing the
lifting of that couch, which alone I
198
00:15:13.080 --> 00:15:16.720
couldn't do, but with one or
two helpers I can do. So we're
199
00:15:16.720 --> 00:15:18.279
getting but how are we going to
do this? The couch is a very
200
00:15:18.320 --> 00:15:22.600
single purpose thing. Think of it
more like a music group and one person.
201
00:15:24.480 --> 00:15:26.159
Let's just say in the bands I
play with, they're taking what we
202
00:15:26.159 --> 00:15:30.720
would call the lead. They're playing
a musical break and they do something that
203
00:15:30.759 --> 00:15:33.480
someone else catches on and they go, hey, that's cool, and they're
204
00:15:33.480 --> 00:15:35.240
going to riff on it in just
a moment when it's their turn. And
205
00:15:35.320 --> 00:15:39.679
so it's the same kind of a
thing. So the concept of the driver
206
00:15:39.440 --> 00:15:43.559
is that the driver is acting as
part of the computer. We call them
207
00:15:43.600 --> 00:15:46.919
the drivers, some people call them
the typist. Whoever's at the keyboard,
208
00:15:46.960 --> 00:15:50.679
she could be, you know,
a coder or not, it doesn't matter,
209
00:15:52.000 --> 00:15:56.120
but we're guiding that person at the
keyboard to get something into the computer.
210
00:15:56.440 --> 00:15:58.639
So why is it better to do
this? I've just found it's better
211
00:15:58.759 --> 00:16:03.000
in I work. It doesn't mean
it's better in others work. But here's
212
00:16:03.039 --> 00:16:06.399
the thing. When you're working with
the idea in your own head and you're
213
00:16:06.399 --> 00:16:10.720
typing it in, it's not being
expressed very well. It's only being expressed
214
00:16:10.759 --> 00:16:12.600
through the code. If we have
to stop and then turn to everyone else
215
00:16:12.639 --> 00:16:17.559
and explain what we're doing, that's
also breaking our train of thought. What
216
00:16:17.679 --> 00:16:22.919
we found is if the people guiding
what's going in are thinking and the person
217
00:16:22.919 --> 00:16:26.399
at the keyboard is merely putting it
in, then the ideas flow better.
218
00:16:26.600 --> 00:16:30.559
Now it takes practice. This isn't
something you're going to automatically be good at.
219
00:16:30.919 --> 00:16:34.039
And I do get this question quite
a bit and some teams. Matter
220
00:16:34.080 --> 00:16:37.840
of fact, I just was.
I was in Japan about earlier this month,
221
00:16:38.279 --> 00:16:41.360
and some guy came up to me
and we talked for quite a while
222
00:16:41.440 --> 00:16:47.279
about their team's way of working,
and often the person at the keyboard is
223
00:16:47.320 --> 00:16:52.320
also doing the thinking. All I
ask is this experiment with both ways.
224
00:16:52.759 --> 00:16:56.240
Find what works best for you.
What worked for us, And this came
225
00:16:56.279 --> 00:17:00.120
from a technique that's used in coding
dojos to be I don't know if you're
226
00:17:00.159 --> 00:17:03.960
familiar with the coding dojo, but
it's where it's a social activity of coding
227
00:17:04.000 --> 00:17:07.759
together, and so I had learned
this before we ever started mob programming.
228
00:17:07.880 --> 00:17:12.480
MOB programming grew out of one style
of coding dojo. In this style of
229
00:17:12.480 --> 00:17:18.160
coding dojo, an individual is sitting
at the keyboard and someone else is guiding
230
00:17:18.200 --> 00:17:22.039
them, and this seemed to work
extremely well. As we would use a
231
00:17:22.039 --> 00:17:26.279
timer. As a timer would go
off every four or five minutes, the
232
00:17:26.319 --> 00:17:30.519
person navigating becomes the driver. They
sit down at the keyboard and somebody else
233
00:17:30.559 --> 00:17:33.599
will guide them. Well, that's
just a social activity, but it turned
234
00:17:33.640 --> 00:17:38.079
into the way we worked. We
just changed that guideline slightly. Whosever is
235
00:17:38.079 --> 00:17:42.160
that the keyboard can be there as
long as they want to or until someone
236
00:17:42.200 --> 00:17:45.319
else says, well, I'd like
to type for a while. But it
237
00:17:45.359 --> 00:17:51.200
allows the rest of the team to
stay in the what I would consider problem
238
00:17:51.240 --> 00:17:56.960
and solution space, whereas the person
the keyboard is just acting as a thinking
239
00:17:59.279 --> 00:18:03.400
human input device where we could say
to them that we'll need to drop down
240
00:18:03.440 --> 00:18:07.400
instead of having to type in the
code for the drop down ourselves. This
241
00:18:07.440 --> 00:18:11.640
separates the cognitive load. We now
have people thinking about the solution the problem.
242
00:18:11.880 --> 00:18:14.839
We have people thinking about, how
does that? How do I type
243
00:18:14.839 --> 00:18:17.400
the code in for that? Now
the whole team can guide on this.
244
00:18:17.440 --> 00:18:19.799
So it's a matter of degree.
If I say we need a drop down
245
00:18:19.920 --> 00:18:23.400
and the person the keyboard really doesn't
know how to get a drop down into
246
00:18:23.839 --> 00:18:27.160
a web page or whatever, then
I might say, well, you got
247
00:18:27.200 --> 00:18:30.119
to do this little chunk of code. There's a template for it, or
248
00:18:30.119 --> 00:18:33.680
in a drag and drop environment,
you drag it in. They'll learn eventually
249
00:18:33.680 --> 00:18:38.640
how to do it. So we
navigate at the right level, and really
250
00:18:38.680 --> 00:18:42.519
we start the level of intent we
need to drop down with the regions in
251
00:18:42.559 --> 00:18:47.000
it. Then we can go to
details. Here's how you specifically do it.
252
00:18:47.119 --> 00:18:49.400
Here's where the regions will come from. So we go into detail only
253
00:18:49.480 --> 00:18:53.039
as needed. But I hope that
wasn't too much of an explanation, no,
254
00:18:53.759 --> 00:18:59.279
because I think one thing I think
is interesting with human nature is that
255
00:18:59.319 --> 00:19:03.559
we when we learn about these kinds
of modalities I guess you could call it
256
00:19:03.359 --> 00:19:07.359
for programming, we almost feel like, well, there's a book and it
257
00:19:07.359 --> 00:19:10.720
gives me these instructions and I need
to follow them to a t and I
258
00:19:10.759 --> 00:19:15.079
have to exactly what they say.
But I like how you're saying, no,
259
00:19:15.279 --> 00:19:18.079
find what works for you. This
is our suggested method. But if
260
00:19:18.079 --> 00:19:22.160
that doesn't quite work, then it's
okay. Every once in a while,
261
00:19:22.240 --> 00:19:27.400
if the driver wants to shout out
something, you know that maybe traditionally the
262
00:19:27.480 --> 00:19:32.799
driver doesn't do a lot of talking, but that's okay. So I think
263
00:19:33.039 --> 00:19:40.160
it's good to hear that you don't
have to follow the rules strictly. There
264
00:19:40.200 --> 00:19:45.039
are no strict rules. I'll be
I have one guideline, you know,
265
00:19:45.079 --> 00:19:47.799
for an idea to go from someone's
head on the computer, it goes through
266
00:19:47.839 --> 00:19:51.799
someone else's hands. But that's merely
a guideline. It doesn't mean it's a
267
00:19:51.880 --> 00:19:55.960
rule. I love it. Well, okay, So this has also brought
268
00:19:56.039 --> 00:20:00.160
up another question for me because you've
mentioned the couch, and you know this
269
00:20:00.240 --> 00:20:03.680
figurative idea of a couch, but
also in your book you do go into
270
00:20:03.640 --> 00:20:07.680
the environment and setting up the workspace. But that's all very physical, and
271
00:20:08.319 --> 00:20:12.359
we all know that since COVID,
especially we've a lot of us have gone
272
00:20:12.440 --> 00:20:18.119
remote. So again, you know, I'm sure that there's no set way
273
00:20:18.160 --> 00:20:21.359
of doing this, and there's a
variety of approaches you could take. But
274
00:20:21.480 --> 00:20:26.160
what have you found to be the
best for remote teams. Well, working
275
00:20:26.200 --> 00:20:32.599
remotely is just a different challenge than
working sitting in the same room, and
276
00:20:33.160 --> 00:20:37.079
I found it to be extremely effective. Starting in March of twenty twenty,
277
00:20:37.119 --> 00:20:41.160
when we all had to switch to
moving to working from home, I had
278
00:20:41.200 --> 00:20:44.720
a bunch of workshops planned for the
next six months, you know, and
279
00:20:44.799 --> 00:20:47.480
I had to cancel them all.
But I started getting a lot of calls
280
00:20:47.480 --> 00:20:52.400
from people who were for the first
time going to start. You know,
281
00:20:52.400 --> 00:20:56.079
they're working remotely for the first time, and they're realizing it's not being very
282
00:20:56.079 --> 00:20:59.079
effective for them. How are we
going to do it? Well? This
283
00:20:59.160 --> 00:21:03.920
way of working, everybody's kind of
in the same remote space. They're in
284
00:21:03.960 --> 00:21:08.680
the same virtual space all day long. Allows us to stay mostly connected,
285
00:21:08.799 --> 00:21:14.599
similar to how if we were sitting
in the same room at work. So
286
00:21:14.599 --> 00:21:17.599
if we were all sitting in the
same room, I could look turn over,
287
00:21:17.720 --> 00:21:19.079
you know, ask over my shoulder, Hey, does anybody know how
288
00:21:19.160 --> 00:21:22.440
this thing works? And somebody say, yeah, come help you. When
289
00:21:22.440 --> 00:21:26.880
we're mob programming or software teaming,
we're all sitting together We often don't even
290
00:21:26.960 --> 00:21:32.160
need to ask a question because the
other person's paying enough attention to say,
291
00:21:32.200 --> 00:21:33.519
oh, it looks like we're going
to have a problem with this before I
292
00:21:33.599 --> 00:21:37.559
even form the question. So when
we're remote, we just need to change
293
00:21:37.559 --> 00:21:42.279
the protocols. It's a little different. So if we've never done software teaming
294
00:21:42.359 --> 00:21:45.599
or mob programming at all, and
all of a sudden we're working remotely,
295
00:21:45.880 --> 00:21:51.039
it's actually a pretty good way to
stay connected throughout the day. So my
296
00:21:51.200 --> 00:21:55.119
recommendation, if I give a recommendation
about anything, it's we need to have
297
00:21:55.480 --> 00:21:59.319
it easy for each person who's going
to use the keyboard, who's going to
298
00:21:59.359 --> 00:22:03.480
be inputting stuff, to make that
easy to do to switch who's using the
299
00:22:03.559 --> 00:22:07.599
keyboard. One of the best ways, if you don't mind me mentioning commercial
300
00:22:07.640 --> 00:22:14.839
products, is something like any desk, where there's a server that contains all
301
00:22:14.880 --> 00:22:18.839
the development tools and everybody can log
into. Now, others have used things
302
00:22:18.920 --> 00:22:27.160
like things like Zoom, like we're
doing right now, Chris using Zoom with
303
00:22:27.240 --> 00:22:32.160
any desk. If you're not familiar
with any desk, it's just a straightforward
304
00:22:33.200 --> 00:22:37.200
place. It's similar to having five
people sitting around a computer in a physical
305
00:22:37.279 --> 00:22:41.599
environment. We're now doing it in
a virtual environment. So if it's my
306
00:22:41.720 --> 00:22:44.680
turn to type, I just click
on the little icon that says I have
307
00:22:44.759 --> 00:22:48.319
control of the keyboard and mouse,
and the other person unclicks that and we
308
00:22:48.480 --> 00:22:52.039
just keep working on. Everybody can
see the code as it changes in their
309
00:22:52.039 --> 00:22:57.440
own instances of the client for any
desk. There's other things too, Team
310
00:22:57.640 --> 00:23:02.799
team viewer. I think it's called
there's another product. There's many products that
311
00:23:02.880 --> 00:23:06.200
do that, but other ways to
do it. There are people that use
312
00:23:07.000 --> 00:23:12.039
there's a two called mob sh which
allows you to do quick check ins and
313
00:23:12.119 --> 00:23:15.759
checkouts of code. I think we
put that on the book so that as
314
00:23:15.799 --> 00:23:19.200
we rotate people it's my turn to
type, I would share my screen.
315
00:23:19.519 --> 00:23:25.559
Everybody could look at my at my
development environment, and I would have just
316
00:23:25.680 --> 00:23:29.319
checked out the code this, you
know, out of some branch that I'm
317
00:23:29.359 --> 00:23:33.680
going to check in when my turn
is over. But the technical stuff's easy
318
00:23:33.160 --> 00:23:38.240
that really we need to get good
at allowing each other to speak. Whiteboards
319
00:23:38.279 --> 00:23:45.400
are more difficult when we're working remotely. I don't think that the remote whiteboards
320
00:23:45.400 --> 00:23:51.839
are nearly as human I guess as
working with a physical whiteboard. I love
321
00:23:51.880 --> 00:23:56.680
whiteboards when we're working together. You
could put sticky notes, drawings, diagrams,
322
00:23:56.720 --> 00:24:00.440
you put it moving stuff around.
It's very I think if a whiteboard
323
00:24:00.480 --> 00:24:06.559
as sort of being a shared memory
location where everybody on the team can see
324
00:24:06.599 --> 00:24:08.440
it, see what's going on,
see it as it changes, keeps us
325
00:24:08.480 --> 00:24:12.000
all focused on the same thing.
But yeah, it can be easily done
326
00:24:12.000 --> 00:24:18.480
remotely. I would say there's it's
different, but not drastically different, and
327
00:24:18.519 --> 00:24:22.000
it can be very effective if word
with probably a dozen or two dozen teams
328
00:24:22.039 --> 00:24:29.279
over the last three years working remotely
and it works well. Say one other
329
00:24:29.480 --> 00:24:33.039
tool for everyone out there, if
you use vs code, there is an
330
00:24:33.079 --> 00:24:37.759
extension called live share that's built by
Microsoft that I've used it just in small
331
00:24:37.759 --> 00:24:42.279
groups. I haven't used it with
big teams, but that could potentially be
332
00:24:42.319 --> 00:24:49.279
another tool that it's kind of like
turns your ID into Google Docs and so
333
00:24:49.400 --> 00:24:52.680
everyone can get a link and they
get kind of signed into that instance,
334
00:24:52.720 --> 00:24:56.640
and then they all have their cursors
and they can go through the file system
335
00:24:56.680 --> 00:25:03.519
and stuff. So you know,
chet Brains has a thing they call code
336
00:25:03.519 --> 00:25:07.559
with Me that gives a collective coding
similar I tried both of those and I
337
00:25:07.599 --> 00:25:15.720
did use the vis code share thing, whatever it's called, and maybe it
338
00:25:15.759 --> 00:25:18.759
wasn't as sophisticated as it is now, and it's definitely worth experimenting with these
339
00:25:18.799 --> 00:25:22.680
things. Those are at least three
options, and I think I share all
340
00:25:22.720 --> 00:25:26.000
three of those in the book.
It's going to get better. You know,
341
00:25:26.079 --> 00:25:27.519
whatever it is is pretty good.
Now, all of these things are
342
00:25:27.559 --> 00:25:30.720
going to get better. Figure out
what works for you. That's where.
343
00:25:30.920 --> 00:25:34.960
So at our company, we have
this thing, an app called gathered Town,
344
00:25:36.319 --> 00:25:40.880
and I spouted a little on the
podcast, but it's that virtual space
345
00:25:40.960 --> 00:25:44.640
and you can create little rooms,
and I think it'd be fun to make
346
00:25:44.680 --> 00:25:48.079
it look like a little race car
type thing, so that it actually is
347
00:25:48.160 --> 00:25:52.359
like your driver and navigator. But
yeah, the other town. I've worked
348
00:25:52.440 --> 00:25:55.440
with people who use that. It
works pretty well if you're going to like
349
00:25:56.119 --> 00:26:00.480
often with mob programming, Let's make
this point. Mob program software teaming doesn't
350
00:26:00.519 --> 00:26:07.400
replace solo work or pair of work. It just adds another way for working.
351
00:26:07.519 --> 00:26:10.880
So I've worked with teams that would
gather together, maybe for an hour
352
00:26:10.960 --> 00:26:12.440
or two in the morning, all
working together, and then a couple of
353
00:26:12.440 --> 00:26:15.920
people may say we're going to split
off and work on this thing for a
354
00:26:15.920 --> 00:26:19.160
while. Then they come back when
that's done. And so gather Town gives
355
00:26:19.200 --> 00:26:23.000
you these different rooms. You can
move easily from space to space if you
356
00:26:23.039 --> 00:26:26.759
set it up well for that,
and it can be a good tool.
357
00:26:26.960 --> 00:26:30.599
Yeah, Zoom gives you the same
thing. Most of the teams I've worked
358
00:26:30.599 --> 00:26:37.960
with have either used Zoom or Microsoft
Teams. You know, not to plug
359
00:26:37.079 --> 00:26:41.400
any particular thing. I like Zoom. Zoom seems to work really well.
360
00:26:41.440 --> 00:26:44.440
You have the breakout rooms, and
there are lots of ways to do this.
361
00:26:44.559 --> 00:26:47.359
I like the dynamic idea though,
if you don't mind, let's stick
362
00:26:47.359 --> 00:26:51.799
with that for just a second.
The really the best teams I've worked with
363
00:26:52.319 --> 00:26:57.559
will notice when something would be better
to be done individually or as a smaller
364
00:26:57.599 --> 00:27:00.880
teams maybe have a team of eight
people, you break into a team of
365
00:27:00.920 --> 00:27:06.480
five and a team of three,
and things like that, that we need
366
00:27:06.519 --> 00:27:12.799
to be flexible so we can dynamically
take advantage of everybody during throughout the day.
367
00:27:15.119 --> 00:27:18.759
So in your experience, as you've
started, as you've implemented this for
368
00:27:19.079 --> 00:27:23.119
projects that you've worked on and with
teams and stuff that you've talked about,
369
00:27:23.119 --> 00:27:26.680
you've helped implement it. What are
some of the biggest benefits that you have
370
00:27:26.880 --> 00:27:34.240
seen this type of programming bring to
teams over solo programming or even pair programming.
371
00:27:36.279 --> 00:27:40.799
Well, the first thing we noticed
so the team that we really went
372
00:27:40.920 --> 00:27:44.680
all out on this. We had
been I've been hired to work with a
373
00:27:44.720 --> 00:27:48.680
team that wasn't doing very well to
be their manager. And when they hired
374
00:27:48.720 --> 00:27:52.599
me, I told the people who
were hiring me, which were other managers,
375
00:27:52.920 --> 00:27:56.519
and the guy above me, the
overall manager of the whole group,
376
00:27:56.039 --> 00:28:02.880
I told him that what I believe
is that people can figure out the people
377
00:28:03.359 --> 00:28:06.440
doing the work can figure out how
best to manage that work. So if
378
00:28:06.440 --> 00:28:08.240
you're going to hire me to work
with a team that's not doing very well,
379
00:28:08.759 --> 00:28:12.680
then let's be focused here. And
that means we're going to try stuff
380
00:28:14.400 --> 00:28:18.440
you've never thought of trying before.
So as we set out to do that,
381
00:28:18.519 --> 00:28:26.359
what we found more or less is
that the team figured out that we
382
00:28:26.440 --> 00:28:29.079
needed to collaborate. So that was
one of the first things. I brought
383
00:28:29.119 --> 00:28:30.279
that to the team in a way. But you know, there were a
384
00:28:30.319 --> 00:28:36.400
lot of things we can improve on, like better code writing clean code,
385
00:28:36.440 --> 00:28:40.559
you know, better refactoring, learning
to do tests. They weren't doing any
386
00:28:40.559 --> 00:28:45.880
test driven stuff or automated tests and
so on and so on. So yeah,
387
00:28:45.920 --> 00:28:49.960
anyways, when we first started doing
it, it was an accident.
388
00:28:51.359 --> 00:28:53.519
So we had been learning to pair
a program. I'd been helping them learn
389
00:28:53.559 --> 00:28:57.680
to pair program and other ways of
collaborating, and we were always looking for
390
00:28:57.759 --> 00:29:00.519
ways to turn up the good.
Now I put that in the book.
391
00:29:00.799 --> 00:29:06.960
The concept is this, when when
something's going good, we often don't pay
392
00:29:07.039 --> 00:29:11.599
much attention. We're always looking and
being excited by the problems we need to
393
00:29:11.640 --> 00:29:17.000
solve, and we're always talking about
what do we need to what problem do
394
00:29:17.039 --> 00:29:19.400
we need to solve, as opposed
to, boy, this was good,
395
00:29:19.480 --> 00:29:22.240
let's get more of that. So
we had been learning That's one of the
396
00:29:22.319 --> 00:29:26.839
things we were learning is every day
we would ask ourselves at the end of
397
00:29:26.880 --> 00:29:30.000
the day, good, what went
well today? And someone would say,
398
00:29:30.039 --> 00:29:33.000
oh, this went well, and
then we say, well, what was
399
00:29:33.000 --> 00:29:34.799
good about it? And they would
say and then we would ask, how
400
00:29:34.839 --> 00:29:40.359
can we get more of that tomorrow? So we literally will say what can
401
00:29:40.400 --> 00:29:44.359
we do tomorrow to get more of
this good? So here's what we noticed.
402
00:29:44.400 --> 00:29:45.960
The day we started doing this.
We had been asked by one of
403
00:29:47.000 --> 00:29:51.599
the team members because mostly they were
working separate at that time to come and
404
00:29:51.599 --> 00:29:53.200
look at some code in a meeting
room. We schedule a room for two
405
00:29:53.200 --> 00:29:56.440
hours, let's look at this code. At the end of two hours,
406
00:29:56.440 --> 00:30:00.319
somebody came into the room and told
us we to leave. Well, during
407
00:30:00.400 --> 00:30:04.039
that two hours, we start working
on it together. Instead of just looking
408
00:30:04.119 --> 00:30:07.680
at the code. As we start
working on it, we used the model
409
00:30:07.839 --> 00:30:14.759
of coding dojo that we had been
doing in practicing becoming better coders. That's
410
00:30:14.799 --> 00:30:19.079
where one person's at the keyboard and
another person's guiding them. But we expanded
411
00:30:19.119 --> 00:30:22.279
on it almost immediately as we looked
at this bad code, we started working
412
00:30:22.319 --> 00:30:27.000
on it doing a thing that's called
read by refactoring, and that means when
413
00:30:27.000 --> 00:30:30.799
you got code it's a mess,
it's better to just start refactoring instead of
414
00:30:30.839 --> 00:30:34.440
trying to understand the code. So
we were doing that for about two hours.
415
00:30:34.480 --> 00:30:37.400
At the end of that that person
came in and said, hey,
416
00:30:37.759 --> 00:30:41.960
you got to get out of here. We've reserved this room. Nobody wanted
417
00:30:41.960 --> 00:30:45.680
to quit, so we went found
another room empty room. They're about fifty
418
00:30:45.720 --> 00:30:48.680
meeting rooms at that company, and
we found an empty one and we kept
419
00:30:48.720 --> 00:30:52.119
working. At the end of the
day, we did our turn up the
420
00:30:52.119 --> 00:30:56.759
good retrospective. Now back to answer
your question, what was good about this?
421
00:30:56.839 --> 00:31:00.359
Well, the first thing we ask
is, well, that was good
422
00:31:00.359 --> 00:31:03.039
today, And the whole team said, boy, working together was really great,
423
00:31:03.319 --> 00:31:07.200
all of a sudden, one thing
at one time. What was good
424
00:31:07.240 --> 00:31:10.160
about it? Well, I learned
a lot, somebody. These are what
425
00:31:10.160 --> 00:31:12.119
people said. I learned a lot, Boy, we got a lot done.
426
00:31:12.279 --> 00:31:17.079
It was really high quality. I
was really enjoying it. It was
427
00:31:17.119 --> 00:31:22.599
stress free, it was fun,
no pressure. Boy, this was great.
428
00:31:22.839 --> 00:31:26.920
So those are some of the benefits. And I would argue this that
429
00:31:27.200 --> 00:31:33.359
we often don't get the benefits of
something that is working well for us because
430
00:31:33.400 --> 00:31:37.599
we're not focused on what is going
good. We're only focused on what was
431
00:31:37.599 --> 00:31:41.240
a problem we need to solve.
We were doing the opposite. We weren't
432
00:31:41.240 --> 00:31:45.880
looking for problems to solve in our
process or in the way we worked together.
433
00:31:45.319 --> 00:31:49.640
What we were looking for was what
was going good so we could get
434
00:31:49.799 --> 00:31:52.640
more of it. So those are
just four other things. I've got a
435
00:31:52.640 --> 00:31:56.559
list. I think I've got a
list of about thirty or forty things we
436
00:31:56.640 --> 00:32:01.279
noticed from it. You have continuous
code review, you continuous design review,
437
00:32:01.599 --> 00:32:08.799
continuous integration of ideas, continuous building
on ideas, like we have a guideline,
438
00:32:08.839 --> 00:32:14.400
nobody really should ever say that won't
work. If somebody says, hey,
439
00:32:14.440 --> 00:32:16.279
i'd like to try this, we
just go ahead and try it instead
440
00:32:16.279 --> 00:32:20.720
of discussing whether it'll work or not, a lot of people will already know,
441
00:32:20.759 --> 00:32:22.359
oh, that's not going to work. Well half the time it turns
442
00:32:22.400 --> 00:32:27.160
out it does work. Maybe we
just weren't thinking about it right. So
443
00:32:27.279 --> 00:32:30.759
this is the thing. There's a
lots more good about it. But there's
444
00:32:30.759 --> 00:32:34.039
a lot that can go wrong too, you know, But there is so
445
00:32:34.119 --> 00:32:37.359
much good about it. But that's
some examples. We were getting more work
446
00:32:37.400 --> 00:32:40.720
done, higher quality, we were
learning a lot. Any one of those
447
00:32:40.759 --> 00:32:45.519
things is enough for me to say, let's get more of this. I
448
00:32:45.559 --> 00:32:49.079
love that because and you go into
this in the book as well, and
449
00:32:49.119 --> 00:32:53.359
you were just mentioning focusing on the
good and then doing more of it and
450
00:32:53.400 --> 00:32:57.359
making that a focus. I think
that's so important because it is it's so
451
00:32:57.400 --> 00:33:00.440
easy to just get get lost and
then well, these are the things we
452
00:33:00.480 --> 00:33:04.440
need to fix, but we forget
to remember and focus on this is what's
453
00:33:04.480 --> 00:33:07.759
going well, let's do more of
that. So yes, I'm glad that
454
00:33:07.799 --> 00:33:10.440
you brought that up. But well, that's the idea of very tiny incremental
455
00:33:10.480 --> 00:33:15.079
improvements has a compounding effect, right, So if we don't allow for those
456
00:33:15.119 --> 00:33:21.079
little, tiny, continuing, continuous
improvements, we'll never get the compounding effect.
457
00:33:21.720 --> 00:33:24.640
We cannot. Well, this is
a very bold statement. We often
458
00:33:25.240 --> 00:33:30.799
when we try to solve a problem, we're just inventing our next problem,
459
00:33:30.960 --> 00:33:34.960
Like today's solution becomes tomorrow's problem,
and we didn't even solve the thing we
460
00:33:34.960 --> 00:33:37.160
were trying to solve in the first
place. I've seen this in companies over
461
00:33:37.279 --> 00:33:40.960
and over, you know, over
a long extended career. Well, I
462
00:33:40.960 --> 00:33:46.079
think that's a profound thank you.
Yeah, So okay, Now, one
463
00:33:46.079 --> 00:33:52.160
thing I think that is a barrier
or a challenge really is just getting started.
464
00:33:52.240 --> 00:33:55.359
I Mean it's one thing to talk
about it and listen to this whole
465
00:33:55.400 --> 00:34:00.359
method, but really, how does
a team get into it. They have
466
00:34:00.440 --> 00:34:02.680
their their way of going through tickets, they have their way of working through
467
00:34:02.720 --> 00:34:10.599
all these projects. But what's the
best way to actually start incorporating mobbing and
468
00:34:10.679 --> 00:34:15.519
software teaming into your day to day, especially for larger teams that have maybe
469
00:34:15.559 --> 00:34:22.960
different projects going on, Like with
anything, If we try to do it
470
00:34:22.960 --> 00:34:27.760
in our work without practicing it,
it might end up being a problem.
471
00:34:27.960 --> 00:34:30.039
Someone months gave me this as an
example of if you want to learn to
472
00:34:30.039 --> 00:34:34.239
be a boxer, which I have
no desire to do, you don't do
473
00:34:34.320 --> 00:34:37.639
it by getting into the ring,
putting some gloves on, and trying to
474
00:34:37.719 --> 00:34:40.519
hit somebody, because they're gonna,
you know, if they know halfway what
475
00:34:40.559 --> 00:34:45.920
they're doing, they're gonna knock you
out. So it's good to practice first.
476
00:34:45.000 --> 00:34:49.280
And I used boxing an example because
somebody else used it with me.
477
00:34:49.360 --> 00:34:52.440
But let's let's continue with that.
To be a decent boxer, you probably
478
00:34:52.440 --> 00:34:55.679
need pretty good cardio or you're gonna
get worn out quickly. So you've got
479
00:34:55.719 --> 00:35:00.280
to work on the cardio. You
need to work on defense. How am
480
00:35:00.280 --> 00:35:04.280
I going to keep from getting hit? Is there some kind of blocking I
481
00:35:04.280 --> 00:35:07.360
need to learn to do, or
footwork or whatever? What about muscles I
482
00:35:07.400 --> 00:35:09.480
need to work on? My mother? There's a lot of stuff to work
483
00:35:09.519 --> 00:35:14.559
on besides just getting in there and
trying to hit somebody. So we need
484
00:35:14.599 --> 00:35:20.679
to practice things first. And this
is my suggestion. Pick something fun and
485
00:35:21.000 --> 00:35:25.159
that's not work, And a lot
of that could just be simple coding problems
486
00:35:25.320 --> 00:35:29.840
that you can find all over the
internet. They call them code katas or
487
00:35:29.880 --> 00:35:35.280
code exercises practice on some stuff focusing
on how are we going to work well
488
00:35:35.280 --> 00:35:40.360
together? The big problem with working
with others is part of it is we're
489
00:35:40.400 --> 00:35:45.719
not used to it. We've been
working alone in our entire career, and
490
00:35:45.639 --> 00:35:52.559
up until nineteen ninety nine when I
heard about or ninety eight when I heard
491
00:35:52.599 --> 00:35:58.000
about pair of programming, I always
coded alone. I didn't know in those
492
00:35:58.079 --> 00:36:02.280
days you have to computer with a
screen and a keyboard. It was a
493
00:36:02.760 --> 00:36:07.000
solo person thing. There was no
ride along seats or anything. You know.
494
00:36:07.079 --> 00:36:10.320
It's like, you know, you're
riding on a unicycle or something.
495
00:36:10.360 --> 00:36:15.119
You're not doing that with five other
people. So this is the issue is
496
00:36:15.159 --> 00:36:19.039
that we've practiced working alone. We've
grown to like it. And a lot
497
00:36:19.039 --> 00:36:22.480
of people will say I can't work
with others or whatever. They'll have excuses
498
00:36:23.079 --> 00:36:27.360
as to it doesn't work well for
them. But I think part of that
499
00:36:27.519 --> 00:36:30.079
is because we haven't practiced it,
we haven't considered it, we haven't worked
500
00:36:30.079 --> 00:36:34.800
on making it enjoyable. There's lots
to get in the way. That's a
501
00:36:34.840 --> 00:36:37.280
really good point that you could just
be like, oh, yeah, it
502
00:36:37.280 --> 00:36:43.000
doesn't work for me or whatever.
But like you said, if you're just
503
00:36:43.079 --> 00:36:45.440
not used to it, if it's
just something that you haven't done before,
504
00:36:45.679 --> 00:36:50.360
none of us are good at anything
that we haven't tried yet. It takes
505
00:36:50.400 --> 00:36:52.920
some time. So I really like
that you kind of touched on this a
506
00:36:52.960 --> 00:36:57.719
little bit, but maybe you could
go into just a little bit more detail
507
00:36:57.760 --> 00:37:00.199
on I could see where I could, you know, I could take this
508
00:37:00.239 --> 00:37:04.239
back to my company and say,
hey, I think this would be a
509
00:37:04.239 --> 00:37:07.920
really good idea. I have this
project that I'm working on that I think
510
00:37:08.199 --> 00:37:13.519
would be perfect for this. I
want to bring five developers in to team
511
00:37:13.559 --> 00:37:16.519
program on it. And I could
see a manager somewhere up the chain saying,
512
00:37:16.559 --> 00:37:21.400
well, hold on, we have
five people working on a project that
513
00:37:21.760 --> 00:37:23.599
you were just working on before.
So now I'm paying five people to do
514
00:37:23.920 --> 00:37:30.599
that project. So what would you
say to somebody in that situation that are
515
00:37:30.639 --> 00:37:35.719
saying, well, this seems way
less productive than just having one developer on
516
00:37:35.760 --> 00:37:39.760
this one and then the other four
developers on their own four projects. Well,
517
00:37:40.119 --> 00:37:45.400
yeah, this deep subject. That
was the first or second question I
518
00:37:45.480 --> 00:37:50.400
was ever asked In the very first
talk that I gave on mob programming in
519
00:37:50.440 --> 00:37:54.440
twenty twelve. We had started doing
this in somewhere around October of twenty eleven,
520
00:37:54.639 --> 00:37:59.079
and we hadn't even been doing it
a year, and just sort of
521
00:37:59.079 --> 00:38:01.159
by accident, other people start hearing
about it. And I was at a
522
00:38:01.159 --> 00:38:06.079
conference and people are coming up and
asking, Hey, what's this thing you're
523
00:38:06.119 --> 00:38:07.679
doing. Somebody tells me you have
five people sitting in at one computer.
524
00:38:08.199 --> 00:38:12.719
And after five or six people came
up asking that, I realized I could
525
00:38:12.760 --> 00:38:16.679
spend the whole conference explaining the same
things over and over, so I invite
526
00:38:16.719 --> 00:38:20.920
everybody will do. They had a
thing they call an open jam where you
527
00:38:21.000 --> 00:38:27.400
could schedule a time slot that wasn't
pre scheduled and give it an impromptu talk,
528
00:38:27.480 --> 00:38:30.760
and I did that. At the
end of the talk, the first
529
00:38:30.880 --> 00:38:35.000
or second question I got was how
can you possibly be productive with five people
530
00:38:35.039 --> 00:38:38.159
at one computer? And at that
time, my easy answer was, because
531
00:38:38.159 --> 00:38:43.519
I'm kind of a snarky guy,
was you know, I don't know why
532
00:38:43.599 --> 00:38:47.159
does that matter? Because it doesn't
matter to me how we're more productive.
533
00:38:49.440 --> 00:38:52.000
It's what matters to me is that
we noticed we were more. So I
534
00:38:52.000 --> 00:38:55.199
don't know how it works. I
don't know why this works better. We're
535
00:38:55.239 --> 00:39:00.480
just experiencing better. However, I
then starts researching it because I got that
536
00:39:00.599 --> 00:39:05.519
question every single time I talked about
this. Now I understand what that question
537
00:39:05.599 --> 00:39:10.760
really is. That question is dogma. So when we phrase a if we
538
00:39:10.920 --> 00:39:16.079
make a problem statement such as,
how could it possibly be productive having five
539
00:39:16.079 --> 00:39:21.239
people one computer, shouldn't we be
separating them and having them workome five different
540
00:39:21.280 --> 00:39:24.760
things? That's often how it's phrased. There's a lot of assumptions in there.
541
00:39:25.360 --> 00:39:30.800
They're assuming it will be better if
you separate the people. What makes
542
00:39:30.840 --> 00:39:35.480
you believe that? You know,
it's like, yeah, we have five
543
00:39:35.559 --> 00:39:38.960
couches to move, why don't we
just have each individual move a couch?
544
00:39:39.239 --> 00:39:43.760
A lot more effective, we'll get
five couches moved. Well, that doesn't
545
00:39:43.760 --> 00:39:46.880
make sense. If we have five
people and two or three each go in
546
00:39:46.920 --> 00:39:50.360
and lift up a couch and take
it out, we'll get our work done
547
00:39:50.440 --> 00:39:53.840
quite a bit faster than if we
tried to have five people move five individual
548
00:39:53.840 --> 00:39:58.239
couches. It's just a silly example, but you get the picture here.
549
00:39:58.679 --> 00:40:00.960
So I would actually go in to
the audience after I gave one of these
550
00:40:00.960 --> 00:40:05.639
talks, find that person who asked
that question, and find out from them.
551
00:40:05.840 --> 00:40:09.599
What is it they picture and they
believe that if we have five people
552
00:40:09.639 --> 00:40:15.360
working on five separate things, we're
gonna get more done, But we don't.
553
00:40:15.480 --> 00:40:19.639
What we have is more being worked
on at the same time. That's
554
00:40:19.679 --> 00:40:22.639
not the same as getting more work
done. We were actually completing things.
555
00:40:22.800 --> 00:40:25.800
And this is the way I think
of it. We go from start to
556
00:40:27.119 --> 00:40:31.039
finish on everything we pick up.
We don't go to start, and then
557
00:40:31.079 --> 00:40:35.920
we get blocked and have to work
on something else for a while. That
558
00:40:36.079 --> 00:40:40.000
introduces cycle times. So if we
break something up into individuals and we have
559
00:40:40.119 --> 00:40:45.320
them, you know, tasks they're
going to work on individually, they're still
560
00:40:45.320 --> 00:40:47.599
going to have questions for each other, so now they have to come back
561
00:40:47.599 --> 00:40:52.960
and ask somebody else a question.
They may get some part into it and
562
00:40:52.000 --> 00:40:54.679
go, I'm not sure how this
should be. I don't want to bother
563
00:40:54.719 --> 00:40:58.960
one anyone else. So they make
some assumptions and they do the work,
564
00:40:59.000 --> 00:41:01.639
and later on it turns those weren't
good. There's a lot of reasons that
565
00:41:01.719 --> 00:41:06.079
separating people may not work well,
so we need to look at it from
566
00:41:06.119 --> 00:41:08.519
both points of view. And the
bottom line to me is, first of
567
00:41:08.559 --> 00:41:13.559
all, boy, I don't know
if you have any managers who listen to
568
00:41:13.599 --> 00:41:16.920
this podcast. But I've been a
manager most of my life. I've owned
569
00:41:17.119 --> 00:41:22.320
sixteen or seventeen businesses. I've had
a lot of employees over the years,
570
00:41:22.039 --> 00:41:30.119
and managers are very often dogmatic in
the way they think about things. So
571
00:41:30.360 --> 00:41:34.480
one of the questions people sometimes ask, and it's usually a manager is asking
572
00:41:34.519 --> 00:41:39.360
about this. They will ask,
where's the research that having five people at
573
00:41:39.400 --> 00:41:44.639
one thing is better? And I
want to reverse that question, where's the
574
00:41:44.679 --> 00:41:49.440
research that having five people working separately
is better? Because it would be the
575
00:41:49.480 --> 00:41:55.079
same exact research. But you go
ahead and separate people without having the research.
576
00:41:57.199 --> 00:42:00.079
So why are you asking about research
about change the way you do things?
577
00:42:00.320 --> 00:42:06.440
And this is now getting to human
nature. We really feel the way
578
00:42:06.440 --> 00:42:08.800
that we are doing things is the
way we should be doing things. It's
579
00:42:08.920 --> 00:42:15.000
really rare in most organizations to get
meaningful change, and it's because of these
580
00:42:15.079 --> 00:42:24.599
dogmatic approaches. I do a little
workshop on dogma and every phrase of dogma
581
00:42:24.639 --> 00:42:30.000
that you hear about these kinds of
things. For example, when I used
582
00:42:30.000 --> 00:42:34.360
to hear it a place I worked. We can't do test driven development because
583
00:42:34.400 --> 00:42:37.639
it takes twice as long. You
have to write twice as much code.
584
00:42:37.800 --> 00:42:43.599
Well, that is totally not correct. That's dogmatic. It's that we jump
585
00:42:43.679 --> 00:42:47.639
to that conclusion because it's obvious and
easy. Let's just keep doing things the
586
00:42:47.639 --> 00:42:52.119
way we're doing it. We're under
pressure to get the work done, so
587
00:42:52.400 --> 00:42:54.800
let's not think about new better ways. We just need to get the work
588
00:42:54.840 --> 00:42:59.800
done. This is problematic. I
have no easy solution. By the way,
589
00:43:00.440 --> 00:43:04.000
you know, if I could make
things the way I wanted them to
590
00:43:04.039 --> 00:43:07.199
be, the managers would be coming
to the people doing the work and saying,
591
00:43:07.239 --> 00:43:10.000
look, you're the experts here.
Let's just make sure we're getting better
592
00:43:10.079 --> 00:43:15.679
every day. Let's find some way
to become better at doing our work,
593
00:43:15.079 --> 00:43:20.239
better at working as a as an
organization, better at getting good results.
594
00:43:21.360 --> 00:43:24.079
Let's all put all of our brains
on that. Let's do that. It's
595
00:43:24.119 --> 00:43:29.719
a rare manager that'll do that.
It's interesting because I'm sitting here thinking about
596
00:43:30.039 --> 00:43:34.840
I used to be a teacher,
and it seemed to me that, of
597
00:43:34.880 --> 00:43:38.760
course, it depended on the project
or the assignment. Some tasks were better
598
00:43:39.039 --> 00:43:44.159
done individually. But I'd say for
the most part, when you put kids
599
00:43:44.199 --> 00:43:49.280
into groups of just you know that
hands on experiential learning, it seemed to
600
00:43:49.360 --> 00:43:52.519
me that that's when the most effective
learning took place. They were helping each
601
00:43:52.519 --> 00:43:58.559
other, they were teaching each other. It wasn't just the one teacher sharing
602
00:43:58.840 --> 00:44:01.480
you know, quote unquote all the
knowledge, because the kids were able to
603
00:44:01.480 --> 00:44:06.800
connect with each other in ways that
I think spoke to their understanding. And
604
00:44:06.880 --> 00:44:12.119
so yes, it's just interesting to
think of that in an actual workplace and
605
00:44:12.159 --> 00:44:19.119
putting developers together and letting them learn
with each other and share their background knowledge
606
00:44:19.159 --> 00:44:22.440
with one another that I think connects
in ways that you can't get when you
607
00:44:22.519 --> 00:44:27.800
work alone. Well, you make
a really good point here, and that
608
00:44:27.960 --> 00:44:31.760
is that My overarching concept here is
we've got a lot of smart people in
609
00:44:31.840 --> 00:44:37.320
software development. We're going to have
many different points of view on how we
610
00:44:37.360 --> 00:44:40.800
should go about doing things. There's
no one right way. So if we
611
00:44:40.880 --> 00:44:45.039
are trying it so well. I
read a book recently. I'm not sure
612
00:44:45.119 --> 00:44:50.239
if it's maybe it's called Think Again, but I've read three or four books
613
00:44:50.239 --> 00:44:57.760
that are closely related where they quote
some somebody to saying something like, if
614
00:44:57.840 --> 00:45:01.000
you do well in school, you're
going to do well at doing things the
615
00:45:01.000 --> 00:45:05.880
way we used to do things.
So this is sort of the issue we're
616
00:45:05.880 --> 00:45:12.280
not teaching how to move into a
better future. We're teaching about what somebody
617
00:45:12.360 --> 00:45:15.880
thinks is good about the past,
and that's what we should learn to do.
618
00:45:15.159 --> 00:45:21.599
So we're not learning to be good
at innovating beyond. We're learning how
619
00:45:21.639 --> 00:45:24.719
to use what somebody else did.
You know, you have the famous saying
620
00:45:24.760 --> 00:45:29.599
from Newton. You know that you
know that he was standing on the shoulders
621
00:45:29.599 --> 00:45:32.639
of giants, but you know he
himself was a massive giant. And of
622
00:45:32.679 --> 00:45:37.440
course I think he knew what he
knows is just going to be for someone
623
00:45:37.440 --> 00:45:43.119
else's to stand on his shoulders,
because he's not the end result. But
624
00:45:43.159 --> 00:45:45.719
I think that that's sort of where
it's at. It's like, we can
625
00:45:45.800 --> 00:45:51.280
learn from what came before, but
he had to take it beyond. We
626
00:45:51.320 --> 00:45:55.639
need to take it beyond. Wherever
we're at, there's a better and most
627
00:45:55.639 --> 00:46:00.400
of the organizations are going to be
really frank about it, are very poor
628
00:46:00.119 --> 00:46:05.639
at being effective at what they do. The beauty of software development is it
629
00:46:05.719 --> 00:46:08.800
is so easy to make money with
software development. We're not too worried that
630
00:46:08.880 --> 00:46:15.599
what we're doing is awfully ineffective,
So being efficient or being productive aren't interesting
631
00:46:15.679 --> 00:46:20.559
to me. Being effective is interesting
to me. So the question how can
632
00:46:20.599 --> 00:46:23.639
we be effective with five people on
computer is certainly one that I would be
633
00:46:23.639 --> 00:46:27.800
happy to explore, and I often
do. I have a talk that I
634
00:46:27.960 --> 00:46:31.000
do called a Power of Flow,
Software Teaming and the Power of Flow,
635
00:46:31.599 --> 00:46:37.239
which is where I explore this concept. Well, we have a couple questions
636
00:46:37.599 --> 00:46:40.360
as we're winding down for you.
But so when we've talked a lot about
637
00:46:40.400 --> 00:46:45.039
how to make this effective and things
going well, but let's flip that a
638
00:46:45.079 --> 00:46:50.320
little bit and talk about some of
the challenges. So what have you found
639
00:46:50.360 --> 00:46:54.880
to be some of the biggest challenges
when you try this approach to programming?
640
00:46:57.199 --> 00:47:00.199
Well, this is we're humans.
That's one of the biggest challenges. There's
641
00:47:00.320 --> 00:47:07.719
nothing about this that's going to be
necessarily easy for everybody. I have had
642
00:47:07.760 --> 00:47:09.719
a few teams I've worked with where
I went in and they picked up on
643
00:47:10.079 --> 00:47:15.960
working well together almost immediately. I
had one team that we really only had
644
00:47:15.000 --> 00:47:19.360
a couple hours. We went in, I did a rapid fire intro.
645
00:47:19.639 --> 00:47:22.000
We started working on some bugs because
they didn't even have time to practice on
646
00:47:22.039 --> 00:47:29.000
something that was easy, you know, like an exercise that wasn't work and
647
00:47:29.039 --> 00:47:30.679
they had a couple they had a
bunch of bugs. They had all long
648
00:47:30.679 --> 00:47:34.360
the list of bugs, and I
said, well, pick the easiest bug
649
00:47:34.360 --> 00:47:36.679
you got, let's work as a
team on it. By the end of
650
00:47:36.679 --> 00:47:39.559
the two hours or three hours they
were running, they were just they were
651
00:47:39.599 --> 00:47:42.960
pulling the things off. And I
said, how long does it normally take
652
00:47:43.000 --> 00:47:45.880
to get a bug fixed? Three
or four days, a couple of weeks.
653
00:47:45.119 --> 00:47:49.960
We did three or four in that
two hours because all the brain powers
654
00:47:50.000 --> 00:47:54.840
focused at the same time. So, yeah, there we go. This
655
00:47:54.920 --> 00:47:59.519
is a human thing. Some people
I've worked with some people who just can't
656
00:47:59.559 --> 00:48:01.639
do this. They're going to have
a heck of a time working with other
657
00:48:01.679 --> 00:48:07.960
people, either because of their nature
or because they aren't going to allow themselves
658
00:48:07.280 --> 00:48:13.519
to be to challenge to move beyond
what they're currently capable of doing so.
659
00:48:13.599 --> 00:48:15.360
And there are many things you get
in the way. One thing is,
660
00:48:15.559 --> 00:48:17.800
if you want me to share a
couple ideas of things that get in the
661
00:48:17.800 --> 00:48:22.400
way, somebody who thinks they know
it all is going to say, no,
662
00:48:22.519 --> 00:48:24.199
that won't work all the time.
No, that's not how we should
663
00:48:24.199 --> 00:48:27.039
do it. No, let's do
it. I'm getting frustrated with this.
664
00:48:27.519 --> 00:48:30.679
Well, it's like learning to be
patient is an important part of this.
665
00:48:31.519 --> 00:48:34.679
That's what I often tell people.
You know, when you if you're old
666
00:48:34.760 --> 00:48:37.679
enough to have kids and you have
a couple of little kids, you love
667
00:48:37.679 --> 00:48:40.719
them to pieces and you want to
be really patient with them, but often
668
00:48:40.760 --> 00:48:45.599
we lose our patient. But when
you become a grandparent, you've learned all
669
00:48:45.639 --> 00:48:47.480
those lessons, and now you've got
your grandchild, you're going to be a
670
00:48:47.519 --> 00:48:51.320
lot more patient with them. You're
going to listen to them, you can
671
00:48:51.440 --> 00:48:53.639
hear what they have to say,
and you're going to try to help them
672
00:48:53.679 --> 00:48:58.679
become better thinkers or whatever it is
you're you know you want for them.
673
00:48:59.119 --> 00:49:02.880
So I tell everybody skip the children
part, just move right on to grandchildren.
674
00:49:04.159 --> 00:49:07.920
That's the way learn to be patient. But I practice being patient myself.
675
00:49:07.079 --> 00:49:13.039
I'm easily frustrated, very impatient person. So even to this day,
676
00:49:13.079 --> 00:49:15.559
my wife will tell you we collaborate
on things. She's an artist, she
677
00:49:15.599 --> 00:49:20.360
writes children's books, and sometimes I
help her with something she's got to do,
678
00:49:21.400 --> 00:49:23.840
and I lose my patience quickly.
I'm not you know, I'm not
679
00:49:23.960 --> 00:49:28.800
even close to perfect. But even
you know, in this close relationship we've
680
00:49:28.800 --> 00:49:31.760
been married forty years, that have
plenty of time to become highly dysfunctional.
681
00:49:32.039 --> 00:49:37.360
I'm still working on being as functional
as possible with her, Like don't I
682
00:49:37.400 --> 00:49:40.400
try not to lose my patience.
I practice that better, just keep my
683
00:49:40.440 --> 00:49:44.480
mouth shut for a while, and
things like that. So that's another So
684
00:49:44.519 --> 00:49:47.559
there's another point. We don't need
to express every idea. We have one
685
00:49:47.599 --> 00:49:51.360
thing that often gets in the way
of a team of five people. Some
686
00:49:51.519 --> 00:49:53.119
onebody person has an idea, someone
else has an idea. All of a
687
00:49:53.119 --> 00:49:57.519
sudden, we got ten ideas to
try. What I like to suggest,
688
00:49:57.599 --> 00:50:00.119
is you the first one that comes
up, you try it. If after
689
00:50:00.159 --> 00:50:05.000
that someone's got another idea, we
try it. We try all the ideas.
690
00:50:05.239 --> 00:50:08.280
That's one of the issues I've seen
is teams stop. You know,
691
00:50:08.280 --> 00:50:10.880
if somebody's got an idea, they
try it good enough and they go on.
692
00:50:12.320 --> 00:50:15.320
We don't get to the better ideas. Often if we try two ideas,
693
00:50:15.440 --> 00:50:19.440
we'll getting an even better third idea. So those are just some examples.
694
00:50:19.760 --> 00:50:22.559
Somebody wants to bully their way through
it. It's not good. Somebody
695
00:50:22.639 --> 00:50:24.519
won't share their ideas, it's not
good. We have to learn as a
696
00:50:24.519 --> 00:50:29.800
team to draw the best out of
each person. And there's a lot to
697
00:50:29.880 --> 00:50:34.440
this, very straightforward, very nice. Yeah, I was thinking about who
698
00:50:34.480 --> 00:50:37.400
I would be, and I'm pretty
sure i'd be the impatient one, as
699
00:50:37.440 --> 00:50:42.079
they were, especially like if I'm
not typing, like yeah, like I
700
00:50:42.159 --> 00:50:45.440
like using you know, VS Code
shortcuts and stuff like that. And so
701
00:50:45.760 --> 00:50:50.159
when I'm typing with somebody and I'm
watching them and they're doing something and I'm
702
00:50:50.159 --> 00:50:52.960
like, oh, you could do
so much faster, like I get impatient
703
00:50:52.159 --> 00:50:57.000
when it really doesn't matter that much, you know. So I think i'd
704
00:50:57.000 --> 00:51:00.679
be the impatient one, and I'd
have to learn how to give up some
705
00:51:00.719 --> 00:51:05.840
of that control. So well,
recognizing that is the beginning point. It's
706
00:51:05.920 --> 00:51:09.079
like, once we recognize it,
then we can catch ourselves. Oh I'm
707
00:51:09.119 --> 00:51:14.239
being impatient? What's triggering the impatience? And when somebody isn't typing very well.
708
00:51:14.239 --> 00:51:16.840
We had somebody you know what they
do, the you know, two
709
00:51:16.880 --> 00:51:22.760
finger type, and they hated typing
in front of everyone because they felt it
710
00:51:22.800 --> 00:51:27.039
was slowing things down. What we
found was that the typing is not the
711
00:51:27.039 --> 00:51:30.320
bottleneck. You know, if you're
really fast at typing in bad ideas,
712
00:51:31.000 --> 00:51:37.079
yeah, that's that's not necessarily that
big of a benefit learning how to analyze
713
00:51:37.079 --> 00:51:40.039
what we're doing as we do it, because it's in the doing of the
714
00:51:40.079 --> 00:51:44.880
work that we learn the work that
we need to do, it's not talking
715
00:51:44.920 --> 00:51:47.559
about it. So you know,
getting something into the computer that we can
716
00:51:47.639 --> 00:51:52.480
see working quickly is not a bad
thing. But yeah, learning to be
717
00:51:52.559 --> 00:51:55.239
patient, Yeah, that's that's that's
a challenge for a lot of us.
718
00:51:57.559 --> 00:52:00.760
Well, this has been great.
I've learned a ton. Really excited for
719
00:52:00.800 --> 00:52:06.159
this episode to come out and for
everybody to get to hear it before we
720
00:52:06.599 --> 00:52:09.039
finish up. Do you have any
final thoughts. Well, for one thing,
721
00:52:09.639 --> 00:52:13.599
we do have a conference that we
try to do every year. Because
722
00:52:13.639 --> 00:52:16.239
COVID we kind of cut back.
We're going to try and do one in
723
00:52:16.280 --> 00:52:19.599
April, but it looks like it's
going to have to move later in the
724
00:52:19.639 --> 00:52:23.239
year. We're going to do a
live session online in April I think it's
725
00:52:23.840 --> 00:52:28.880
eleventh or twelfth. Of course,
I do workshops on this, and I
726
00:52:28.920 --> 00:52:31.760
travel over the world doing this.
I'm always looking for people who want to
727
00:52:31.840 --> 00:52:35.320
have me come in and do a
workshop, but not to make it any
728
00:52:35.320 --> 00:52:38.199
more of an advertisement. I'm also
happy to help in any way I can.
729
00:52:38.920 --> 00:52:43.280
You've mentioned my book enough times that
if anybody wants to learn a little
730
00:52:43.280 --> 00:52:46.199
bit more, you can easily find
that. And I often do free sessions,
731
00:52:46.880 --> 00:52:51.880
not every week or every day,
but I'll post it in LinkedIn or
732
00:52:52.079 --> 00:52:55.519
X as they call it. Now, you know, I've got this thing
733
00:52:55.559 --> 00:53:00.480
coming up on Tuesday or whatever this
week. This probably won't come out time.
734
00:53:00.679 --> 00:53:04.440
I'm doing one on Friday. Did
one last Friday on dogma? Like
735
00:53:04.480 --> 00:53:07.719
what is dogma? Why is it
a plague for us? How do we
736
00:53:07.760 --> 00:53:09.360
analyze it? And what do we
do about it? And I like to
737
00:53:09.400 --> 00:53:13.880
do things like that. Thanks once
again, Woody, We really appreciate your
738
00:53:13.920 --> 00:53:17.239
time. Follow whatdy on X check
him out on LinkedIn. You can find
739
00:53:17.280 --> 00:53:20.960
him on YouTube as well. We'll
put all those links in the show notes
740
00:53:21.000 --> 00:53:24.679
said, and then also check out
his book and read that. It's also
741
00:53:24.880 --> 00:53:28.920
super helpful. So, guys said, I'm excited for everybody to get to
742
00:53:28.920 --> 00:53:32.400
hear this because I have I listened
to a lot of tech podcasts, but
743
00:53:32.719 --> 00:53:36.719
this is a new topic that I
really haven't heard before. So I'm excited
744
00:53:36.719 --> 00:53:38.760
for everybody to get to hear it. Oh, thanks money, thank you,
745
00:53:40.159 --> 00:53:45.000
thanks for listening to this episode of
the DEVLFE edition of the Angular Plus
746
00:53:45.039 --> 00:53:47.320
show. Join us for the meetup
on the second and fourth tuesdays of the
747
00:53:47.360 --> 00:53:52.360
month. The second Tuesday is in
Spanish, the fourth in English. You
748
00:53:52.400 --> 00:53:55.840
can also find us at angularcommunity dot
net or at meetup dot com for more
749
00:53:55.880 --> 00:54:01.760
info. Thank you for listening to
the dev Life an erngiecomf podcast. We
750
00:54:01.760 --> 00:54:06.960
would like to thank the ngcomp organizers, Joe EAMs and Aaron Frost, our
751
00:54:07.000 --> 00:54:12.119
sponsors, and our podcast editor and
audio engineer, Patrick Hayes. You can
752
00:54:12.199 --> 00:54:15.079
hire him and find him everywhere on
social media at pat John Hayes. This
753
00:54:15.280 --> 00:54:20.480
podcast was mixed and mastered by Spoonful
of Media. You can find out more
754
00:54:20.480 --> 00:54:24.000
information about their work and the services
that they offer by going to spoonful ofmedia
755
00:54:24.079 --> 00:54:35.679
dot com.