The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

Released Friday, 8th November 2024
Good episode? Give it some love!
The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

The Art of Teaching Programming using Unity: An Interview with Harrison Ferrone

Friday, 8th November 2024
Good episode? Give it some love!
Rate Episode

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.

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features