📺 Develpreneur YouTube Episode

Video + transcript

Creating Software Patterns and Anti-Patterns Part 2

2022-06-16 Youtube

Detailed Notes

We have had many discussions about software patterns and anti-patterns over the years.  However, we have not talked about creating software patterns.  That is an important topic because they have to come from somewhere, and the list will grow.  This session from our mentor classes shows how to build on and document your experience.

Creating Software Patterns Has Many Steps There is a difference between learning any topic when compared to teaching it.  Likewise, solving a problem once is only a piece of repeating or automating that process.  Patterns and Anti-patterns follow those same progressions.  We do things for a while, observe them, clean them, and communicate our findings.  All of that takes time and is an excellent way to become a better developer.

The Mentor-Mastermind Group This series comes from our mentoring/mastermind classes.  These classes are virtual meetings that focus on how to improve our technical skills and build our businesses.  The goals of each member vary.  However, this diversity makes for great discussions and educational value every time we meet.  We hope you enjoy viewing this series as much as we enjoy creating it.  As always, this may not be all new to you, but we hope it helps you be a better developer.  Drop us a line to find out when the next one is so you can join our group.

Other series you might consider:

Creating a Product Catalog Software Design Patterns Anti-patterns and How Not To Build Software

Transcript Text
[Music]
so
you get repetition
you're finding something that you start
seeing across a series of problems or
solutions that you see hey i'm i see
some repetition here
well then you want to look at
is there
because you're going to see that
repetition but you're also going to see
like exceptions and error handling and
thing of that things of that nature
that are
yeah because you're sort of going to
come up with a germ of an idea
and then with that you're gonna see
okay how did these vary
um
and when i say exceptions and error
handling it's more about it's not really
the technical
writing exceptions or handling errors
but it's more i think of it as you're
reading a paper
and
there's a concept that's presented to
you and you say well that doesn't really
work all the time or
there are
certain cases that we maybe do see that
are outliers that we realize that yes
this pattern works however
here are some situations where it
doesn't
so we're even though we're presenting
for example a pattern
part of the pattern is going to say hey
here's some places that this is going to
be useful
we may also say here's some places where
it's not as useful or maybe not useful
at all
you know there may be uh you know sort
of like some red herring type situations
where you say oh that may look like it's
this
perfect use of this pattern
but it's not so you you start with sort
of a rough draft of here's my idea of
what a pattern is or what this
anti-pattern is
and then with that you want to look at
it with a critical eye of okay is this
is this a j like a global pattern does
it only work in certain situations
and then you want to take that
which is probably going to be a somewhat
complex and a little bit amorphous idea
and turn it into some sort of
documentation that is
a little more readable and easy to
maintain
and the good examples of this exist all
over the web if you look at
if you go search patterns and any
patterns
much like use cases and other things
that show up over and over again you can
see some pretty nice formats for
documenting one of these
so pick a format that is is readable and
pretty easy to maintain
you know a lot of times it's things like
what's the name of the pattern what are
maybe some alternate names for the
pattern where is it most useful
what is it
how does it work and then you know
here's an example of it in action
something like that
now that kind of a
a page fits very well to like a wiki
site or something like that where it
should be fairly easy for you to read it
and
make adjustments as needed
and then
yeah because
you're gonna it goes back to the rule of
three is basically saying okay now that
we've we've thought about this we've
documented this pattern in any pattern
let's
look at it as are there some ways that
maybe
are there ways to extend this or to make
it
uh more encompassing or maybe even spawn
another pattern
based on what we're seeing you know are
there other it's so like you've looked
at it you found some repetition you
found some areas that are possibilities
once you've done that do you sweep
through again and see or you do you
sweep through again and do you see maybe
some additional
repetitions and possibilities
particularly like if you're building out
for your organization or your
personal history
if you're looking through and you're
you're starting to say hey here's some
patterns i see well maybe in those
patterns there may be
patterns of patterns she may see that we
did this
we did these 10 different patterns and
this piece or this step occurred in
every one of those
so maybe we want to essentially
abstract that out
and say oh by the way here's yet another
pattern that shows up
and
um we've talked about those a little bit
before i can't really call them
meta patterns or super patterns but it
was basically
you know if you're dealing with these
types of situations here's some some
patterns that you're going to look at
and it may even be a pattern where it
says
here's the thing you want to do but also
as part of your solution
let's go in and
it may be a combination of patterns in
any patterns where it says you know
here's your
overarching pattern but within that
you're probably going to use these three
patterns and you're probably going to
worry about not doing these four any
patterns and things like that
and these are that's why you you know
going back to up above this is why you
want this to be pretty readable and easy
to maintain is you want to be able to
you know have nice little bullet points
or
highlighted notes or something like that
that it's easy for you to
sort of like keep this as a living
document and grow
the ones we see out on the web or if we
buy a book
those are static you know those aren't
going to be those aren't generally
speaking going to change very much
but that's opportunity when we create
our own patterns in any patterns we get
to continue to refine them and make them
better and better
and then as we're going through this we
want to make sure that we do
keep it
yeah you think about like commenting
code and things like that you want to
keep that up to date well it's the same
thing with your patterns and any
patterns you want to review them often
enough and keep the the documentation
for it pretty clean and concise because
if we don't it's going to make it pretty
hard to share
which
brings us to the next point
so once you've built this
yeah you're doing this
to some extent for your own
uh becoming a better developer kind of
approach but also you want to be able to
give back
and so
what you want to do with that is think
about one
um it's going to cost you to do it and
there's going to be some some time and
some reflection
that you're going to have to do
to think about is this um
is this something that's that's makes
sense to share is this something that is
uh a general kind of situation or is it
something that i run into because of you
know my weaknesses my challenges my
experience knowledge or lack thereof
so when you're sharing your knowledge
you realize yeah there's going to be a
little bit of cost to it
and part of that though is that
you want to spend some time in that
doing that retrospection is is reviewing
what it is that you've put together
because this this actually sort of while
you're investing time in it you're also
investing in yourself because
if you're
if you're reviewing it to the point of
being able to
talk to somebody else about it or to
teach somebody else what is this pattern
or this anti-pattern
then you are
helping to
really firm that knowledge in your mind
as well it's why you know
people can complain about you know
teachers teach and those that can do do
but you also find that teachers that
teach the same thing
they know that topic they can
regurgitate that copy that topic pretty
darn well because they've they've
thought about it over and over again
that's the same thing here
is that we've thought about it to build
our pattern or any pattern
but also now we've taught about thought
about
uh sharing that and how would we
talk to somebody else about that pattern
or that any pattern
and so when we communicate it we do want
to make sure that we
we try to avoid like buzzwords and
internal concepts and in line of
business specific language where
possible
so if we're using a pattern
that is a general pattern
but we've built it out of a bunch of
healthcare applications we
created
we want to make sure that when we share
that pattern we don't have a lot of
healthcare-related lingo that's a part
of it
and this is these are
somewhat general communication
types of
bullet points and skills
but it is a little bit different
um
because this is this is more of a
in some sense it feels like a casual
kind of sharing of patterns in any
patterns but you want to make sure it's
formal enough that it is you know useful
and reproducible
and the reason you want to do this the
reason why i spend these costs
is really to
to help out the community this is sort
of like you know giving back to others
because you've probably
benefitted quite a bit from patterns and
anti-patterns over the you know the
months or years or decades that you've
been
professional
and this is how such things get created
and how the the developer community such
as it is whether it's specific to
a language or platform or just the
overall you know sort of loose software
development community that's how you you
give back into that that has fed you
whether you you realize or not and i
think most people do
now because you can
you can go your favorite search engine
and search just about any problem that
you want to solve
and you can find some discussion of it
at least if not some you know
right down to absolutely perfect code
examples of solving that problem
and that saves us who knows how much
time
and so it just sort of makes sense for
us to say because of all the times that
i've been saved i'm going to spend a
little bit of time and give back and
provide to the development community
and as part of this is
part of our like um
our review and our retrospection is
think about it a little bit and say is
this something and this is probably sort
of more upfront at the first part of it
is is this useful to you
this pattern or this annie pattern that
you're thinking about sharing out
is this something that you wish you had
had before
probably um is it something that you
will use
in the problems you solve ahead possibly
and then with that it's like okay this
seems to be useful well let's make sure
that we
we review it and strip out the specific
problem
language and items so that this is a a
good general case
pattern because sometimes we we get a
little bit
focused on the weeds i guess for the
problem we're working on and we say oh
yeah we need to do all of this
and when you step back you look at you
say oh well
yeah i need to do those three steps
within this pattern for my specific
problem or my line of business but
generally speaking
you can maybe generalize that and just
say
you know you need to do you can turn it
into one step and say here's something
you need consider
for example
um
you may have something that is a like
i'd say a customer record that has you
know first name last name account id
city state zip things like that
you may have specific things that you do
that you say oh yeah i got to make sure
that this
zip code format and this address format
is uh properly
handled for my specific case you know
that you have a
a property like i say it's a us you have
a proper u.s address and you have zip
code and
and then you find out that well once you
go beyond the us
those rules change a little bit
and so in that case instead of having
language that talks about things that
are specific to
a us address verification
as you just say
you know make sure that you have a
address verification
process involved as part of your pattern
it may seem like a little bit of
of of picking nets in a sense a little
nitpicky type of approach but it it
really does help to take that step and
generalize the
the
language and the text that you use
don't be afraid to do and actually
definitely
even if you are afraid do some sort of a
code review
process review
with
maybe some of your co-workers or peers
or things like that
is
you know or maybe even just family
members whatever to have somebody read
back over it because this is something
you want to be
you want to think of as like this is
something you're publishing to some
extent this is a
an ex this is going to be a reflect on
you a little bit so make sure that you
do things like you know grammar checking
and spell checking but also just make
sure that the the wording that you use
the phrasing that you use that you know
some other people have taken a look at
it can can say yep that makes sense or
i have no idea what you're saying here
and then you know now you've got it is
do a nice little write-up of your
pattern or any pattern and in doing so
this is where you basically publish it
whether it's to uh you can create a blog
article either on your site or
uh maybe there's a certain site
somewhere that it makes sense to post
uh like um
i'm trying to think of various places
maybe it's like a you know a reddit or
um you know one of those kinds of places
or maybe like a uh i don't even know who
would be available for like ours
technica or one of those that are
more technical type
sites
you may want to if you have a podcast
you may want to do an episode on it if
you've you may
listen to a podcast where it makes sense
to reach out to that person and be a a
guest and talk about your your patterns
or android patterns
uh maybe you've got a a slack channel
that's either uh internal or
a group like developer nor or you know
like a user's group or developers group
for your
uh your platform or wherever you are
geographically that it makes sense to
post these out and you know get it out
there so other people can take advantage
of your work and benefit from some of
your experience
so what do we learn
what was the the point of this
was really you know reiterate that hey
patterns are a way for us
it's a way for us to solve problems and
to get there faster as opposed to us
having to reinvent the wheel
any patterns are similar is these are
ways for us to avoid obstacles you can
think of them as warning signs as you're
driving down the road so you don't run
into the same pothole or take the same
wrong turn that somebody before did
this this goes back to the idea we all
individually whether we've been doing
this for six months or 60 years we have
experience that is unique to us and
there is a value in sharing it with
others
and so
why not
and part of it is because we want to
give back people have taught us people's
the experience of other people has
benefited us
so let's take that and turn that back to
the community and provide our experience
in a way that is helpful to others
and then the other thing is that we do
get a little you know sort of as a
selfish point is when we
do something like this and teach others
our lessons it helps firm it in our mind
and helps us understand it better
questions and comments
if anybody's talking you are muted
say hey rob so if you're new on the
project and uh
they got bad practices so how would you
solve
uh you know those but partners in in
case uh people don't uh continue i mean
in case you know what a good pattern
might be so
how do you solve that
well if you i mean if they've got some
bad practices
then i'm going to assume that there are
some anti-patterns that they have have
adopted and what those can either be
uh they may be things that are generally
known that you can point to and say hey
here's a well-known anti-pattern that
we're doing and so we need to stop it or
this is where you do take a look at it
and say hey we we have this practice
that we have done for a while
and we can see where it has been
a failure or
not pleasant or has causes headaches
and that's where you you know you walk
through and say okay we've done this a
bunch
and it has given you taken us to the
same
bad place each time
and so you can take a look and say well
here's analyze and say well how did we
get there oh in each of these cases
these are the three things we did
so
let's talk about not doing those three
things the next time we get into that
situation
yeah this is uh it goes back to sort of
this
that repetition and reviewing it and say
hey this it looks like this
when we do this
this bad outcome occurs
so let's talk about not doing that
whether it's uh it may be something we
just said don't do it at all or it may
be something where you say
you know we we still need to go down
that path but we need to find a smarter
way to do it
and it's either
it may be something that you can see as
you're looking at it and you can say hey
this i see where if we make these
changes we can avoid these bad practices
or it may be something you know in this
in that case because you're sort of if
you're coming into a place where there's
a lot of bad practices
where it may be worth it just say hey
i'm this is what i see i see these
things causing these bad results
why don't we talk about how we can avoid
doing those things
does that make sense yeah it makes sense
yeah thank you yeah
so hopefully they will be able to be
you know some uh i
adopt uh how do they go and adapt to the
new changes because
uh sometimes you know those new changes
usually are very hard to kick out if
people are used to doing the things that
start anyway
yeah yeah okay
yeah it makes sense thank you
other questions and comments
i see our muted i'm not hearing you mike
you have to have your mic turned off
maybe
is mike saying something is he on music
it looked like he did for a second and
then he he muted so it may be an audio
issue there let's see oh here's a chat
he's probably running it too yeah he
sent it oh here we go maybe we can do a
follow-up to this one on how we can how
to contribute to the community uh that's
probably not a bad idea
i sort of take that that publishing side
of it and
uh how to take it beyond just getting it
out there
good point
okay so uh let me get this out of my way
so i can actually see here yeah
as always thank you as always for your
time
your contribution to
become a better developer you know
spending this time and investing
yourself almost all of us
that's our goal is making every
developer better
and as always if you have any questions
comments
anything for us including suggestions to
you know enhance this or future topics
and email us at info development or dot
com
there's a contact us form out at
developmentor.com
we have our youtube channel where we
post stuff every tuesday and thursday we
have our vimeo channel where we have
some longer form videos that show up
from time to time including a lot of
these presentations
and we've got a paid developer page out
there on facebook.com
and
that being said
thank you for your time and we'll talk
to you next time
[Music]
you
Transcript Segments
0.43

