Transcript: Beyond Golden Pathways - Teaching Django with Sheena O’Connell
This episode is brought to you by Button Down, the easiest way to start, send, and grow your email newsletter.
Hi, welcome to Django Chat, the 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.
Glad to have you, Sheena.
Thank you for coming back on.
So last time you were at a startup Umusi 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 Umzi is more like it wasn't really a startup.
It was um a non-profit in South Africa that um finds high potential youth and trains them, and there's many wholesome things about that.
So over there I was doing some technology stuff, um, built a learning platform uh that's that worked pretty well and taught a bunch of people stuff, and that was cool.
Um now I am trying to take everything that I've learned from there and I'm kind of greenfielding it a little bit and trying to start something new from scratch, and that's terrifying, but also a lot of fun.
So um I've got two main things that I'm working on.
The one is Prelude, which is a training company.
So um I've already gone through a couple of different iterations of like how to craft this thing and what to focus on, but um my main thing at the moment is running workshops um that are focused on Python and Django related things.
So the most popular one is like um how to build a modern um 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 like how they plug in together and gets them working on it.
And that's that's been pretty cool.
People are are digging that, and then I've got um like another one on Git because everybody knows somebody who's struggling on Git.
Um, everyone, um, and like a few other things.
Um, so that's a prelude.
Um, and then yeah.
Well, I want to jump in, I want to talk about this thing.
So do would you want to tell us the other bit first and then or would should we just jump in?
Let's talk about let's talk about those.
Because I've somebody emailed me and was raving about your Django front end work.
Oh, thank you.
Um 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,
using Playwright.
So oh this this is where the puck is.
Yeah, yeah.
Yeah, yeah.
It's 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 covering a lot of stuff and it's over a weekend.
So I'm trying to do it over weekends or like um 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.
Um 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 so it's super fun.
So how how what level what level do you have?
So you say transitioning into tech.
So is this assuming no background Python or some?
No, not not necessarily.
Some some background in Python is very helpful.
So I 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?
Um and so if they're learning Django and all the stuff at the same time, then it can be a bit heavy.
Some people can do it, um, some people struggle.
Um, 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 it's not as popular because just learning Django isn't as like fancy.
So um
I just on that tech stack, that choice of Valpine and HTMX again, 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.
How yeah, yeah.
How are your people finding that?
Um so far they've been finding it pretty pretty good.
Um I so part of the 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.
Um 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.
Um sometimes it's work projects, sometimes it's portfolio projects, but they're like leaning into the tech into the technologies and actually using them, which is awesome.
Um yeah.
I'm a big fan of having a portfolio project, having a little project that you just keep going, keep tweaking, keep playing with.
It's just yeah, you know, it's a test.
But 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 like real development isn't about following somebody else's golden pathway.
You you you have to get off the beaten track and like build stuff for yourself and bump your head and go deep deep and get frustrated and overcome this stuff, this stuff.
So, like a proper portfolio, it doesn't just demonstrate the technical skills, it shows actually you've got the grits to to do this job because it takes because it takes that.
So, yeah, big big fan of portfolios.
No, and that that's that that point about grit, I think, is perfect because as a as a prospective employer, you're looking for someone who can solve the problem on you know th 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?
I'm Will, I'm not letting you speak for ages.
No, I'm just I'm just too excited.
So I I've spent ages.
I've been I was 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 Vtes and all of these other things, 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, I'm I'm that's almost enough to push me over there.
But what's your take on Playwright?
Um, I was also a bit skeptical of it at first because there are so many different like front-end testing frameworks and tools out there, and um there is a bit of fatigue in that space.
Um, the thing that actually got me excited about Playwright was a talk I saw at DjangoCon uh 2023, I think, from uh he calls himself the testing panda or something like that.
Andy.
Py Andy, yeah, yeah, yeah, yeah, yeah, yeah.
Yeah, and I really enjoyed that talk.
Like he
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.
Yeah, because uh a lot of the time it's just about timing.
Um, so um if you click a button on a website, the response like the the reaction to that isn't always immediate because there'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 uh statements, and it just ends up being uh 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 and then it'll work, and uh it's uh yeah, you just end up fighting the thing.
Um playwright has a lot of stuff built in that um 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 um different assertions and expectations built in, which is great.
And probably my favorite thing is it's got a code generator.
Um 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.
Um so what you can do is you can spin up um this thing called code gen 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.
Um 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 you can just be like, okay, instead of asserting that this thing has a value, assert that it's empty.
Um and and then you go and fix your code and the regression doesn't happen.
Um yeah, it's fantastic.
I like it so much.
It's fun.
So you you've you've you've encouraged me.
So between you and Siren, I might pluck up the courage and mark up a day.
Yeah, do it.
Yeah, do it.
It's super easy as well.
It's uh yeah, very very easy to get ramped up.
Um the one thing to know is that if you're using it, then you have to use PyTest, um, which is fine, yeah, because it's got um all sorts of PyTest tooling, but it doesn't have the same for unit test, and you'd have to jump through some jump through some hoops to make it work nicely.
Okay, well we can perhaps we can perhaps cope with that.
Before I let Will speak again, I want to ask you about your Git first because I kind of feel that Git is sort of developer literacy, basic.
Yes, it's essential.
Yeah, it is, it really is.
Um so I created it because um 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.
Um, and then on top of that, like so when I when I ran my Django modern front-end course, like I pay attention to what people are struggling with and what they need, and and Git came up as a thing that a couple of people were struggling with.
It was like, okay, cool, they 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 um like consultancies and whatnot.
And I was chatting to a friend of mine recently, for example, and he was ranting about how his co-workers are still naming things like version one, version two.
Um, and so like even people who like are not beginners are still struggling with Git.
And it's like Git is weird, but it's not actually that hard.
Like it's it it's weird until it's hard until you like 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 once you know the the graph and you know how to like look at it and interrogate it, then you're like, oh, actually this is this is fairly straightforward for the most part.
So yeah, so so that was the thinking behind it.
And so this course that I've made is just one day long, um and it's still like quite a quite a long day, but it covers um again like understanding the the commit graph, like how to commit how to commit things, uh how merging and branching work, um dealing with remotes, dealing with merge conflicts, because that that always like breaks people's heads the first time.
And then you're like
that that's when you delete your git repo and reclone it, right?
At that point.
Yeah, yeah.
Yeah, there's a lot of that.
I did that once when I was
a young.
It's a fail, total failure.
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 what what is your take, right?
Isn't there still some argument on whether you know how much you should use rebase or not?
Yeah, so I I would go with whatever like the the team is using already most of the time.
Um I 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 um 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 I don't know if it's really adding that much benefit.
Yeah, I think when um when you've got a contribute contributor who perhaps can't doesn't know how to do it, sometimes it's easier just to say no, do 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 the skills and then saying, Oh, and can you learn git rebases?
No, no, no, no, no, let's not do that.
Yeah, yeah.
Yeah, you don't want to 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.
Yeah, yes, show us your grits.
It's a tough thing because you kind of have to be doing it live or on a real thing to really focus on it, right?
And so by nature you're gonna be screw I mean, I don't know how your workshop is done, like you almost need like a git, you know, like like a git games.
Like they used to have those like those kind of like capture the flag for like security things, right?
I'm I know there's I think there are things like this for Git, but generally you're like, oh sh 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
is like Yeah, so it's I always think of that with production too.
Production is hard to teach people because you can okay, local Django, but then production, yeah, it's just like this whole world of like it's so different, and then it's it's live, so you don't necessarily want to mess it up.
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 my local database, my production database, weight 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 want to um build up to things over time, I find.
So even with the with the um front-end course, um like like give a person a thing to learn and get let them practice that, then give them like a slightly harder thing, 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 just like well, I'm stepping away.
Um and yeah, keep keeping it in that zone is a little bit of an art form that um can it can be done, but it it takes some iteration.
Yeah.
And is is 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, right?
They say, This is how my team does it, you know, because
yeah, uh
I run sites that collect money.
I don't have a staging server.
Uh you
know, I'm not even using Docker for it anymore, you know.
But if I had a bunch of so that so it's so it's both the 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.
Yeah, yeah.
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, 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 mean I'm excited.
I'm just I
I'm just I'm that just a little bit a little bit newer, but I'm still probably old with you know, because yeah, there's I so maybe I I so I can see especially in a workshop when someone has one of these things, they can you know 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.
Because 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?
People 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 it.
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 the human interaction is the thing that's like the content is solid, the the skills that they're learning are solid, but the the human interaction makes it a bit more like like this magical experience.
Um so so
and for you and for you too, right?
To think about or to to think about the things you already know that we don't think about, right?
I mean that's the the the curse of experiences we're just dealing with our own problems and you just completely take for granted.
Even I do this, and you know, even I say even that even though I email with readers and stuff, there's still things I'm like, oh, is that is that hard?
Is that complicated?
Like because I just I've just done it so many times now.
So I need those reminders and
yeah, I get you.
Like it's it's so surprising sometimes some of the things that people get confused about.
Um I'll give you some examples.
Like um so I had a a workshop where one of the people was really like putting files in weird places.
Um like if there was an instruction to put this in the root directory directory, it was like almost random where it ended up, and then it turned out um they needed to know what the root directory was.
And like um so when I noticed I I like tried explain tried to explain it once, I'm like, okay, that didn't land.
So um the other thing that's kind of cool is um 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.
Um, but in a teaching 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 see from HTMX.
I was like, Cool, tell me, I want to see.
And he um brings up his VS code and he was like, There's this cool thing that React does, let me show you.
He 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 now.
It's all magic.
It's all magic, yeah.
Yeah, so it's it's like very surprising sometimes what what people bring what people like conflate.
Um, yeah.
Yeah.
Well I I I'll let Carlton sorry, Carlton, I'll say one thing and then let you go.
I was just gonna say, 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 it 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 of like 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 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 and they have another directory, and yeah,
yeah, yeah, yeah.
And then they're and then they're
like, yeah, like, hey will, like the official polls tutorial does 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 a I should do a talk on like things, you know, things that are different, and like half matter, half don't matter.
Let me just tell you.
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 it at least and be like, there are other ways, but we're doing it like this for reasons, and then you end up having something that's like really, really long.
So it's so it's so tricky.
Like it's someone asks you a simple question and you're like, well, how do how do how deep do I go here?
Because like, what is what is the 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 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 subquests 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 1% of teaching time, like no problem.
It's the other 99%, right?
Of like finding people, updating stuff, right?
Like I imagine
it's the same case, right?
You're like, I want to focus on this one thing, but
all the other all the 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, too.
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 I think that's okay as well.
Like the tech changes all the time, and um sometimes people will ask about a technology or technique, they're 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 um 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 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 forgiving the spamminess because because I'm sure I've annoyed some people, I'm pretty certain.
Um I don't buy that, sorry.
Like Eric Mantas was said this the other a while back as well.
He's like, Oh, I don't I feel embarrassed to post my stuff.
He's like, No, Eric, we want to know about your stuff.
And the same with you, Sheeny, 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 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.
Um I should set some up.
I guess Zapier, right?
Like I was
Zapier's a thing.
I 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.
Hmm.
Huh.
There you go.
I learned something.
Okay, so
I I want to butt back in with a slightly separate question, then we should swing back to your to the second thing you're you're that's on your agenda, and then we'll cut back.
I'm I know we'll absolutely cut back to the education topics, 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 files 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 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 so like how to use the Tailwind CLI in 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 a 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 I 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 answered 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 gonna answer it.
And that was so helpful because sometimes, you know, sometimes if you're overwhelmed, you're like, I just like I'm gonna check out right now.
And um, and so that was like with 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 not, so people could sort of self-choose how much they want to process what you say.
This episode is brought to you by Buttonown.
That's buttonown.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 and 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 Django, 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, relevant, 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've found that one way to keep people, I don't know, 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 uh 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 do 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?
Do you 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'll 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 uh 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 kind of 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.
Um so
I would I would love to if 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 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, uh Carlton, you said uh using copilot is like pair programming with the drunk person.
Yeah, yeah, yeah.
I think that was I think that's a Carlton quote.
No, I don't remember saying it, but I remember I remember that sounds like the sort of thing I would have said.
That should be on
their website.
That's the tagline.
Yeah, like it really is.
That thing you just said about when you're thinking about something difficult and you're 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 I'm trying to think now, 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 don't 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 creep.
It's like it won't necessarily go for the simplest version of what you want, it'll go for like the fanciest, most complicated thing.
Um, often, like if I use uh 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 um yeah, you gotta do things with like a major spoonful of of um salt in in my experience so far.
Like every now and again I try again, um, and then I get tired of it and back out.
It's still learning how to do its thing, right?
And the 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.
Um yeah.
Yeah, I mean, I'm I I think I I say I I think I mentioned this publicly.
So I've I've just joined JetBrains, the developer advocate who makes PyCharm and some other text editors.
So I'm 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.
Um and it's definitely a thing.
I think it's just interesting to see where where the boundaries are.
Because to me, there's a newcomer can just write a couple lines of code and have a you know ticketing Django website, but they have no idea what it does, and you know, it's not a hundred percent 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.
Yeah, not that I want to be like you have to do it manual for everything, but it's there's just that total lack of curation out there at the same time for the last year or two, I think spurred a lot by uh Jeff Triplett and some other people, like I use it all the time as a again, a drunken coding partner where I have context and I'm I'm like, oh, you know, I want ideas basically.
Like, how would you do this thing?
And and I've got learned how to be, you know, how to ask it to like improve things or remove stuff.
So I find it really helpful for idea generation.
Um but I you know to go the next step, which some um some code editors already do, of just like write the prompt and it does all the code for you.
It seems very hard for me in a Django context for that to work.
Like maybe for tests it could work, for front end, I think it works actually pretty well because you can see it.
But you know, something around billing or something else, you know, where you kind of really want to A, have it be correct and B know what's going on.
Yeah, it's almost like you know, you want a pistol and you give in a bazooka.
So yeah, yeah, definitely.
But it's definitely it's definitely the the thing.
And then I'll just last stream of consciousness thought.
I uh also it's very interesting to me um 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 so some people are like no LLM, some people are like give everything to ChatGPT or Claude or whomever.
And then there's these local models like Llama from Facebook and stuff, you know.
So there are text editors that can and ways you can work with that, right?
Like it's a little clunky now, but that's gonna be pretty smooth very soon if it isn't already.
So it seems like there are these three stages of how you use it, how much public, and then the whole education piece around how should you use it.
So for so for anyone who asks me, I'm like, do not ask it to just like do some huge mega task, like ask it very specific questions and treat it as a drunken coding partner.
Um anyway, so that's that's everything I have to say on that topic.
I'm curious what you two think.
Well, just pick up that last bit and I'm gonna point it to you, she like it's that learning thing that worries me.
So I'm quite an experienced old old hand now, and you know, with fingers creak a bit, so to have some fast autocomplete, 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 foibbles I can I can work around and I can use it when I want to, and not.
I I what I worry basically about a junior picking up a a an LLM and how are they going to get the 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 uh like you'll start off by translating one word and then translating like small groups of words, and um 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 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 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, or many algorithms you can describe in English, and then we can spit out the code, and that's great, but uh like there are many that you can't.
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 write it, and then you've got that's your proof, right?
The implementation is the proof.
Like Yeah, yeah.
That is
yeah, and and it's gonna vary because it's non-deterministic.
Like that's the other piece.
So it's unreliable and
yeah, yeah,
it's different all the time.
And and the wild thing is another while 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 an ins, you know, take take crud not and like send prompts to ChatGPT, 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 kinda 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 of
the someone down the hall from 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 oof.
Yeah, yeah.
And spell 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 pe 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 speaking, everyone is has a crud and off something that is just sending English daisy chain prompts to ChatGPT, and that gets them five to ten 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 yeah, cultural,
yes, well, but yes.
And it's not the same answer.
So if like 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 gotta ask our developers.
I'm like, Well, I'm curious what they say too.
I hadn't heard that analogy, Will, of um CRUD North plus LLMs, because that I just came up with it.
No, but that's the startup model now.
But that is what it is.
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 gonna wrap something around Twilio, and there we are.
And now it's like we're gonna wrap something around, oh, you know, chat GDP.
There was an anatomy.
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 an uh you talked about fundamentals, about like you know, some uh someone learning um with an LLM instead of instead of doing doing the hard time on the AOTA.
There's a similar point that gets made about um web frameworks.
The people begin, they they they 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 they just don't know.
But yeah, if you're a youngster starting out and you need a job, you do the boot camp, 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 I need to I I work with the LLM, I get the code written, it may not be perfect, but that's the echo, you know, the dull hand of economic determinism doesn't give me time to sit down and spend 10 years buying it.
How do we 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.
Um, I think I think you can do a lot of good in not that much time, like if you just like focus on learning uh the fundamentals of a language, it it 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.
Um that's like a big, big problem.
Um, but then when it comes to frameworks, it's it's tough in a lot of ways.
So I think certain frameworks are are good teachers.
So um Django, for example, I think it's a good teacher.
Um I learned Python by learning Django, and I learned a lot about web development by learning Django.
Um and learning different um frameworks and like even building stuff from like the ground up in different ways has been made a lot easier because of because of what I've learned in Django.
Um so that's cool.
Um so a framework can be like also a mental framework that you can hang new knowledge onto, and that's that's very helpful.
So frameworks that are like really explicit about how they work is is good.
Um some frameworks are less explicit.
Um frameworks you you need to put your code in the 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 just 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, as that's then.
Um 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've they're missing those foundations.
Like if you 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 obvious to the person who needs the skills, like they are unknown unknowns.
And um 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, um, 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 functions work.
Um, 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 s to like a personality trait sometimes instead of like, oh, they're just missing some skills.
A moral failing.
Yeah.
Yeah, yeah.
It's like, why are you writing such repetitive code?
Just put it in a function, bruh.
Like, just why not?
And then and then they can't.
Yeah.
But I think that that's a that's a good example where um you can do this in some text editors, but to like to take code you've written and then as 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 that 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.
Um but I that's what I use it for, you know.
But and then yeah, but uh it's super helpful for that.
Because that's 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.
Um but you know, that it'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.
You know, because like I use, you know, I don't know like you, like I use pre-commit on uh my 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 like you know, because it's like I added a space, a lot of it's HTML or white space stuff.
Um but that would be an interesting idea for some sort of like gut gut check with your drunk programming friend, because yeah, if you d yeah, if you don't I don't know, yeah, I just think about that.
But that's that that's one I think an LM would would be really good for is to spot you could do this function differently.
I think that it can be cool.
I haven't actually tried that, but that is interesting.
Um I think people often use it for like explain this code to me, which I think is useful.
Um because if it's if it can go line by line and and make it clear, then that is very, very handy.
Um and then what else do they do?
Explain this error message to me?
That's another really good one.
Error messages, yeah.
And that I think people don't realize.
Sorry, Carlton, I know you want to say like go ahead.
Well, I was gonna just put another example there, but is that um Well, I go on, you guys.
Well, sorry, I'll just continue on this point then.
I was just gonna say, you know, if you see that the LLM is wrong on something, if you say, are you know, are you sure, or is that you know incorrect, those are like, 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 I again I I see this all the time.
So like as I'm trying to, I still very novice, but like using it, you know, it's like give me lots of ideas and I'll split something up, like, oh that's not quite right.
Um 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, Chat GPT, like I used it for this for building, or I used to help building out learn Django.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 anchored on the wrong thing.
Yeah, don't don't just ignore again.
So yeah, oh brave new world.
But I 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.
Well, just
gonna throw in the example there that is that like if you give it some test cases and say write me some dots or draft some dot, you know, lots of projects don't have great docs, and you can say give me some usage docs for this, and it will come up with stuff that's readable and accessible, and you think, okay, well, that was better.
Better than nothing.
Yeah, that was better than the no docs that are currently there.
So there it is.
Yeah, or or switching, or switching, you know, switching from Django tests to PyTests.
Um so Justin Justin Duke, who's sponsoring this episode uh with Button Down, he has a blog post we'll link to um he used cursor for this uh and just said which is which is an eight AI powered, it's like VS Code with marketing and LLMs a little more.
Uh I'm sorry, that's probably a disservice to it, but it's it's very hot right now.
Um but he just used it to port over the tests, right?
And that's that's a great use case of A testing as sort of, but especially if it's a known thing and to manually switch it over from Py to Py test or vice versa would really take a while.
That'd be hard for even for a knowledgeable person to do.
I think that's cool.
Like using it as a translation service.
Like um, if you know one language and you want to know another 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 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.
So LLMs are obviously massive and hot and the new thing, and every 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 a 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 meant 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 I mentioned earlier with the React.
It's like like he wouldn't think to ask an LLM these questions.
Um it 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 in these cases.
Um and I think the other thing that's um that LLMs are supposedly good for is like okay, that the teacher can like input some stuff and then it can solve the teacher's problems um for this 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 answer out a lot of the time.
Like, unless you've got like a new class of students and you're doing something from scratch um 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, right.
So like yeah, especially if you're talking about something that's either like new and novel.
So if you're writing a course for like some some kind of um new software thing, then it's gonna 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, because 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 like, whoa, that's actually like really misleading uh what you're saying there.
Get 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 with an LLM, right?
So that's
it'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 it was at a point where it 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 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 don't know the answer, here's the answer, then that's 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 the difficulty of making a single human go very far.
Humans aren't very spreadable, right?
We're we're quite Yeah,
that's a real problem.
Contained so it doesn't sound as if you think there's a the holy grail for that available in to you know change it with 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 I've come across a few people that I'm like, I have no idea how I would have like detected this without, I don't know, making the 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 just like it's just dig in your brain a little bit and see what that was about.
Um and that's not like it's not easy, it's 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 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 I teach adults, I don't teach kids because kids are like they come with all sorts of different challenges, which I'm not uh that experienced in.
Uh I like them, but the way I teach is more about just empowering the individual to to almost teach themselves as much as possible.
So that means like um very good content, 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, space 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 just 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 like bump your head on it for hours, and um people like often they'll remember the emotional experien
ce 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, because people don't always notice that in themselves.
Um, like the cheer the cheerleading aspect is actually pretty big.
Um, yeah.
My Thai teach 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, look how far you've come.
Yeah, yeah.
Yeah, that's a big deal.
So this is going back 10 minutes.
I wanted to add something to what you were saying about like the example of a teacher not using an LLM.
And I think one of the interesting things about LLMs now is preloading 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 sheets.
So you see
student name, teach 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.
Um so I do think there's a I think I suspect that type of thing is where most of the efficiency gains are gonna be unlocked, where it's not anything that creative.
It's just like an existing thing, sandbox it and just saves time.
Um and it lets someone, you know, a teacher with 200 students or you know, whatever ungodly level, okay, it's never gonna 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, 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 LLMs, I think in the study I saw are s 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 sus I think that's how it's probably gonna be used to not fully replace but to uh you know, buy bu 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 students had to complete a bunch of projects, they had XM 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.
Um and they're all like um interacting with each other in different ways.
Some of them are helping each other, some of them are um supporting each other in different ways.
Great.
Um and then there was this parallel stream of education stuff where people had to write these um little tests based on basic coding carters.
Um like super easy coding carters 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 carters.
So it's like you clearly don't know what a for loop means, you clearly don't know what a um like what 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 cartas 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, it's like why?
Because I'm too too busy on my on my schoolwork.
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.
Standardized tests.
Oof, such a problem.
So we have to mention your um DjangoCon talk, which was amazing um on you know education and and the theory around it.
And I I I I don't know if we've got a 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 uh it took some doing to just like figure out what to say because there's so much to be said about education and putting it into a talk, it's like you really need to pick your battles.
Yeah.
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 it 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
that's me tapping out.
Um 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.
Uh let me try and think of some questions that you can answer that you could get right or wrong, and that'll that'll inform me.
So so to be like a little bit of a a scientist about uh 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 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 via the user experience that we offer.
That sounds very similar.
I mean, not clearly it's you know it's a sibling thing, but there's you know that there's a certain affinity between those two processes.
We 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 gonna 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?
Is this what we're neglecting?
I have a guild, I always wanted a guild.
Um 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 uh suboptimal in many different ways, and um I'm 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 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 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 we're gonna start having events again soon.
Um, yeah, so that's that.
And then um things to plug.
I actually um so uh my newsletter is on my personal blog.
I've I'm still like I've got a lot of um I've got a lot of uh 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 all
the things.
It is uh Sheena OC.com.
All uh like Sheena OC is one word, yeah.
We'll have a link to it too.
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 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 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 a pretty quick turnaround.
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 DjangoChat Rocks with underscores.
And uh listeners, go, go, go.
And um, we'll give you a discount, which is great.
Um yeah, I suppose uh 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 there's a lot of people who could do with training, but uh just 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 use extra 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.
Oh, and that's cool.
Well, you you can't solve all the problems at once, right?
You gotta go iterate, yeah iterate through them.
Yeah, yeah, iterating.
It's uh there's a lot right now, but it's all very exciting.
Well, good.
Well, we'll have to have you back on in, I don't know, six six, twelve months, and you can tell us how everything's been a success, hopefully.
Yeah, so
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, really excited to see this is 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.
Yeah, it's a it's a hell of a Venn diagram.
Yeah.
Alright, so I'll wrap it up.
So we are DjangoChat.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.