Transcript: Beyond Golden Pathways - Teaching Django with Sheena O’Connell
This episode is brought to you by ButtonDown, the easiest way to start, send, and grow your email newsletter.
Hi, welcome to Django Chat, podcast on the Django web framework.
I'm Will Vincent, joined by Carlton Gibson. Hello, Carlton.
Hello, Will Vincent.
And we're very pleased to welcome back Sheena O'Connell to talk about Django, education, technology, and all those things.
Welcome, Sheena.
Hey, thanks. Glad to be back.
Glad to have you, Sheena. Thank you for coming back on.
So last time you were at a startup, Umuzi, focused on education and technology, and you since moved on from there, but are still very involved with both education and technology.
So maybe I'll let you say, what are you up to these days?
Awesome. Yeah, so Umuzi is more like, it wasn't really a startup.
It was a nonprofit in South Africa that finds high potential youth and trains them, and there's many wholesome things about that.
So over there, I was doing some tech.
Technology stuff, built a learning platform that worked pretty well, and taught a bunch of people stuff, and that was cool.
Now I am trying to take everything that I've learned from there, and I'm kind of green fielding it a little bit, and trying to start something new from scratch, and that's terrifying, but also a lot of fun.
So I've got two main things that I'm working on.
The one is Prelude, which is a...
It's a training company, so I've already gone through a couple of different iterations of how to craft this thing and what to focus on, but my main thing at the moment is running workshops that are focused on Python and Django-related things.
So the most popular one is how to build a modern front-end using Django, so it's got HTMX, and Tailwind, and Alpine, and Playwright, and just introduces people to all of these things.
And how they plug in together and get them working on it, and that's been pretty cool.
People are digging that.
And then I've got another one on Git, because everybody knows somebody who's struggling on Git.
Everyone.
And a few other things.
So that's Prelude.
And then, yeah?
Well, I want to jump in.
I want to talk about this thing.
Go for it.
Do you want to tell us the other bit first, and then should we just jump in?
Let's talk about those.
Because somebody emailed me and was raving about your Django.
Front-end workshop.
Oh, thank you.
They were, like, effusive about how good it was.
And so I've heard amazing things.
I'm obviously super excited.
So you say Django, you say Alpine, you say HTMX, you say Tailwind, you say using Playwright.
So, oh, this is where the puck is.
Yeah.
Yeah, yeah.
It's super fun.
Like, people, yeah, the people who've shown up so far have been, like, really, really engaged.
It's been very, I don't know.
Like, it's quite an intense workshop, because it's, like...
We're, like, we're covering a lot of stuff, and it's over a weekend.
So I'm trying to do it over weekends or, like, not office hours,
so that people who are maybe transitioning into tech,
they don't necessarily need to quit their day job or take a whole lot of leave to take part.
So, like, there's a lot that happens in a short amount of time and super intense
and a lot of interaction with people.
And by the end, I'm, like, a little bit sad, because I'm, like, oh, you guys are all leaving.
Yeah, so it's super fun.
So how...
What level do you have?
So you say transitioning into tech, so is this assuming no background Python or some?
No, not necessarily.
Some background in Python is very helpful.
So I don't want to...
So I have had people show up who haven't used Django before,
and they sometimes struggle a little bit because, you know, Django has views and models and URLs and templates
and it's got all this stuff, and they're, like, where do I put my code?
And so if they're learning Django...
stuff at the same time, then it can be a bit heavy.
Some people can do it.
Some people struggle.
So I do have a more, like, basic Django course as well that is, like, almost a precursor.
Like, people can do it as a precursor, but it's not as popular,
because just learning Django isn't as, like, fancy.
So...
I just...
On that tech stack, that choice of Alpine and HTMX together, I find it really powerful.
And really, not just powerful, I find it empowering as an individual developer to be able to do so much.
So...
How...
Yeah, yeah.
How are your people finding it?
So far, they've been finding it pretty good.
So part of my thinking on these workshops is you can only do so much in a weekend,
but what I can do is I can plant a bunch of seeds, and I can set those seeds up to grow a little bit.
So after the workshop, I get feedback from people about what they're doing with it.
And, like, during the workshop, they come up with projects that they want to work on,
and, like, most people continue with their projects, which is cool.
Sometimes it's work projects, sometimes it's portfolio projects,
but they're, like, leaning into the technologies and actually using them, which is awesome.
Yeah.
I'm a big fan of having a portfolio, having a little project that you just keep going,
keep tweaking, keep playing with.
It's just, you know, it's a test.
Yeah, like, it's great, like, to get people to go deep into a technology,
because a lot of folks who are learning web development get stuck in tutorial hell,
and they'll learn a bit of this,
and they'll learn a bit of that,
and they'll always, like, go down these golden pathways that have been laid out for them.
And, like, real development isn't about following somebody else's golden pathway.
You have to get off the beaten track and, like, build stuff for yourself
and bump your head and go deep and get frustrated and overcome the stuff.
So, like, a proper portfolio, it doesn't just demonstrate the technical skills.
It shows, actually, you've got the grit to do this job.
Yes, yes, yes, yes.
Because it takes.
Because it takes that.
So, yeah, big, big fan of portfolios.
No, and that point about grit, I think, is perfect,
because as a prospective employer,
you're looking for someone who can solve the problem on, you know, Thursday,
and it's turning out difficult.
You know, are they able to keep pushing through to the solution?
That's super.
Yeah, yeah.
Can I ask about Playwright, quickly?
Will, I'm not letting you speak for ages.
No, go.
I'm just too excited.
So, I've spent ages.
I've been so scarred.
I've been scarred by Selenium as a young developer
and have battled it for many years.
And I've been putting off, I've been playing with all sorts of things,
Cypress and Jest and Vitesse and all of these other,
which aren't really what I need.
I need Playwright, but I've been a bit scared.
And then Simon Willison said that it's, you know,
it really is the thing and I should give it a go.
So, can I get, you know, that's almost enough to push me over then.
But what's your take on Playwright?
I was also a bit sceptical of it at first
because there are so many different, like,
front-end testing frameworks and tools out there
and there is a bit of fatigue in that space.
The thing that actually got me excited about Playwright
was a talk I saw at DjangoCon 2023, I think,
from, he calls himself the Testing Panda or something like that.
Andy.
Hi, Andy.
Yeah, yeah, yeah, yeah, yeah.
Yeah, and I really enjoyed that talk.
Like, he broke things down.
He was like, here are the pros and cons
and this is why I've chosen this.
And I was like,
that makes a lot of sense for me.
So, it's super easy to write Playwright code.
It does a lot of, like,
like if you're writing, like, pure Selenium code,
then the code becomes pretty brittle in a lot of ways.
Yeah, really fragile.
Yeah.
Yeah, because a lot of the time it's just about timing.
So, if you click a button on a website,
the response, like, the reaction to that isn't always immediate
because you'll be fetching data from the back end
and doing stuff and then you end up, like,
having your code littered with all of this, like,
time dot sleep, what, what, statements.
And it just ends up being, like, hard to see the logic
and it's hard to, and if something just, like,
randomly breaks and you're like, what could it be?
Maybe if I make this wait even longer, then it'll work.
And it's, yeah, you just end up fighting the thing.
Playwright has a lot of stuff built in that does that fighting for you.
So, it'll, like, check things in a loop and have
sensible timeouts and things like that.
But it's also really nice because it's got, like,
it's built for testing, so it's got different assertions
and expectations built in, which is great.
And probably my favorite thing is it's got a code generator.
So, remembering how to access every piece of the page
through Playwright is kind of a pain in the neck.
You don't want to have to, like, like, checking the docs
all the time is very possible, but it's kind of a pain.
So, what you can do is you can spin up
this thing called CodeGen and point it to a URL,
and then you can interact with the web page,
and it'll write code to match your interactions,
and then you can take that and turn it into a test.
And this is super, super cool if you've got, like,
a bug or something in your front end.
You can literally go and demonstrate the bug to yourself,
and then that'll turn into a test.
And then you can just be like, okay,
instead of asserting that this thing has a value,
assert that it's empty, and then you go and
fix your code and the regression doesn't happen.
Yeah, it's fantastic.
I like it so much.
It's fun.
- That sounds like, so you've encouraged me.
So, between you and Simon, I might pluck up the courage
and mark off the data.
- Yeah, do it.
Yeah, do it.
It's super easy as well.
So, yeah, very, very easy to get ramped up.
The one thing to note is that if you're using it,
then you have to use PyTest, which is fine.
Yeah, 'cause it's got all sorts of PyTest tooling,
but it doesn't have the same for Unitest,
and you'd have to jump through some hoops
to make it work nicely.
- Okay, well, we can perhaps cope with that.
Before I let Will speak again,
I want to ask you about your Git course,
because I kind of feel that Git is sort of developer
literacy, basic.
- Yes.
- It's essential.
- Yeah, it is.
It really is.
So, I created it because I saw a need.
Like, a lot of people,
when they're learning to code,
they just learn some basic commands,
and they're like,
"This sort of seems to push the code over there,"
or they drag and drop to upload their stuff into GitHub.
That also happens a lot.
And it's not like a fun, fashionable skill.
It's just this weird chore that people have to do,
so they're not excited about learning it.
And then on top of that,
so, when I ran my Django modern front-end course,
I pay attention to what people are struggling with
and what they need,
and Git came up as a thing
that a couple of people were struggling with.
Like, we actually need a course on this.
They need to focus on this,
and there's a bit to it.
And I've also spent time just talking to people
who work for consultancies and whatnot.
And I was chatting to a friend of mine recently, for example,
and he was ranting about how his coworkers
are still naming things like version one, version two.
And so, even people who are not beginners
are still struggling with Git.
And Git is weird.
But it's not actually that hard.
Like, it's hard until you grasp what the graph is doing,
like what the commit graph is doing
and what the different commands do to the Git graph.
And then, once you know the graph
and you know how to look at it and interrogate it,
then you're like, oh, actually,
this is fairly straightforward for the most part.
So, yeah, so that was the thinking behind it.
And so, this course that I've made, it's just one day long.
And it's still, like, quite a long day.
But it covers, again, like, understanding the commit graph,
like how to commit things, how merging and branching work,
dealing with remotes, dealing with merge conflicts,
'cause that always, like, breaks people's heads
the first time, and then you're like, yeah.
- That's when you delete your Git repo
and re-clone it right at that point.
- Yeah, yeah, yeah, there's a lot of that.
I did that once when I was a young kid.
- It's a total fail-safe.
Rebase, too, right?
I feel like rebase is one of those ones,
like, you feel like you're comfortable,
and then someone's like, what about rebase?
And there is a little, what is your take, right?
Isn't there still some argument on, you know,
how much you should use rebase or not?
- Yeah, so I would go with whatever, like,
the team is using already most of the time.
I like rebase because you do get that linear history,
but sometimes if you rebase a thing,
like, you just end up having to deal
with lots of merge conflicts, like, in a row,
like, oh, another one, oh, another one,
and it ends up being, like, a lot of work and confusion
just to have, like, a tidy-looking branch structure,
and so I'm not, like, I'm a fan of it when it's clean
and when it just works, but when you have to, like,
really hit it with a hammer to make it work,
then I'm like, well, I don't know
if it's really adding that much benefit, yeah.
- I think when you've got a contributor who perhaps can't,
doesn't know how to do it, sometimes it's easy just to say,
no, you just keep pushing commits,
and we'll sort this out at the end for the way we want,
rather than somebody who hasn't got the skills
and then saying, oh, and can you learn, get rebases?
No, no, no, no, no, let's not do that.
- Yeah, yeah, yeah, you don't wanna give people
extra stumbling blocks if you're trying to get
some good out of them and just be like,
here, do this really frustrating thing, that's, yeah.
- That's the price of entry here.
- That's a good point, yeah, yes, show us your grit.
- It's a tough thing because you kinda have to be doing it
live or on a real thing.
- Yeah.
- To really focus on it, right, and so by nature,
you're gonna be, I mean, I don't know how your workshop
is done, like you almost need like a Git games,
like they used to have those kind of like capture the flag
for like security things, right?
I know there's, I think there are things like this for Git,
but generally you're like, oh, dang, I need to like
put this code somewhere, and then, yeah,
you're sort of doing it on the fly, and then,
and at the same time you're dealing with, you know,
a Django fellow who lives in Git, and then,
is like, yeah, so I always think of that with production,
too, production is hard to teach people because you can,
okay, local Django, but then production.
- Yeah.
- Just like this whole world of like it's so different,
and then it's live, so you don't necessarily wanna
mess it up, and then--
- This is too hard, yeah.
- And then if you've ever, like, you know,
if you mention staging servers to newcomers,
their head is just like, they're like, I quit.
Like I can't even wrap my head around, you know,
like my local database, my production database,
wait, they're different, like, and then you say staging,
it just like blows their head.
- Yeah, it's tricky.
It's like, so you always wanna build up to things
over time, I find, so even with the front end course,
like, give a person a thing to learn,
and let them practice that, then give them, like,
a slightly harder thing, or like a slightly different thing,
and try to keep them, like, in the zone
of proximal development, so you try and keep the,
like, if it's too easy, it's boring, if it's too hard,
then they're just like, well, I'm stepping away, and,
yeah, keeping it in that zone is a little bit of an art form,
but it can be done, but it takes some iteration, yeah.
- And there's also, there's that disconnect
between what an individual, or a small team does,
and what a big team does, and most of the people
who have the time, or take the time to write,
they say, this is how my team does it, you know,
'cause I run sites that collect money,
I don't have a staging server.
You know, I'm not even using Docker for it anymore, you know,
if I had a bunch of, so it's both a combination
of what is out there, right?
Like, oh, you need interactive jump to react,
you know, that was the thing back in the day,
but then also, yeah, if you're doing it your own way,
do you write it up?
And then, and maybe there's even more variety, right?
Like, I know Carlton and I do our stuff very differently.
- I'm just doing it how I used to do it 20 years ago,
and I've just kept doing it exactly the same way.
I'm that, just a little bit newer,
but I'm still probably old with, you know,
'cause yeah, so I can see, especially in a workshop,
when someone has one of these things,
they can raise their hand or whatever,
and you can help them get past this thing of like,
oh, do I focus on this, do I not focus on this?
Okay, I'm stuck.
'Cause so much of it is, I think,
to get out of the tutorial thing is, yeah,
is asking for help and doing it in a way that,
like, you know, if you have to ask to a forum,
like the Django forum, right?
Ask questions there, they should use it, it's great.
But you don't always get a great response
because you have to ask a good question.
And also, if you have to wait a day or two or three,
you're kind of right out of the-
- Yeah, you get blocked, yeah.
- Whereas if you're actually in a workshop
with someone who can-
- Who can help you immediately, yeah.
- Yeah, then you can keep the momentum going,
I think, a lot more.
- Yeah, I think that's very powerful.
That's one of the pieces of feedback that I got
is like the human interaction is the thing that,
like the content is solid,
the skills that they're learning are solid,
the human interaction makes it a bit more
like this magical experience.
So, like-
- And for you too, right?
To think about- - Yeah, yeah.
- Or to think about the things you already know
that we don't think about, right?
I mean, that's the curse of experiences.
We're just dealing with our own problems
and you just completely take for granted.
Even I do this and even,
I say even though I email with readers and stuff,
there's still things I'm like,
"Oh, is that hard, is that complicated?"
Like, 'cause I've just done it so many times now.
- Yeah, I get you. - So I need those reminders and-
- Yeah, I get you.
Like, it's so surprising sometimes
some of the things that people get confused about.
I'll give you some examples, like,
so I had a workshop where one of the people was really
like putting files in weird places.
And like, if there was an instruction
to put this in the root directory,
it was like almost random where it ended up.
And then it turned out they needed
to know what the root directory was.
And like, so,
when I noticed, I tried to explain it once.
I'm like, "Okay, that didn't land."
So the other thing that's kind of cool is
sometimes a person will try to help a person once
and then they'll be like, "I've done my job."
And they'll like go off and do something else.
But in a teaching class,
situation it's almost like it's a challenge for the teacher to be like how do I make this land
oh I tried to explain it this way and it didn't let me try again um and then she yeah and then
they got it and um life was good and they were very very happy that now they have this concept
that has been bugging them since they started to learn to code um and another one that happened
um so I ran I ran that workshop again last weekend and um there was one guy who was like let me tell
you what I want to want to see from htmx I was like cool tell me I want to see and he's um brings
up his vs code and he's like there's this cool thing that react does let me show you brings up
his vs code he opens a react project and he's got tailwind installed in his react project and he
starts like writing out tailwind classes and it auto completes he's like this is something react
does I want htmx to do that it's like okay we're gonna have to dig deep yeah now it's all magic
it's all magic yeah
so it's it's like very surprising sometimes what people bring what people like conflate um yeah
yeah well I I'll let Carlton I'll say one thing and then let you go I was just gonna I hear you
on the root level project level because I've rewritten this every time I go through updates
in my book because I know people get stuck because so now I try to I think I try to be
consistent with project level but I will do the like the tree I'll visually show the tree and I'll
like yeah this is what it needs to look like and it gets harder as the project size grows but
especially early on you know for a static directory like project level easy to say but like I need to
be like and it should look exactly like yeah you know so the tree the tree command works right
because I get it that they're like I'm in an app like where they put things outside of settings you
know because maybe they didn't put the period when they did start projects so they have another
directory and yeah yeah and then they're like yeah like hey well like the official polls tutorial
that they put in there and then they're like oh we're gonna do it differently than you do it like
what's up with that and it's sort of like well wind me up with my thoughts but you know I there
should be I should do a talk on like things yeah things that are different and like half matter
half don't matter let me just tell you yeah yeah that's tricky as well because when you say like do
it like this and they're like we must always do it like this forever a lot of the time it's like oh
like I need to tell you about the nuance I need to hint at us at least and be like there are other
having something that's like really really long so it's so it's so tricky like it's someone asked
you a simple question and you're like well how do how deep do i go here because like what is what is
what do you need to know to go to the next spot without you know misrepresenting something but
sort of being like focus here don't focus there and how much of it should really be in the in the
content so like you write books and books are long and if you like try and solve everybody's
problems they would be really really really long and um probably would also bore a few people
because it would have a whole lot of details that they don't know so it's like where's the sweet
spot of like how much information to put in the main thing and how much to like and how do you
support people with the rest of it um and that's that's tough to do with like content um that's
another reason why i quite like um teaching people in a human way it's like um like you need good
content you need freaking good content because otherwise everybody has problems and you have
to help them all and it sucks and it's painful um but but there's always like these weird little
rabbit holes and sub quests that people need to go on and if you can just like be there to be like
oh cool you actually need this other resource let me just help you specifically with the thing that
you need um then that's pretty pretty powerful yeah it's hard to scale that i mean it's amazing
you've i'm not i'm not surprised that there's demand for someone who's knowledgeable and a
good teacher to do this it's it's sort of when i've thought about this it's like the one percent
of teaching time like no problem it's the other 99 percent right of like finding people updating
stuff right like yeah i imagine that's the same case right you're like i want to focus on this
one thing but there's all this all the other all the other cruft and figuring out you know okay it
works with five people does it work with 20 like what's the sweet spot of of that i mean i imagine
you're still you're still iterating on that right i mean it's sort of like the three of us if somebody
was like you know volunteer or like here's money just like parachute us into a situation be like
let's just fire off answers but it's not that simple assuming we even know the answers you
know sometimes it's like well watch me stumble around yeah yeah so yeah sometimes there are a
lot of like left field questions but i think that's okay as well like it changes all the time
um sometimes people will ask about a technology or technique i'm like i don't actually know
and that's that's cool as well because then i can go and find out about the thing
and see if it is relevant and make some suggestions about it but i think the other
thing about um yeah building an education provider organization is it's like yeah there's there's all
this extra stuff that you need to do that like you were alluding to like what is the system what is
the product um how do you market this thing like my my
my primary skill sets are like software development and teaching like those are
the things that i'm that i'm really good at and i'm like okay marketing you have an email you have
an email newsletter now like i get it right do the plug how can aside from podcasts what where
should people go to be informed um so i i do email people um but i try not to be like it's so tricky
as well because i don't want to be spammy and i don't want to always say like buy my stuff buy my
stuff and i i hope that the people that are listening to me at the moment are going to be
are forgiving the the spammyness because because i'm sure i've annoyed some people i'm pretty
certain um i don't buy that sorry like eric matters was said this the other a while back
as well he's like oh i don't i feel embarrassed to post my stuff no no eric we want to know about
your stuff and the same with you sheen we want to know what you're up to it's you know people
and people who don't like it they can just filter that they can just turn away yeah that's true
yeah that's true i could just use like a specific hashtag and be like if you don't ever want to buy
my courses just filter that out and then you're good um but yeah like whenever i have a new thing
i post on like mastodon and twitter and linkedin um at the moment and i i think i should probably
do blue sky as well people have been telling me that i should be there so more more social media
stuff um automations help because otherwise i would i would drown in social media yeah i should
i should i should set some up i guess zapier right like i was zapier is the thing i've been using
buffer um and that's quite nice it's buffer yeah buffer oh i don't know that yeah um so it just
lets you schedule stuff for multiple channels um so i found it very very helpful um yeah
huh there you go i learned something okay so i want to butt back in with a slightly
separate question then we should swing back to you to the second thing you're
on your agenda and then we'll cut back i'm i know we'll absolutely cut back to the edge
but just while i've got you on this very narrow topic of django front end is there anything given
because people have always been like oh can we integrate with this framework or that framework
or that and django's always resisted that because it's a more it doesn't want to tie itself to react
for instance um yeah but then the alpine and htmx type things they're very simple in in their you
know it's just a script tag and whatnot but from your from your current work from your workshops
from what you're seeing is there something that django could be doing to that you think
for the for the static that static file story that you're like do you know what if we had
that that would be a big big improvement um yeah i think like sometimes you need to install
node modules and they should go somewhere so like with tailwind i know that there are
some django tailwind um um things that exist um that you can just install and use um i
was showing people how to sort of do it by hand and by scratch so like how to use the
the context of a django app and how do you um configure your stuff but it's like it feels a
bit messy um so i think that's the thing and just like i don't know even if you wanted to use
something not tailwind like if you wanted to use bootstrap or um font awesome or anything you need
to like npm install it and it goes into your node modules and then you need to like know to move it
to your static files in a certain way and yeah so if there was like a solution for that it would be
cool um i think
that's the main thing okay interesting but that's sort of a canonical problem is you're like i want
to use this tool but i don't want to do a course on this tool but installing this tool sort of
requires a whole course and you have to be like just do it this way it works i don't want to
answer questions on it because i want to focus on something else but then again someone's brain is
kind of that's why like i still remember i had a in graduate school i had a professor for accounting
of all classes and people would throw all these questions at him and he was great because he
would every question but he would be like as an aside so he would just sort of say like okay this
is like what you need to know and this is i'm going to answer it and that was so helpful because
sometimes you know sometimes if you're overwhelmed you're like i just like i'm going to check out
right now and um so that was like people coming with different like in that case you had people
who are totally new to accounting and then you had people who've been doing it professionally
for years so i thought that was a really elegant way of not saying no but just making very clear
like this is this is the path we're on and this is the path we're on and this is the path we're on
this is not so people could sort of self-choose how how much they want to process what you say
this episode is brought to you by button down that's button down.com email software for
developers like you there are hundreds of email marketing software services out there and they
will pretty much offer the same thing collect and clean addresses send out broadcasts or drip
campaigns get analytics so you can see what's resonating and what's not button down is designed
to hook into the tools that you already care about everything from static site generators like jekyll or
hugo to payment platforms like stripe and memberful you can hook your site up to button down with just
a form element or a simple rest call write emails in markdown and then get on with the actual work
you're supposed to do new customers can save 50 off their first year with button down using the
coupon code jango and if you email support they'll white glove migrate your existing subscribers and
archives for free oh that's really nice yeah i think like maintaining a good signal to noise
ratio is part of that and just being like
okay relevance not relevant or relevant and nice and then the other thing i think is just giving
students a bit of agency and that's quite a big deal so like with my workshops i found that one
way to keep people i don't like generally speaking if you want to keep a person motivated you want to
give them some agency and give them some choice in what they're doing and so if the workshop is
like do this do this do this do this then like some people will just like start going through
the motions or check out but if you're like cool do these things and then if you want to here's a
side quest and it's cool for these reasons and you can do it if you feel like it or you can move on or
you can do it later and just littering the thing with side quests has been really nice like most
people do most of the side quests um but um it does give that distinction and like people have
commented that that they really enjoy the fact that they get to that they get to do these things
so that's been quite fun yeah i love that the phrase side quest i feel like i've seen it in
mass culture more and more
now like because it is such a great way to yeah like the extra things that if you're so inclined
yeah yeah yeah since you know react writing code for you how do you talk i want to ask about
ai and llms but before that how do you uh what how do you approach text editors because you know
there's everything from like kind of do it all for you and then there's you know super basic like
all right so i guess i guess i'll ask a two-part what do you see people using and
what do you recommend to them because that is a very wide spectrum that's out there so a lot of
the time vs code um like vs code is very very popular and one of the things that i like about
vs code is the fact that it uses uh like you can use it for whatever language you want um which is
nice it's not like glued to one thing um because i do switch languages sometimes and it's nice to
not have to just like switch to a different tool completely so um that's that i i can't
i don't like things that are not super opinionated i i don't like things that make assumptions for me
and write the code for me too much because i'm like what's actually happening back there like
like it's nicer to understand um and then i suppose the other question is around llms in
these things which is um do you want to go down that rabbit hole it's a deep one
so i i would i would love to if you're up for it yeah yeah um so personally i like i've i haven't
used a lot of different ones for writing code i've i've because i'm on um on vs code i've used
copilot a lot but i often find it disruptive and then end up turning it off um so i find like with
um code that is quite obvious then like it makes good suggestions and speeds me up but a lot of
the time if i'm if i'm doing something novel then it gives me very weird and distracting
suggestions and then i turn it off i think in our last discussion the last one we had
carlton you said using copilot is like pair programming with the drunk person yeah yeah
i think that was i think that's a carlton quote i don't remember saying it but i remember that
sounds like sort of thing i would have said that should be on their website that's the tagline
like it really is that thing you just said about when you're thinking about something difficult
and you're just trying to think through the problem and then all of a sudden it's put these
three lines of junk there and you're like no go away with the three lines of junk i'm trying to
and it's it's knowing when to just switch that thing off yeah switching it off is important and
like um i've even found i know like let's say you want to write some django models quickly for a
fairly well-known problem so um the ticketing system i'm using is not appropriate and i would
like a different one so i'm like cool maybe i should make one and so i was like hey like make
me some models for a ticketing system and it was just like scope creep all of it all of the scope
for the simplest version of what you want, it'll go for like the fanciest most complicated thing.
Often like if I use like an LLM chat situation to generate code, if I'm like I'm not actually sure
how to do this, show me how to do this, then it'll often come up with something really complicated
and weird and then I'll say like okay simplify it, simplify it, simplify it, and then it'll be
something I'm like okay that actually looks like it'll work. So yeah you got to do things with like
a major spoonful of salt in my experience so far. Like every now and again I
try again and then I get tired of it and back out. It's still learning how to do its thing
right and the tool developers are still learning how to integrate that. Yeah definitely, I mean
it's definitely like upward trending, it's definitely getting better. Yeah I mean I'm
I think I say I think I mentioned this publicly so I've I've just joined JetBrains the developer
Admin. I've just joined JetBrains the developer Admin. I've just joined JetBrains the developer Admin.
Yeah I mean I'm I think I say I think I mentioned this publicly so I've I've just joined JetBrains the developer Admin.
Yeah I mean I'm I think I say I think I mentioned this publicly so I've I've just joined JetBrains the developer Admin.
advocate who makes PyCharm and some other text editors. So I'm very deep or getting deeper
into this world. And like this morning I was going through, there's some new features coming out.
And it's definitely a thing. I think it's just interesting to see where the boundaries are.
Because to me, a newcomer can just write a couple lines of code and have a ticketing Django website,
but they have no idea what it does. And it's not 100% how any of us would do it. And so I feel like
in a way that makes it harder to learn because it's so easy to get slop given to you. Not that
I want to be like, you have to do it manual for everything, but there's just the total lack of
curation out there. At the same time, for the last year or two, I think spurred a lot by Jeff
Triplett and some other people. I use it all the time as a...
Again, a drunken coding partner where I have context and I'm like, oh, I want ideas basically.
How would you do this thing? And I've learned how to ask it to improve things or remove stuff.
So I find it really helpful for idea generation. But to go the next step, which some code editors
already do of just write the prompt and it does all the code for you, it seems very hard for me
in a Django.
For context for that to work. For tests, it could work. For front end, I think it works actually
pretty well because you can see it. But something around billing or something else where you really
want to A, have it be correct and B, know what's going on. It's almost like you want a pistol and
you're given a bazooka. But it's definitely the thing. And then I'll just last stream of
consciousness thought. Also, it's very interesting to me.
The context in which it can be used. And by that, I mean, a lot of people at work
are not allowed to use a public facing LLM, right? So some people are like, no LLM. Some people are
like, give everything to ChatGPT or Claude or whomever. And then these local models like
Llama from Facebook and stuff. So there are text editors that can... And ways you can work with
that, right? It's a little clunky now, but that's going to be pretty smooth very soon if it isn't
already. So it seems like there are these three stages.
**Matt Stauffer:**
Yeah. So the first stage of how you use it, how much public... And then the whole education
piece around how should you use it. So for anyone who asks me, I'm like, do not ask it
to just do some huge mega task. Ask it very specific questions and treat it as a drunken
coding partner. Anyway, so that's everything I have to say on that topic. I'm curious what
you two think.
**Matt Stauffer:**
Well, just to pick up that last bit, I'm going to point it to you, Sheena. It's that learning
thing that worries me.
**Matt Stauffer:**
Yeah. I've experienced old hand now, fingers creak a bit. So to have some fast auto-complete
that's super but you're a month away from a neckbeard yeah exactly exactly you know but so
for me it's it's great and it's foibles i can i can work around and i can use it when i want to
and not i i i worry basically about a junior picking up an llm and how are they going to
get the sort of deeper understanding that you need to really solve the harder problems yeah i get you
that is a huge huge deal a lot of people use it as a crutch when they're starting to learn to code
and then they don't learn the main lessons and i think like i've been trying to figure out how to
best explain like why it's wrong to rely on an llm too much while you're learning and like let's say
you're learning a language um like italian um and when you start learning this language it's not
like you'll start off by translating one word and then translating like small groups of words and
you know llms can do that better than you and but but your goal isn't to be a translation service
your goal is to be able to have conversations and do like bigger things um and like people when
they're learning to code when they start learning to code they act as a translation service because
you're like give them these little these little tiny problems to solve and then they solve them
and you're like well done you um but they often come to the conclusion that that is what coding is
and look these llms can do it better than me and honestly like becoming code literate is the easiest
part of becoming a software developer um the hard part happens later when you take what you've
learned you you take your words and your sentences and you combine them into something
much bigger and much more complicated um with other people and that's like if you don't
nail these foundational skills you just don't get that and like
the other aspect of it is like cool we can write prompts to write code that works in certain
situations that's great and we can write our prompts in english um english is a blunt instrument
compared to code it's like the most precise way you can describe what a machine should do is in
the code it's not in english um and there are many problems that you can describe many algorithms you
can describe in english and then we can spit out the code and that's great but like there are many
that you can't um and so i think it's really important to have that in mind and i think it's
very important um and like if english was as precise as we would like it to be lawyers wouldn't
be a thing you know but also quite often even as good as a spec as you write you don't really know
what the algorithm is until you yeah write it and then you've got that's your proof right the
implementation is the proof like yeah yeah that is yeah and it's going to vary because it's
non-deterministic like that's the other piece yeah so it's unreliable and yeah it's going to
it's different all the time and and the wild thing is another one everything's wild to me today
another like i've had a chance to actually talk to a bunch of ai startups recently and
you know any ai startup is like i'm gonna you know take take crud north and like send prompts
to chat gpt and boom i'm an ai startup that's kinda i'm not even exaggerating that's like if
you actually talk to these people at like a bar that's what they're doing and they're daisy chaining
all these prompts together that like kind of like they're like they're like they're like they're like
sort of work so then a it's wildly loosey-goosey versus versus you know again it's english it's not
code and then they're also tied to the specific model so you have a version of that model someone
someone down down the hall for me who's at a very well-funded healthcare startup with millions of
dollars you know that they've got certain commands that work with like you know 3.1 which is different
than 3.3 and you just don't want to like touch any of it because as soon as you do it's like
yeah yeah and that's something different or just like swap the sentences around in some way and
yeah but that's the thing like you know we as developers if you talk to like i just recently
went to this the startup thing here in boston and there was you know there's a lot of people with
money who aren't technical and then a few technical people and you talk to the non-technical people and
they're they're amazing evangelists for what for what all this can do right but like practically
has a crud and off something that is just sending English daisy chain prompts to ChatGPT,
and that gets them $5 to $10 million in funding.
And they're like, this is all, oh my God, so fragile and yikes.
Yeah, and a lot of that stuff is often something that you could do in regular code.
But anyway, yeah, Colton?
Yes, yes, well, but yes.
And it's not the same answer.
So if I'm, you know, it's this insurance company or whatever, or cardiologists,
you know, like all the big hospitals here, they're using it.
I remember one of them was bragging to me about, he's at MGH, Mass General Hospital,
which is one of the top hospitals in the world.
And he's like, yeah, we have our internal LLM for da-da-da.
And I was like, well, how do you handle the fact that it gives you different results for the same prompt,
like guaranteed?
And he was like, huh, I don't know.
I got to ask our developers.
I'm like, well, I'm curious what they say, too.
I hadn't heard that analogy, Will, of crud north plus LLMs.
I just came up with it.
No, but that's the...
That's the startup model now.
But if you go back half a dozen years, we'll say 10 years,
the startup model was crud north plus Twilio.
It's exactly the same, right?
It was like, oh, we're going to wrap something around Twilio.
And there we are.
And now it's like, we're going to wrap something around, you know, chat GDP.
There was another...
To Sheena's point, often you don't need it for it, is the thing.
Like sometimes you do, but a lot of it you could have done...
But you get more funding if you make your product a little bit more brittle.
Yeah.
There was another...
That's weird.
You talked about fundamentals, about like, you know,
someone learning with an LLM instead of doing the hard time on the editor.
There's a similar point that gets made about web frameworks.
The people begin, they begin by learning the web framework
and they never really learn about HTML and CSS and JavaScript.
And so they come to a sort of more vanilla solution.
Like, is that even possible?
And they don't know.
You know, there's lots that they just don't know.
But...
Yeah.
If you're a youngster starting out and you need a job, you do the bootcamp,
you learn the framework, you apply for the job, you get the job,
and maybe you never have that time.
So if I'm a youngster coming through now, I need to...
I work with the LLM, I get the code written.
It may not be perfect, but that's the, you know,
the dull hand of economic determinism doesn't give me time to sit down and say,
no, I'm going to spend 10 years buying it.
Yeah, mastering this.
How do we...
Yeah, it's hard.
How do we juggle that?
How do we deal with that?
It's tough because you do need results.
I think you can do a lot of good in not that much time.
Like, if you just, like, focus on learning the fundamentals of a language,
like, it doesn't really take that long to learn what a variable is,
what a return statement is, what a loop is.
And people are skipping over that level of fundamentals, which is a problem.
That's, like, a big, big problem.
But then when it comes to frameworks,
it's tough in a lot of ways.
So I think certain frameworks are good teachers.
So Django, for example, I think it's a good teacher.
I learned Python by learning Django.
And I learned a lot about web development by learning Django.
And learning different frameworks and, like,
even building stuff from, like, the ground up in different ways
has been made a lot easier because of what I've learned in Django.
So that's cool.
So a framework can be, like, also a mental framework
that you can hang new knowledge onto.
And that's very helpful.
So frameworks that are, like, really explicit about how they work is good.
Some frameworks are less explicit.
Some frameworks, you need to put your code in the right places
and then the magic happens and voila, you have a thing.
But you're not really sure how it happened.
You're just following the rules of this framework.
Yeah, it's the magic and batteries pendulum is how I think about it.
Yeah, yeah.
So I think explicit is better than implicit.
There's that Zen.
But then I think there's also, like,
if somebody learns a framework and gets into their first job
and is able to do certain things and not others
because they're missing those foundations.
Like, if you don't have your foundational skills,
you can only code to a certain level.
There's a certain level of problem that you can work on
and some that are just, like, outside of your reach
until you learn certain things.
And those certain things aren't always,
obviously, obvious to the person who needs the skills.
Like, they are unknown unknowns.
And for the organizations that hire the juniors as well,
they're not necessarily set up to seek out those unknown unknowns
and plug those knowledge gaps.
And so sometimes a person will be writing code that makes them look like,
I don't know, irresponsible or lazy in different ways.
But it's like, oh, you actually just don't understand this one concept.
That's why your code's, like, so repetitive because you're not really that sure about how far you can go.
How functions work.
And so it's easy to almost, like, see a person's, like, nasty code
and that's, like, a symptom of a problem.
And you make, you, like, fall into the trap of, like,
attributing that symptom to, like, a personality trait sometimes
instead of, like, oh, they're just missing some skills.
A moral failing, right?
Yeah, yeah.
It's like, why are you writing such repetitive code?
Just put it in a function.
Bruh.
Like, just do it.
Why not?
And then...
And then they can't.
Yeah.
Yeah.
But I think that's a good example where you can do this in some of the text editors,
but to, like, to take code you've written and then just as an exercise to throw it to an LLM and say,
make this better.
Because it will...
It might well make it better, right?
It might not.
But, like, especially as you're learning, I think there is that...
Like, it's like, what is that balance between your own stuff and the LLM?
And I think the LLM's great once you've given it a good college try.
But that's what I use it for, you know?
But...
And then...
Yeah.
But it's super helpful for that.
Because that's where it's really strong.
Like, testing is super strong.
I think refactoring, it actually can be strong.
It can also just be wildly hallucinating.
But, you know, that'd be interesting.
It's almost...
You almost want...
That could be a cool service.
Like, every git commit, run it through just a refactor LLM.
And then...
That's cool, actually.
I haven't tried that.
You know, because, like, I use...
You know, I don't know about you.
Like, I use pre-commit on my real projects, which is awesome.
And a lot of times, I'm just sort of like, yeah, just fix it and move on.
You know, I'm not, like, truly...
You know, because, like, I added a space.
A lot of it's HTML or whitespace stuff.
But that would be an interesting idea for some sort of, like, gut check with your drunk programming friend.
Because, yeah, if you don't...
I don't know.
Yeah.
I just think...
I was thinking about that.
But that's one I think an LLM would be really good for is to spot you could do this function differently.
I think that can be cool.
I haven't actually tried that.
But that is interesting.
I think people often use it for, like, explain this code to me, which I think is useful.
Because if it can go line by line and make it clear, then that is very, very handy.
And then what else do they do?
Explain this error message to me.
That's another really good one.
Error messages.
Yeah.
And I think people don't realize...
Sorry, Carlton.
I know you want to say it.
Go ahead.
Well, I was going to just put another example there.
Go on.
You go.
Well, sorry.
I'll just continue on this point then.
I was just going to say, you know, if you see that the LLM is wrong on something, if you say, you know, are you sure?
Or is that, you know, incorrect?
They'll say, oh, I'm sorry.
And then a lot of times that second pass, it will get it a lot more right.
So the thing is, it doesn't know.
I mean, so, again, I see this all the time.
So, like, as I'm trying to...
I'm still very novice, but, like, using it, you know, it's like, give me lots of ideas, and I'll spit something out.
I'll be like, oh, that's not quite right.
It's...
It can...
If you dial it in...
And then the thing is, it also remembers.
It has a memory of your interactions.
So, for example, ChatGPT, like, I used it for this...
For building...
Or I used it to help building out LearnDjango.com.
So now if I ask an unrelated Django question, it automatically gives responses kind of related to that project just because I've asked previous questions about it.
So, again, that's...
Sometimes that's quite helpful, and then sometimes that's wildly unhelpful.
I probably just need to say, like...
Yeah, sometimes it's just, like, anchored on the wrong thing.
Yeah, don't...
Don't just ignore...
Again, so, yeah, a brave new world.
But I feel like eventually that will be...
These things will be sorted out.
Like, we're all driving a manual car, and soon it'll be a little more automatic, I think.
Carlton, go ahead.
Well, just going to throw in the example there.
If you give it some test cases and say, write me some dot or draft some dot, you know, lots of projects don't have great docs.
And you can say, give me some.
Give me some usage docs for this.
And it'll come up with stuff that's readable and accessible.
And you think, okay, well, that was better than...
Better than nothing.
Yeah, that was better than the no docs that are currently there.
So, there...
Yeah, or switching, you know, switching from Django test to PyTest.
So, Justin Duke, who's sponsoring this episode with Button Down, he has a blog post we'll link to.
He used Cursor for this and just said, which is an AI power.
It's like VS Code with marketing and LLMs a little more.
I'm sorry, that's probably a disservice to it, but it's very hot right now.
But he just used it to port over the tests, right?
And that's a great use case of A testing is sort of, but especially if it's a known thing and to manually switch it over from Py to PyTest or vice versa would really take a while.
That'd be hard even for a knowledgeable person to do.
I think that's cool.
Like using it as a translation service.
Like if you know one language and you want to know another language.
You can say like, do this in Rust.
And then you can look at it and be like, oh, is that how?
Do the tests pass or not, right?
That's the key thing is that, and it doesn't hurt you to have tests that do or don't work.
I think that's the key thing too, unlike fiddling with your, you know, authentication or something.
So, back to education slightly.
LLMs are obviously massive and hot and the new thing and all the money's going into them.
And are they, they're pushing their way into ed tech?
I take it quite.
Rapidly.
Is that the state of the art there?
Is that, is that the exciting thing happening?
What, what's your view on where we're at?
It's happening, but a lot of like, there's a lot of hype and a lot of teachers who aren't adopting these tools for lots of different reasons.
And I think like, um, there, there are issues.
So the one was like that, that thing I mentioned earlier about students having unknown unknowns, like sometimes they're really confident in their unknown unknowns, uh, or like in how they think the world is like that, that guy mentioned earlier with the.
React, it's like, like he wouldn't think to ask an LLM these questions, um, but sometimes it takes a human where he's like, I want to show you human, this thing that I'm, that, that I like, um, like it's, they're unlikely to have that conversation with, with a machine.
Um, they'll ask the questions that are focused on their known unknowns or the rabbit holes that they want to go down, which aren't always like it, like a human is a better guide, um, in these.
Cases.
Um, and I think the other thing that's, um, that LLMs are supposedly good for is like, okay, the, the teacher can like input some stuff and then it can solve the teacher's problems, um, for the student or for this class.
But it doesn't necessarily go that first mile where it's like, okay, what stuff does the teacher fill in?
Like everything they need to give like so much context before they get an onset out a lot of the time.
And like, unless you've got like a new class of students and you're doing something from scratch.
And where the prompting is like pretty straightforward, if you're doing something for like, I've got this problem with this existing student and here are their marks and here is what they've done so far.
And these are like this, like I've spoken to their mom and, you know, like entering all of that is really hard.
So like that first mile is, is tough.
Um, yeah, but there are like a lot of ways that it can be useful.
I mean, um, there is stuff around content generation, um, creating, creating.
Coursework and whatnot.
And that's like, uh, you gotta be careful.
You gotta be very careful.
Yeah, especially if you're talking about something that's either like newer novel.
So if you're writing a course for like some, some kind of, um, new software thing, then it's going to just make stuff up because it doesn't know.
Um, for something that's like, you know, um, robust and well used and whatnot, it'll make stuff up less, but if something's confusing, like.
Git for example, then it'll make up weird stuff.
So like I, I use LLMs when I'm making my workshops and stuff.
Cause I, sometimes I'm just like, how do I explain this weird thing?
Like, give me a metaphor to explain this, um, give me a story to explain this, explain why it's important.
And then I can take that and I mean, and like adapt it quite a lot.
And, um, when I was making the Git course, um, I, I asked it a bunch of questions and like, whoa, that's actually like really misleading, uh, what you're saying there.
Git, uh, so yeah, there's.
There's challenges there.
Um, I think other things like marking projects, assessments, um, I think that's also like assessing a person's skills.
Like that's not a solved problem, even if you're having like humans do it.
Um, and it's very easy to, yeah, it's very easy to just like either focus on the wrong things or give people bad advice.
So yeah, like using an LLM to review student code.
Sometimes gives them like really misleading advice.
Well, which they probably wrote, wrote with an LLM, right?
So that's possible.
Yeah.
But even if they didn't, it's like, um, just to get it like strict enough, but not too strict is really hard.
Um, so you, you need to like, make sure that you're teaching them the lessons, but also not giving them like.
random just like random nonsense to do so um for example i was trying to get um i was trying to get
one of the like um gpt models to review code at one point and i was trying to be like just be a
little stricter um not that loosey-goosey and then eventually i was at a point was like every single
unit test needs a full doc string i'm like that's like weird advice to give to somebody who's
learning how to code because they often do very strange things with doc strings and comments
um so that's tricky um i do think that there's a lot of good stuff around just like self-assessment
so if you have low stakes assessments for for students where they can sort of get a view of
their own skills and where they're at then that's super super powerful if the student is like
plugged into it and not just trying to like tick the boxes and move forward like a lot of people
have been trained to tick boxes um but if somebody's like genuinely interested in the
feedback that they're getting that they're like they've been asked this question they're like
they've been asked this question they don't know the answer here's the answer then that yeah that
can be very very powerful um i don't think i've seen a lot of that but it is it is a good thing
i get keep getting the impression that like you it's clear to me that you believe that the human
element in teaching is all important and what's interesting though is that the the difficulty of
making a single human go very far humans aren't very spreadable right we're quite yeah it's a real
problem contained so it doesn't sound as if you think there's a holy grail for that available in
to you know change it with the technological change will suddenly make education that much
more accessible i think it'll i think it's like an 80 20 thing i think that you can do a lot with
um good tools and good content um but i do think i like just from my experience with dealing with
students i've come across a few people i'm like i have no idea how i would have like detected this
without i don't know making the students feel like they're not going to be able to do that
students maybe jump through a lot of hoops or um having some like weird way to interrogate
interrogate them because sometimes it's just a matter of like spending time with the student
while they're doing a thing and then you notice that they did something weird or they said
something weird and you're just like let's just dig dig in your brain a little bit and see what
that was about yeah right um and that's not like it's not easy it's not something you can automate
but as far as i've seen anyway like i'm sure things will get better but
i yeah i don't know how to automate that but what i have noticed um so like my kind of way of
teaching people is um i teach adults i don't teach kids because kids are like they come with all sorts
of different challenges which i'm not that experienced in i like them that's the way i
teach is more about just empowering the the individual to to almost teach themselves as
much as possible so that means like um very good content um
um very like clear content very um like steps that have been thought out very carefully um
like the the content needs to be built in a way that like really takes um takes like learning
mechanisms into account so it's like okay spaced repetition and recall and how can we get them to
build mental frameworks and blah blah blah so you you make like damn fine content um set them up for
success as much as you can and then when somebody struggles you help them and a lot of people will
like a lot of people won't struggle and that's great and it's like freaking go you that that's
fantastic you didn't need the human um and maybe like llms can make that a bit better so like fewer
people will need the human but i i think there'll still be like some folks who either get left
behind or derailed because of weirdness yeah um and my my experience of teaching is that if you
miss that building block then that's when you get you it's really important that someone's there to
rescue them at that time because otherwise they lose they're lost forever and it was that one block
and there's also a lot in teaching around like um like a person's emotional journey to some extent
so like if you're teaching somebody something hard if a person is learning software like it
can be really really frustrating in the beginning because they'll like
um they'll forget to indent something and then everything's wrong or they um or they're getting an
error message because they forgot the colon and they don't know about where the colons should be or
um you know when you make those like single character mistakes and then you're like bump
your head on it for hours and um people like often they'll remember the emotional experience
instead of like the end of things so if they bump their head on a concept for like hours and hours
and hours and then they won and then they start bumping their head on the next concept for hours
and then and then they win they'll remember like this sucked it was hard you know um
but sometimes it takes a teacher to be like hey you know that thing that you were struggling with
last week um you're kind of nailing it now yeah right because people don't always notice that in
themselves um like the cheerleading aspect is actually pretty big um yeah my teacher
cheat teacher is always like no no don't look in front don't look at what you
don't know or can't look how far you've come it's yeah yeah yeah that's a big deal so this is going
back 10 minutes i wanted to add something to what you're saying about like the example of a teacher
not using an llm and i think one of the interesting things about
lms now is pre-loading context so like you know i'm sure the three of us in a weekend we could
build crud plus auth that loaded in this the re the records you know the attendance sheet so you
see student name t you know parents like you can load in this information that makes it so that
when you do ask prompts it is kind of custom to you so i do think there's i think i suspect that
type of thing is where most of the efficiency gains are going to be unlocked where it's not
anything that creative it's just like an existing thing sandbox it and just saves time
and it lets someone you know a teacher with 200 students or you know whatever ungodly level okay
it's never going to replace one-on-one but they can do something in a way that they couldn't before and a lot of
stuff in the same way code some code you know these lms can design code and then we review it
i mean if you look at so many businesses now it's machines it's humans signing off on something right
i mean it helps in medical for various reasons with licenses and stuff but you know radiologists
like many of them are using stuff that just like speeds it up right and so that to me cardiologists
too right like i mean you know it's like okay patient has boom boom boom boom boom um if it
helps them be faster or even think of new things like they're using it at um some of the hospitals
here just like prime primary care you know because turns out lms i think in the study i saw are
actually better than humans because we have biases whereas if you just like presented
patient information and symptoms um it can do a really good job whereas we as humans you know
are going off other factors uh so it's interesting how i think it's i think it's a great
like enhancement like a great cane or crutch um and i just i think that's how it's probably going
to be used to not fully replace but to uh you know bicycle for the mind or something
it makes a lot of sense um but i think it's something like so earlier i said like assessment
in education isn't quite solved and i think that that
could lead to some some weirdness so i'll give you like an actual example of a thing that i saw um
where students had to complete a bunch of projects they had x x amount of projects and they needed to
get them done and so um this could be visualized as like a burn down chart um so you can see their
progress over time and that's great and they're all like interacting with each other in different
ways some of them are helping each other some of them are supporting each other in different ways
great and then there was this parallel stream of of education stuff where people had to write these
um little tests based on
basic coding cartons um so like super easy coding cartons um from like similar to hacker rank and
lead code and all of that and um a lot of people were like missioning ahead with their projects
um but they couldn't solve the most basic cartons so it's like you clearly don't know
what a for loop means you clearly don't know what a um like how this return statement thing
works people get confused about that all the time like all the time um and so we had these
two metrics of of their performance and depending on which one you prioritize depends on like um
that so like if if the project progress is the most important thing then you will push people
to maybe help each other more on their projects um or you'll find ways to like push that a bit
forward and if the characters are the most important thing then you'll say like cool let's
look at your fundamentals do you understand this loop thing um so the projects were being prioritized
and not the not the fundamentals and i had a chat with one of the students and i was like i was like
okay cool like i've i've dug around in your brain and it looks like these are the things that you're
struggling with and here is like here is how you can practice it and do you understand yes yes you
understand how to go and practice it yes will you no it's like why not like i don't have time like
why because i'm too busy on my on my school work i was like oh um so there's a lot around just like
the possibility
of optimizing for the wrong metric and not knowing like the trade-offs between things um and
yeah it's very easy to get wrong like i've seen some very smart people
like do do some very strange things around optimizing for metrics um yeah it's like
i can't remember the name of the law now but the you know as soon as it becomes a
target it gets gamed right it ceases to function as a measure yeah yeah yeah it can be a big problem
um standardized tests such a problem so we have to mention your um django talk which was amazing
um on you know education and and the theory around it and i i don't know if we've got particular
question now but i want to make sure we um mention it and perhaps ask you about it a little bit yeah
thanks i i'm really proud of that talk um it's it took some doing to just like figure out what to
say because there's so much to be said about education and fitting it into into a talk it's
like you really need to pick your battles yeah the one thing i love is you keep using this phrase dig
around in people's brains which is a lovely metaphor i yeah i find that very important um so
for me like one of the main things i try to get teachers to to understand is like you need to
understand the student um
so often like if a student doesn't understand a thing then the teacher will try and explain it
and then they'll be like oh you still don't understand i'll explain in a different way oh
you still don't get it i'll explain it a different way i've tried all my ways of explaining it i'm
like i'm out but sometimes if you just like like almost try to investigate
how the person is understanding it and you say like cool i've got a theory
that you might be understanding it like this my theory could be right it could be wrong
let me try and think of some questions that you can answer that you could get right or wrong and
and that'll that'll inform me so so to be like a little bit of a scientist um about
yeah so you want to be a bit of a scientist and investigate the mental frameworks that
people are building and how they interpret the things to work and that makes teaching
like way more stimulating because explaining a for loop over and over again is like not the
most fun but digging around in a person's brain that that can be kind of fun because they're all
very different
as well it makes it like programming right because we're trying to um if we're doing
it right in product design we're trying to um understand our users mental model and help them
to build the correct mental model for our product via the ui or by the user experience that we offer
that sounds very similar i mean clearly it's you know it's a sibling thing but this you know that
there's a certain affinity between those two processes
we are coming a little bit up on time i want to ask you have we not asked you anything are there things you want to promote
that you haven't so we're going to have links to prelude people that's where people should go to
find out about upcoming workshops and sign up for your newsletter we forgot right at the beginning
ages ago sheena had a whole second thing that we just didn't talk about at all
it's okay this is such a good conversation is this the guild of educators we're neglecting i have a
guild i always wanted a guild um so so the idea there is like i've been looking at the software
um training ecosystem as a whole for a while and there are lots of like things that are
suboptimal in many different ways and um i'm trying to figure out how to nudge things in a
good direction and one of the things that i think is really powerful is just um really valuing
teachers and empowering teachers so taking the humans in the system and just like making them um
like reducing the dropout rate because people just like drop out of teaching because they get frustrated for a lot of very good reasons
um and so providing a support structure is a part of it providing um information and um like so
that's that's pretty cool um i've gotten a lot out of it just by talking to the members and saying
like i've got this crazy idea and then i can talk to them and they can poke holes in my idea or yes
and it and that's been very very helpful so um i want to like take the people who teach and just
like upregulate them um and myself so that's that and the idea with um guild of educators and
prelude is like ideally things should feed into each other in some way so like i'm trying new
education things with prelude and i'm learning lessons and i would like to share those lessons
with other teachers and i also know that um teachers but like at some point i'll be able
to hire some people and it would be good to have those relationships already in place so i can like
like hire people who know what's up or hire people who need teaching experience and give them a chance
to to learn um so that's that and it's it's a completely free community guildofeducators.org
just like show up and join the discord and i'm going to start having events again soon
um yeah so that's that and then um things to plug i actually um
so my newsletter is on my personal blog i'm still like i've got a lot of um
i've got a lot of tidying up to do on the like i like marketing identity brand front but
yeah if you go to my blog then you can sign up for the newsletter and i talk about it and what
is the url of your blog it is uh sheenaoc.com all like sheenaoc is one word yeah we'll have
a link to it too somewhere um yeah so you'll hear about all of the things
all of the training things all of the things i'm thinking about and some random stuff um which is
which is fun and with prelude i've got a couple of courses coming up so i've got one on git coming
up very very soon uh oh it is happening on the 24th which is a friday so i'm gonna this comes
out on uh week five 23rd so that's pretty quick to run around but okay well if there's spots
there's a day to sign up well i'm doing another um modern front-end dev workshop um mid-february and
so folks could sign up for that if they're keen it is super fun and yes i could give you a discount
code i can say django chat rocks with underscores yes okay right there you are this is go go go
and um we'll give you a discount which is great um yeah i suppose
there is actually like one more thing to mention i know this is getting long now but like um so one of
my things that i'm trying to do with prelude is generate extra goodness that i can share with
different people because there are people who can afford training and there are people who can't and
like i am in south africa i am in africa there's a lot of people who could do with training but
like there's challenges here so i aim to like so i charge money for the workshops and
the goal is to make them affordable for folks in like the us and europe and and whatnot um and then
i'm also trying to figure out how i can use excess capacity and whatever excess funds i have i can use
to train folks in and around africa so i'm like still figuring out how to best distribute that
like i'm still experimenting around that front but yeah that is a fun thing that i'm working on
no and that's cool well you can't solve all the problems at once right you gotta go iterating
iterate through them yeah yeah iterating it's uh there's a lot right now but it's all very exciting
yeah i think we'll have to have you back on in i don't know 6 12 months and you can tell us how
everything's been a success hopefully yeah i'm sorry and it's so good to catch up um i think we
both saw you at the django cons you were doing kind of a whole little world tour of conferences
which we didn't get to ask you about but um yeah i was a wild year yeah really excited to see this
where you've ended up and that it's really taken off and i'm not surprised i mean to have a
knowledgeable passionate educator who knows django and web stuff is
you almost can't pay enough to that kind of person and the fact that you're still clearly
enjoying it and doing it i think so it's great yeah it's a hell of a venn diagram yeah
all right so i'll wrap it up so we are django chat.com links to everything in the show notes
and we'll see everyone next time bye bye bye bye this episode was brought to you
by button down the easiest way to start send and grow your email newsletter