[Music]

27.92

so

30.24

you get repetition

32

you're finding something that you start

33.36

seeing across a series of problems or

35.84

solutions that you see hey i'm i see

37.92

some repetition here

39.76

well then you want to look at

42

is there

44.559

because you're going to see that

45.6

repetition but you're also going to see

46.96

like exceptions and error handling and

49.039

thing of that things of that nature

51.68

that are

55.199

yeah because you're sort of going to

56.32

come up with a germ of an idea

58.96

and then with that you're gonna see

60.879

okay how did these vary

63.359

um

64.32

and when i say exceptions and error

65.68

handling it's more about it's not really

67.28

the technical

68.56

writing exceptions or handling errors

70.4

but it's more i think of it as you're

72.96

reading a paper

74.72

and

75.52

there's a concept that's presented to

76.96

you and you say well that doesn't really

78.799

work all the time or

81.439

there are

82.64

certain cases that we maybe do see that

84.799

are outliers that we realize that yes

86.479

this pattern works however

89.04

here are some situations where it

90.4

doesn't

91.68

so we're even though we're presenting

93.28

for example a pattern

95.68

part of the pattern is going to say hey

96.96

here's some places that this is going to

98.32

be useful

99.36

we may also say here's some places where

100.96

it's not as useful or maybe not useful

