Transcript: Teaching Python - Michael Kennedy
Hi, welcome to another episode of Django Chat, weekly podcast on the Django web framework.
I'm Will Vincent, joined by Carlton Gibson.
Hello, Carlton.
Hello, Will.
And this week, we're very pleased to have Michael Kennedy, host of TalkPython, join
us.
Hi, Michael.
Hey, guys.
It's really great to be on your show.
Thanks for inviting me.
I'm happy to be here.
Yeah, no, thank you for coming on.
It's a real honor.
You're like, you know, with our little ladybitty podcast, and then there's you in your massive
podcast.
So I have mad respect for what you guys are doing.
It's great.
And this is really full circle for me
because the first podcast I ever did
was as a guest on your show.
That's right.
And that really kickstarted the idea
that podcasting was a thing.
And then you've been really encouraging
over the last couple of years
as I've asked you questions about the podcasting space.
So I appreciate that.
Oh yeah, happy to do that.
We had you over there on episode 190
about teaching Django and your books and stuff like that.
And that was great.
And podcasting is so much fun, isn't it?
It is, yeah.
it's it's been um yeah i mean what have we learned carlton i mean it's been a great excuse for me to
get to know carlton better and just the django community by proxy you know it's one thing to
do the code but i guess the people right as you know from doing yeah your podcast that really is
a benefit it's my one sort of humor interaction for the week as well for me so i really value it
well it's our families and then each other basically yeah these days yeah you probably
didn't expect that when you started the podcast that you're going to need to set up like a
pandemic lockdown way to keep in touch with the community and with people, right?
Well, in some ways, my life is the same. I mean, aside from people have masks on the street,
I mean, I still stare at my computer. I deal with my kids and I talk to Carlton. So
I'm pretty well suited for it, I suppose. But let's talk about TalkPython. And then you have
some new courses that you've come out with Manning. So why did you start it? And I guess
maybe because you're probably asked about it a lot. What do you know now about podcasting that
you wish you knew back when you started? Because it was year five or something for you that you've
been doing? Yeah, yeah. This is year five of 2015 in April. I launched the podcast. I remember that
because I was super nervous about it. I did not think that podcasting was something I was
particularly skilled at, but it was something I was very passionate about. I really loved
learning about technology through this sort of back channel of podcasts when when you think
about learning you know you you go and you learn the api and you learn how to build stuff and so on
and you know it's all those things for the most part and you know science and that that realm
falls into this as well so much of it is sterilized down to these are the raw steps that you got to do
where you know it's just it's so much more fun to hear the human side of like well we tried this
and that was such a bad idea so we don't do that anymore here's what we do instead and and so on
and so on and i just think that that is a really valuable way to see the community and to feel more
in touch with it right if you start to hear about the learn about who's who's creating what where
you know where's the puck headed i think that's an important part of the technology space being
successful in your careers sort of making bets on technology and it's much easier to make bets
on a humanized side rather than a bunch of you know well this one's got a thousand github stars
and the docs look good isn't that how you choose packages and then and just um so you were at the
time you were just a gigging software developer right it was just a side project for you um just
in terms of where you've come the last five years exactly it was a side project for me i was sort of
transitioning out of being a professional trainer you know education travel around to different
companies and teach python and other stuff to them and i just you know i wanted to sort of branch out
and get more deeply involved with python i had been doing c-sharp before that and i'm like now
i really want to be over in the space i'm really enjoying it where are the podcasts how do i listen
to them, wait, why are there no podcasts? What's going on? And all three of us have helped to solve
that problem. Yeah, for sure. For me, like I listened to your podcast to get beyond Django
itself because, you know, Python is bigger than Django, which I sometimes I'm in my little world.
Man, Python is bigger than all of us. You know, there's so many parts of Python that I look at
and I'm like, I can have an interesting conversation around this, but I really know
very little beyond like the surface level that I'm just curious about. And I would love it. It's
great that i get to talk to people and sort of expand that as well there's just so many ways
people are using python right no i mean that's one thing i wanted to ask you about like it's
talk python it's just such a big topic it's like that were you like when you started were you like
yeah python obviously i'm just going to go for the whole realm or well when i started i said who are
my who are my friends and who do i know who can i invite to be on the show that i i know how it's
going to go that lasted for about three three to four weeks and then like all right well now now
what now where do we go i think one of the really interesting things about podcasting is most people
will just agree to be on there folks who would probably not give you the time of day you know
they they're usually happy to be on a podcast and it really opens doors and for you to sort of get
these connections and talk to people doing amazing stuff yeah that it's like wow that's amazing that
that person took you know an hour and a half out of their day or more to sit and talk with me when
you know they probably say i'm sorry i'm too busy at a conference yeah yeah interesting it's also
it's connecting in that you know so django i mean carlton's django fellow i'm now on the board i
work with it every day but i'm still learning about important members of the community i didn't
know about. It's such a vast web and knowledge is locked up in the heads of just a couple of people
who aren't on a podcast every week. So it's, I mean, just for me through Carlton, I've gotten to
meet a lot of the technical side of Django that I didn't really know. And so I think that's one
of the things hopefully for our podcast is it introduces these people who've been, you know,
in the trenches who aren't widely known, who have just been stalwarts of Django for years and years
and years. Right. They've been doing the work. Yeah, exactly. They've been doing the work for
10 years, regardless of whether you get the recognition or the spotlight, they've still
been doing it and everyone's been standing on their shoulders. And it's just nice to be able
to shine that light, right? Right. And I think they don't want the light, which is a great pure
thing, right? They're definitely not self-promoters. But if you talk to them kind of in the same way,
if you meet them at a conference or in person, of course, this is what they spend their time on and
they're deeply passionate about it, but it needs to have the forum for it to be sort of out there.
Yeah, for sure.
All right.
You want to talk about some of the episodes, some of the fun stuff, the lessons I've learned
and so on?
Yeah.
Well, and maybe, you know, so for you, I'm just so interested in where you sit in terms
of understanding the Python ecosystem, because it is so large, but you probably have as good
a sense of anyone of it all.
How do you account for like mindshare if you had to draw a chart?
Because I remember when I went to PyCon last year, you know, web was just a tiny part of
it and Django even smaller, which was, I guess I knew that, but just to see it in practice was like,
wow, we're really just off in the corner here. It's my sense was it was really all data science.
And yeah, well, I've heard you talk about, you know, Python three kind of coming about in part
because of this new wave of developers who didn't have that. Yeah, they didn't. It's interesting.
Data science doesn't have legacy code in the same sense that we have legacy code, right? They do
have core they do of course have legacy code but you know five years ago there wasn't tensorflow
and there wasn't necessarily deep learning models that they're using now so it's not like they're
they've got to maintain their old deep learning models because they're they didn't exist right
so much of the stuff they're doing and it's changing so fast and in such powerful ways
it doesn't make sense to try to maintain some legacy projects to the extent that
you know that site that's been up for 10 years and it's mostly in maintenance mode nobody wants
to touch it of course it's going to stay in python 2 because if you change it and it doesn't work
anymore that's now your problem and you're getting the blame plus you got to fix it on saturday
right so to i would say it's really interesting like python has often thought of itself as kind
of having the largest wedge of its specialty being web development and i count myself among
that slice and i'm sure that your audience members largely do as well being a django
show right uh so the psf and jet brains did a survey i think it was the 2008 one
so jet brains kind of did the data crunching uh reporting and it was sort of independent psf
survey but they they helped out on the back end anyway they one of the questions they asked
are you a data scientist are you a web developer are you an other the other third if you will and
then you know how do you feel about your space in the community and how many others are there
like you and the web developers like yeah there's a lot of us out here we all all kind of hang out
and we all write apis and whatnot the data scientists themselves counted themselves to
be underrepresented so the data scientists thought that you say this was you said 2008 i thought
i think it was 2007 or 2000 sorry 2017 or 2018 okay okay right oh 17 sorry sorry if i said
i was thinking 12 years ago there was no no no i must i must have been off by 10 a yeah yeah so
this was it was pretty recent but a few few years ago and i thought it was really interesting that
data scientists felt like there were fewer of them than there actually were and it turns out
that there's about an equal-equal split
between web developers and data scientists.
But if you look at, you know,
keeping the science mode,
you look at the derivative of the data scientists,
I think that that is steeper than it is, right?
It's growing.
There's more people coming into Python
through the data science channels currently
than there were through the web.
I'm not really sure why that is.
I think there's other choices
that people are making on the website
that are trade-offs,
but they see them as decent trade-offs, right?
JavaScript, Node, which I don't really want to go do those things.
But a lot of people see that as like a,
that's a pretty viable path to go.
And you've got the Java folks, you've got the ASP.NET folks.
On the data science side, it's kind of overwhelmingly Python.
I mean, there is some R, but it's overwhelmingly Python.
And so I think there's like this influx of folks who come in.
And it's really interesting.
Those people who come from that space, not all of them, but some of them don't see themselves as a software developer.
If you met them at a dinner party, you'd say, oh, what are you, like, what do you do for a job?
Like, oh, I'm a financial analyst or I'm a biologist or, you know, I work with traffic patterns.
Like, okay, that's not a software developer type of role, but somehow, you know, Python has drawn them in.
and then they get a little more into it and then you meet them at pycon and they they say things
like this is my first time at pycon and wow this is amazing and you're like but you're a biologist
how did you get here you know why are you not at like biocon whatever right well that's i mean
python is the you know beyond data science i often think of that as like mining database data but you
know the science is i'm here in boston a number of my friends are are phd scientists who are you
know kind of asking me that's like python or r and they're like hacking away on stuff because
it's sort of yeah become the default tool for these just massive data sets in every realm whether
it's facebook data or you know genomes um and it's the way to to do it which i guess it wasn't
before so so i'm often surprised too it just reaches tentacles anything computational seems
like and new it's python absolutely yeah absolutely i see a lot of people who are using excel and then
they need something else beyond that and yeah because python can integrate easily with excel
they find a path in all of a sudden they're using pandas it's like hey they're not data scientists
in the they're just people using excel and you know they were probably they were just forced
there because they had this this need and they're like this looks pretty simple i can i can get
there and what i think is interesting is i feel like a lot of those folks they they get as far
as they need to go and then like oh wouldn't it be neat if we could do a little more and a little
more and a little and then you know they take these tiny little steps oh i want to reuse this
bit of code well how do i do that oh a function okay how do i make a function oh and then how do
i i'm going to share this how do i how do i share this with my colleagues i'm going to learn a
package and they're you know all of a sudden down in disk utils and then you know two years later
they're like wait a minute i'm a programmer how did i become a programmer just what just happened
to me right and python has this magical ability to pull people along and i have this this label
i've been trying to apply to it that i think captures this idea saying that it's a full
spectrum language we've got like really
easy languages that are like visual basic you can create a little draggy droppy ui or
obviously like the block type ones that you might teach programming with
but nobody would ever build instagram or youtube with vb or blocky programming languages
on the other hand they might choose something like java where you've got to understand classes
accessibility you know public private protected you've got to understand compilers and linkers and
all of those things right right from the start right you know the public static main void type
of stuff just to get started and python has this sort of ability to reach both sides of these
worlds so you can start with a extremely partial understanding of the language right you don't even
have to know what a function is and you could be creating like a machine learning model i mean
maybe you need to know how to call one, but not create one. Yeah, right. Right. Top to bottom.
Here's the, I'd write these 10 lines and then it tells me whether it's a cat or dog. If I give it
a picture, something amazing like that. Right. Um, but on the other hand, you know, YouTube is
built in Python. Instagram is built in Python, right? Like YouTube does a million requests a
second on Python, which is insane. I was looking before we spoke about your, you had a post in
your top 10 episodes. And I think the largest from last year was on Excel and Pandas. And you've
just released a course on it. It's true that we're kind of in web world or data science,
and the majority of people just need to solve the problem in front of them, which is PowerPoint,
Word, or Excel. And one of my friends in my co-working space, he manages two of the largest
Excel training websites out there. And the traffic on those is insane. It is just...
I bet it is.
or you know 10 20 x what i thought it would be because it is maybe we should have an excel
podcast and we should do excel training and write excel books i don't know i mean no no it's like
goes from django to python to excel but it is you know it makes sense right people most you know for
us i think we enjoy programming and we kind of get into it but most people just need to solve a
problem and if it makes their job easier um anyway so that's i when i was yeah i wasn't surprised
when i saw that on your list of episodes and i'm often reminded that sometimes i think i get you
know maybe carlton too we get into like the hard niche interesting parts of python and and web
stuff because that's what we focus on but that's not what most people are focused on or really need
they need that yeah on ramping and actually it's that leads into a question when you were doing
your training was that who what kind of people were you training was it like java developers
into python like like what was the level of people you were um trying to teach it was usually
professional developers but not always and was it python that you were teaching them in the last
couple years it was when i was doing that but previous to that it was uh c-sharp well i just
asked because i'm always curious about how to how do i take someone who's interested and get them
involved in not not even django or web stuff but python i'm curious what your take is on that
because i have some thoughts on the roadblocks sure and so some of the you know one of the
examples was i went to work with a bunch of stockbrokers and um people who worked on the
trading floor and like carlton said like they had been using excel to you know way beyond what
excel was supposed to do and they're like michael we need you to come and give these folks like a
crash course in python and programming so that they can they can do things like pandas and they
can move on beyond just trying to use excel and they can you know do quicker analysis they can
analyze all the data not like some subset sampling of it and stuff like that and they were super
excited all those those people even though they didn't consider themselves programmers they're
like oh this this is gonna solve the problem isn't this where we need to be though it's like the sort
the dream of computer literacy is that real world folks come along and use their computer and drive
it like the machine it's capable of being rather than just play candy crush or whatever right which
is great yeah you know and it just seems to me like we're the i know we're kind of in i always
say we're in another industrial revolution here where we're in the process of it yeah professional
programmers like us we're like scribes in a dickens novel right you go along you pay your
money to the scribe to write your letter and that won't happen in 100 years because you'll write
your own letter and you'll be able to read your own letter and yeah there'll always be professional
programmers as there will always be professional writers but to see en masse you know the last few
years folks just pouring into python real world folks that's just like yes this is where we need
to be so excited for me i that that's a beautiful way to phrase it and i completely agree with you
I hear politicians saying things like, we have a million unfilled computer science jobs, thinking of just the U.S.
And so what we got to do is our young people are falling behind and we need to create more little CS programmers so they can grow up to get these jobs.
And I just see that as completely the wrong, not even just the wrong approach policy-wise.
I see it as the wrong mental model for what the entire world should look like.
Just like you said, Carlton, it's like, why would you want to tell everybody to say you're
interested in all these things that are not programming?
Forget those.
They don't mean anything to you.
Just go write code and make, make the login button bigger.
You know, like what those people, what those people should be doing is they should dive
into the thing that they're super passionate about and then amplify that with programming.
So if you're really, really into fighting climate change, well, how much more could you do if you understood the code, you could analyze the data and even maybe create technology or apps beyond that, right?
Like the person who just got the college degree in climatology versus the person who did plus can write code and create things, even if it's not at the level of a professional programmer, you can just do so much more.
And I, I think what you said exactly captures that idea.
And what we need are, you know, a bunch of people who can do stuff, but are now way more
effective and powerful because they, they can do basic programming things.
Yeah.
And Python's perfect for that.
It strikes me that in every role as well, every job, everything there is, there's, there's
so many opportunities which are, um, which are available to, for automation, for, for
computers to be there, but not such that you could afford to contract a developer to come
in and spec it out and develop it and you know we'll do all those things which are really costly
and so that thing doesn't get automated until the person doing it can write the program themselves
and there and then there's a massive productivity boost for the economy like and it's yeah there's
that's gonna happen more and more yeah that's gonna happen more and more i think i you know
i've been saying this for 10 years and we'll see yeah i think part of that steep curve of growth
in python are folks who the way i think of it is they're like captured by the gravity of python
right they've they've had they've tried to use it just enough to solve a problem
and then as they grow like back to that full spectrum idea a lot of times you you find
something easy and it solves your problem but then you get to a this cutoff where like it doesn't
work anymore like now you've got to go learn a real language like it's time to learn c++ or
something you're like no no no with python you don't outgrow it and so once you kind of even a
little bit get captured by its gravity it just pulls you further and further in not in a negative
way in a positive way right you just like get like uh you know find more ways in which you
automate these little things which it powers the stuff that you're doing yeah then all of a sudden
you're like yeah i was a lawyer but i basically just write code all day now to analyze stuff
you're like wait a minute how did that happen i think part of it is that the traditional
engineering science stem background is to to go bottom up on everything so you say oh you want
you want to build a website, let's talk about circuits and gates and logic. And then maybe
we'll get you right. Whereas in the real world, everything is top down. It's like, I have this
problem, I need to solve it. And, you know, for me, like with Django, part of the reason I wrote
my books was I approached it from a top down point of view where I started with like, let's actually
use it and then we'll get into it. But just the pedagogy and just the mindset of many engineers
is, you know, first principles, which presumes the context and the discipline to get through it
all, right? Whereas if you're, you know, in your 20s, 30s, 40s, and you just need to solve a
problem, it's like, I ain't got time for that. I need to go automate the boring stuff. So I think
there's something in the middle there in terms of entryways into programming. Like, I know you have
your Python Jumpstart course, where you build 10 apps, you know, things where it's like, well, why,
right? Like, so when, like, why do I want to program? What problem do I want to solve? Like,
The value of a teacher is to eliminate the cruff and just go here, take this approach.
Maybe you won't understand all the reasons, but it will get you where you need to go.
And then we can kind of fill that in.
I see that as sort of a guide, right?
Because all the knowledge is out there.
It's just the linearity of like, how do I go from here to here to here and not flame
out, right?
That's a great point.
And I feel like you and I have the same philosophy for sure on this.
I think we talked about it in the Teaching Django episode we did together.
Yeah, sure.
I'm sure we did.
I mean, we must have. Yeah. But I think about it in terms of like, you know, how does coding fit
into just, just kids, right? We all have kids or older people. Like what is, what is that entryway?
Like if it's a liberal art, cause it really kind of is, how do people get exposed to it? Like there
really isn't a general, there isn't a book I could give someone that shows the lay of the land of
kind of hardware, software, how computers really interact with society. Like there's a couple on
hardware there's this code book that's good there's but how do it work but there's nothing
that combines those and i guess what i think about as an educator is is that an opportunity or is it
a little bit like internal combustion where i just want to drive a car i don't care how it works
right yeah i think people maybe kind of want to care like what's an api because i i mean i came
into programming from the business world and just the miscommunication and confusion is you know
amazing it's just sort of interesting right like i have an mba i remember doing all these forcing
excel to do all these things and macros and it's like wow i wish we could write a sql query or like
you know use use python so i understand that mindset right but as i guess a long way of saying
it's it's interesting like what are those on ramps what is the problem you want to solve
but kind of then what's next right like because you probably have this question people say i
i bought all your courses what next right like it's yeah and i it's there is no linear path
really i mean there's free code camp and there's podcasts but it's a choose your own adventure
without a guide in many ways it absolutely is a choose your own adventure for all the benefits
and drawbacks of that like oh i'm three steps back i forgot where to go now um yeah i loved
reading those books with my kids, the GGM adventure books. Um, I think part of the challenge
of teaching and part of the challenge of learning is, you know, a lot of, a lot of stuff comes from
this engineering mindset you're talking about. And a lot of it comes from an academic mindset
where among other things in the academic world, you have a captive audience for four months,
five months, right? So they're going to, the students are going to show up in September
and they're going to have to get their degree or their credit for the course in December.
And between those two times, they're required to basically come and participate.
And so long as you get them to where they need to be by the end,
knowing they're not going to leave after the first two weeks because they paid $1,000
and it's going to be a black mark on their record, if they do so, they're captive.
So we're just going to get them from here to there in this way.
Outside of academics, it doesn't work that way, right?
If you're trying to inspire people and you're trying to motivate them and get them interested
in something, you've got an hour of their time and their interest maybe, and then that's
it.
So how do you, basically, how do you come up with a bunch of short wins, getting people
from not programming into programming?
How do you get them to say, wow, that was cool.
And it wasn't that hard.
Like everything I just did, I totally understand that.
amazing and now i have this power like um one of the examples i wanted to share with you about just
like why python was um really interesting having this growth just i think it was yesterday one of
the listeners from my show sent me sent over a video of this guy named jeremy fielding i believe
his name is and i'll share the youtube video with you and it's this guy who's into woodworking and
and stuff he took a table saw and he completely disassembled it and put a raspberry pi into it
and a couple of automated motors and he built his own automated saw with with python wow and
it's got like this like this gooey touch screen on the side of this is like a you know just a
standard plug it in all it does is turn the saw on and off like this table saw and he turned it
into this robot and what he said was,
this is the first piece of software I wrote.
And I wrote it with, I'm like, are you kidding me?
didn't we? Like, this is insanely creative and it's, you know, it's controlling servos. It's,
it's detecting things. It's got a UI. I mean, like really, really interesting that, that people can
come along and do that. And what, the reason I bring this up is this guy was just, you could
just see the joy on every, like every little step, like it moved. Can you believe, like, it was just,
you know, he could have done a backflip, like right there. It was just so cool to see the
excitement and so when you're thinking of like how obviously building saws is probably not the
general solution for teaching people and getting them inspired into programming but the small wins
are no that that that look where he's like yeah i'm doing it like that's that's the teaching reward
right where you see the student and i know that one memory that comes to mind is doing the django
girls workshop and all of a sudden one of the students is in the shell driving the orm and
making quick and it's like yes and you can see the look on her face as she's like i'm getting this
and that moment of like okay yeah that's worth it that was you know all of it yeah and if you just
can inspire one person like that every once a week or something you'll change the world well
one thing i think about is just this current state in time it's something like over half of all
professional software developers have no formal training i believe among the three of us none of
us have a formal training in software development right i mean two phds and mba but nothing in
software it's i'm almost phd i'm not a full oh you're an abd yeah um but there's no other yeah
yeah i know your training i studied math that isn't you know very rigid and structured and
how you do it it's just this total like good freaking luck yeah and like i think on the one
hand that's got to change but also the kind of people who are drawn to programming a lot of times
it's people i mean so why can't everyone learn how to program something that i often forget is that
you know, people have jobs and opportunities. They sort of need the structure of school. They
need loans. They need the classroom. So even though, you know, you write a better Python course
video than anything in class, and I do a better Django one, someone who's working two jobs doesn't,
they have to have the structure of school loans and all the rest to have the opportunity to have
a couple hours a day and the energy to get through it. So there's this, I feel like I wish,
i wish that could change right or maybe it's it's not just the um curriculum it's also just the time
and energy and then really the the um certification because again i mean yeah i was gonna say like
people want the credential yes they want the credential so they can get that promotion or
they can get that job or whatever right right because most jobs require some sort of certification
and that's what i mean linkedin right they bought lynda.com they're making they're providing
certifications and linda's interesting because it's whole brilliant moment when i believe private
equity people bought out linda was we're trying to sell in you know these like web development
classes and photo editing but we're selling to hr and hr what do they want they want people better
at excel and powerpoint so they added in those classes and then that's how they got the door and
um you know yeah i don't know what a django certification would look like but i you could
think of one for excel um so again i see that as like a blind spot i have that i have to constantly
remind myself about is I'm not standard, right? The average person has these lifestyle challenges.
It's not just the curriculum. It's everything. And they need that certification. And in the
absence of that, they're not going to be able to justify the cost. And an employer probably has a
harder time saying, yeah, here's a couple hundred dollars to go spend as you will without some sort
of proof. Yeah, I totally agree. And I think that is an interesting challenge. I don't know
necessarily how to solve it uh in a way that doesn't require an insane amount of effort i guess
i mean i know how to solve it like replicate the university side or whatever or mentor side or
something but but it's it is a big challenge i do think there's a there's a bit of a divide
you know in the programming world it's very rare once you've been spent any time in the
in the industry that folks ask well you know what is your degree and where did you get it from and
can i see your transcripts like no because i've had plenty of people who've gotten great grades at
good schools who were not very effective at programming and people who you know were
wizards and had very little formal education like you said but at the same time a lot of times you
have to pass the whiteboard test yeah so it's like you still need to you still need to you know
memorize and jump through the hoops of algorithms that you will rarely use yourself that you know
that drives me so crazy i think it is it's such to me it feels like such a cop-out yeah we don't
ask doctors to like you know pass organic chemistry again every time they switch jobs
but that's the equivalent it's like a second year course yeah you had to memorize and you never i
I know you're going to be a heart surgeon and an ER doctor, but I've written a chemical reaction sequence on the board.
It's missing a catalyst.
Which one?
Right?
Like, nobody cares.
Like, the leg is broken.
How do you fix it?
Or whatever, right?
But I feel like that's sort of the reason we get in this situation, I think, is it's hard to verify whether people are actually good programmers, whether or not you have a degree in it.
Kind of like I said, a lot of times you can still be a terrible programmer and have a four-year degree in it, or you could be amazing.
I feel like, and people are willing to lie, yeah, like there's an amazing, amazing tweet by Sebastian from FastAPI saying he saw a job post asking for four years of experience with FastAPI, right?
And he's like, I couldn't get this job.
I only created it a year and a half ago.
So, you know, I think there's like all of these challenges in the easy way is like,
well, what does every programmer need to know?
They need to know quick store.
They need to know binary trees and so on.
So let's just ask him about that.
And the reality of like bringing it full circle, Will, what you're saying is if you were taught
in this, you have to understand everything from the lowest level up, up, up, up, up in this
traditional bottom up engineering way. Maybe everyone does know quick sort and all these
things, but if you learned it in the much more practical way of like, how far down do I need
to go till it works? Two levels, we're stopping there, right? Like I just got it working. I don't
care what algorithm it uses when I call sort. It sorts it, it sorts it fast, probably better than
me we're done right i don't need to know this more and so it's just such a cop-out to say well
what we're going to do is we're just going to ask them about these really easy low-level stuff that
it's easy to do and it's it's it's sad to me because you know imagine you're interviewing
somebody for a django job fire up zoom turn on screen share and say all right i have an idea
for an app it's called you know photo now i want you to create a virtual environment and get me a
a Django app running called photo now, right? And you know, they've got a, you know,
pip install some stuff. They've got to create a virtual environment. They've got to do some
managed pie stuff. You'll know right away, whether they've spent a lot of time in Django
or whether they, they have just no clue, right? If they, if they can't just do that, bam, bam,
bam, bam, like, no, they've already lied to you about being a Django. They're not a Django
developer. They may have studied some Django, but they are not, they don't have that year of
experienced or even six months of experience they talked to and how hard is that instead of saying
you have to uh you know by hand invert a binary tree like i i've never done that right i couldn't
do that but it doesn't matter i mean and part of it is for django like how would i i've learned
more and more that you know django is massive so some of the top django technical people have
told me they've used some of my posts because they haven't built a django site from scratch in years
because they're working on you know youtube level stuff right so there's also yeah like i mean the
way i like to do that is i actually i hate putting people on the spot i like to say show me some
piece of open source django code and then let's talk through it right and yeah make this tweak
rather than um anyways it's yeah or add a feature to a basic app or something right but you know
there's there's there's like these simple steps you can't you can't you want to explore the the
magnitude of their knowledge whether or not they can you know add a new view or add a new form to
a web page but you'll get a sense not just technically can they do it but are they comfortable
in that world right do they do they feel do they look like they usually use these tools
and these apis or do they look completely floundering right and and i that that distinction
right there is usually enough to know whether or not that person's you know knowledgeable somewhat
do they nod in the right place that kind of thing yeah exactly so i don't know so when i see these
like in you know do quick sort from hand it just makes me cringe because it's wrong on so many
levels well i think i mean one thing i think about since i didn't program until my 30s is that
programming is uniquely intimate in terms of the work setting if i'm hiring someone to be a doctor
or a barista or anything. I just need some set of credentials and they're going to deal with the
customer and I'm just going to watch them. And that's all I care about. Whereas programming,
it's like this hive mind that we're creating, right? It's really intimate, right? It's not
like I'm just hiring you to fill a slot in my business. It's like, you're going to be
touching and manipulating our code base. It's a really unusual thing, actually,
if you think about most jobs. Yeah, that's a good point. I hadn't really ever thought of it that
way but it's like i've i've my all of my logic and my thoughts are put together in this code in a very
careful way that makes everything hang together and you have to inter interlace yours as well
and let's make sure that that's not gonna like go crazy in some way yeah for sure right and and in
this in the in the space of something that's ever changing and there isn't necessarily one way to do
it yeah in any case we're so we're coming up a little on time i want to well hang on you said
you you said something at the beginning about you've got courses going on manning now so yeah
let's talk about that so you you've had a whole bunch of courses on talk python and now you're
is this the same courses on manning or these are new courses on manning so these are a select
subset of courses on manning so over at talk python i have almost 30 courses so we've we've
done like 200 hours of video and like hundreds of hours of exercises to go along with them and
stuff so we you know this is part of my my journey i've been on for like four years and you know
manning is doing their live video they reached out to me and said hey what you guys are doing
is really cool could we do like a talk python series over on manning live video so we selected
some of the popular courses that were a good fit for manning and so if people are live video manning
customers they can go over there and check out some of the courses right there without doing
anything different or if not you can also check out the stuff over at talk python directly and
um there as well so you know some work better some places work better for your company they've
already got an arrangement stuff with manning so that's all good right and we're gonna have links
to to all those and i think i think we're gonna have some sort of discount as well for the manning
one yeah that sounds good check the notes well i have to say i'm insanely jealous that python
courses as opposed to django you don't have to update so often right like the idea of doing
like three Django video courses seems more than anyone could manage, let alone 30. Um, and yet
you've done, I mean, you keep doing new ones. Like you did a Python async one, I think last
year before. Um, I guess if you were just did a Python, I, I, so what the reality is, is this is
like, these courses are a blend of kind of like the podcast a little bit. They're a blend of
what a bunch of people would like to hear about or learn about, but it's also often a lot of times
of like why is there no information on this thing it's driving me crazy like it is why is it so hard
to learn about asynchronous programming in python people all most of the articles say it's just
really hard and you probably shouldn't do it like i'm pretty sure it's not that hard and if if you
actually knew what it was doing it's not that it gets you could just tell us all right and um so
there was always that kind of stuff and like the last one i wrote was python memory management like
diving into reference counting and garbage collection and there's all this interesting
stuff and like how do you leverage that to make your code faster you know cpu wise as well as
memory you know more efficient memory wise and and whatnot so i wrote that course partly because i
thought people would like it but also because i'm like i just need to learn this and i need to dive
into it and like understand it because i'm i'm tired of the world just waving their hands and
saying well we don't really need to talk about this or it's hard and complicated so we're just
going to pretend you know that we don't need to pay attention to it because it's important right
so it's been this really cool journey of kind of research projects forcing me to really understand
something and you know teaching stuff as you know is a really great way to learn it so maybe one
last question for you so you cover some web frameworks on talk python courses where do you
see django fitting in pyramid flask others what's your outside sense of of django and python web
Well, sure. Well, I think Python web, I feel like until recently, there
the stalwarts right there was django there was flask there was a bunch of other smaller ones
that had either come and grown a little bit or you know they had kind of like um turbo gears for
example stuff like that i think django is is very special in that it's so many people get into python
because of django it's almost like the data science story but repeated for the web side of
python right i hear a lot of people like oh i wanted to create an app i heard django was awesome
i used it now i'm a python developer right so that's how i got into it yeah that's awesome
yeah and there's so i feel like from that world django and flask and they're still taking the
majority of the mind share of the world right they're pretty close in the recent surveys in
terms of popularity and usage and whatnot and you know people who use either of them love them but
when python 3 came along i feel like it unlocked a lot of creativity out there so people are like
wait a minute we've we've been stuck in this python 2 to 3 land and what that meant is least
common denominator right uh there's this these cool type hints these type annotations i bet we
could do something with those around APIs, but no, no, it doesn't work over here. Or people say
Node.js is crushing Python because it has this async capability. How frustrating is that? But
we can't use it because that's a Python 3.4 and above, really 3.5 and above in the nice way of
writing it feature, right? But then once we kind of get to 3.5, we've got type hints, we've got
Async, there was just so many different frameworks that exploded.
We had Sanic and Gepronto burst on the scenes showing just like insane speed.
You know, really being focused on the Async side of the story.
Cort came along and Cort is interesting.
I had the guy on my podcast around that one and basically re-implemented Flask, but with Async support.
so so much so that the flask extensions are basically like 99 compatible with his async
thing so it's like wow replace the word flask with court and now you have the async enabled version
that's pretty cool i'm really excited to see that is cool because i've been wondering about that i
bet i didn't know about court but i have been wondering how flask was gonna do that but if
there's a if there's a async capable version then it's super yeah yeah and i believe david lord and
the palettes folks are working with the guy from the court project to try to make that the official
his approach was i i can't i can't change the world from the outside but i create this thing
that you can plug into your web app and it looks like flask but it has you know def async view
method like we all need for certain things and so uh but it's i believe they're gonna try to put
those together it's the last i heard anyway i'm really excited to see django dropping python 2
support there's talk about async over there yeah we so we have async views in 3.1 which that right
what we don't have yet and is the rm support which um andrew godwin's working on at the moment and
then the thing that we really need for it to mature and be proper you know to be jango-y is
um kind of the patterns in place that you just kind of define a a view and you override a couple
of things and there it's all working you know like the class-based views we have and that will
be a few that will be a few releases away you can yeah you can write async views uh but
there isn't the django story there yet to go with it but if you need it you can drop into it and
it's so right and we're at this interesting time where you know especially for the django
way of doing things the fact that we're talking about this means it's not quite there yet yeah
right like it should just be this is how you do it what's that async word oh that just goes there
that's how it works like we don't need to worry about all the oh we're going to try to get to
this world and it's going to work this way i'm going to change no it's just this is how you
write the code it makes it better if you want to dive in and learn more about it then you can that's
what django is about right it's that nice api exactly just kind of do it and even a beginner
can do it without really understanding what's going on and it works we will get there but
you know it's still growing and developing yeah yeah yeah so there's all these different i feel
like in the last three four years there's been this explosion of like flowers blooming all over
the place in the python web world of now that we're free what would we build if we if we weren't
constrained and i think sanic interpronto uh were interesting as some of the first fast
async ones we've got other frameworks that are coming along and making and taking big advantage
of the type hints like i believe api star was in that world but i haven't done anything with it
for a while fast api absolutely fast api and starlet yeah yeah fast api and starlet and then
also like with things like starlet and then falcon and other frameworks you're seeing layers start to
develop right so there's the hug api framework which is built on falcon there's fast api which
is built on starlet and i believe api star kind of on top of that as well so you're seeing these
like here's the base layer and now what creative thing can we do on top of that as well which i
think is pretty interesting yeah and then the thing that goes with that is this is the ascii
um thing which is like um so whiskey and then ascii is the asynchronous version and so starlet
is an ascii framework and django is building around ascii as well and um so simon whitteson's
data set project that uses is ascii based and there's a few you know there's a there's a whole
little ascii ecosystem and they're all kind of to some extent interoperable you could you know nest
an ascii app inside another one so you could have you know your django app nested next to your fast
api thing or next to your data set right right right you're going to do your main web app in
django but then maybe the api stuff you want to do in fast api and you've got cool things like
pydantic uh that are doing really powerful stuff around oh it's super cool yeah so i've got this
form i've posted it it's going to be like this model and the model do all the validation and
then be filled with the data and i don't have to think about it how lovely it's a great overview
i mean i i in the back of my mind i sometimes wonder with the async stuff if it's i'll make
analogy to physics if it's a little bit like string theory and that okay it's faster but do
we need it to be faster is it even if it's perfectly there with caching and standard tools
is it always just going to be 10 or these you know your average crud web app probably doesn't
need it but again i guess it opens up non-crud whatever that looks like yeah it does open up
some something it opens certain things like uh like web socket support right um anything real
time anything where you're trying to run um i know where your i'll bounce so you're making a lot of
requests out and there's they're all pausing you can run it on a single thread and you can
you know service hundreds of thousand connections on a single thread that's amazing now you've got
to look at the node node.js examples you know if you get node.js the right way from prag prop
their book and you build some of the examples in there and they're super and they weren't really
possible in python up until three six three seven or three five three six three seven and now they
are yeah and so you know what's exciting about this three this python 3 maturing world that
we're in now is that you don't have to change language just change language just because you
need some of these use cases and then for me on the django side it's just nice that if you if we're
getting to the point where you don't have to change web framework just because you need to sprinkle in
a bit of async now if you're going to do loads of async you might want to go and look at one of the
more specialist async frameworks but to not just have that option to turn on oh yeah i can just
sprinkle in a little bit here that's oh that's super for me that's you know it's a really exciting
time the way i think about this is a lot of people see other frameworks you know traditionally it's
been node.js more recently maybe it's go and they say we think we need that or my tech lead who's
not a super big fan of python already says we probably need that so we're switching to go
yeah right and when i look at like the stuff i'm running in production it has you know millions
and millions of requests a month data-driven requests going all through the python layer
response times are 10 milliseconds it it doesn't need any of this stuff like i really would not
rewrite it with this because it just it's more than fast enough it could handle like 10x of what
it's doing at least and if it needed more just turn the knob in the cloud and you get bigger
servers but there are use cases where you need it on one hand but also i think there's just
it's kind of like the the blocking and the tackling like how do we as python people make
sure that the five percent use cases that are these high-end ones that actually need this
right like if if you could use one-tenth the infrastructure for the same web uh farm that
would be awesome if you had a big set of infrastructure how do we prevent you know
major excuse me major players moving over to this something like go or node jsa and i had to leave
python because that didn't have this and then there's so many people who say oh i saw what
google's doing for their kubernetes cluster so we're going to do that for ours it's like you
know what you're not google but it doesn't matter because so many people don't need a kubernetes
exactly but so many people are going to see that and they're like well maybe we also need to move
over to go or we need to drop python and move to node.js and so even if like 95 percent of the web
developers don't need this i feel like it's it's like a it guards against that that drain at the
high end of the the need which drags a bunch of the people who just admire those folks in that
infrastructure and that those those patterns along out of the ecosystem so even if i never use it i'm
really happy it's there but it's also about being a full spectrum language this is your term right
it's lovely but like if python if python gets to that like ultraviolet bit of the spectrum and then
says oh i have to stop well it's not full spectrum yeah absolutely i hadn't thought about it that way
but you're absolutely right yeah that's great yeah well i think the only missing bit for full
spectrum is easy installs which is a whole separate topic but if if come on we're 50
minutes in already this well no i mean my my daughter's you know second grade she's on a
chromebook how does she do python you know i mean there's some web versions like i've
but anyways separate thing no you are absolutely right and there are the there are certain areas
in the python ecosystem that are so broken that people don't people are not even willing to
think about or discuss that it is that is a part of of of need or something and so one of the things
is like distributing applications or like imagine you want to build a gui app a desktop app and you
want to give it to somebody to run it right i want it like excel but a python thing that is so
incredibly hard right now on like so many layers this is russell keith mcgee's keynote from pycon
last year yeah yeah absolutely and and it's like i talk to people like well i've never really wanted
to build a GUI app in Python.
It's like, because it is so incredibly hard,
you've never even considered trying it.
So there's like these interesting chicken and eggs.
Let me leave you with one thought for your daughter.
CodeCombat.com.
Have you guys checked that out?
Yes.
Yeah, I love it.
Yeah, yeah.
My slightly older daughter, early middle school daughter,
really enjoyed going there.
And it's, you get to write real Python code,
but it's like incredibly supportive Python code.
It's nice.
Yeah, we'll see if she's ready for that.
There's also, I mean, there's services like Glitch and Replit, which has it all contained.
And as a teacher, because that's the issue, is most students, again, to the resources, do not have a new Mac to work on.
It's a shared computer.
So if there's a way to save it and run automated tests, that's kind of the thing that unlocks it to the masses.
I think some of the VS Code stuff, some of the VS Code online is actually really exciting for that.
Yeah, it's really that whole thing with Microsoft's doing.
Yeah, they've got this MakeCode site as well, which is very good.
I got my kids a micro bit and you start investigating the resources that go with it.
It's like a little programmable board and they've got websites and you can program it
on the website and then upload it to the board.
Yeah.
Well, Michael, thank you so much for taking the time from your podcast to come on our
podcast.
If people don't already know, TalkPython, if you want a weekly Python podcast, you've
got courses, you've got the new Manning courses. Uh, is there anything else you want to plug before
we go? Um, your show, I'm really glad that you guys are creating this Django podcast. That's,
it's really great. And no, we talked, I don't know, it was a year and a half ago when you were
getting started and I'm really excited to see you guys still going. So, you know, congrats on that.
And just, you know, there's, there's so many interesting things out in the Python space that
I mean, we could go on for ever and ever, but I'm really just encourage people to just go explore
something new it's it's amazing out there well thank you um as ever we're at jango chat.com
chat jango on twitter and we'll see you all next week bye-bye bye-bye thanks guys bye