← Back to Show Notes

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