102.96

at all

104.079

you know there may be uh you know sort

105.759

of like some red herring type situations

107.759

where you say oh that may look like it's

109.6

this

110.399

perfect use of this pattern

112.32

but it's not so you you start with sort

115.6

of a rough draft of here's my idea of

118.32

what a pattern is or what this

119.68

anti-pattern is

122.159

and then with that you want to look at

123.439

it with a critical eye of okay is this

126.399

is this a j like a global pattern does

128.64

it only work in certain situations

131.12

and then you want to take that

133.84

which is probably going to be a somewhat

135.36

complex and a little bit amorphous idea

137.84

and turn it into some sort of

139.68

documentation that is

141.76

a little more readable and easy to

143.28

maintain

144.48

and the good examples of this exist all

146.8

over the web if you look at

149.44

if you go search patterns and any

151.2

patterns

152.319

much like use cases and other things

154.16

that show up over and over again you can

156.08

see some pretty nice formats for

159.36

documenting one of these

161.28

so pick a format that is is readable and

164.8

pretty easy to maintain

166.319

you know a lot of times it's things like

167.76

what's the name of the pattern what are

169.36

maybe some alternate names for the

171.04

pattern where is it most useful

173.92

what is it

174.959

how does it work and then you know

177.04

here's an example of it in action

