Coding Blocks - How to Learn Programming Skills
Episode Date: October 8, 2018We continue our dive into how to learn things while Michael's voice sounds an awful lot like Joe's, Joe says it's a square, and Allen says it's a triangle ... oh, and Google Feud is back!...
Transcript
Discussion (0)
you're listening to coding blocks episode 91 subscribe to us and leave us a review on itunes
stitcher and more using your favorite podcasting app and visit us at codingblocks.net where you
find your show notes examples discussion and more your feedback questions and rants
to comments at codingblocks.net follow us on twitter at codingblocks or head to
www.codingblocks.net and find all our social links here at the top of the page.
With that, I'm Alan Underwood with the super not low voice.
I'm Joe Zuck.
And my outlaw couldn't make it today, so we'll be making fun of him all episode.
That's right.
Datadog is a software as a service monitoring platform that provides developer and operation teams with a unified view of their infrastructure, apps, and logs.
Thousands of organizations rely on Datadog
to collect, visualize, and alert on out-of-the-box
and custom metrics to gain full-stack observability
with a unified view of all their infrastructure, apps, logs,
at cloud scale.
And they've got 200- plus turnkey integrations,
including things like AWS, PostgreSQL, Kubernetes, Slack, and Java.
And you can check out the full list of integrations
at the website datadog.com slash product slash integrations.
And some of the key features include real-time visibility
from built-in and customizable dashboards,
algorithmic alerts, things like anomaly detection,
outlier detection, forecasting alerts.
They've got end-to-end request tracing
to visualize app performance and real-time collaboration.
And Datadog is offering our listeners a free 14-day trial,
no credit card required,
and as an added bonus for signing up and creating a dashboard,
they'll even send you a sweet Datadog t-shirt. no credit card required. And as an added bonus for signing up and creating a dashboard,
they'll even send you a sweet Datadog t-shirt.
So head to http://www.datadog.com slash codingblocks to sign up today.
All right, so this episode we're talking about how to get better at stuff.
So we're looking at five different models of learning,
kind of popular in pop science right now.
And we're going to talk about how we can apply these to software engineering.
But first up, a little bit of news.
Yep.
So as always, we'd like to thank those who have taken the time to leave us a review.
We got a few in iTunes this time.
That's from LawFedge, ErisX27, and ZTA192.
Thank you very much.
And I got Inquisisaurus, Gary
Alex, and Sarah A.
And it's just not as fun without
Al out here to
butcher the names.
Or at least stress about them. What you
guys don't hear before the show
is like, oh man, how do you say this?
Are you sure? I don't know.
I don't want to say it wrong.
But I did, it's not Inquisisaurus, but I kind of like Inquisisaurus better, so you should consider that. Are you sure? I don't want to say it wrong.
It's not Inquisisaurus, but I kind of like Inquisisaurus better, so you should consider that.
Yeah, Inquisirus is what it should be.
Inquisirus.
Either way, thank you very much.
We appreciate that a lot, so thank you very much.
Yes, indeed.
So you want to tell us about these things you got here?
Yeah, so a while back we talked about deliberate practice for programmers,
and it kind of had a bunch of extra research that we didn't get around to talking about and things that didn't even make it into the talk.
And so we've been kind of sitting on this stuff while waiting to talk about it,
and, well, today's the day.
That's right.
So congratulations, I guess.
So we're going to talk about five different models.
We're going to briefly just mention deliberate practice.
We did a whole episode on that one, so you can go back to episode 78 for that one.
But also we've got a couple of other different models to talk about, like the Dreyfus model of skill acquisition, the four stages of competence, the learning pyramid, and the seven learning styles, which is always a fun fun one this will be interesting for me because
i know nothing about any of these so i'll be right along with everybody else here yeah so um yeah
first i just want to touch on real quick um just kind of um this is the one that we we talked about
a lot in episode 78 so they're not going to go on too much but just want to mention that it's
really important to kind of know what you're going after before you start.
And actually, I want to mention the Complete Developer Podcast had a whole episode on setting good goals.
If you ever heard that notion of smart goals, which is like, I don't remember what it stands for anymore.
I need outlaw.
Outlaw keeps me straight.
Measurable, attainable, reachable, something,
something goals. You should listen to that episode and then you'll know a lot more about it than me.
But I do think it's important to just know kind of what you want. And so I wanted to ask you,
like Alan, like kind of what you thought a little bit, like, do you keep like rigid goals?
Man, I'd be lying if I told you I set any goals. Seriously. And I know that's kind of ridiculous, but it's more just what tickles my fancy at any given moment.
Yeah, I'm terrible at it.
I think that's totally fair.
We have day jobs.
We have all sorts of competing interests. And so sometimes I'll kind of want to learn about something and I'll go and do it.
And other times I don't.
And I kind of
bounce back and forth. Like sometimes they'll set kind of firm goals and then, you know, achieve
some level of success or failure with them and then kind of move on. And sometimes they don't.
But I like that one year that we kind of set like resolutions and then we all failed at them.
Well, that's, that's kind of why I don't set goals is that very reason, because
I guess I know my personality and I know that
if I have a very short-term thing that I'm working on, I'll go after it like a rabid dog, right?
But if there's something like a New Year's resolution or some sort of long-term goal,
it almost weighs me down thinking about the fact that I haven't progressed at it. And so,
I just don't set them because I don't want to let myself down. Yeah. And a lot of times, like talking about New Year's resolutions, like the goals that I haven't progressed at it. And so I just don't set them because I don't want to let myself down.
Yeah, and a lot of times like talking about New Year's resolutions,
like the goals that I set in December when I'm thinking about yearly type stuff
and whatever, like by the time June rolls around,
I just don't care that much about it anymore.
And so I think it's good to kind of adapt and say, you know what?
That goal really wasn't that important to me.
Now it's a big bummer if it comes around to the next December
and you're still setting the same the same goals that's kind of sad
yep my scale is very sad for instance i think i think a lot of us have that problem
it's way more fun to eat the good foods so but i also wanted to mention kind of you know just like
like specifically uh programmer wise i like to kind of ask whether your goal is to be like the next Uber when it comes to like side projects and learning and kind of programming acumen.
Like meaning you want to create some sort of disruptive new service that's going to take over the world and change the world and make you the next cool like graph ql or something and kind of do something maybe tech heavier that is
kind of more niche and more nerdy but isn't necessarily gonna make you any sort of money
so you're kind of talking about is your focus on doing stuff that regular people will like to use
or do you want to do things to improve like a developer's life or or your own life or that type
of thing yeah it's kind of like that kind of scale scale. I think there's a lot of stuff in between there,
but I like the idea of kind of knowing
kind of where on the scale you kind of sit with your goals.
I think that's really important
because if you're trying to be the next Uber,
you're going to spend a lot more time marketing
than if you're writing the next database
because you're probably going to spend a lot more time
on consistency and deadlocks and stuff.
Right.
And so it's just all about, um, picking on something important to you.
And I kind of like mentioning to the idea of like, um, when it comes to getting better
at stuff, like either playing to your strengths or trying to strengthen your weaknesses.
And I think last time we talked about, I kind of talked about how I was trying to get more
of my C's up to B's rather than getting my B's up to A's.
Yeah.
That's, that's an interesting one. I mean,
are you still in that ballpark where you're always looking to improve the things that you're weaker
at? Are you looking to really sharpen what you're extremely good at already? Are you still in that
ballpark? Yeah, I mean, I still like going wide. think that if I was like a PhD student or something, then that would
make sense for me to meet, maybe focus more narrowly.
But as kind of like a professional businessy programmer, like I think it makes kind of
sense to, to stay wide.
And we had that whole episode on the T-shaped developer, uh, way back, uh, a couple of years
now, four or five years, but I still kind of believe in that.
But I like being like, um, a wide T that's not very tall.
You know what it's funny that you say that because i find myself very much in that camp i like to i think more or less i've found
most programming to be all basically roughly the same right you know even crossing languages or
whatever but what's not the same are all the pieces that start fitting together to
either make your application scale better or to make it, you know,
prettier to look at or easier to use or whatever. Right.
Like it's those other pieces that I'm always interested in that maybe I don't
have enough time to play with during my, my regular, my regular gig.
Yeah. Maybe I'm more interested in being like a W-shaped developer or something.
I think I'm right there with you.
I just
want to touch on goals. I mentioned
that Complete Developer Podcast is their
16th episode. Is that right?
We all have
it in the show notes there. I would
definitely take a listen to that if you're interested in setting goals.
We know some people in Slack
who have done great jobs by kind of tracking and setting goals and
done amazing things and uh i know there's lots of amazing things i haven't done so maybe i should
give it more of a shot well one thing i do like seeing on twitter and man i i'll have to look it
up while while we're continuing on to the next thing, but this a hundred days of programming that a lot of people are doing and that kind of thing. I mean, it's flattering that
we get called out a lot in those, but I think that's an awesome way for people to actually
track things because it's, it's, it's sort of short term, especially in the fact that you're
doing things every single day. But on the flip side, because you are dedicating to it for a hundred days, you can,
you can have little short goals that get met as you're fulfilling your bigger one.
Yeah, I am. I started doing that for a while. I think I got to like 78 or something, but I was
really surprised at how fast those numbers add up. I mean, like we're professional developers. So
like, you know, kind of five days a week, I week i you know i kind of count that for those
day 100 i'm not sure if you're supposed to count work or not but i i do um but it's still kind of
cool to like look back on the tweets to be like oh yeah that was kind of cool i was doing that a
couple weeks ago oh yeah i was doing that on some saturday or something so it's kind of neat to see
that progress and like realize like i guess i do this kind of stuff a lot i accomplish things even
if it doesn't always feel like it yeah and and the two people that jump into my mind that do this kind of stuff a lot. I accomplish things even if it doesn't always feel like it. Yeah. And the two people that jump into my mind that do this with the hashtag quite a bit are
Shannon and Arlene. They're both really good about, you know, I did this today and they'll
mention what they've learned, what they haven't learned, things that are frustrating them.
And I think that's awesome, right? Because like you said, once you go back after that 100 days,
you're probably going to have acquired so much knowledge that the things that didn't make sense on days 1 through 20 are going to start feeling a lot better as you get towards the end, right?
Yeah, for sure.
I started doing it around the same time Robert did, and I just noticed just right now that Zach Braddy, a friend of the show, just started his 100 days today.
So it kind of makes me want to start another 100 days and do it alongside of him.
Hey, good luck, y'all.
Yeah, I'm also kind of tired.
Right.
There's that.
So the first kind of model of learning and advancing skills I want to talk about was deliberate practice, which had a whole episode on it.
But just in brief, just wanted to touch on it. Basically, the idea there is you want to understand your goals, your aptitude being like how good you are already.
And then based on that, you can design, execute exercises ad nauseum and track your progress and just repeat.
That's the whole kind of thing.
We had a whole episode on it, so I don't want to go too much there.
But one thing I did want to mention is that this does have a little bit
of controversy around it, especially if you look up the 10,000 hour rule with Malcolm Gladwell and
whatnot. But for the most part, maybe because it's newer or for whatever reason, there's not
a lot of controversy around that. And that's one of the things that I was preparing for that episode,
preparing for the talks I did on deliberate practice, I noticed that people weren't really that angry. They weren't disputing this yet. Maybe it takes a couple
years to catch up, but I was really surprised, especially looking at some of these other models
that have quite a few big detractors out there, that this one is kind of sitting high at the
moment. Well, it makes a lot of sense, right? Like we talked about in that one episode is when you do, it's almost like micro focusing,
right?
The whole deliberate practices, you have a particular thing that you want to master.
And so going after, it's hard to argue with that, right?
If you're a basketball player and you want to get better at dribbling, guess what?
You're going to go out and practice dribbling, you know, hours a day.
By the way, anybody who hasn't seen the professor on YouTube,
basketball player, you should go watch them. It's awesome. But that's all right. Yeah. The
dude's undersized, but in a nutshell, this guy's just got crazy dribbling skills. He makes people
look silly, but back in the day he practiced eight hours a day doing that. Right. And,
and it's hard to argue with that when you were going after a particular thing,
how can you argue that, right?
That is the way to get good at it.
Yeah, that's true.
As long as you're practicing the right way and not practicing the wrong one,
building the wrong muscle memory.
Well, that's the thing, right?
That's the only argument I could see to this is if you're practicing with sort of tunnel vision,
then you're going to miss some of the things that would have made what you were trying to learn better
or easier or whatever.
But it's still hard to argue the fact that if you do that, you're going to get very good at that,
even if it's not the perfect thing to get good at.
Yeah, and that's a huge part of the talk I did and a huge part of the books that I read on the subject
all really emphasized having a coach and how important it was to have a coach or mentor there
to kind of see outside and have kind of a less biased opinion of you than yourself.
And I do feel like whenever I do that talk, it's kind of a bummer for people because programmers go in,
they want to come out of there with a list of the 100 things they need to do to be amazing.
And it doesn't work like that.
So it's kind of a bummer to kind of have to tell people like,
hey, the researcher says you should really work with other people and kind of figure this stuff out together. That's all whole hands now. So that's interesting. Just on the topic
of the coaching, have you ever considered doing like the mastermind groups or anything like that
or having coaching groups or anything like that? Oh, yeah. I think about it all the time,
especially we're going to get into some of the ways up here, like even kind of teaching and
sharing knowledge can be really beneficial way of learning so I think about all the time it's just a matter
of kind of time and I think that especially if other people are involved I want to kind of
dedicate some time and do it right and you know like we're busy we do podcasts we've got work
we've got you know families and whatnot that we don't spend enough time with as it is so
you know tech and one more thing on there can get me in trouble with some of those
people that I love so much.
Yeah, definitely.
All right.
Yeah.
So the first model I want to talk about, and by the way,
show notes podcast app that you're listening in probably has a way for you
to easily view the show notes.
So if you forget one of these or whatever,
you can always go to the web or you can kind of slide over and see these
because we try to do really good show notes.
First model is the Dreyfus model of skill acquisition.
And like I kind of mentioned above,
there's some controversy about it.
A lot of the controversy comes from just basically
how you draw the lines between the different skill levels
and how do you measure success.
Well, what is this thing?
Oh, yeah, I guess that's a good way.
Good thing to mention.
We could argue about it, but I have no idea what we're going to argue about yet.
Yeah.
Let me tell you about the problems with it.
The Dreyfus Model of Skill Acquisition was designed to provide the optimum way to learn changes.
And it's based around how you learn and how you get better changing as your knowledge and skill in that subject grow.
So the idea is that the way you learn as a novice and the way you learn when you're advanced
is going to be different. You can't do the same type of stuff and expect to keep advancing.
Okay. So are we talking about in terms of programming, are you talking about like
when you're very green behind the ears that you're going to be looking at books and trying
to type things in and see if they work versus when you get more skilled you're just going to start
coding away or hacking away or copying examples somewhere and seeing what's going on yeah exactly
like um i kind of think like one example here might be like if you're a novice and you're not
going to get too much value out of watching or, say, like arguing with your friends about different programming techniques because you don't really know what you're talking about.
And it's hard to kind of really have a good viewpoint on that and get much out of that stuff if you don't know much about it.
But if you're an expert, then maybe that's something that you really get a lot of value out because you have your ideas changed and are challenged and your stereotypes and biases kind of challenged.
And you can really get a
lot out of that but um they actually make a pretty good um list of basically things you can do at
each level there's four levels so we can go through those and tell you kind of what the level is and
what you do at that stage to get better and so you can think about your kind of skills in programming
or maybe your skills at a certain size of programming,
like functional programming or abstraction or architecture or whatever,
figure out where you are in this list.
And then that tells you where you should be looking to go in order to get
better.
Cool.
And,
uh,
four levels.
They are novice,
beginner,
intermediary,
and advanced.
And,
uh,
novice starts us out.
And, um, the first thing you want to do is just
make sure you understand the tools and the philosophy of the underlying thing you're
trying to get better at and then they kind of explore the ecosystem so look around watch some
youtube videos we've got defined learning goals here and also just basically kind of get started
type of you know if you can get some instruction or whatever at this point,
then it's really good.
But it's almost like you can't do too much wrong here
aside from maybe jumping ahead of yourself.
And when you do that, you potentially learn things wrong
or you build kind of bad models of the thing that you're trying to learn,
which can lead to problems down the road if you think you understand something
and you understand it incorrectly.
Yeah, that's interesting.
I want to revisit that here after we go through some of these.
Cool.
Next stage is beginner.
And this is the part in the learning journey that you're going to look at
those training courses and buying a book and playground projects.
And this was kind of rough for me because that's what I typically do when I want to get better at stuff.
It's like, does that mean I'm a beginner?
Well, probably because of what you said earlier in that you're always trying to go wider.
So you are a beginner in whatever you're trying to pick up, right?
That's true.
That's kind of how I look at that.
But again, we'll get back to my other thought on this in a minute.
That's a good point.
Like, I'm not going to buy a C-sharp in depth at this point, probably, because I feel like
I know a lot of the material.
Although there are some, you know, you can definitely dive deeper.
Like the CLR via C-sharp is a great book that I like to mention because it really does dive
very deep into the.NET internals.
I don't know what that's like in a.NET Core world, but I know when I read that,
it definitely was very different from the other kind of books that I'd read before on the subject,
which were very much like, here's the for loop, here's how you if.
It's funny because the by the book, I feel like should be in every one of these, and it's not.
It's only in the beginner. And the c-sharp uh via the
clr is a perfect example give that to a beginner and their eyes are going to glaze over and they're
going to walk away from it be like i'm never touching this right yeah that is straight up
for people who have experience in either that language or other languages and want to figure
out how to get the most out of it so yeah and the next stage there
intermediary um does have experimenting documentation and it does mention reading so i think that's kind
of what we're saying a little bit the it's just interesting that kind of differentiates between
like reading and buying a book yeah i mean it's it should be the same thing but yeah yeah like we
you know we we had a lot of fun with the imposter's handbook there and that's very much like a kind of how to basics kind of book,
but it was designed for people that weren't in that novice or beginner stages.
It was kind of looking,
looking and going back and revisiting some of that stuff.
And so,
yeah,
I think it's,
that's interesting that they,
they put it there.
I think the big thing is,
is knowing the type of material you're going after at each stage,
right?
Like there's a big difference between Java for dummies versus, you know,
learning Java 1.8 for experts, right?
Like it's sort of in the title.
So yeah, I mean,
every step of the way is going to have different things that you need to
explore and, and you'll know, you'll,
you'll feel it when you get there and you'll be like, okay,
I know this stuff now I need to, I need to up my game.
Yep.
And now that's actually a good point.
That brings us to the final point when you're advanced.
They've got teach others.
And that's the only one that they have there, which I thought was interesting.
I like that one.
I mean, I would venture to say like this podcast is a prime example, right?
None of us are, all three of us on this podcast.
We're pretty good at what we do.
Are we the best?
No, there's always going to be somebody better.
But this doing this podcast forces us to buckle down and dig into the things that you normally
wouldn't, right?
I mean, that's just in a nutshell, you know, it's, we spend a lot of timepping for this show, and that's because we don't want to get things wrong.
We don't want to mislead people.
And at the same time, we want to learn from it.
Yeah, and that reminds me of an upcoming show that we're going to be talking about eventually here.
I started looking at the show notes.
I started looking at primitive types like C Sharp and JavaScript and realizing how much I don't know just in that one little thing, like about, you know, say like numbers and JavaScript,
it gets like pretty complicated and a lot of stuff, things I had seen before, but I just
hadn't really kind of organized it in my mind that way. And so just me trying to put together
the show notes and try to figure out how to talk about it in a reasonable and organized way,
uh, really kind of like led to my eyes being opened a lot more on the subject.
And so I feel like I kind of get a lot of the weirder things in JavaScript in a way I didn't
get it before. So pretty excited about that. Definitely. And we're kind of really looking
forward to that episode because a lot of people have been asking about data structures, but it's
not a small topic. So it will probably be dedicated in a few episodes going, going back real quick.
So the thing that I had a question about that I think is, is sort of interesting is this whole
thing about the beginner. When you do a training course or buy a book and then you do a playground
project, right? One of the things that frustrates me, and we talked about this a little bit on
Docker, uh, when, when Docker when both you and I were
going through the pains of learning Docker and then the joys and the jubilation afterwards.
But everything you read out there takes you down a certain path, right? And then you get to the end
of that certain path, which is, hey, I have a container running. Awesome. Wait a second. I need
three containers that all work together running. And then the next thing that you'll find is
everybody's like, okay, well, look at Docker Docker compose. And then you get to the end of that
and you're like, oh, this is awesome. And then you find out after you spent all that time on
those first two, then people are like, no, but that's really not the way you want to do it.
Right now you want to use Kubernetes or you want to use, you know, some other type of container
orchestration. And this is the part that really frustrates me because I found this even with
react JS.
When you take the tutorials,
it teaches you a certain way to do it.
And then after you get done with it,
they're like,
you should never do it that way.
Right.
And,
and that to me is off putting both for beginners and experienced people,
because as experienced programmers,
we know a lot of the pitfalls.
Like if you,
we've talked about this before, when you, when you see an MVC project and you see things inside the actions, views and, and, and controllers, you're like, really, you're going
to put every single file you have in those three folders. That's really stupid. Right. And so
there's, there's this part of me and I, and I'm curious if it happens to you, is when I take on something new, I find myself looking at the tutorials and the guides saying, no way I would do this.
And then it takes me off on a tangent, right?
Because I'm like, wait a second, there's got to be somebody out here that's sane and doesn't give you an example that is a complete throwaway after you do the tutorial.
Oh, yeah, for sure.
Especially in JavaScript, because they tend to do things all in one file because it's
such an expensive language and you can do that.
You can fit a lot of stuff in one little file or a couple of different files.
When you think about trying to write maintainable code and keeping things smaller and reusable,
it becomes like, well, where do I put this?
And a lot of frameworks and stuff that you'll read doesn't really address that.
And then you'll see in kind of bigger code bases that people will figure out their own
ways of arranging that stuff.
And sometimes it's pretty interesting how they end up doing it.
Yeah, it can be really frustrating because that's one of the things about learning that
way.
Like, I guess what I'm getting at is when you're in the learning phase to truly want
to use something, you kind of have to ask those questions as you go along.
Because like you said, yeah, it's really cool that you could throw together
a JavaScript application in one file.
Is it practical?
No.
And that's where you, like, I'd highly recommend
if you're getting into something deep like a React app or anything like that,
go search on GitHub for something that somebody's put together that's like,
maybe it even mentions the word architecture. And then that way you can look and see, hey,
what did the end result of this application look like? Right? What's the file system look like?
What's the layout of the files? What's all this? Because those are all those non-functionals
that matter so much when you actually go to start putting hands on the
keyboard and make things happen yeah and it kind of reminds me of like um back in the day i would
kind of get into these like imposter syndrome fits are like oh god i'm a programmer and i don't even
know how to build firefox and so i'd go and like try and build firefox which was uh i don't know
what it's like now but at the time it was pretty hefty you know there's a lot of reading and a lot
of background knowledge a lot of things you had to kind of set up and not just like install.
You'd have to configure and you'd be building these things to build these things.
And you'd have various problems, especially if you're on Linux and you're not used to Linux.
Like I was not used to Linux and that would just make me feel worse about myself. But I think that now it's one of those things where it's never been easier at any time in our lives to go find source code for whatever technology or whatever domain you're interested in and take it and see what other people did with it and run with it.
Unfortunately, you may pick up some bad patterns from that.
So you should diversify.
But I think it's never been better.
Yeah, I agree. Yeah, I think for the rest of the part, you know, I mean, the novice stuff is just kind of, you know, really like every one of these steps, like I kind of think you should just be doing all the time.
I kind of agree with that.
I mean, the only difference is I think the novice is really somebody that's new to programming.
And then everything else, if you're going wide is the
rinse repeat of beginner you know intermediary and advanced oh yeah but you know and the uh the
kind of the controversy if you read up about it it's basically um between them saying like okay
well how do you know when someone's a novice and a beginner like how do you even define the domain
first of all for different people that have like different specialties and different goals and then how do you draw those lines like when should you start
training those using those courses wouldn't you use those uh experiments like so and they say
because there's no kind of hard lines between those like if you couldn't draw a hard line
between how did you test to come up with these theories i was like oh that's fair but you know
what that's just programmers being programmers being way too analytical and just being like, hey, it's a feeling.
Yeah, I hate to say it, but that's really what it boils down to.
The only problem is we've talked about this before is you don't know what you don't know.
So don't get arrogant and think you're an advanced developer, even though you've never touched 90% of what that particular paradigm has to
offer,
you know?
Yeah.
I think there's a lot of things in this world that are hard to measure.
And that doesn't mean that you just like throw your hands up,
give up and go do something else.
Like I think you,
you know,
either get used to working with imperfect measurements or you try to find the
measurement that like gets you the results that you want.
It doesn't mean you just take your ball and go, I don't know, it's too hard to give up.
Right.
I'm just going to do whatever, floof around.
So what do we got next?
So that was it for the Dreyfus model.
Next one is the four stages of confidence.
And you'll see a lot of things when you're reading about Dreyfus model that kind of references.
So I wanted to bring it in.
And it's a little square.
I'm not going to try and describe the drawing because we know how that goes on this show.
If you're new to listening, then we'll spare you this time.
Hey, wait a second.
You said this is a square?
Because on Wikipedia, it's a triangle.
It's a pyramid.
Wait, the four stages?
Yeah.
If you click the link that you put in the show notes there, it's a pyramid it's a pyramid wait the four stages yeah if you click the link that you put in
the show notes there it's it's a pyramid that's funny it's a pyramid but it's also a square
so all right here explain that difference yeah so the deal with the square is if you do kind of
like a grid here and on like one side of the grid you do unconscious and conscious. And the other side, you do competent and incompetent.
Then you've basically got four quadrants.
And the first is unconscious and competent.
And what you're mentioning here in the Wikipedia article is it basically does the same thing, except it's got a triangle where it's basically got the unconscious competent at the top.
So like the master,
and it's kind of just implying that there's like a whole lot fewer masters
than there are unconscious incompetent.
So just a different way of drawing the same thing.
It's funny that you could get totally different primary shapes out of the same
information.
That's what you said.
It was a square and you weren't going to describe it.
I was like,
well,
I want to see it.
Yeah.
And it's totally not a square.
So if you're new to the show, that's how we do with diagrams.
We tell you how it's a square and how is the triangle at the same time.
And then we describe both of them poorly and move on.
Oh, that's amazing.
But all right.
So I think this is worth describing, though.
Just so if it's easier to talk about it in pyramid really if you think about it so at the
very bottom is the unconscious and incompetent right you don't know anything but you also know
that you're kind of incompetent at it so that's fine that's where that's where there's this is
well no this is the one where you don't know that you're incompetent and uh what i like this is the
worst case wrong and don't know okay that you're bad and what i uh really like, this is the worst case. Wrong intuition. Don't know that you're bad.
And what I really like from this point is that they say that a lot of people in this spectrum will undervalue a skill.
So that might be like you go to a dinner party and like there's one person there who's like, you know, I did a little bit of HTML, you know, on my grandma's WordPress site.
I get this stuff.
And you're, you know like getting your teeth right uh because
they don't know necessarily not that there's anything wrong with html or wordpress or grandmas
but it's just that there's a big world out there if you start thinking about all the other stuff
that's involved with like websites and accessibility and browsers and security and hey were you talking
about a 12 year old that was talking to his grandma i was just curious where the voice came from that's just that's just one of my many voices
that i have running through my mind telling me things oh that's amazing evil things all the time
okay so that bottom one says wrong intuition so that's you think you know a lot you really know
nothing so that's good so then the next step up was conscious
incompetence, but that means that you just are bad at analyzing things. Yeah. But at least,
you know that you're bad. So you can say at that point that like, okay, I know that I'm not good
at this. Let me go find some help. Okay. That's fair. Then the next step up from that on this
pyramid is conscious competence. And this means that you're pretty good at analyzing what you know and you don't know.
Yeah.
And that's kind of the point where you're like, okay, I can do this, Joe.
Get the coffee.
Sit down.
Turn the music on.
Focus.
I can do this.
That's the kind of stage where you're thinking very deliberately.
It's not really a lot of fun.
You got to kind of psych yourself up.
But you can do it and you can use the skill. You've got it. It just requires a lot of attention
and effort. And then the very tip of this thing is where Joe lives. And that's the unconscious
confidence, which is you just have the right intuition most of the time with what you're doing.
Yeah. That's where I want to get to at least to where this kind of stuff just kind of flies out
of my fingers. I don't even have to think about it and typing speed is my bottleneck um but not there yet one
thing i thought was kind of interesting about this here uh this particular level the unconscious
competence is that it does say that teaching can be tough depending on how you learn and i didn't
dive into the papers to kind of see how they say that but i definitely have been there where like
sometimes you can understand something so deeply and be so unable to explain
why that is man that does happen quite a bit if you have kids that's really easy to do
yeah i can imagine it's sort of like something you're like trying to explain like a calculus
concept to somebody who only has uh you know basic arithmetic yeah like trying to figure out how to
get from you know a to b can be really tough trying to figure out how to get from, you know, A to B can be really tough
because there's so much that you have in between those two spots
that it's hard to kind of distill it to something that makes sense
to someone who only knows arithmetic.
Yep, totally.
All right.
And so that's pretty much it for the four stages of competence.
The only thing I wanted to additionally call out about that one
is for the conscious incompetence step.
That's the one where you know that you're not so great.
They specifically mentioned that making mistakes and learning from them is important.
Well, that's how you move up the pyramid, right? Is eventually you start understanding what you
don't know. Yeah. And I think that's probably important in every level. I just like that they
call it out here specifically because it's kind of like if you're at the point of something where you're like, I know enough to hurt myself. That's when if you want
to get better, that's when you need to start hurting yourself. And that's how you push past
that point. So if you ever find yourself saying like, ooh, I don't know, this is like SQL
performance tuning. I don't feel comfortable doing that. Then you can recognize, oh, hey,
what I said there is a statement that's indicative of me being consciously incompetent here. And this is a point where I could take this opportunity and push past
it in order to make it to the next level. So were there arguments against this particular
pyramid or this quadrant setup? Yeah, a little bit. But it was one of those,
this one was actually much less than the others, but the problem again was basically the lines.
If you can't draw the lines between these two stages, then how could you test your theory?
How did you develop your theory to just make this stuff up, Mr. Author?
Dude, this one's actually pretty easy.
You won't know intrinsically, but somebody else can probably tell you.
Yeah.
No, dude, you really don't know what you're talking about.
Right.
So that was a nice little triangle or square.
Very nice.
All right.
And with that, it's that time of the show where we like to beg you to where if you would like to give back to us because we don't have anything like a Patreon or anything, even though people have asked us many, many times.
If you would like to give back and put a smile on our face, write us a review.
We've got a link set up, codingblocks.net slash review.
We have links over to iTunes or Stitcher, depending on which one you'd be more happy to do with.
If you want to do it on Stitcher, you don't have to sign up for an account or anything.
So yeah, if you'd like to, you know, put a little smile on our faces, please do take
time, go up there and do it.
Or you can drop us an email, too.
I mean, we like getting those as well.
So thank you for all those that have taken the time to do it.
And thank you for those that are considering doing it as well.
Yep.
And I got a special request the other day that we do a little bit more Google Feud here.
So I had an idea for three if you're interested.
I am definitely interested in,
and we're not doing the survey says,
right.
Because that just,
that feels really wrong without outlaw here.
Yep.
No survey says today.
Sorry.
Yeah.
All right.
So yeah,
let's do some Google feud.
Let's see how bad I write this.
Yeah.
And,
the first one I came up here with,
and we'll keep this short.
Uh, just some supposed to be fun here is, uh, Google. first one I came up here with, and we'll keep this short, just supposed to be fun here, is Google.
And what I did for Google is I said, is Google blank?
What do you think people said about it?
Evil.
Nope.
Really?
Yep.
Is Google spying on me?
Nope. Really? I expected that one spying on me? Nope.
Really?
I expected that one too.
You get one more guess.
Something in the top five.
Is Google...
I don't know, man.
I give...
Let me try doing this in dog dindo just in case I am skewing
the results here.
Okay.
No, it's pretty much the same. So number one
is, is Google down?
That's the number one search term. Interesting.
Number two, is Google making us
stupid? Yes.
Yeah. And then
it just starts getting weird. First one
for me, actually uh when i didn't
do incognito is is google voice free which is kind of an odd thing to be ranked so high i thought
hold on let me go to google.com and do search is google
oh select is google a number that made sense yeah i also like uh is Google a number? That made sense.
Yeah.
I also like, is Google a website?
Yeah, most of these are really just, is Google Fiber in my area?
Is it PaySafe, DriveSecure?
I like, is Google always right?
Oh, man.
How are you going to ask Google that?
I will say this. Of all the digital digital assistants it's the most right yeah that's true oh man that's really good so i got another one for you um it's kind of in
the same vein uh is facebook oh oh is facebook down that's got to be one yep that is number one
okay yeah that that had to be one.
People would go a little bit crazy without it.
Actually, it's number three when I did it in incognito.
Is Facebook stealing my information?
Surprisingly, not in the top ten.
Maybe that's because Google kind of pushes that result down because I feel like that should be up there.
Yeah.
What's the other one?
Is Facebook making us antisocial?
Nope.
Okay.
I don't know.
So the first two, the first one is, is Facebook from Google?
Wow.
That's interesting.
Second one is, is Facebook owned by Google?
Really?
Yep.
Then we get Facebook down.
Then we get, is Facebook shutting down?
Is Facebook dying?
Going away.
Yep.
Is Facebook watch free?
Is there a Facebook watch?
I don't know.
And then another one is, is Facebook free?
Yeah, not really.
Steal your information.
They harvest.
We'll do
one more here.
And this time, I thought we'd do
Is Twitter?
Ooh.
Is Twitter down? That's
going to be one. Yep, number one.
Okay, that's going to be one. Yep. Number one. Okay. That's going to be one.
Uh, is Twitter, uh, is Twitter going away?
Yep.
Uh, that is number two is Twitter dying.
Okay.
Uh, and then I don't know anything after that.
The next one is, is Twitter free? Really? Yep. Okay. And then I don't know anything after that. The next one is, is Twitter free?
Really?
Yep.
Okay.
And then is Twitter profitable?
Presumably we've got some investors interested.
And then is Twitter owned by Facebook?
What is this with everybody thinking everybody's owned by somebody else?
That's really.
Yeah.
I don't know.
So people think Facebook is owned by Google and Twitter is owned by Facebook.
Huh. I think Google's skewing what they Google and Twitter is owned by Facebook. Huh.
I think Google's skewing what they want people to know about these things.
Yeah, definitely.
Especially with like no one, none of them asking about spying or like, is no one really asking that question?
Is that not in the top 10?
Well, this is interesting.
I went to Bing.
If I remember right, they were stealing result or searches from google
oh yeah back in the day but it's all the same stuff is it down is it down is it down is it dying
i did the facebook one it's interesting how how programmers think about people stealing data but
the the the rest of the world is just like yeah whatever, whatever. It's what it is. Yeah.
I hear you.
Oh, wait.
Do you want to do one more top secret surprise round?
Yeah, sure.
Why not?
All right.
Let me get incognito back up.
How about our design patterns?
Ooh.
Our design patterns necessary.
Let me redo this. messed up um yeah i'm pretty much our design patterns
still relevant is number one okay cool i like that our design patterns bad yeah i mean like
you kind of like hit the top five all the first one okay are they useful are they overrated are
they important are they language specific are they only for object-oriented programming?
Okay, those are good. Yeah.
Hey, very much
relevant still. Yeah, I still have
those questions myself, actually.
Well, cool. So that was fun.
Excellent. Hey, I'm going to do one for you here.
Alright.
Is Amazon
down? all right is amazon down
number two owned by google no no all right um profitable
yes that is one of them it's in the top 10 is amazon prime video free number one i was gonna
say free but i was like no that's silly yeah and there's another one is amazon prime worth it
if you buy a lot sure definitely is it coming to atlanta is it coming to georgia obviously
incognito didn't matter at all here so yeah i mean they are definitely, you know, serving you results for your region.
But yeah, pretty cool.
It's all about prime and free, basically.
And is it up?
Yeah, there's a little insight into the human condition there.
Exactly.
All right.
So let's jump back into what we've got.
Yeah.
And the next learning model coming up here
is we talked about deliberate practice, the Dreyfus model, and then the
four somethings, the
I don't remember what the four things were. The four stages of incompetence.
Yeah, and now we're talking about the triangle.
And I accidentally closed the show notes but i'm back
brief brief intermission brief intermission and yeah so now we're talking about the learning
pyramid uh also known as the cone of learning or cone of experience and this is kind of similar
to the other things we talked about it's just a different kind of slice on it it's basically how um i don't know how would you describe this is like uh basically how
how much your given activity contributes to you actually learning
and so it kind of starts at the bottom and works its way up um so they say that if you're watching
a lecture it's only like 5% worth of value.
So the return on your investment for that time is only about 5% if you're just passively watching a lecture.
Because you're just not going to retain it.
Right.
Interesting.
And reading is 10%.
I guess they're saying it's a little bit – I have a harder time reading sometimes than I do listening.
So I take some – I don't know.
I have a hard time with that.
Reading, they say it's 10%.
Audio-visual, 20%.
Hey, we're up there.
Yeah, hey.
So we got audio in there, but I think they want that visual component too so this is almost like if you're watching something with like some you know powerpoint uh as compared to just watching
somebody standing up and giving a speech and i guess if you break up lecture and audio visual
then yeah i mean if i'm just like sitting there watching somebody but i do love the podcast so i
like to be out there mowing the lawn listening to something i definitely learn a lot learn at least
of things to learn about when I'm listening.
You know, one thing that is interesting about the audio visual, they've, there've been studies done.
Like if you've seen the YouTube videos, I'm sure you have. They drive me crazy
where somebody is talking and they'll type the words up on the screen as they're saying them.
When they try, they've proven that that, that retention is way greater when they have the words show up at the same time that people are saying the same thing.
I love that.
I actually, I turn it on captions for Netflix and stuff too now.
Really?
Yeah.
But then you're not watching the movie.
You're reading the captions.
Yeah, I know.
But I love it.
Yeah.
I don't get it.
I don't know why I started doing that.
It just works out really well for me.
There's something about the words.
I feel like when I watch a show and I pay attention to the words, I remember it.
But most of them aren't that important, though.
You're watching a show on Netflix.
Yeah, they're not even right half the time.
You're like, how did that get through?
Oh, that's awesome.
Yeah.
Or someone will cough or something, and it's like cats fighting.
You're like, oh, it's like cats fighting.
So that was audio visual.
Demonstration, 30%. And I didn't look to see if that was like you and being involved in 30% if you're just watching it.
But I'm going to assume that, you know, I think of like a code demo as being like a demonstration as compared to audio visual,
where you just got some slides and some arrows.
Yeah, I think so.
And I take some umbrage with this one as well,
because I feel like a lot of times people feel pressured
in like a coding talk to like actually show code executing
and they kind of get nervous if the demo doesn't work.
But like, man, I'll tell you,
I've seen a lot of presentations and I believe you.
If you tell me that something worked or it worked yesterday, but now the demo is busted because your trial license ran out or something, which happened to me recently.
Like, I believe you.
I don't need to see, you know, you hit compile in order to believe that you made a repository pattern or whatever it is.
But I will say there are times that just seeing somebody go
through the motions makes that stuff less intimidating for the other people who are
watching right because it's like oh oh i thought it was magic but you just did this click and you
did that and it's i don't know it it almost instills confidence in the people watching
and maybe that's why this is higher oh yeah i guess like you could do this too kind of thing
exactly i just think about the times we're like okay first we're going to add the inputs and then higher. Oh yeah, I guess like a you could do this too kind of thing. Exactly.
I just think about the times where we're like, okay, first we're going to add the inputs
and then we're going to go over here to the controller and we're going to add it
and we're going to add the column to the model. I'm like, oh
man, I know what you're doing.
Fast forward.
If it's vanilla stuff, but then
again, you're probably not the target audience
for people that are learning from the very ground
up. That's true.
So that was 30% for demonstration.
Now, here's where we do take a jump,
and this is actually participatory teaching methods.
So this is – I should have read this if we're talking about it.
I think we mentioned we put the notes together for this a while back,
so apologies.
But participatory teaching methods is when you actually get people involved,
and so you're kind of doing some hands-on kind of type stuff,
a lead instruction and that,
that jumps all the way up to 50% effectiveness.
That makes sense.
So that's pretty cool.
And then I'm practiced by doing a 75.
So that's way up there.
How is that not higher?
If you're doing it,
how are you not up towards the very top? Well, there's a lot of things I've done
that I've totally forgotten. Like every regular expression I've ever written.
Okay, that's fair. Alright, and then the tip of the
iceberg? Once again, teaching is going to take the cake here.
Apparently when you try to teach others, you retain 90% of what you're talking about.
And it makes sense because you don't want to tell somebody something wrong i mean we don't mind telling people wrong
things but most people do yeah i think a lot of times um when you're trying to just kind of
explain something that you know like it forces you to kind of organize your information a little
bit differently and sometimes um when you get people those questions sometimes you think about
them in a different way or you need to go find the answers and so i think that's kind of where that comes from it also just kind of helps ingrain that stuff in there so
it's funny like i'm the learning permit permit is one of the ones that has the most controversy
around it where people just flat out say it's wrong where are the lines where'd you get these
numbers from you know like these numbers are awfully convenient 5 10 20 30 percent like
yeah i mean sure you could argue about the numbers.
But I think it's pretty – I think how they've laid it out makes a lot of sense, right?
The ways that people retain stuff.
Now, obviously, this isn't going to fit for everybody because some people are very visual.
Some people like to read and they learn better that way, right?
But I think this is a pretty decent breakdown. There's something about me and listening where like I can like a lot of times I'll remember like exact sentences or whatever from something I listen to.
It's just something that I'm able to do for whatever reason.
Particularly with podcasts, especially if I'm doing something physical at the same time.
Yeah.
Like if I'm mowing the lawn, like I can almost remember like the last three podcasts I was listening to as I was mowing the lawn.
And I can almost tell you like where I was in the podcast, like on this hill or whatever.
Um,
it's kind of weird.
Well,
I mean,
your mind's not really engaged doing anything else.
So it's weird how that works.
And that's actually why I love podcasts too,
is because when,
when my mind's completely not engaged in something,
then,
then I feel like I'm not wasting time.
So,
yeah.
I wonder if there's something to that,
uh,
that would be kind of interesting.
No, it's like if you're like kind of interesting to know. It's like,
if you're kind of at your capacity or if you're kind of mixing
physical something and mental something,
it takes up all your attention so
you're not kind of left wandering and fidgeting
or whatever. I bet it does. I mean,
our buddy Carl from MSDevShow,
he listens while he's working,
which is just
a... Now, granted, he says he has to listen at regular
speed but he retains the information dude i've tried it if i'm working my mind cannot focus
like i'll either miss all of the podcast or i'll miss all of what i'm doing what are the other
yeah i can't do it either there are times like there's things i'll do like i'll kick off a build
or something it takes like eight minutes like i could i could listen to a podcast for eight
minutes especially if my computer is like melting at the time uh that's so excellent yeah but uh
yeah lots of controversy over this one uh all about those numbers like how did you get him how
did you measure how did you test like uh say if you're like um doing a lecture and you test
um your testing after the lecture is over right if you're um doing participatory or practice by
doing like um the time to actually testing may be a lot faster and i didn't quite say that right but
like if um there's just problems with the testing method so a lot of times if you test them on days
later the results are going to be different than if you test them the moment after and some some of the ways that they did some of the testing for this stuff was just kind of shaky on how they got the numbers.
And a lot of it was done via surveys and stuff.
So it wasn't a scientific approach.
Right.
And there's also kind of this notion, too, that's like, well, maybe you get different things out of the lecture and different things out of the participatory.
So was the lecture trying to teach you how to swim?
If so, that's not going to work out very well, but the demo is probably really good.
But if the demo is about the elements in the periodic table,
maybe a lecture is a little bit more effective than teaching you the alkali metals and the gases,
whereas the demo doesn't have enough.
Seeing some stuff in little jars isn't very effective so you know maybe the actual material behind stuff has a
big impact on the learning method too and the cone totally ignores that so that's why it's
controversial but i did think that it's really interesting to see teaching up there so high and
i like it with all this stuff you got to kind of take it with a grain of salt but we do keep seeing like a lot of the same kind of themes coming up and so it's something
worth like chewing on and thinking about and figuring out what works for you definitely
and uh last one we got here um the learning styles and so um this one has also been um
quite controversial people people hating on it haters gonna. And I'm sure we've all heard this before to talk about the seven learning styles.
Like they used to say that someone might prefer learning using pictures.
So you're a visual learner.
I mentioned I liked podcasts.
So they might say that verbal.
So I prefer seeing or hearing words as compared to somebody who is oral, which means that you prefer learning
via sound and music somehow, which is kind of weird. But those seven types are visual, oral,
verbal, physical, logical, social, and solitary. And the idea behind that is that some people
might learn better than others in certain...
What am I trying to say here?
Like, say, for example, Alan,
maybe you're a more physical learner than I am.
Like, someone actually kind of shows your hands,
tells you which keys to push,
and gets that going.
Like, you might learn a skill better,
but, like, I might prefer learning kind of via argument.
I might get more out of something by kind of debating
and having someone explain to me the reason behind why something works, rather than me actually kind of mucking around with a wrench or whatever.
Yeah.
So I kind of think about a carpenter, right?
You can look at all day how you should do something, but it might be easier for you to put your hands on a saw and see how that works.
Right?
Yeah.
And one thing I've noticed for me is I've gotten into
watching YouTube videos for house repairs
and all the stuff's in blogs.
You can read up a blog
and it'll have pictures.
Read up a blog. You can look. It'll have pictures.
It'll draw whatever. You'll see the forums. It's nice.
When I watch the YouTube video,
it actually shows the person doing the thing
on the washing machine or whatever.
There's something about that that I get it. Even if it's different washing machine,
whatever, like I can actually kind of see it happening. And so I kind of wondered with this
one too, it's like, maybe this is another case where the problem domain or the thing that you're
trying to solve is, has a big impact on how you need to learn how to do it. Yeah, that's, that's
very true. I would imagine. I mean, in interesting, just side thought
on this is when I used to do the headphone reviews and all that kind of stuff, I used to do blog,
or they weren't blogs, they were written reviews, right? Just huge, tons of pictures took forever
to make those things. And at one point I was, I was just curious what, how are people looking at
the page? You can do what's called like a click stream,
right? And you can see exactly where a person moved the mouse on the page and all that kind
of stuff. Kind of creepy if you didn't know it existed, but you can totally, it's not real time
spying, but you can almost record what people do on the page. Dude, people would scroll all the way
down to the bottom of the page, read the conclusion and leave. Like it was everything. And I think
at the time I was trying to monetize with something like Google AdSense or something
like that, or even click throughs to Amazon. I think, I think the first few months I made like
$2 a month, like almost nothing. But then to the point of what you're talking about with videos,
there's a level of involvement there that is that is way different than just reading and I
could take that same product do a 10 minute review on YouTube and I want to say like the first the
first time that I did that my earnings in a month was like a hundred bucks and and it was literally
same content same content the only difference was I was showing videos of the
device or of the headphones, whatever it was and talking about it. And people are drawn into that
more. And, and it was, it was easy to prove. Like I had months of no earnings and no clicks.
And then literally, as soon as I went to that other medium, the, the level of,
of involvement was just massive. So it's true when you see these things, I mean,
and it's funny because trying to break these down, I know we're talking about learning styles,
but it's just part of the human interaction. Sometimes people want to be drawn in by other
people, you know? So, yeah, for sure. And I kind of wonder too, it's like, you know, I say, like, I have a hard
time kind of reading and like reading comprehension, I feel like later, but I also know that there's
whole movies that I've sat and watched in the theater and I don't remember the ending. I can't
tell you what happened anymore. So it's like that stuff just went in one eyeball and out the other
for whatever reason. So I do think there's something to be said for different things and
different kinds of level of involvement.
And it doesn't necessarily mean that I didn't like the movie or anything.
I just,
for whatever reason,
it just didn't stick with me.
And so,
uh,
you know,
there's,
uh,
some controversy around this and all this stuff,
like,
you know,
the,
the five different types and the kind of controversies around it.
We've got links in the,
in the show notes here,
but,
um,
you'll see that there's just a lot of the same kind of things to say it's how are you measuring this is it really accurate
like so if i say like i'm an audio learner maybe what i'm really saying to you is that i pay
attention to things with my mind when i'm mowing the lawn and i do a lot of mowing lawns and what
i'm saying also on the other side of that is like well i try reading right before i go to bed and i
get really sleepy because that's you know my And so maybe it's not that I'm
a better learner one way or the other. It's other circumstances that are, you know, changing kind of
how I prefer to learn and don't actually mean anything like systematically.
So I am curious, like you kind of had this, the, the series of podcasts that we've done on this now
like what drove you to finding learning styles did did you feel like you were struggling to
learn some things and you wanted to know how to like were you trying to hack your learning
or what what was it exactly that that drove you to dig into this yeah sure it's basically i'm just
trying to figure out kind of like what anyone listening to us is
listening to us for.
I try to figure out like what's in common,
like what are people doing in our Slack?
What are people doing commenting?
Like,
why are people listening?
Like,
what are they trying to get out of this?
And what I kind of like theorize is that,
um,
the people listening to,
you know,
technical podcasts want to be better programmers.
And so I got me kind of thinking, well, how do you do that?
How do you help people?
How do I get to be a better programmer?
And so I read a bunch of different books.
I think like the Dilbert Practice Talk, I mentioned like five separate books and different things that kind of pulled out from each of them.
And so I just kind of amassed a whole bunch of information.
I wrote a couple of blogs on it over at the Coding and um and just put together a whole bunch of notes
and so i was just really trying to understand like what it means to be good and what it means to
you know or how you get better at something okay cool so it was sort of trying to figure out how
we can best provide information to to everybody listening yep and i was also greedy to make use of it myself. Fair enough.
All right. So I think that that go ahead.
I think there might be a dog whining at the door. Sorry.
I don't hear it at all.
Okay, good. Then nevermind.
Yeah, there's, there is no dog.
So the resources we like for this,
we've gone over several of the chapters in one of them,
the imposter's handbook.
And then we've got several other links to describe the various things that we've talked about above,
as well as we have links talking about the controversy. So if you just want to dig in
and find out why people say these are terrible or whatever, that's a good place. Have you ever
found too that an argument or a good debate makes things sink in i i find it
ironic that almost none of that has shown up here yeah the only the closest thing i saw there was
where was it in the i think the drive us model which basically talked about kind of um like
documentation or experiments i kind of thought like when they said experiments like as opposed
to like a playground project i kind of thought maybe that meant more like thought experiments
like where you kind of pause at something you like get it beat up, and have it shake the truth out.
It's funny because some of my – I still remember the conversations, and it's kind of ridiculous,
but comments.
Our buddy Will Madison, he had – at one point when we all worked together,
we had this hour-long debate about whether comments were good or not.
And he sort of swayed me to they're not.
And then we read Clean Code and all that kind of stuff.
I was like, I totally get it right now.
I hate comments.
But it's funny how those things do stick with you when you have a very heated or passionate debate about, you know, why something is or why something isn't.
So it's kind of ironic to me that that's not part of some of this is,
I don't know,
having those,
those real conversations.
Yeah.
It's a really good point.
And that's why I like doing the show so much.
Yeah,
true.
All right.
So now it's time for my favorite part of the show.
It's the tip of the week,
which I totally didn't prepare for.
So I'm going to have to find one.
I guess I'll go first then.
Yeah,
man,
go ahead.
Yeah.
So there's this website called dev.tube,
which is basically like a curated list of YouTube videos and channels.
And so if you go there,
you can go and like find a bunch of like programming videos and talks and stuff from conferences and whatnot.
And it's got really nice features for discovery.
So you can look for tags on, say, JavaScript or machine learning or whatever and just find tons of videos and even have rankings.
So you can sort by machine learning, most popular, and just chow down on tons of free content.
And it's just dev.tube.
And Codebox is not there, but we're going to be.
I actually looked up, at least I hope they accept my submission.
If you've got your own videos, like we've got our own videos over at YouTube,
there's a process there that's kind of like you go through GitHub, essentially,
and you kind of add your stuff there.
And if it gets approved, then you'll get your stuff added.
And it looks like they're adding stuff all the time, staff picks,
all sorts of stuff.
And so it's pretty cool.
And it's amazing to me just looking at how many of these videos I haven't seen
or haven't even heard of the channels.
And so there's a lot of awesome content out there that you could be watching
right now.
Most excellent.
So I guess I'm going to do mine, even though by the time this thing airs, I will have probably finished my talk down at Ignite.
But I might as well give you a little piece of information that I found out with Azure Functions.
So in short, you can only have like one function per project, which is kind of
interesting. So if you think of, so if you're not familiar with Azure Functions, it's basically this
whole notion of serverless computing, which is AWS has their version, it's called AWS Lambda,
Azure has theirs, it's Azure Functions. But it's basically almost like web services that you don't have to host a machine.
You don't have to patch the machine, any of that kind of stuff.
When it runs, you pay for it.
You get to use it.
When it's not running, you don't pay anything, right?
So that said, one of the frustrating parts for me was typically in a function,
if you're doing Azure functions, you're thinking
like services, like microservices, basically. And code duplication was one thing that really
bugged me because each Azure function, if you're going to have two web triggers, for instance,
which are basically just HTTP triggers, you call a website and then it's going to fire off the function. If you have to use the same thing, like let's say it's an accounting
thing, you have a calculator class, right? The way that you have to share, it's not like you would
have a VSTS solution or something or a Visual Studio solution file to where you just share this
project between things. You can't do that. There's a few different ways you can do it.
You either have to create a NuGet package that you could then load in or an NPM.
If you're doing JavaScript, you know, depending on what your language is, pick your package
manager and you can do it that way.
So that's one way you can share classes.
Another way is in Azure Functions, if you're doing C Sharp, they have these CSX script files
and you can actually do a pound load,
which will allow you to load in a CSX file
from a shared directory, right?
So here's the interesting thing.
The Azure Functions all have to be in separate projects,
but you can have a folder that's in the same space
because it's basically, if you think about it, you have to have storage for your functions. You can have a folder that's in the same space because it's basically,
if you think about it, you have to have storage for your functions. You can have a folder that's
accessible from all these different functions to where you can share those same files. So you can
do a pound load. And then there's also another way, and I want to say it was pound ref and I'd
have to look it up, but, but just know there are ways to share things. They're not the most
straight, like you wouldn't have thought about it just off the top of your head, right? Cause But just know there are ways to share things. They're not the most straight.
Like you wouldn't have thought about it just off the top of your head, right?
Because you typically think about deploying your assembly or your program.
So there's these other things you have to think about up front.
So if you plan on getting into serverless and any of that kind of stuff,
know that there are ways to share files.
It's not going to be obvious or share classes, but that's how you go about it.
Oh, very cool. Yeah, it was really neat, And it's really one of those things that's frustrated. It's kind of
like the Docker thing I mentioned earlier. When you start out, you're like, okay, cool. I got this.
Wait, now I need to do something with it. Now what do I need to do? Right? Like it's just,
it's that constant learning thing, right? So I was somewhere in between the novice and the
beginner levels on that one section.
And one other thing I want to point out, I guess this is a super long tip, is if you haven't played in the cloud, this is one of the most awesome ways to get started because it's so dirt cheap.
So I have an Azure function up that I was working with to do this talk, right?
I want to say, so the storage is separate. You have to pay for the storage. I want to say I
paid 30 cents for the month, something like that. It's nothing. But then they also have their pricing
calculator, which is really cool. And I'll have a link on here to all this stuff. I have to find them all, but they do things in what's called a gigabyte per second compute. I want to say is what it is
in a nutshell. It's it's dirt cheap. So you first get a free grant of 400,000
gigabyte per second things. And what it boils down to it's consumption based. So the amount of milliseconds
that your functions running times the amount of Ram in gigabytes that you're doing. And they have
an example here that's, that's kind of interesting. I'll go through it real quick, just to give you
give you an idea of how cheap this actually is. So if you have 3 million executions
of your Azure function in a given month,
and they take a second each, so 3 million seconds,
let's say that these things took up 512 megabytes of RAM.
So you divide that by 1024 to get your gigabyte of RAM.
It goes down through all the calculation, works it all out.
That thing would have cost you $18 a month for 3 million executions at a second each.
And it auto scales it all for you. So that's one of the cool parts about it, right? As it runs,
if it sees that it's taking too long to finish a request, it's got its own heuristic
to figure out, Hey, we need to scale up and run more of these things. So even though you're
getting this scale, you're not paying any extra for it. You're paying $18 a month. So really cool
stuff. That's my super long winded tip. Yeah. I was just looking at how much QIT is costing us
right now. And, uh, it looks like it looks like we just passed the billing cycle.
So it's estimated for the next billing cycle,
it looks like we're going to hit one cent.
Very nice.
You know, roughly 25 days into the billing cycle.
And that's because you're using the free Azure services, right?
Yeah, but it does do serverless too.
It's got a trigger, which is something you can do with serverless.
You can say, like, I want this to run, like, every couple hours.
So that's what I do for checking the feeds to see if anything's updated.
But it just, like, the actual feed loader thing only runs in a couple seconds.
So it's basically every day I'm running this thing for much less than a minute.
So are you using an Azure function for that?
Yep.
Okay, so you're using the HTTP or using on a scheduled trigger.
Yeah, the timer trigger.
The timer trigger.
Yeah, so all your executions, like I forget how many are included in there,
but you have a bunch of executions that come free.
And then after that, you know, like I said, it's a nominal charge.
Yeah, I think I'm doing like five day or something.
So it's not anywhere near it.
Yeah, you'll never touch anything.
The one cent is probably the storage account. that's probably just the file storage on the
system it's i mean it's truly if you want to get into cloud services and just see what it's about
get you an account okay you hook up a credit card just don't do something stupid that you don't
realize that you're doing like because you did
unfortunately we had some money in the bank so it wasn't a problem but um but yeah i mean if
you're doing redundant storage with you know multiple region failover and that kind of stuff
you can get into some cash um but if you just go with the free tier stuff and and you can even set
your caps in there for it man it's a great way to learn this stuff.
Shoot, I was just looking at Azure and I'm wondering why I've got a service
named delete me now.
Well, I'm kind of scared to delete it.
Dude, I am the same way.
I have code like that that I'll look at and I'm like, wait a second,
why didn't I delete it back then?
Yeah, exactly.
That's exactly what I'm thinking. Like, oh boy.
So I might have just taken QIT down. I don't know. Oh man, that's
awesome.
Alright, so yeah, wrapping
up, you know, Joe kind of walked us
through the different ways to learn.
So yeah,
if you forgot any of these
models that we talked about, we've got awesome show notes.
So, go check those out.
Yeah, and let us know, too, in the comments if you've got anything that you've kind of learned or any kind of learning hacks that you think have worked out really well for you because I want to steal them.
True.
I want to learn from somebody else how to learn.
So, yeah.
With that, subscribe to us on iTunes, Stitcher, or more using your favorite podcast app.
Be sure to leave us reviews by heading to codingblocks.net slash review.
And while you're up there, as we mentioned, check out our show notes, examples, discussions, and more.
And send your feedback, questions, and rants to the Slack channel at codingblocks.slack.com.
You can slide up there at codingblocks.net slash slack.
We'll have a little form.
And make sure to follow us on Twitter at Coding Blocks,
or you can go to Facebook or anywhere else.
We've actually got a bunch of social links there at the top of the page.
That's it?
That's it.