Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:09
Like the whole point is
0:12
to learn a system of thinking,
0:14
like to learn how to
0:16
analyze how to like pick out
0:18
what's happening and identify your
0:20
problem and then to implement a
0:22
solution that fits your needs.
0:24
Welcome, friends, to the modern .NET
0:26
Show, the premiere .NET podcast
0:28
focusing entirely on the knowledge, tools
0:30
and frameworks that all .NET
0:32
developers should have in their toolbox.
0:35
We are the go -to podcast
0:37
for .NET developers worldwide and
0:39
I am your host, Jamie Goprodma
0:41
and Taylor. In this episode,
0:43
Harrison Foroni joined us to
0:45
talk about his journey from
0:47
being an English major to
0:49
a self -taught programmer and instructional
0:51
author focused on accessible tech
0:53
education. Harrison also talked
0:55
about his book, Learning Design Patterns
0:57
with Unity, which is designed as
1:00
a practical guide for video game
1:02
development using well -known patterns and
1:04
emphasizing the importance of quick wins
1:06
in learning. Like we do so
1:08
much work in the later parts
1:10
of each chapter with like pattern
1:13
variations and customizations because I want
1:15
I want readers and students and
1:17
learners to like look at it
1:19
look at the first you know
1:21
70 % and be like oh but
1:24
what oh oh we're gonna talk
1:26
about what ifs fantastic because
1:28
I have a lot of what
1:30
ifs anyway without further ado
1:32
let's sit back open up a
1:34
terminal type in .NET podcast and
1:39
we'll dive into the core
1:41
of modern .NET so
1:44
Harrison welcome back to the show
1:46
it's been like three years my goodness
1:48
I know it's been it's been
1:50
a while it's been a really long
1:52
time you you were you were
1:54
approaching another milestone for like listeners in
1:56
the podcast last time I like
1:58
keep coming on at these odd,
2:00
odd like milestones. I
2:04
mean, that's totally fine with me. If
2:06
you want to be on the show
2:08
after a milestone, that's cool. Well, I
2:10
wanted to congratulate. That's awesome. You have
2:12
so many listeners and you got the
2:14
new MVP thing, didn't you? Did you
2:16
get rid of it? Yeah, yeah, thanks
2:19
for that, yeah. So for the context
2:21
for the listeners, we're recording this August
2:23
8th, 2024. Only
2:25
a few weeks ago, I announced that
2:27
we hit a million, over a million downloads.
2:29
So thank you, everyone, for that. And
2:32
I've been renewed as a Microsoft MVP
2:34
for the third time. So, yeah, getting
2:36
closer and closer to that blue disk
2:38
with five years on it. You get,
2:40
is it like, is it like working
2:42
at Blizzard? Do you get like a
2:44
different color sword every time you hit
2:46
a milestone? So no,
2:48
as far as I'm aware, you get
2:50
these these wonderful like frosted disk things with
2:52
like a year that you're made the
2:55
MVP. And then when you get to five
2:57
years, you get like a blue one.
2:59
And then that says five years. And then
3:01
when you get to 10, so it's
3:03
every multiple of five, you get one that
3:05
says whatever your multiple of five is,
3:07
like five, 10, 15, 20, that kind of
3:09
thing. Yeah, it's pretty cool. It's pretty
3:11
cool. That's awesome. Well, congratulations. Thank you very
3:13
much. Thank you very much. But
3:16
yeah, so Harrison, for the folks
3:18
who perhaps haven't heard your previous appearance,
3:20
which was episode 87, where we're
3:22
thinking this is going to be episode
3:24
156. So you're almost like double
3:26
from last time. Yeah, we're almost there.
3:29
Yeah, right. So for the folks
3:31
who didn't catch that episode, I'm wondering
3:33
would you be able to sort
3:35
of give everyone a bit of like
3:37
an elevator pitch about you and
3:39
what you do, that kind of thing?
3:41
Sure. I went,
3:43
well, I started out as
3:45
an English major. I found
3:47
programming kind of halfway through
3:49
that a long, long time
3:51
ago, went
3:53
into game development, went into
3:55
iOS development, worked at that
3:58
for a few years, and
4:00
then it. kind of stumbled
4:02
into a instructional author teaching
4:04
kind of path. I
4:06
can't remember if it's like
4:08
WWDC for the Apple conference, the
4:10
yearly Apple conference. I think it was
4:12
in like 2014 I think and someone at LinkedIn
4:14
was very nice and was like if you're gonna
4:16
be there would you like to you know live
4:18
blog? I said sure
4:20
and then I started making
4:23
programming courses for LinkedIn
4:25
and eventually started writing books
4:27
for Unity and for
4:29
doing tutorials for like iOS and
4:31
Swift UI and Swift programming language
4:34
in general and now now I'm
4:36
pretty much all in
4:38
on Unity and Swift for the
4:40
past few years. So
4:43
a lot there's there's a broad
4:45
spectrum but that's you know I
4:47
literally just make educational content and
4:49
try and try and make people's
4:51
lives a little bit easier because
4:53
for the most part even though
4:56
I started programming in in college
4:58
I didn't actually do
5:00
very much computer science so
5:02
I was I still
5:04
am largely self -taught so I
5:06
figured it would be it would
5:08
be a logical connection to
5:10
target that audience and help people out so they didn't
5:12
have to do what I did. So
5:16
what I often find is
5:18
folks who didn't go down that
5:20
academic route of taking like
5:22
a comp side degree or a
5:24
you know software engineering degree
5:26
or anything like that when they
5:28
come around to making their
5:30
educational content because they have a
5:32
a slightly different background to
5:35
pull from I often find that
5:37
those folks are a little bit better
5:39
at sort of creating that educational content
5:41
getting that idea across because it's a
5:43
case of less a case of hey
5:45
here's the math behind why it all
5:47
works and here's the theory behind all
5:49
and it's more a case of right
5:51
let's get you to the point where
5:54
you're making something and doing something immediately
5:56
right yeah because I feel like when
5:58
you're teaching yourself you have to to that
6:00
point very quick, don't you? Because otherwise, you're
6:02
not going to get anywhere, right? Oh,
6:05
yeah. You have to get those quick
6:07
wins early on. Like, our brains need that,
6:09
you know, hit a dopamine that's like,
6:11
ooh, we made something, you know, we created
6:13
life. The program ran and printed out
6:15
10. You got to
6:17
get there real quick. Absolutely.
6:22
Yeah, I find that too. You can
6:24
tell a lot of times. And again,
6:26
I kind of wish I had done,
6:28
you know, computer science theory, because I'm,
6:30
you know, I still struggle with like,
6:33
algorithms, like data structures
6:35
and algorithms are not my strong suit.
6:37
I keep, you know, I keep
6:39
plugging away, but like, there are definite
6:41
gaps in my, in my self
6:43
taught journey. But you can sort of tell by
6:46
the amount of assumptions that are in
6:48
the learning content that you take. And
6:50
you can usually pick out who's been
6:52
self taught and who's gone through academia,
6:54
because there's a lot of assumptions with academic
6:57
teaching. And there's much, hopefully
6:59
much less with people who are self
7:01
taught because they remember what it
7:03
was like to try and figure this
7:05
out on their own. Absolutely
7:08
agree. I agree on the, the little
7:10
wins. And they agree on being able
7:12
to identify perhaps sometimes those folks who
7:14
are self taught because of the way
7:16
that they're putting their content across. I
7:19
always tell people like, you know, I've
7:21
got a friend who's like, I want to
7:23
learn, you know, want to learn development,
7:25
and I want to learn to develop a
7:27
mobile app, and I want to learn
7:29
game development, and I want to learn three
7:31
different programming languages at once. And I'm
7:33
like, whoa, whoa, whoa. That's fantastic. You can
7:35
have all of those goals if you
7:37
like, but you want to make it what you
7:39
want to do is you want to make
7:41
that learning journey as easy as possible by
7:43
reducing the scope, right? You
7:47
don't want to be trapped in the
7:49
situation where you're like, I don't know whether
7:51
it's the language that I've maybe not learned
7:53
this bit, or maybe it's the tooling, or
7:56
maybe it's the process, or maybe, you know,
7:58
you don't want to be I'm
8:00
confused about what's broken. I
8:03
know that there's a certain
8:05
subset of people when they discover
8:07
software development and computer science
8:09
and stuff like that, they go,
8:11
oh my goodness, I'm gonna
8:13
install a Linux distribution, even though
8:16
my course details say you
8:18
have to use Windows. And I'm
8:20
like, whoa, whoa, whoa, whoa.
8:22
Just, I get it, absolutely. Linux
8:24
on the desktop is brilliant,
8:27
but also if you get stuck, your
8:29
teachers, tutors, lecturers, whatever, whoever's designed
8:32
that course, won't be able to
8:34
help you. Because he designed
8:36
the specific Windows. Who's gonna help you?
8:38
Yeah, right? Yeah, there's nowhere to
8:40
go to ask for help. That actually,
8:42
the same thing happened in my
8:44
C++ programming class. When I was first
8:46
getting introduced, there was a guy
8:48
that was so, like he was whip
8:50
smart at this and you could
8:53
just see his brain turning. And he
8:55
got so far ahead that we
8:57
couldn't help, like he couldn't get any
8:59
help. It's like, wow, okay. But
9:01
like, you figure it out, but you're
9:03
right, like when you're circling back to
9:05
like curriculum development, you're trying to take
9:07
away as many variables as possible and
9:10
to teach as broadly
9:12
and as like language
9:14
or hardware
9:16
agnostically as possible, I would
9:18
say. Because if you learn, like you said,
9:20
your friend could, all those disciplines that he
9:22
wants to learn and build and all the
9:24
projects he probably has in his head, the bones
9:26
are fairly similar if you start
9:28
at the right place. Yeah.
9:32
I mean, it's like
9:34
you said, it's
9:36
to do with curriculum development. When I
9:38
have this background in teaching and did
9:40
like a, out
9:42
of uni, I took a direction
9:44
where I was learning to
9:46
teach people. And
9:49
just like you're saying, right, you have to,
9:51
you can assume a certain amount of
9:53
knowledge or assume a certain platform that you
9:55
can bounce off of to be able
9:57
to provide these metaphors to be able. to
10:00
provide the information. But you also have
10:02
to remember that some folks aren't going to
10:04
know a great deal. So you might
10:06
be able to, you might have to sort
10:08
of bring people up to speed as
10:10
well. And that's a real challenge when you're
10:12
making any kind of decision as to
10:14
like, how are we both going to learn
10:16
this or whatever? Yeah,
10:18
no, it isn't. I mean, there's, there's a
10:21
fairly simple answer. I mean, it makes it
10:23
more complicated for the people making the resources.
10:25
But like, if you're as inclusive as possible,
10:27
which basically means you have
10:30
the least amount of like entry, like
10:32
barriers to entry or like obstacles
10:34
that someone would need to understand
10:36
or to have competencies in, you
10:38
end up including everyone by default, which
10:40
is wonderful. It makes it harder. Again,
10:42
it makes it harder for you as
10:45
the teacher, but it includes everybody and
10:47
it doesn't, it doesn't leave anybody wondering
10:49
anything. Totally, totally.
10:51
I remember back at
10:53
uni, so I mean, I
10:55
graduated, I often tell
10:57
people I graduated in
11:00
like the Triassic era. But
11:02
like, I
11:04
remember one of the first few
11:06
lecturers, one of the first few
11:08
lectures, sorry, at uni, I'm making
11:11
furious amounts of notes. And someone
11:13
turns to me and goes, don't
11:15
you know this already? And I'm
11:17
like, well, thanks, dude. You just
11:19
put me off of coming to this class
11:21
now. Well, what are you doing? That
11:25
would be the, that would be so
11:27
weird to have someone say that. Like,
11:29
I don't even know how I would be able to take that be
11:31
like, no, because if
11:34
we did, we wouldn't
11:36
be here. I'm confused. Right.
11:41
Did we miss something? Was
11:43
this the class where you're supposed
11:45
to already have taken the
11:47
class? Yeah. And you know, if we missed
11:49
that. Or are you not
11:51
telling me that you failed it and having to
11:53
take it again? Right? That's
11:55
a good point. I'll see what you're really
11:57
telling me is that you've already done all the
12:00
homework because he didn't pass the final last time.
12:02
So we're going to be friends, but
12:04
still a weird flex,
12:06
still weird. It
12:09
really is. It really is. Oh my
12:12
goodness. So that, I guess, leads us nicely
12:14
on to this. You were on the
12:16
show, you had a book last time, you
12:18
have a new book this time. Let's
12:20
talk about that, right? Yes.
12:23
So I'm trying to work my way up into
12:25
like a trilogy of like, you know, zero
12:27
to hero. But like the last book, and there
12:29
have been so many, there have been several
12:31
editions since then. But, you know, the first book
12:33
was very basic and like, we're going to
12:35
teach you how to, you know, program in C
12:37
sharp, but really we're going to, from scratch,
12:39
but really we're going to teach you how to
12:41
think programmatically
12:43
and to think in systems and to
12:45
think about how to put things together in
12:47
a way that, you know, makes sense
12:50
and, you know, is maintainable and flexible. And
12:52
we kind of introduce, you know, you
12:54
go from like, oh, we're going to write
12:56
our name all the way up to
12:58
like building a simple little like, unreal, unreal
13:00
tournament kind of game, if, you know,
13:02
we're dating, I'm dating myself with that reference,
13:04
but whatever, a little arena shooter. And
13:06
it's super fun. And so I was, I
13:08
get a lot of questions because
13:11
the publisher that I work with packed has
13:13
a discord server for the book. And I
13:15
started to get a lot of questions about
13:17
a year after I released, you know, like
13:19
the sixth or seventh edition or whatever it
13:21
was. And people were like, well, you
13:24
know, where do I go? Like, what do I
13:26
do now? Well, that's
13:28
a good question. I don't have a
13:30
great answer for you. You know, when
13:32
I give people, I had a little
13:34
like resource cheat sheet of like, because
13:36
like the last chapter in the book
13:38
in the in the old book has
13:41
like, here's next steps. And I had
13:43
some other ones too, if people wanted
13:45
to ask for them. And I started
13:47
thinking like, what, what would have been
13:49
useful to me in university and in
13:51
my actually in my like in my
13:53
first job when I was like a junior
13:56
programmer? And what would have helped me
13:58
the most? And it was really
14:00
easy to come up with the answer.
14:02
And it was like systems design.
14:04
I was like, okay, well, that's not
14:06
super helpful. Like what what concrete
14:08
tools could what it would have helped me
14:10
be better at my job faster? I
14:13
was like, Oh, design patterns, that's easy. That's
14:15
an easy design patterns and testing. I
14:17
was like, I don't really want to write
14:19
a testing book right now. But maybe
14:22
I will in the future. But design patterns
14:24
kind of jumped out. And
14:26
they do all the
14:28
things like they take like the
14:30
analytical soft skills that I was trying to
14:33
teach in my first book and kind of
14:35
took them further and took it out into
14:37
like this, you know, kind of macro view
14:39
of, you know, whatever you're building, it can
14:41
be an iOS application and be a game, it can
14:43
be, you know, whatever it can be a website if
14:45
you wanted. But
14:47
like how to think of
14:49
or how to think of
14:51
projects in terms of like
14:53
components and systems and how
14:55
to communicate effectively how to
14:58
reuse your code how to
15:00
just be a more efficient
15:02
programmer and like be able
15:04
to have enough, I guess, competency to like
15:06
have someone else look at your code and be
15:08
like, Oh, I see what you're doing. I
15:10
got it. Like we can we're talking, we
15:13
can communicate. And so I
15:15
started doing writing this
15:17
design patterns book and it
15:19
took me two and a
15:21
half years on and off.
15:24
It's a monster. It's like, I
15:27
don't even know if I think it's like 700
15:29
pages long, I think it's a a
15:31
it's heavy. It's a good it's
15:33
a good it's a good books. It's
15:35
a good shelf, you know, it's
15:37
a good bookend. If you don't read
15:39
it, it's fantastic at that. It
15:41
just sits there flattening your dollar bills
15:43
with it. Yeah, exactly. Or put
15:45
your put your external laptop on there,
15:47
your external screen, you know, if
15:49
you need it a little bit higher,
15:52
feel free. But yeah, so that's
15:54
that's where that came about. And
15:56
I was trying to like address
15:59
all the questions of where do
16:01
I go once I'm kind of
16:03
once I've got a handle on
16:05
a language and I want to
16:07
actually build something that works
16:09
and that works well, not just like
16:12
a prototype. So that's that's
16:14
kind of where the design patterns came in
16:16
and I love unity so much even,
16:18
you know, we don't have to talk about
16:20
all the craziness but I still love
16:22
unity and I still like it just because
16:24
I don't know maybe I'm too old
16:27
to change but I it's never it's never
16:29
let like I've never wanted to
16:31
jump ship right so I
16:33
chose that and C
16:35
sharp almost everything you know except
16:37
for friend classes is available and
16:39
I was looking through and I
16:41
was like great there's you know
16:44
maybe one book in the world
16:46
written in this you know kind
16:48
of market and it seems like
16:50
it's missing and it's funny while
16:52
I was writing the book
16:54
Unity started releasing
16:56
these little like
16:58
these PDF books
17:00
and one of them is like you
17:02
know here's five design patterns or
17:04
something that you know are really you
17:07
know helpful I was like a
17:09
ha see I see you've someone has
17:11
someone has someone has found the
17:13
niche they have found the gap and
17:15
so I kind of had to speed up
17:17
a little bit but I don't know
17:19
I always felt like the like
17:21
game design and development or
17:23
game programming specifically always miss this
17:25
and like you had to learn it some
17:27
mystical way like through your job or
17:29
through a mentor that you you know if
17:31
you were lucky enough to have one
17:33
that would teach you these you
17:36
know secret arts and yeah
17:38
so I I said about and
17:41
like I don't know this
17:43
was I think this was
17:45
the hardest thing I've done
17:47
so far I got to
17:49
say so I guess a couple of
17:51
questions based off of that just for the
17:53
folks who rambled on I got so
17:55
excited now that's cool no it's cool it's
17:57
all good so for the folks who
17:59
listening in Um, can you tell them what
18:01
the, the name of the book is?
18:03
Cause we've sort of danced around it. We
18:05
haven't really. Yes. So it's called learning
18:07
design patterns with unity, very simple title. It's,
18:10
um, you can
18:12
get it on Amazon or
18:14
from packed and it's, we're using
18:16
unity 2023, uh, and C
18:18
sharp. And
18:21
yeah, it's all updated. It's all, it
18:25
all works for the current version that's out right now. And
18:29
let's see, we cover, I
18:31
think there's, I think
18:33
we cover 19 patterns. If I,
18:35
if I remember correctly, 18, sorry,
18:37
18 patterns and two bookend, two
18:39
bookend chapters. So, um,
18:43
you know, like if anyone's ever read, you
18:45
know, there's an original book called,
18:47
um, The Gang of Four. Yeah. The
18:49
Gang of Four. Yeah. And, uh,
18:51
like elements of reusable software, object oriented
18:53
software. I can never remember the
18:55
name because it's so long, but yeah,
18:57
The Gang of Four and they
19:00
have, you know, 20 something patterns and
19:02
then a guy named Robert Nistrom
19:04
came out, uh,
19:07
I want to say like
19:09
10 years ago and he
19:11
wrote a really, really comprehensive,
19:13
um, book about additional patterns that
19:15
are specific to game programming, but
19:17
it's in C plus plus and
19:19
it's, it's really good, but it's
19:21
more on theory and like example
19:23
snippets. There aren't any actual projects. So
19:27
in game programming from what,
19:29
I mean, my, this is my
19:32
journey, but it, I've confirmed this
19:34
with, with loads of people. It's
19:36
like everyone tries to read these
19:38
two books together and, you
19:40
know, somehow learn you know, how
19:43
to be a better software
19:45
architect or a software engineer with
19:47
gains. And it's really difficult because it
19:49
doesn't, it's hard to translate. It's
19:51
like literally trying to translate like a
19:53
different language. And you know, some
19:56
things don't work. Some things aren't directly
19:58
applicable. Some things can't be. one
20:00
-to -one translated. And
20:03
Unity is a
20:05
special case, one because
20:08
it's built on a component
20:10
design pattern. So it's already doing its
20:12
own thing, and you kind of have
20:14
to learn how to get everything working.
20:16
C -Sharp has its own way of working,
20:18
Unity has its own way of working,
20:20
and then they both work together in
20:22
a third way. And
20:25
this was all really... The research
20:27
took the longest time in the
20:29
testing because I wanted to make
20:31
sure that the patterns I
20:34
was teaching were you could
20:36
actually test them be like, oh, this is how
20:38
it's supposed to work. With a little tweak here,
20:40
a little tweak there for the engine, that
20:44
it would still be the correct content. And
20:48
I hope that's what we ended
20:50
up with. I mean, we'll see. It's
20:52
only been out for, I think
20:54
now it's two months, but by the
20:56
time this releases, it'll be more than
20:58
that. But it came out at the
21:00
end of, if I remember, May. So
21:03
basically June 1st.
21:05
Right. See,
21:08
what I really like, and we'll...
21:11
Actually, we'll circle back to the
21:13
thought I was just about to
21:15
have. Let's
21:18
talk about the... You
21:20
said there's the other design
21:22
pattern the book, and
21:24
it's very C++ -y and
21:26
very... Yeah. Yeah. That's right.
21:29
It feels like it reads... I
21:31
haven't read it, so from your
21:34
description, I'm inferring, right? It feels
21:36
very much like it's almost like
21:38
a reference manual, right? Oh, you've
21:40
heard of this design pattern here
21:42
is an example implementation, right? Yeah,
21:44
or like, you definitely have to
21:46
know about design patterns because the
21:49
ones he kind of puts in
21:51
there are new ones. They're not
21:53
in the gang... Most of them
21:55
are not in the gang of
21:57
four. the
22:00
game of Fortech. So yeah, it's definitely
22:02
like a secondary, it's almost like an appendix
22:04
just for game programmers. But you know, it's
22:06
a it's a big book. And
22:09
but yeah, again, it's in
22:11
C++. And, you know, if you're in Unreal,
22:13
some of it will like a lot of
22:15
a lot more of it will translate. But
22:17
again, even if you're in Unreal and you're
22:19
in that development environment, it's not going to
22:21
take into account like blueprints or any of
22:23
the other component, components
22:26
that you can use. So even if you're
22:28
doing that, it's, you know, the book
22:30
is really, it leaves
22:32
a lot to, to you,
22:34
to the reader to kind of make the
22:36
intuitive jumps into actual implementation. And that's
22:39
where I think a lot of people stumble
22:41
and get frustrated. Sure,
22:43
sure. Because when you're learning, like we
22:45
said at the beginning, right, when you're
22:47
learning something new, you've got to make
22:50
it as easy as possible to get
22:52
to that, that quick win, right? And
22:54
the entirety of your learning journey can
22:56
be made up almost exclusively of quick
22:58
wins. But the great thing about them
23:00
is they stack. Yeah, oh, absolutely. Oh,
23:02
yeah. And then, and they stack so
23:04
quickly and stack so well. And that's
23:06
how we get to get to like
23:08
the end of a course, and you
23:10
get the final exam, right? You've already
23:12
done it a whole bunch of times.
23:15
All you're doing there is just
23:17
proving that you can recreate that
23:19
thing, right? And I think that
23:21
goes back to curriculum design, right?
23:23
A good curriculum for learning anything,
23:25
right? Learning to walk, learning math,
23:27
learning English literature, learning software development
23:30
with whatever programming language is, it
23:32
starts with, let's go with, like
23:34
you said, right, we'll start with
23:36
writing your name on the screen,
23:38
right now that you've written your
23:40
name on the screen, maybe we
23:43
can introduce variables and say, well, we can
23:45
hard code it to say Harrison. But maybe
23:47
we can have a variable that you can
23:49
change to Jamie and then rerun it. And
23:51
then we can change it to, I don't
23:53
know, Michael and rerun it or change it
23:55
to Sarah and rerun it. And then that's
23:57
teaching a little bit about variables and stuff.
23:59
That's another quick win, boom, boom, boom,
24:01
boom. Because like you said, you need
24:03
that dopamine hit of, wow, I've achieved
24:05
something, I've achieved something as fast as
24:07
you can. Right,
24:09
like I don't know enough about neurochemistry,
24:11
but like I really feel like
24:13
I get it stamped harder in my
24:15
brain like a new concept if
24:17
I get that little hit of like,
24:19
ooh, that worked. Like I feel
24:21
good about that. That's why we play video
24:24
games in the first place. But like when
24:26
you're learning to program it's almost the same
24:28
thing. If you can make it like that.
24:31
And like each chapter, so I wrote
24:33
my book, I decided not to have
24:35
one project through the whole book because
24:37
one, it would have
24:39
been very difficult to have one
24:41
single project that was naturally, or that
24:43
naturally needed all the design patterns
24:45
that I was teaching. Because that's kind
24:47
of the central point of the
24:49
book is like they are not all
24:51
applicable all the time. Right
24:54
tool for the right job. So
24:56
like I couldn't think, I
24:58
would have had to unnaturally inject
25:00
problems into a single game
25:02
that probably wouldn't have made sense.
25:05
So unfortunately my book, or
25:07
maybe fortunately it is more
25:09
of a reference book, but
25:12
you can pick up any chapter,
25:14
you get a white box starter project
25:16
and you get, you have the
25:18
little block set ups, you have a
25:20
client and you have like an empty
25:22
system and your job is to
25:24
build the design pattern into a workable
25:26
system from scratch. And like you
25:28
said, each little, you know, each couple
25:30
of pages you get a quick
25:32
win that you're stacking, stacking, stacking until
25:34
at the end you have a
25:36
almost fully ready like plug and play
25:38
system to take where, then do whatever
25:40
you want. You know,
25:42
it's not, I don't use any
25:44
art assets or anything crazy because
25:46
that, I feel like that always
25:49
clutters learning and especially with stuff that's more
25:51
intermediate or advanced. I feel like this stuff
25:53
is already hard enough. Like you don't need
25:55
to be worrying about audio like
25:57
to teach this. It's not, it's. not
26:00
necessary. But
26:03
yeah, those stacking those, stacking those wins
26:05
is definitely the way I prefer to
26:07
learn, which, you know, then makes it
26:09
my preferred way to teach, I suppose. Totally.
26:13
Yeah. And like, if someone's listening to this
26:15
and going, no, I want to go from
26:17
no code on the way to the end
26:19
goal without having any quick wins in the
26:22
middle, that's totally fine too, if that's how
26:24
you want to do it. But I agree with
26:26
you, Harrison, I'm very much a quick win
26:28
type of person, right? When I'm learning a
26:30
new programming language or using a new library,
26:32
I'm like, right, okay, I hate the defaults,
26:34
but show me how to get it running
26:37
with the defaults, and then I'll go change
26:39
it. Because once I've got it up and
26:41
running, I've achieved something, right? Whereas I don't
26:43
want to be sitting there for hours and
26:45
hours on end, just churning out code in
26:47
the hopes that eventually, when I
26:49
hit go, it will work. When you
26:51
hit run, it'll work. Yeah, yeah,
26:54
yeah. Yeah, that was the hardest thing.
26:56
Like, I kept finding solutions that
26:58
I would look at and be like,
27:00
all right, I mean, I understand
27:02
what's happening. But I don't
27:04
think I could realistically, like,
27:06
backward engineer explain this to
27:08
someone, to a student, like
27:11
to how you got here. Like, there
27:14
are a lot of missing
27:16
steps, a lot of insider information,
27:18
a lot of, you know,
27:20
hidden choices that you made. And
27:22
that was, that was really hard. There's
27:26
only so many times when you can wave your hands and
27:28
go, don't worry about this bit just yet. Yeah,
27:30
right? Like, you know, you know,
27:32
it happens occasionally when you have dependencies,
27:35
but like, almost all the time,
27:37
that's that seems to be either a
27:39
flaw in the understanding of the
27:41
theory or the flaw in the setup,
27:43
or the implementation. There are very
27:45
few things, at least in what I've
27:47
found with like systems design, where
27:49
you can't have a solitary, like
27:51
starting point, like almost from
27:53
scratch. Yeah,
27:57
that's the great the crazy thing about
27:59
about it's especially with systems design. One
28:01
of the things that I never really
28:03
understood at the time when I
28:05
was at uni, one of the semester
28:08
long courses we had to take
28:10
was on, it wasn't called systems design,
28:12
but it was on systems design.
28:14
And it was one of those sort
28:16
of, we'll almost ninja the knowledge
28:18
into you. And I didn't appreciate it
28:20
at the time and I didn't
28:22
get it at the time. But the
28:25
lecturer wasn't even a software developer,
28:27
right? We were all learning compsci and
28:29
different software development flavors, I guess. And
28:31
he was like, right then, let
28:33
me talk you through how I
28:35
built the fuel injection system for this
28:37
airplane. And we're like, what? What's
28:41
that software? Yeah. And what I didn't
28:43
realize at the time was that he was
28:45
talking through, right, we have a problem.
28:47
We have to get the fuel from this
28:49
end of the plane to that end
28:51
of the plane. It can't go too fast.
28:53
It can't go too slow. It has
28:55
to be warmed up along the way. It
28:57
can't stop and it can't freeze or
28:59
drop in temperature. We have to maintain pressure.
29:01
Although the outside pressure of the plane
29:03
is going to drop because we're going up.
29:06
And then it's going to come back
29:08
up because we're coming down. And like none
29:10
at the time, none of it made I ended
29:12
up passing the exam. But I was like,
29:14
what has this got to do with software development?
29:16
Because I just want to write code. And
29:18
then actually thinking back on it over the
29:20
last maybe, geez, I don't want to
29:22
say how long it is since I've
29:24
graduated. But let's put it this way.
29:26
If someone was born the year that
29:28
I graduated, they'd be more than an
29:30
adult now. But in the years since,
29:33
the more and more I think about
29:35
it, the more I'm going, wait, he's
29:37
actually teaching design, but from outside
29:39
of a software
29:41
development space. And
29:43
what I've actually done over
29:45
the last few years with my
29:48
own sort of practice and my
29:50
learning is I've been looking outside
29:52
of software for ways that other
29:54
people are applying the same knowledge
29:56
that we have within software development,
29:58
right? So It's come up a
30:01
whole bunch of times on the show already.
30:03
But one of the examples I give is,
30:05
you know the Konmari method for tidying up? Sure,
30:08
yeah. Clean cup. It
30:10
doesn't spark joy. Yeah, that's literally what
30:12
it is. Yeah, he's totally right. Yeah,
30:16
no premature optimization, no
30:20
unnecessary things that you'll
30:22
never need. Oh, that's
30:24
genius. I never thought of that. Yeah, my wife and I read
30:26
that book a couple of years ago and we're like, oh,
30:28
this is great. Yep. Oh,
30:31
here's another one. I was just
30:33
looking it up. If you heard
30:35
my little clickety -clacks, folks, I'm
30:37
so sorry. I couldn't remember the
30:40
name, but it's called Thinking in
30:42
Systems. It's by Danella Meadows. And
30:44
it's exactly what you're talking about
30:46
because the book is written for
30:48
what do you call it? Economics
30:50
and like societal structures and not
30:53
zoology, but what do we call
30:55
that? Like ecosystems, that's what it
30:57
is. And like how ecosystems function.
30:59
And it's such a great, like, you
31:01
know, it's not a super big book,
31:03
but man, that just opened my eyes
31:05
so much to have her talk about
31:07
like, oh yeah, we introduce some wolves
31:09
into the system and what happened. And
31:12
like with all the systems graphs. And
31:14
you're like, oh, all this,
31:16
like we could do this with software.
31:19
That chaos monkey, right?
31:21
Yeah. Yeah, yeah,
31:23
exactly. And you're like, oh, you're looking
31:26
at all the connections and like the
31:28
balances and counterbalances and the communication, like
31:30
the message of the stimuli being sent.
31:32
If that's, if you go back far
31:34
enough in software development and stimuli, not
31:36
events. And you're looking at it and
31:38
you're like, oh, I see. We're
31:40
all doing the same job. Absolutely.
31:43
Everything. See what you're doing. Everything
31:45
changes, everything stays the same, something
31:47
like that. Yeah, the more everything
31:49
changes, the more everything stays the
31:51
same. That's it, that's
31:53
it. The following is
31:56
a paid advertisement. Did
31:58
you know it's coming for -
32:00
application to contain 15 %
32:03
repetitive code just because of
32:05
metaprogramming limitations in the C -sharp
32:07
language? Why write boilerplate manually
32:09
when a machine can generate
32:11
it on the fly when
32:13
you compile? Enter Metalama, the
32:15
new metaprogramming framework for .NET.
32:19
Their C -sharp to
32:21
C -sharp template language
32:23
is simply amazing. Logging,
32:26
caching, memento, observability.
32:28
If it's repetitive, Metalama
32:30
can automate it. Visit
32:33
Metalama .NET today and learn
32:35
to automate your code
32:38
patterns with their three
32:40
addition. Remember, it's Metalama
32:42
.NET with only one
32:44
L. M -E -T -A -L -A
32:46
-M -A .NET What
32:49
I really like from the
32:51
way you've described it is using
32:53
Unity as a teaching tool,
32:55
because we've both said it a
32:57
couple of times. Those immediate
32:59
quick wins and how they stack
33:01
up. I'm kind of obsessed
33:03
at the minute with stacking things,
33:05
and I don't mean like
33:07
piling things up in it. I
33:09
recently read Atomic Habits, which
33:11
talks about habit stacking. I
33:15
was at a talk a
33:17
few days back at the
33:19
time of recording where someone had
33:22
said about skill stacking, which
33:24
is the same kind of idea.
33:26
You're just taking skills from
33:28
outside of your current interest and
33:30
applying those into it. This
33:32
person was, as a teenager, they
33:34
were into equestrian things, and
33:37
they got themselves a sports coach
33:39
to help with that. Then
33:41
they went and worked in the
33:43
serial industry and then worked
33:45
in the PR industry. Then when they
33:47
had a whole bunch of different industries and
33:49
when they came to start their own
33:52
business, they realized, hang on, the
33:54
stuff I did in the serial industry is customer
33:56
service. The stuff I did over
33:58
in the PR industry obviously PR, but
34:01
it's the interpersonal skills of being
34:03
able to talk to people. The
34:05
stuff I did in my sports
34:07
stuff with my equestrian coach, that's
34:09
personal development. We can apply all
34:11
of these to this one business
34:13
idea. I think that idea of
34:15
taking those disparate ideas and skill
34:17
stacking them is fantastic. But that's
34:19
beside the point. Let's get back
34:21
to what I was actually saying. You're
34:25
obsessed with stacking things. Absolutely.
34:27
What I really love about what
34:29
you're saying is using the visual tool
34:31
of unity to take care of most
34:33
of the wiring up of creating a
34:35
3D environment and creating that scene and
34:37
doing some of the difficult work so
34:39
that I as a reader or I
34:41
as a learner can then apply the
34:43
lesson you're trying to teach me and
34:45
make something happen. I can push the
34:47
button and then immediately, as long as
34:49
it compiles and I haven't done something
34:51
silly, but then I can compare it
34:53
to the code that's in the book
34:55
and go, all right, I've missed a
34:57
semi -colon or whatever. As soon as
34:59
I hit go, as long as it runs,
35:01
I literally have something that not only
35:03
is displaying on screen, but I can
35:05
interact with. I can grab a controller
35:07
and actually interact with it, right? Yeah.
35:12
That's one of the
35:14
main reasons that I
35:16
chose to teach C -Sharp
35:18
with Unity for beginners.
35:20
Exactly for that reason
35:22
because it's so immediate.
35:24
I feel like you can
35:26
be a visual learner and
35:28
you can have all different styles
35:31
of learning, but I feel
35:33
like when most humans see
35:35
things in motion, something
35:38
clicks between what you
35:40
tried to create and then it
35:42
starts to move or it starts
35:44
to work. If you see
35:46
it, something happens. It
35:48
just happens and you're like,
35:50
oh, okay. That's wonderful.
35:52
Let's give me some more of that.
35:54
I want more. that
36:01
was my approach to like the starter
36:03
projects. Not all design patterns have super
36:05
fun visuals behind them. Some of them
36:07
do, and some of them can be
36:09
applied to have those. But they're
36:11
not all you know applicable to like
36:13
having a character run around. You
36:15
know some of them are for like inventory
36:17
management. You know some of them are for
36:19
save systems that you know aren't super flashy.
36:21
But there's
36:24
still I still tried to
36:26
make especially with with using the Unity
36:28
editor tools and the components that
36:30
you have accessible like to build out
36:32
levels of abstraction that that lets
36:34
you get your hands in it like
36:36
you said that like make you
36:38
be able to go and change things
36:41
and to see it in action
36:43
as you're testing or something like that
36:45
because it really does seem to
36:47
bring systems alive. If it's not you
36:49
know if it's not immediately apparent it's like
36:51
oh somebody did a really cool combo. Like
36:54
you know there are a few design
36:56
patterns that do that. But but but
36:58
that's not the the prevailing use case
37:00
I would say. Right,
37:03
right. Okay yeah
37:05
and and that immediate
37:07
feedback is
37:10
we keep talking about it right? The immediate
37:12
feedback is incredibly important and especially if
37:14
you're just like reading through a physical book
37:16
right? You're working way through a book.
37:18
You maybe got to open on your desk.
37:20
You've got your laptop open and you
37:22
know you're leaning across it and you're going
37:24
to type this thing in and then
37:27
I'm going to hit go and the book's
37:29
fun to read but I can't say
37:31
oh wait, it's happening. Ah right. That's you
37:33
can't be that right? I get the
37:35
feeling now you really can't. It must be
37:37
similar to like in maybe the film industry
37:39
right? Because you can see as soon
37:41
as you finish editing something you don't
37:43
even have to edit the whole thing.
37:45
As soon as you well maybe now
37:48
with visual tools you can see it
37:50
as you're editing right? But you're seeing
37:52
it happen in real time and yeah
37:54
you can't be that right? Because like
37:56
when I started my programming adventures as
37:58
a It was with basic and we
38:00
were on a like a green screen,
38:02
right? The screen was black with green
38:04
text and there was no visual anything
38:06
no visual feedback You would sit and
38:08
type for hours you'd hit go and
38:10
it wouldn't work, right? And then you'd
38:12
be like, I don't understand right but
38:14
because it got nothing Yeah, and because
38:16
it was ephemeral as soon as you
38:18
hit go it would start interpreting it
38:20
because it was basic If it didn't
38:22
work or when you when you dropped
38:24
out that code listing didn't exist anymore
38:26
Yes, type it all back in again.
38:28
Oh Yeah, that's the
38:30
thing it's it's almost like it's like the
38:32
mental equivalent of like doing martial arts or
38:34
sports or something you get that like Agency
38:37
where it's not physical. It's
38:39
like ooh something came out
38:41
of my brain and made something
38:43
happen instead of Like oh my hand,
38:45
you know put the ball through
38:48
the hoop Yeah,
38:50
but there's still something very visceral about that
38:52
and like there's
38:55
This was one of the harder challenges to
38:57
to to balance was like who was I
38:59
writing the book for? because
39:02
at some point skill skill level and
39:04
competency comes into the equation when
39:06
you're trying to like get those Moments
39:08
to people to like the right
39:10
people that you're trying to get them
39:12
to right and It
39:15
was a weird balance between like well,
39:17
I'm gonna write this for people that
39:19
know a little bit like that no enough
39:21
of no enough C sharp to hurt themselves and
39:25
You know a little bit of unity and That's
39:28
about all you need like you
39:30
could even start this Just
39:32
from a purely like
39:34
I don't know anything about this But
39:36
I want to understand how systems work
39:38
because like we're not starting like everything
39:40
is provided Like you don't have to
39:43
imagine, you know, there's no there's no
39:45
hidden steps Right, so I mean that
39:47
wouldn't be the ideal target like that,
39:49
but you could totally do that, but
39:51
I I
39:54
Wrote it mostly for people that are
39:56
coming from C sharp or some kind
39:58
of object oriented language in unity is
40:00
kind of like the visual, I
40:04
don't know, the sugar, the flavor
40:06
for what we're doing. Because most
40:08
of the code in the book,
40:10
I'd say even probably above 90 %
40:12
could be taken to any other
40:14
C -Sharp application in .NET
40:16
if you were
40:19
working with object -oriented
40:21
systems. Yeah,
40:25
I think that's an important
40:27
lesson for folks to learn,
40:29
especially if they're in the
40:31
early part of their journey
40:33
is that you can take
40:35
the knowledge, right? Like I
40:37
could possibly teach someone, say,
40:39
a builder pattern, right? But
40:43
depending on where they are in
40:45
their personal journey of how I'm
40:47
learning about the way I learn,
40:49
they may go, cool, I will
40:51
learn this and be able to
40:53
repeat that code exactly as it
40:55
is. And that's fine.
40:57
But the problem is that it's not always
40:59
going to fit the actual problem you're trying
41:01
to solve, right? That maybe you're using a
41:03
different class name or whatever, right? But having
41:05
a visual tool that you can actually run
41:07
it and then go, oh, cool, yeah. So
41:09
I know enough C -Sharp, why don't I, and
41:11
this, I'm not saying this is in the
41:13
book, I'm not going to ask you if
41:15
this is in the book, why don't I
41:17
try and recreate this pattern somewhere else and
41:19
something completely different, right? Because that's the key
41:21
thing, right? Yeah, exactly. No,
41:23
that's, I spend so much time drilling
41:26
that in the book. It's like, I,
41:28
like the whole point is to learn a
41:31
system of thinking, like to
41:33
learn how to analyze,
41:35
how to like pick out
41:37
what's happening and identify your
41:39
problem and then to implement a
41:41
solution that fits your needs,
41:43
like the reader's needs, not your
41:45
needs. Like we do so much
41:47
work in the later parts
41:49
of each chapter with like
41:51
pattern variations and customizations because
41:53
I want readers and students and learners
41:56
to like look at it, look at
41:58
the first, you know, 70 % and
42:00
be like... like, oh, we're going to
42:02
talk about what ifs, fantastic, because I
42:04
have a lot of what ifs. The
42:07
what ifs are what I feel
42:09
like that's where the real skill
42:11
or the real tool is learned
42:14
that you can take into anything
42:16
else you're going to do with
42:18
software engineering. Right.
42:21
Right. So you talked about how
42:23
those, I think you said around, now
42:25
I may be misremembering because we've
42:27
talked about a lot of stuff so
42:29
far. So I apologize everyone who's
42:31
listening, but I think you said something
42:33
around 20. No. And yeah, there's
42:35
like 18, more or less evenly split.
42:38
Right. Between the three. Right.
42:41
And then, you know, that's only
42:43
about half, that's only about 60
42:45
% because there's 34, I think,
42:48
with the Gang of Four and
42:50
the game, the game programming pattern
42:52
book combined. Right.
42:54
Right. And I think that's an important
42:56
lesson for anyone who's learning anything.
42:58
Right. There's a quote that I use
43:00
in any of the talks that
43:02
I do, and it's Yamaoka, Tesshu, and
43:04
he says, what is it? Do
43:06
not think that this is all there
43:08
is wonderful teachings exist. The sword
43:10
is unfathomable. Right. Just because you're learning
43:12
this small part of something doesn't
43:14
mean that that's all there is to
43:16
learn. And that isn't meant to
43:18
put anyone off. It's meant to say,
43:21
hey, these are some of the
43:23
things you might need. But also, you
43:25
can then use the knowledge you've
43:27
learned learning these things to help you
43:29
learn those other things faster. Right.
43:31
I think that's actually more of a
43:33
positive like, oh, let's get up
43:35
and go. Because if you can't ever
43:37
learn everything, then the simple act
43:39
of trying, you're like, you win, you
43:41
win by continuing to try. Yeah,
43:44
absolutely. And I like that. I
43:46
like that there is no like gatekeeping
43:48
with that. Yeah, like learn it
43:50
this way or you fail. Oh, I
43:52
hate that. Yeah, I'm like, no,
43:54
no. I mean, if I if I
43:56
could take up an extra page
43:58
every chapter, I'd be like. And this
44:00
is not the only way to
44:02
do it. All of this
44:04
could be, you could bin
44:06
the entire thing and start
44:08
over from something else, and
44:10
it would still, if it
44:12
addresses the problem with similar
44:15
or the same results, wonderful.
44:17
You did it. Congratulations. You
44:20
don't have to use exactly what we
44:22
do in the book. Absolutely,
44:27
absolutely. So
44:30
let's not worry about which design patterns
44:32
are in the book, but I like
44:34
the idea that there's the three different
44:36
types of design patterns. So can you
44:38
talk real quick about the different, I
44:40
guess, some of the different types of
44:42
design patterns that you've chosen and then
44:44
how you've categorized them? Like, are they
44:46
categorized based on, like, how other
44:49
people categorize them? Or is
44:51
this the Harrison way of
44:53
categorizing them? That's fair. They
44:56
are categorized, the main ones are categorized according
44:58
to the game of four because it's a
45:01
very good metric. They have a very
45:03
good idea of what goes where. And
45:07
the additional game programming ones, some of
45:09
them were categorized, some of them were
45:11
not, some of them were in different
45:13
new categories. I put them where I
45:16
thought they would best fit. So, you
45:18
know, for example, like, creational deals with
45:20
problems arising from object creation and how
45:22
to do that more efficiently in a,
45:24
you know, a variety of scenarios. Behavioral
45:27
is how to have usually,
45:30
you know, how to achieve
45:32
different behaviors without having crazy
45:34
unmaintainable code in different situations.
45:36
Structural, again, is, you know,
45:38
you can think about this,
45:41
it's the bones of the,
45:43
or these design patterns are
45:45
more like the bones of
45:47
certain systems that make, that
45:49
make communicate, usually communication, but sometimes
45:51
behavior and data sharing work
45:53
more efficiently. And
45:56
there are a couple like the
45:58
ones from the game program patterns
46:01
that weren't. that we're in, you
46:03
know, new ones. So for instance,
46:05
like object pooling, you could call
46:07
that an optimization pattern, but it
46:09
is, you know, it's also a
46:11
creational pattern. You're dealing with lots
46:13
of objects being created in your
46:15
memory and how to like, how
46:17
to manage them effectively. So
46:19
it's things like that, like
46:21
I don't quibble about that
46:23
minute kind of
46:26
theory, because
46:28
that doesn't help anyone learn
46:30
the skill. But, you know,
46:32
I put things where I
46:34
thought they would be most understandable.
46:36
But for the most part,
46:38
it's the theory behind everything is still
46:40
back to the game before, because it's,
46:42
I mean, I'm not trying to beat
46:44
that or rewrite that, like it's very
46:46
usable and it's very, you know, it's
46:48
very well researched and it's lasted so
46:51
long and it's helped so many people
46:53
make better software. But on the flip
46:55
side, it is really dry. It's really
46:57
dense. It's very hard to, like
47:00
it takes multiple re -reads and like, ooh, again, like
47:02
if you're lucky enough to have a mentor, like
47:05
you take it to them and be like, yeah,
47:07
I don't understand what's happening. And
47:09
if you're, if you don't
47:11
have those things, you know,
47:13
that a book like that
47:15
can seem like it's,
47:18
like it's not accessible. Yeah.
47:22
And that really like got me.
47:24
Like I don't want that to happen.
47:26
Like this stuff is really useful. Yeah,
47:29
yeah, sure. A couple of thoughts
47:31
on that then. So first one, I
47:33
guess, if from my perspective, and I
47:35
haven't read the book folks, I've
47:37
not read it, but it is on
47:39
my list. If your design patterns
47:41
are organized similarly to the ones in,
47:43
say, the Gang of Four, then
47:45
if folks graduate from your book to
47:47
the Gang of Four, they're gonna
47:49
go, oh wait, I remember this one
47:51
because Harrison told me this one.
47:54
And then they're gonna see a slightly
47:56
different way of implementing it, but
47:58
it'll also be categorized the same. way,
48:00
right? So it's like everybody
48:02
wins. Yeah,
48:04
exactly. Like the tools are the
48:06
same. The underlying material is all the
48:08
same. It's just the veneer that's a
48:10
little bit different. You know, the nails
48:12
are different. The hammers not different. Nails
48:14
are a little different. The woods a little different. But
48:19
yeah, like that's a good
48:21
point. I would encourage people to
48:23
like start with something
48:25
like mine and then graduate. Like
48:27
you said, and like go read
48:31
game four and go
48:33
read program game program
48:35
patterns because it'll
48:37
fill in more of those
48:39
what if gaps on a more advanced level
48:41
and you won't be starting from scratch. Like
48:43
I feel like those books missed, like there
48:46
was a primer missing and I tried to
48:48
write the primer for that. Yep.
48:50
Yep. I remember when I tried
48:52
to read the first time I tried
48:54
to read Gang of Four. I was
48:56
very early in my career and
48:58
hadn't really gotten the idea of design
49:00
patterns. And so I'm reading this book.
49:02
It's not even in a programming language
49:04
that I use. How am I
49:06
supposed to learn this? Yeah.
49:09
Yeah. I mean, that
49:11
that is one of the
49:13
fundamental things that is difficult
49:15
with learning this level of
49:17
skill. Because I don't think like
49:20
systems design is easy by any means, but
49:23
it is a core competency that people
49:25
should have early on. So it's
49:27
a weird, it's a weird, you
49:29
know, it's a weird double thing. Like,
49:31
oh, it's really hard, but I should learn it early.
49:34
Yeah. When I may not be
49:36
able to fully grasp it. I still,
49:38
I still maintain that you should do
49:40
that because you'll be farther ahead either
49:42
way. But yeah,
49:44
like, you know, I can
49:46
kind of, I can read C++. I
49:48
can understand what's happening. But even for
49:50
me, it was, it was difficult
49:53
and like the
49:55
lack of complete
49:57
projects where you could reach out and touch them.
49:59
and like try and figure like try and break
50:01
it apart and put it back together you know
50:03
like a like an old watch like Oh, I
50:06
want to see how it works Not
50:08
that it works, but how and
50:10
can I replicate it? Because
50:12
that's how you know, we talked about that a bunch. That's how we
50:14
will learn If
50:19
you're enjoying this show would you mind sharing
50:21
it with a friend or colleague? Check out
50:24
podcatcher for a link to the show notes
50:26
Which has an embedded player within it and
50:28
a transcription all that stuff and share that
50:30
link with them I'd really appreciate it if
50:32
you could indeed share the show, but if
50:34
you'd like a few other ways to support
50:36
it you could Leave a
50:38
rating or review on your podcatcher
50:40
of choice So if you head over
50:42
to.net go.show/review, you'll find loads of ways
50:44
to do that You could consider
50:46
buying the show a coffee the buy
50:48
me a coffee link is available on each
50:51
shows show notes page on the website
50:53
This is a one -off financial support
50:55
option. You could become a patron This
50:57
is a monthly subscription based financial support
50:59
option and the link to that is
51:01
included on each episode show notes page
51:03
as well I'd love
51:05
it if you could share the show with a friend or
51:07
colleague or leave a rating or review The
51:10
other options are completely up to
51:12
you and are not required at all
51:14
to continue enjoying the show Anyway,
51:16
let's get back to it Yeah,
51:21
exactly really looking at looking at the
51:23
page and it's showing me a
51:25
factory pattern written in whatever language I
51:27
don't I don't use isn't as
51:29
useful as here is a factory pattern
51:32
in the language that you use
51:34
so you can implement it yourself and
51:36
Then tear it to pieces like
51:38
you said and figure out how it
51:40
works and change something and see
51:42
if that works and and then Understand
51:45
why that pattern exists and what
51:47
problems it can help to solve And
51:49
then I guess if folks are
51:51
reading your book And they can
51:53
recognize the the patterns and
51:55
recognize how these patterns are built
51:57
up then if they do draw
52:00
it up to the Gang of
52:02
Four. They can look at your implementation
52:04
of, say, I'm going to use
52:06
Factory Pattern again, because I just said
52:08
it. They can look at your
52:10
Factory Pattern implementation. They can look at
52:12
the Gang of Four Factory Pattern
52:14
and go, oh, I see how these
52:16
languages map to each other. So
52:18
when I look at the Options Pattern
52:20
or the Visitor Pattern, wait, I
52:22
get this now. So that, so, you
52:24
know, Line 1 in Harrison's Pattern
52:27
mapped to Line 4 on the original,
52:29
whatever, and then I can then
52:31
start to make inferences about how
52:33
the languages are working. And
52:35
maybe I can take a whack
52:37
at re -implementing one of the
52:39
Gang of Four patterns in
52:41
my chosen language, C Sharp, whatever,
52:43
because I have a little
52:45
bit of background. It's like how
52:47
people translated old texts, right?
52:49
I was going to say it's
52:51
like a Rosetta Stone for
52:54
going back to this. Yeah, 100%.
52:56
And that's why I chose the patterns
52:58
I did to include, because the ones for
53:00
the most part, the ones that I
53:02
left out, are familiar enough once
53:04
you get through the ones that
53:06
I've been teaching, that you can
53:08
jump in and be like, oh, I see what
53:10
we're doing. This is this pattern, but with a
53:12
little bit of a twist. And
53:16
that's kind of the reasoning for
53:18
what didn't make the cut in
53:20
this volume. Yeah.
53:23
Nice. Okay.
53:25
So I guess
53:27
just before we drop off then,
53:29
I think you answered this one
53:32
earlier, but I'm going to ask
53:34
it again anyway. So this can
53:36
be read by someone who is
53:38
like early in their career. They
53:40
know a little bit about C
53:42
Sharp, a little bit about Unity,
53:45
or maybe just some about one
53:47
or the other, as long as
53:49
they're willing to hit road bumps
53:51
along the way. Yeah, yeah, absolutely.
53:53
Like everything starts very basic. You
53:55
really, you don't need very much
53:57
specialized C Sharp knowledge. The
54:00
few places that you do, I either explain
54:02
what you need to know or show you
54:04
where to get it. So
54:06
really like, you know, a
54:10
few months in of playing around with, you
54:12
know, of, you know, really getting a
54:14
no C sharp, you don't have to be,
54:16
you know, much more than a beginner
54:18
intermediate level, you'll still get something out
54:20
of the book. Likewise, if you're
54:22
more heavily on the unity UI side
54:24
of things, you've been doing everything
54:26
in the editor, totally fine. You'll still
54:28
be okay. And if you're straight
54:30
up just C sharp, and you've never
54:32
used unity, like all you really
54:34
need is to watch one of, you
54:36
know, unity learns, which is their
54:38
learning platform, you really just need to
54:40
watch like their quick video on
54:42
like how to use the editor because
54:44
everything else, you know, like if
54:47
you learn how to use the editor and
54:49
sort of conceptually understand what scriptable objects
54:51
are, that's it. Like everything
54:53
else, I, you
54:55
know, we build up
54:57
block by block
54:59
and everything, all the starter projects are
55:01
on, on a GitHub, on, on GitHub. So
55:04
you can just, you download the whole
55:06
thing, you start each, you start each chapter
55:08
with a new project, with a new
55:10
problem. I mean, every chapter,
55:12
the problem is framed as like, how
55:14
would you implement, you know, such and
55:16
such game mechanic, but really it's how
55:18
would you solve this problem if you
55:20
were told, you know, as a junior
55:23
developer, hey, I need this new
55:25
feature implemented. And then you
55:27
think to yourself, oh, okay, well, what
55:29
do I do? Where do I start?
55:31
So that's how every, that's how every
55:33
chapter starts is like this, you know,
55:35
kind of made up feature, feature task
55:37
from, you know, your dev lead or
55:39
something. Here, go do this. And then
55:41
we start. Right,
55:44
right. And I guess, and this
55:46
is me just extrapolating and
55:48
guessing something, right? One
55:50
of the things because you said earlier on
55:53
about, you know, I chose unity, I'm happy
55:55
with unity. This is one that I really
55:57
like. Let's not talk about the weird licensing
55:59
stuff that happened. Because if you're reading this
56:01
book, you're probably not going to be publishing
56:03
a game at the end of it. You're
56:05
reading this one to learn, right? So you're
56:07
learning how to use the tools, you're learning
56:09
how to use the language, you're learning how
56:11
to produce some stuff. And I feel, because
56:13
I've played around with the Unity, I've played
56:15
around with Godot or Godot or however you're
56:17
supposed to pronounce it. Yeah, I say Godot,
56:19
but I don't. Yeah, right? Who knows, right?
56:24
And then like I've played around with a
56:26
few of the others, the free versions of
56:28
a few of the others. But I'll tell
56:30
you something, right? As someone who knows nothing
56:32
about these things, they all look and behave
56:34
quite similarly. So if you're happy with using
56:36
Unity, you know, you're
56:39
going to be, you're already two
56:41
steps ahead of someone who hasn't used
56:43
Unity, and then some, because you'll
56:45
be able to perhaps transfer this knowledge
56:47
over to Godot, Godot, however we're
56:49
pronouncing it, maybe even Unreal, if you
56:51
can get a license for that
56:53
or whatever, right? It's, it's like, it's
56:55
not like these tools are all
56:58
designed differently. They're kind of all, they're,
57:00
they're all something they're all, yeah,
57:02
exactly. And the learning curve for each
57:04
one to get to the
57:06
stage you need to start learning this
57:08
material is very small. Like it's
57:10
not, it's not very steep at all.
57:12
And even the learning is kind
57:14
of a system in itself. It's like
57:16
abstracted, right? Like you can, you,
57:18
what we really want to teach is
57:20
how to think like an object
57:22
oriented, you know, engineer, and
57:24
then we go, Oh, well, how do we do
57:26
that in this specific language? Ooh, how do
57:28
we do this in 3D? Ooh, how do we
57:30
do this in Unity components? But,
57:33
you know, the top level is really the
57:35
most important one is like, how do I
57:37
learn these analytical skills to be a badger
57:39
engineer? Again, the one
57:41
caveat is that this is all object
57:43
oriented. So take that for, take that and
57:46
to keep that in mind. But, you
57:48
know, 85, 90 %
57:50
of these skills are directly transferable
57:52
to any other object oriented
57:54
framework or problem, I guess would
57:56
be the better word, like
57:58
a problem. area that you're trying
58:00
to solve. And
58:03
that's the big thing that
58:05
I focus on when I'm
58:07
trying to teach. I don't want
58:09
you to get pigeonholed into
58:12
some crazy
58:14
dogmatic version or viewpoint about what
58:16
you're learning. And then you know
58:18
you're so narrow and you're so inflexible
58:20
that you can never grow. It's
58:24
a hard line to walk,
58:26
but anyone can pick this
58:28
book up after a few
58:30
two or three months of
58:32
C -sharp programming or Unity
58:34
just bopping around their tutorials
58:36
or whatever, as long as
58:38
you are curious about how
58:40
systems work. That's the main thing,
58:43
isn't it, if you're curious or
58:45
not? Cool.
58:47
Okay, so let's say someone's listening
58:49
along and thinking, wait, I didn't
58:51
write down the name of the
58:53
book. Give me the name of
58:55
the book again. All right, it's
58:57
Learning Design Patterns with Unity. It's
58:59
the only one on anywhere. You
59:02
can get it from Amazon or
59:04
PACT. One or the other is honestly
59:06
usually having a sale at some
59:09
time. So grab it. We do, like
59:11
I said at the beginning, we
59:13
do have Discord servers for all our
59:15
Unity content, which is great. So
59:17
PACT has actually
59:19
a pretty solid offering for Unity. So
59:21
all the authors are on the
59:24
servers. You can ask any question to
59:26
any of the authors or any
59:28
of the mods about whatever book you're
59:30
following along with. And you know,
59:32
it's kind of just a nice place
59:34
to post ongoing work and where
59:36
you go from there and kind of
59:38
just share, I mean, it's Discord.
59:40
So it's community driven, but
59:43
I'm on there most
59:45
every day. And you
59:47
get the server invite
59:49
from the ebook or the
59:51
print copy or both, whichever way you
59:53
grab it. So definitely
59:56
don't leave out that step,
59:58
because that, especially with this
1:00:00
kind of content it's important to
1:00:02
talk about it to like have
1:00:04
your stuff almost you know peer-reviewed
1:00:06
in a nice way to make
1:00:08
sure that it's it's getting through
1:00:10
and you also have a server full
1:00:12
of people who are likely could be
1:00:14
mentors as well right oh I need
1:00:16
to help with this I'm a bit
1:00:18
stuck oh well let's jump on a
1:00:20
session and we'll we'll peer we'll work
1:00:23
on it together we'll pay program or
1:00:25
whatever right it's I mean The community
1:00:27
aspect kind of surprised me because you know
1:00:29
a lot of the times now You know because
1:00:31
it's it's years and years later a lot
1:00:33
of the times if Because a time difference
1:00:35
that you know I'll be asleep and by
1:00:37
the time I get up and look at
1:00:39
a problem You know look at someone's question
1:00:41
or a problem somebody else will have jumped
1:00:43
in like some other learner and been like
1:00:45
oh I ran into this You know this
1:00:48
is how everyone's it's like solving each other's
1:00:50
problems which is wonderful like everyone's kind
1:00:52
of learning Learning by doing.
1:00:54
Yeah, that's interesting because that's that's
1:00:57
almost there's almost the exact same
1:00:59
feeling that a fellow author of
1:01:01
yours Mark J. Price had said
1:01:03
that he's on there helping out
1:01:06
but other people will jump in
1:01:08
and help out as well. Yeah,
1:01:10
it seems to be like that there's
1:01:12
you know after a certain number of
1:01:14
people join and are involved you get
1:01:16
to you get to this line where
1:01:19
It just explodes. It just
1:01:21
explodes. Like there's so many
1:01:23
eyes on it that somebody will help,
1:01:25
which is great. Yeah, oh man, Mark just
1:01:28
released his awesome tools and tools
1:01:30
and services or tools and tricks,
1:01:32
right? For C-sharp, his books are
1:01:34
great. They really are. Right? Amazing.
1:01:37
Okay, so someone's listening in,
1:01:39
they're like, this is amazing.
1:01:41
I've got a question for Harrison.
1:01:43
Is there a way for folks
1:01:45
to get in touch? Yeah, I'm
1:01:48
always on LinkedIn. I'm the only
1:01:50
Harrison Fironi, F-E-R-R-R-O-N-E. You can inbox
1:01:52
me or DM me or whatever
1:01:55
it's called on LinkedIn any time.
1:01:57
That's the main way or through
1:01:59
Discord. Those are my
1:02:01
only two kind of social
1:02:04
media, social media hooks
1:02:06
that I have. Right,
1:02:08
right. Yeah, I totally
1:02:10
get that. I went
1:02:12
through a period during
1:02:14
the time when
1:02:16
everyone was sent home, should we say?
1:02:18
I don't like to talk about that.
1:02:20
During that period of The dark time.
1:02:23
That's it, right? I actually went through
1:02:25
all of my socials and was like,
1:02:27
am I actually using this? Do I have
1:02:29
the time, even though I've got nothing
1:02:31
to do at this moment in time, do
1:02:33
I even have the time that is
1:02:35
required to keep this up and going? No,
1:02:38
I don't. It's gone. And gone. No,
1:02:40
I probably have a Twitter and an Insta
1:02:42
somewhere for programming, but I honestly
1:02:44
couldn't tell you what they are.
1:02:46
I focus on Discord and through
1:02:48
LinkedIn, it keeps it easy, keeps
1:02:50
everyone in one place, and I'm
1:02:52
much more likely to see any
1:02:54
of your wonderful questions. Yep,
1:02:58
absolutely. Okay, cool. Well,
1:03:00
Harrison, it's been a wonderful
1:03:02
conversation with you. I absolutely love
1:03:04
these conversations. Thanks
1:03:07
so much for having me on again.
1:03:09
Hey, no worries. You're always welcome on the
1:03:11
show. Just get in touch and we
1:03:13
can talk more unity. We can talk education.
1:03:15
We can talk development. can talk whatever
1:03:17
you want. Oh
1:03:19
man, that would be a fun one because
1:03:21
I feel like the unit is taking
1:03:23
kind of a hit, but it's such a,
1:03:25
they've really put, I mean,
1:03:28
this isn't just recently, but they've
1:03:30
always put a lot of their backing
1:03:32
into their educational content. And I like
1:03:34
that. Maybe that's why I keep using
1:03:36
them because I always see them trying
1:03:38
to make that better and useful for
1:03:40
not who they think their audience
1:03:43
is, but for their actual audience. I
1:03:45
think that's an important distinction. And so,
1:03:47
oh man, talk unity and curriculum development
1:03:49
all day. Do something. Absolutely.
1:03:52
Maybe you, me, and Mark
1:03:54
can do an episode there. Oh,
1:03:57
that'd be awesome because his
1:03:59
books are very light. mine just like with
1:04:01
like his are so nitty gritty like
1:04:03
with like comp like each little
1:04:06
piece is so important to learn
1:04:08
and like I think that's that's wonderful
1:04:10
but like his books are massive
1:04:13
you know and he's got so
1:04:15
many so oh yeah I'd love that that'd
1:04:17
be that'd be good fun well
1:04:19
there you go right we've said it
1:04:22
now and he's on an episode so
1:04:24
maybe it's gonna happen Amazing. Mark I'm
1:04:26
sorry I didn't I'm sorry I didn't
1:04:29
message you before this I should have.
1:04:31
Well look alright for the listeners who've
1:04:33
gotten this far we talked about it
1:04:36
just before we hit record let's just
1:04:38
free-formed jazz this and we free-formed jazz
1:04:40
that we come out with we've got
1:04:43
a trio for the next one. Oh
1:04:45
that'll be good all right. It sounds
1:04:47
like a plan. Yeah yeah well thank
1:04:50
you over so much Harrison. I've really
1:04:52
enjoyed this this recording this episode. Oh
1:04:54
me too. Thank you for listening to
1:04:56
this episode of the Modern.net show with
1:04:59
me, Jamie Taylor. I'd like to thank
1:05:01
this episode's guest for graciously sharing their
1:05:03
time, expertise and knowledge with us. Be
1:05:05
sure to check out the show notes
1:05:08
for a bunch of links to some
1:05:10
of the stuff that we covered and
1:05:12
a full transcription of the interview. The
1:05:14
show notes as always can be found
1:05:16
at the podcast's website and there'll be
1:05:19
a link directly to them in your
1:05:21
podcatcher. And don't forget to
1:05:23
spread the word. Leave a rating or
1:05:25
review on your podcatcher of choice. Head
1:05:27
over to dot netcore dot show slash
1:05:30
review for ways to do that. Reach
1:05:32
out via our contact page at dot
1:05:34
netcore dot show slash contact or join
1:05:36
our discord server at dot netco.show slash
1:05:39
discord all of which are linked in
1:05:41
the show notes. But above all I
1:05:43
hope you have a fantastic rest of
1:05:45
your day and I hope that I'll
1:05:47
see you again next time for some
1:05:50
more.net goodness. I'll see you again real
1:05:52
soon. See you later folks.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More