178.8

something like that

180.72

now that kind of a

182.879

a page fits very well to like a wiki

185.36

site or something like that where it

186.56

should be fairly easy for you to read it

188.56

and

189.36

make adjustments as needed

192.159

and then

193.44

yeah because

196.48

you're gonna it goes back to the rule of

198.319

three is basically saying okay now that

200.56

we've we've thought about this we've

202.64

documented this pattern in any pattern

206.64

let's

207.519

look at it as are there some ways that

209.84

maybe

210.959

are there ways to extend this or to make

213.04

it

213.76

uh more encompassing or maybe even spawn

217.44

another pattern

219.12

based on what we're seeing you know are

221.12

there other it's so like you've looked

222.879

at it you found some repetition you

224.319

found some areas that are possibilities

226.72

once you've done that do you sweep

228

through again and see or you do you

229.92

sweep through again and do you see maybe

231.519

some additional

233.04

repetitions and possibilities

235.12

particularly like if you're building out

236.799

for your organization or your

239.12

personal history

241.2

if you're looking through and you're

242.64

you're starting to say hey here's some

243.92

patterns i see well maybe in those

246.4

patterns there may be

248.239

patterns of patterns she may see that we

250.72

did this

252.4

we did these 10 different patterns and

254.72

this piece or this step occurred in

257.519

every one of those

259.759

so maybe we want to essentially

261.519

abstract that out

263.44

and say oh by the way here's yet another

265.52

pattern that shows up

267.68

and

268.4

um we've talked about those a little bit

270.479

before i can't really call them

272.4

meta patterns or super patterns but it

274.4

was basically

275.919

you know if you're dealing with these

278

types of situations here's some some

281.04

patterns that you're going to look at

282.88

and it may even be a pattern where it

285.12

says

286.639

here's the thing you want to do but also

290.4

as part of your solution

292.639

let's go in and

294.4

it may be a combination of patterns in

295.919

any patterns where it says you know

297.44

here's your

298.56

overarching pattern but within that

300.96

you're probably going to use these three

302.56

patterns and you're probably going to

303.6

worry about not doing these four any

306.08

patterns and things like that

308.32

and these are that's why you you know

310.16

going back to up above this is why you

311.759

want this to be pretty readable and easy

313.28

to maintain is you want to be able to

314.72

you know have nice little bullet points

316.72

or

317.68

highlighted notes or something like that

318.96

that it's easy for you to

320.96

sort of like keep this as a living

322.479

document and grow

324.72

the ones we see out on the web or if we

326.96

buy a book

328.639

those are static you know those aren't

330.24

going to be those aren't generally

331.919

speaking going to change very much

333.919

but that's opportunity when we create

335.52

our own patterns in any patterns we get

338.16

to continue to refine them and make them

340.32

better and better

342.32

and then as we're going through this we

343.919

want to make sure that we do

346.08

keep it

347.039

yeah you think about like commenting

348.56

code and things like that you want to

350

keep that up to date well it's the same

351.6

thing with your patterns and any

352.72

patterns you want to review them often

354

enough and keep the the documentation

356.479

for it pretty clean and concise because

359.68

if we don't it's going to make it pretty

361.12

hard to share

363.68

which

364.72

brings us to the next point

366.639

so once you've built this

368.4

yeah you're doing this

370.08

to some extent for your own

372.4

uh becoming a better developer kind of

374.56

approach but also you want to be able to

376.96

give back

378.319

and so

380

what you want to do with that is think

381.84

about one

383.919

um it's going to cost you to do it and

386.4

there's going to be some some time and

388.56

some reflection

390.16

that you're going to have to do

391.919

to think about is this um

395.84

is this something that's that's makes

397.919

sense to share is this something that is

401.199

uh a general kind of situation or is it

404.08

something that i run into because of you

406.479

know my weaknesses my challenges my

409.12

experience knowledge or lack thereof

412.56

so when you're sharing your knowledge

414

you realize yeah there's going to be a

415.12

little bit of cost to it

418.4

and part of that though is that

421.44

you want to spend some time in that

422.8

doing that retrospection is is reviewing

425.12

what it is that you've put together

427.759

because this this actually sort of while

429.759

you're investing time in it you're also

431.36

investing in yourself because

433.36

if you're

434.639

if you're reviewing it to the point of

436.639

being able to

437.919

talk to somebody else about it or to

439.68

teach somebody else what is this pattern

441.68

or this anti-pattern

444.08

then you are

445.599

helping to

446.8

really firm that knowledge in your mind

449.039

as well it's why you know

451.919

people can complain about you know

453.36

teachers teach and those that can do do

456.479

but you also find that teachers that

458

teach the same thing

459.84

they know that topic they can

461.68

regurgitate that copy that topic pretty

464

darn well because they've they've

465.919

thought about it over and over again

467.52

that's the same thing here

469.28

is that we've thought about it to build

471.68

our pattern or any pattern

474.24

but also now we've taught about thought

476.4

about

477.199

uh sharing that and how would we

480.24

talk to somebody else about that pattern

482.56

or that any pattern

484.8

and so when we communicate it we do want

486.639

to make sure that we

488.72

we try to avoid like buzzwords and

491.84

internal concepts and in line of

493.919

business specific language where

495.919

possible

497.039

so if we're using a pattern

498.879

that is a general pattern

501.039

but we've built it out of a bunch of

503.52

healthcare applications we

505.52

created

506.4

we want to make sure that when we share

507.84

that pattern we don't have a lot of

509.199

healthcare-related lingo that's a part

511.68

of it

512.959

and this is these are

515.12

somewhat general communication

517.279

types of

518.8

bullet points and skills

520.64

but it is a little bit different

522.64

um

523.68

because this is this is more of a

526.88

in some sense it feels like a casual

528.64

kind of sharing of patterns in any

530.48

patterns but you want to make sure it's

531.92

formal enough that it is you know useful

534.32

and reproducible

536.64

and the reason you want to do this the

538.48

reason why i spend these costs

540.56

is really to

541.839

to help out the community this is sort

543.36

of like you know giving back to others

546.16

because you've probably

548.48

benefitted quite a bit from patterns and

550.959

anti-patterns over the you know the

553.12

months or years or decades that you've

555.04

been

555.92

professional

557.839

and this is how such things get created

561.519

and how the the developer community such

564.399

as it is whether it's specific to

567.519

a language or platform or just the

569.279

overall you know sort of loose software

571.92

development community that's how you you

574.24

give back into that that has fed you

577.04

whether you you realize or not and i

579.279

think most people do

581.2

now because you can

582.64

you can go your favorite search engine

584.32

and search just about any problem that

586.64

you want to solve

588.48

and you can find some discussion of it

591.04

at least if not some you know

593.68

right down to absolutely perfect code

596.48

examples of solving that problem

599.519

and that saves us who knows how much

602.079

time

603.519

and so it just sort of makes sense for

605.04

us to say because of all the times that

606.959

i've been saved i'm going to spend a

608.72

little bit of time and give back and

610.32

provide to the development community

618.16

and as part of this is

620.8

part of our like um

622.56

our review and our retrospection is

624.8

think about it a little bit and say is

626.079

this something and this is probably sort

627.92

of more upfront at the first part of it

629.68

is is this useful to you

631.76

this pattern or this annie pattern that

633.519

you're thinking about sharing out

636

is this something that you wish you had

637.92

had before

639.12

probably um is it something that you

641.36

will use

642.56

in the problems you solve ahead possibly

647.04

and then with that it's like okay this

648.64

seems to be useful well let's make sure

650.48

that we

652.72

we review it and strip out the specific

656.079

problem

657.36

language and items so that this is a a

660.88

good general case

662.88

pattern because sometimes we we get a

664.959

little bit

666.32

focused on the weeds i guess for the

668.16

problem we're working on and we say oh

670.24

yeah we need to do all of this

672.399

and when you step back you look at you

673.76

say oh well

675.04

yeah i need to do those three steps

677.519

within this pattern for my specific

679.68

problem or my line of business but

681.76

generally speaking

683.12

you can maybe generalize that and just

685.04

say

686.16

you know you need to do you can turn it

687.76

into one step and say here's something

689.2

you need consider

691.44

for example

692.88

um

693.92

you may have something that is a like

695.92

i'd say a customer record that has you

698.24

know first name last name account id

700.32

city state zip things like that

702.56

you may have specific things that you do

704.32

that you say oh yeah i got to make sure

705.92

that this

707.519

zip code format and this address format

710.399

is uh properly

712.8

handled for my specific case you know

714.8

that you have a

716.639

a property like i say it's a us you have

718.88

a proper u.s address and you have zip

720.88

code and

722.24

and then you find out that well once you

723.519

go beyond the us

724.88

those rules change a little bit

727.2

and so in that case instead of having

729.2

language that talks about things that

731.36

are specific to

732.88

a us address verification

736

as you just say

737.36

you know make sure that you have a

740

address verification

741.839

process involved as part of your pattern

744.16

it may seem like a little bit of

746.399

of of picking nets in a sense a little

748.8

nitpicky type of approach but it it

750.88

really does help to take that step and

753.44

generalize the

754.959

the

756

language and the text that you use

759.6

don't be afraid to do and actually

761.519

definitely

762.72

even if you are afraid do some sort of a

764.56

code review

766.079

process review

768

with

768.88

maybe some of your co-workers or peers

771.04

or things like that

772.48

is

773.36

you know or maybe even just family

775.12

members whatever to have somebody read

777.2

back over it because this is something

778.72

you want to be

780.88

you want to think of as like this is

782.16

something you're publishing to some

783.44

extent this is a

786.399

an ex this is going to be a reflect on

788.48

you a little bit so make sure that you

790.079

do things like you know grammar checking

792.16

and spell checking but also just make

794.32

sure that the the wording that you use

795.839

the phrasing that you use that you know

797.519

some other people have taken a look at

799.2

it can can say yep that makes sense or

802.399

i have no idea what you're saying here

805.44

and then you know now you've got it is

807.839

do a nice little write-up of your

809.68

pattern or any pattern and in doing so

812.16

this is where you basically publish it

813.68

whether it's to uh you can create a blog

815.6

article either on your site or

818.48

uh maybe there's a certain site

819.92

somewhere that it makes sense to post

821.92

uh like um

824.32

i'm trying to think of various places

825.68

maybe it's like a you know a reddit or

828.399

um you know one of those kinds of places

830.32

or maybe like a uh i don't even know who

833.199

would be available for like ours

834.48

technica or one of those that are

837.44

more technical type

839.04

sites

840.56

you may want to if you have a podcast

842.32

you may want to do an episode on it if

844.24

you've you may

845.76

listen to a podcast where it makes sense

847.44

to reach out to that person and be a a

850.16

guest and talk about your your patterns

852.24

or android patterns

853.68

uh maybe you've got a a slack channel

856.32

that's either uh internal or

859.36

a group like developer nor or you know

862.16

like a user's group or developers group

864.639

for your

865.76

uh your platform or wherever you are

868.24

geographically that it makes sense to

869.839

post these out and you know get it out

872.16

there so other people can take advantage

874.16

of your work and benefit from some of

876.16

your experience

879.199

so what do we learn

880.88

what was the the point of this

883.36

was really you know reiterate that hey

885.04

patterns are a way for us

886.959

it's a way for us to solve problems and

888.56

to get there faster as opposed to us

890.48

having to reinvent the wheel

892.399

any patterns are similar is these are

894.72

ways for us to avoid obstacles you can

896.639

think of them as warning signs as you're

898.399

driving down the road so you don't run

900.399

into the same pothole or take the same

902.32

wrong turn that somebody before did

905.6

this this goes back to the idea we all

908.24

individually whether we've been doing

910

this for six months or 60 years we have

913.279

experience that is unique to us and

915.44

there is a value in sharing it with

917.199

others

918.88

and so

920.56

why not

921.6

and part of it is because we want to

922.88

give back people have taught us people's

925.44

the experience of other people has

927.279

benefited us

928.8

so let's take that and turn that back to

931.519

the community and provide our experience

934.079

in a way that is helpful to others

936.32

and then the other thing is that we do

937.6

get a little you know sort of as a

938.8

selfish point is when we

940.399

do something like this and teach others

943.279

our lessons it helps firm it in our mind

947.04

and helps us understand it better

951.6

questions and comments

962

if anybody's talking you are muted

972.639

say hey rob so if you're new on the

974.56

project and uh

977.199

they got bad practices so how would you

979.12

solve

980.16

uh you know those but partners in in

982.56

case uh people don't uh continue i mean

984.72

in case you know what a good pattern

988.32

might be so

989.6

how do you solve that

991.6

well if you i mean if they've got some

992.959

bad practices

994.839

then i'm going to assume that there are

997.04

some anti-patterns that they have have

998.959

adopted and what those can either be

1002.16

uh they may be things that are generally

1003.92

known that you can point to and say hey

1005.519

here's a well-known anti-pattern that

1007.199

we're doing and so we need to stop it or

1011.12

this is where you do take a look at it

1012.639

and say hey we we have this practice

1014.72

that we have done for a while

1016.639

and we can see where it has been

1020.24

a failure or

1022.079

not pleasant or has causes headaches

1026

and that's where you you know you walk

1027.36

through and say okay we've done this a

1028.64

bunch

1029.52

and it has given you taken us to the

1032

same

1032.88

bad place each time

1035.039

and so you can take a look and say well

1036.559

here's analyze and say well how did we

1038.319

get there oh in each of these cases

1041.039

these are the three things we did

1042.88

so

1044.559

let's talk about not doing those three

1046.48

things the next time we get into that

1048.559

situation

1049.76

yeah this is uh it goes back to sort of

1051.52

this

1052.48

that repetition and reviewing it and say

1054.96

hey this it looks like this

1057.28

when we do this

1058.799

this bad outcome occurs

1060.72

so let's talk about not doing that

1062.88

whether it's uh it may be something we

1064.88

just said don't do it at all or it may

1066.559

be something where you say

1068.799

you know we we still need to go down

1070.4

that path but we need to find a smarter

1072.16

way to do it

1073.84

and it's either

1075.2

it may be something that you can see as

1076.96

you're looking at it and you can say hey

1078.32

this i see where if we make these

1081.039

changes we can avoid these bad practices

1084.32

or it may be something you know in this

1086.24

in that case because you're sort of if

1087.76

you're coming into a place where there's

1089.2

a lot of bad practices

1090.799

where it may be worth it just say hey

1092.559

i'm this is what i see i see these

1095.6

things causing these bad results

1098.559

why don't we talk about how we can avoid

1101.12

doing those things

1103.6

does that make sense yeah it makes sense

1105.6

yeah thank you yeah

1108.559

so hopefully they will be able to be

1110.64

you know some uh i

1113.12

adopt uh how do they go and adapt to the

1115.84

new changes because

1117.52

uh sometimes you know those new changes

1119.12

usually are very hard to kick out if

1121.28

people are used to doing the things that

1122.559

start anyway

1124.32

yeah yeah okay

1126.4

yeah it makes sense thank you

1129.76

other questions and comments

1138.24

i see our muted i'm not hearing you mike

1147.6

you have to have your mic turned off

1148.96

maybe

1167.44

is mike saying something is he on music

1169.52

it looked like he did for a second and

1170.64

then he he muted so it may be an audio

1173.36

issue there let's see oh here's a chat

1174.88

he's probably running it too yeah he

1177.039

sent it oh here we go maybe we can do a

1178.64

follow-up to this one on how we can how

1180.4

to contribute to the community uh that's

1182.16

probably not a bad idea

1184.24

i sort of take that that publishing side

1186.4

of it and

1187.6

uh how to take it beyond just getting it

1189.84

out there

1192.24

good point

1193.919

okay so uh let me get this out of my way

1196.96

so i can actually see here yeah

1199.36

as always thank you as always for your

1201.52

time

1203.039

your contribution to

1205.12

become a better developer you know

1206.799

spending this time and investing

1208.08

yourself almost all of us

1210.96

that's our goal is making every

1212.64

developer better

1214.32

and as always if you have any questions

1216.159

comments

1217.52

anything for us including suggestions to

1220.72

you know enhance this or future topics

1223.52

and email us at info development or dot

1225.52

com

1226.32

there's a contact us form out at

1228.08

developmentor.com

1229.679

we have our youtube channel where we

1231.12

post stuff every tuesday and thursday we

1233.12

have our vimeo channel where we have

1234.559

some longer form videos that show up

1236.32

from time to time including a lot of

1238.24

these presentations

1240

and we've got a paid developer page out

1242.32

there on facebook.com

1245.2

and

1246.24

that being said

1247.76

thank you for your time and we'll talk

1249.44

to you next time

1251.42

[Music]

1266.96

you