Django Chat

Teaching Python - Nicholas Tollervey

Episode Summary

Nicholas Tollervey has played a major role in how Python is taught to millions of students. A former music teacher turned software developer, he worked on the BBC micro:bit project that put a computing device in the hands of a million 11-12 year olds in the UK. He's also the creator of the Mu editor for Python beginners, CodeGrades, and many other projects.

Episode Notes

SHAMELESS PLUGS

Episode Transcription

Will Vincent  0:06  

Hello, and welcome to another episode of Django Chat. This week we're joined by Nicholas Tollervey to talk about teaching Django and all the many hats he wears in the community. How are you, Nicholas? I'm good. How are you? Good. And also Carlton is here as always. Hi, Carlton. Hello. Hello. Hello. Hi Kelvin. So we met Well, if you call it meeting at pi con though I, I've been a fan of your work for a long time from afar and you have such a broad background. I wonder what's the quick version of you know why you would pi con How do you do all these hats and then we'll get into teaching Django and all the rest of it. Okay, so who are you?

 

Nicholas Tollervey  0:40  

So who am I?

 

I often asked myself that question. Okay, so, thumbnail sketch is as a kid growing up in the UK in the 80s. We had a bit micros and I was the recipient of all the work that went on in school. Then, my mum and dad were both teachers and they used to bring home the school's BBC Micro and my brother and I learnt BBC BASIC when I didn't know, I'd be about eight or nine and it was a case of you know, 10 CLS 20. Print. You're an idiot 30 to 20, that sort of stuff.

 

Will Vincent  1:20  

And it was just for you to Carlton just

 

Carlton Gibson  1:24  

because I'm smiling because that is exactly my experience.

 

Nicholas Tollervey  1:29  

spectrum guy, a Commodore guy or a BBC guy.

 

Carlton Gibson  1:33  

I was a BBC. I was an acorn. Acorn Archimedes guy.

 

Nicholas Tollervey  1:37  

Yeah, that's okay. So our stories are exactly the same. I grabbed most of

 

it has a lot to answer for the

 

BBC Micro.

 

Will Vincent  1:50  

So that's not the case in the US. So that's why the

 

Carlton Gibson  1:54  

BBC.

 

Nicholas Tollervey  1:55  

Well, the thing is, is that there was a report published a few years ago.

 

anniversary of this thing. And they think that the reason that there's so many video games in the UK video games companies in the UK, that a lot of it is down to the fact that, you know, the people that are working in them are designing these games all started on the on the BBC, and the spectrums and the common rules and things in the 80s. So

 

Will Vincent  2:21  

he has a lots of lots of all the stuff you've done with the micro bit project, you sort of brought that to the new generation, right. I mean, that's you put a physical device in the hands of what a million. I mean, that's the term secondary. Yeah. 11 year olds. Okay.

 

Carlton Gibson  2:34  

Yeah. So we should quickly say what the micro bit protect is here to enter. Yeah,

 

Will Vincent  2:37  

I,

 

Nicholas Tollervey  2:39  

I'm happy to see that. So the BBC, again, wanted to do some intervention in this in the spirit of the BBC Micro from the 80s. So they asked themselves, what would it look like for today, you know, it would need to be small, handheld, mobile, communicate that sort of stuff. Maybe internet of things sort of thing. And so they came up with the concept of a micro bit. And they invited at the end of 2015 partners to become a part of the micro bit project. Now the BBC because it's funded from the licence fee have to be very careful about interventions that they make. Because of course, if the BBC say, we're going to go into the computing education world, then those companies in the UK who are in the computing education are going to be rather frightened because there's rather large organization with huge amounts of resources. So the way they got around that was by having a partnership which was under the umbrella of the BBC, and it was individual companies and organizations, such as the Python Software Foundation, who contributed to the partnership to deliver the project. And so in the spring of 2017, a million of these devices were given out to kids in the UK, so every 11 year old in the UK Got one. The Python Software Foundation was a partner in this project. And Damien George, who's the creator of micro Python, have volunteered a huge amount of time and effort in making micro Python run on the device. And I built a whole bunch of tools that went around it. And they were, I guess, about 80 volunteers in the wider mostly UK Python community, but we have some international contributions as well. Survey 80 volunteers to a greater or lesser extent, submitting resources, code time, that sort of stuff. And the device itself is about the size of a playing card. It has a five by five LCD screen, couple of buttons and accelerometer, GPIO pins accompany and very simple networking as well. That could be Bluetooth capable, except they forgot to put enough memory in the device to make the damn thing work with Bluetooth properly.

 

find these available to buy still use like if you wanted one if because lots of people into that kind of thing. Yeah, go go grab it from from Adafruit,

 

for example, or some other online shop like that. But you know, the perhaps one of the things that makes me most happy, most happy about the legacy of micro bit is that you don't have a whole bunch of other folks doing something very, very similar. So you have in China, there's the CFO bits, which is based on the micro bit but has rather a larger LED screen because of course, the characters in Chinese are a lot more complicated than the western alphabet. That's the callee p in Germany. And of course, as we've been at pi con, we all got an Adafruit circuit playground Express. An Adafruit have been fat that's just amazing. That board and and this sort of Python for embedded It is gaining momentum. And it's a wonderful thing to see.

 

Yeah. And can you explain about micro Python? Because that's a really interesting project. And you mentioned it, but

 

yeah, so micro Python is the creation of Damien George Damien, is a physicist by training. He was based in Cambridge in the UK. And he worked on stuff to do with the Large Hadron Collider. And that's about as much as I'm prepared to say, because

 

it gets a lot more technical after that,

 

and I don't know, but it sounds very impressive if you go look him up on his Cambridge University website. So he's obviously an academic, but was the undergraduate he had an interest in robotics. And he wrote a very simple scripting language for the robot World Cup entry from his university in Australia when he was an undergraduate. And this involves him writing a compiler for net systems and things like that and that experience And he's interested in robotics. And the fact that he was looking at the computing ecosystem wondering what scripting language is popular and well known that might attract people to this sort of project led him to decide to create micro Python. And so he had a proof of concept working. And then he did the famous Kickstarter, where he said, you'll get a pie board if you support more than $50, or whatever it was, and then he was expecting to maybe raise $10,000 at the most and $100,000 later. The world obviously wanted micro Python. And he's done other stuff. Other Kickstarter since, but micro Python is Python, a full reimplementation of Python three, for embedded microcontroller based devices. It can run in as little as eight K of RAM. And the way Damien has written it is a feat of software engineering, really, it is, we've got get pretty much the whole language there. And if you're used to working in embedded systems, and you're working in C, and every time you do a new project, you have to reinvent the wheel. And then you get Python and you have the data structures exception handling, you know, the string strings or or you know, memory management, all this sort of stuff already there, then it's a revelation. When I was working with Damon, he was telling me that he had c programmers saying, you know, this thing, it's taking me like a couple of hours this afternoon, it would normally take a week in C, and this speaks to micro pythons power because people will often criticize it and say, Well, you know, micro Python, it's interpreted, it's got to be slow, what have you but actually, it's often fast enough and it's to write the bits that you need to To be fast in C, and import them as modules into micro Python. But most importantly, it's software developers who are the most expensive part of, often of, of this equation. and micro Python makes this so easy, so quick, so fast. And such a joy to write in, as we know, you know, pythons a beautiful language,

 

what you just said is the story of Python at every level, not just micro Python, Python, regular, you know, you can write it faster and go or rust or C or whatever, but Python will be fast enough and your software developer time is much more expensive by an order of magnitude. And, you know, it's a joy to write and you're more productive and that you know, it's it's brilliant that every level that applies exactly the same.

 

Yeah, it's it's it's pisceans it's one of pythons secret weapons, really, it's it'll come into it. I've never it's a business type. It comes into a particular market and

 

what's been there before is is often difficult or fiddly, or time consuming, and Python.

 

Because, you know, Kido is great insight, readability counts and the other sort of set of Python tropes that we have. They really are important. And the community is awesome as well. It's It's a fantastic community, he wouldn't want to be part of it.

 

Will Vincent  10:24  

Right. Well, let's see, I took us afield from your background, but yeah, let me I I just I mean, my 10 second take and and you've given many many talks, so partly I didn't want you to have to say the same things is, you know, classically trained and tuba musician then you taught, and we're what head of music at numerous school throughout your 20s. Yeah. And then you got into C sharp, ASP dotnet right before Python.

 

Nicholas Tollervey  10:52  

Yes. So, uh, so as I was a teacher, I was using Linux

 

to

 

Because the windows 3.1 machine that I inherited from my father in law kept crashing and I installed Nivea, this this Linux thing, and I was using it to plan my work and do my kind of paperwork and things. But I was having a lot of time. So I was aware of open source free software. And when my children arrived, I did an MSc in computing as a conversion to allow me to sort of step out of teaching and into computing because it's something that I was interested in. And my first job was using C sharp. And because I only had commercial experience in C sharp The only jobs I really went for with C sharp jobs. But my my last job as a C sharp developer was at an investment bank in London. I was working with a bunch of quants, they wanted to script the tool that I had written for them. And I'm Python, this is 2007 2008 and Python was Becoming a blip on people's radar and Microsoft have been investing time in what they call the DLR, the dynamic Language Runtime. I have no idea what's become of that. But I encountered ironpython. I went to pike on the very first pike on UK met john Pinar, who gave a free course in Python. And it was an incredibly welcoming community. And john was whose part since passed away sadly, without john the UK, pi, the community would be would be nothing really. But that autumn had a big, big effect on me. And I thought, Well, okay, I've got enough money to spend maybe three months of my time, retraining in Python doing something and getting a new job in Python. And interestingly, for this podcast, the mechanism That vehicle was fine. Django website? I'm pretty Yeah.

 

Will Vincent  13:03  

What was that like back in the day? Because obviously I'm aware of sort of current. Yeah, it feels like there's not a lot of ways to learn Django currently. I mean, it's growing. But I mean, 1010 years ago, right. What was the landscape? Like, why and why and why Django? Right? Because it wasn't as you know, there was still there the number of other options that Django hadn't had this sort of supremacy that Django and flask have today.

 

Nicholas Tollervey  13:24  

Yeah, that's right. So I knew Python was the language. I'd used Ruby on Rails, and Django felt close ish. Because other options were things like clone. And so things like that. I wanted to use the web because I've been an ASP dotnet developer, I've done an awful lot of work, in addition to the Windows Forms work I'd be doing at the bank. So I knew HTML and you know how to write two websites in broad terms, and what I found was that I just The documentation for Django has always been extraordinarily good.

 

a touchstone I'd say for for other projects to copy.

 

And so I just followed the tutorial wrote what I can't even remember it might even have been a blog.

 

Will Vincent  14:16  

I think it was it pulls back then or it probably hasn't. Would you know, Carlton, I assume it has,

 

Carlton Gibson  14:20  

like, it's been the same as long as I can remember. But

 

Nicholas Tollervey  14:24  

yeah, it was some, you know, some crowd thing. Yeah, yeah, ABC crud thing. And so that took about a week because he was doing a tutorial, I was also reading around the technology that I was using as well. And so what I decided to do was create a job website where people could post jobs and people could apply for them. Again, a simple crud thing as a kind of an academic exercise. And I found that within about three weeks, I was more productive using Django. Python as a beginner Python developer, than I was as an ASP. NET, C sharp developer with, you know, six or seven years experience of doing that. And this was a revelation to me.

 

Carlton Gibson  15:12  

Even with them, the tooling, yeah. Microsoft traditionally provide good tooling and

 

Nicholas Tollervey  15:19  

I'll do that.

 

The number of times Visual Studio managed to rewrite my code to lighten it up. And, you know, readability counts. We know this with Python, Easter's and then seeing sort of code spaghetti as visual studio has munched your HTML.

 

I guess it's a double edged sword. If I'm honest with you, I'm quite old school and just use vim

 

and and the tooling.

 

I'm healthily cynical about it, but we use it when needed.

 

Will Vincent  16:00  

I saw that one of the projects, you mentioned the job board, one of the projects you worked on was at The Guardian on their dating site. Right? So that's, I mean, the logistics of that, or was that because you knew you're gonna be working on that, that you did the job board? That's sort of pretty similar job board dating site or

 

Carlton Gibson  16:14  

not? That's the best. Sorry, that's the best segue ever. That job's done. actually

 

Will Vincent  16:22  

makes sense. To me, Carleton,

 

Nicholas Tollervey  16:24  

it's, I mean, think about it, you've got a person and you need a funnel of people who are approaching you, for whatever reason to get a job or to go on a date, and you sift through them. And you either give them a job or you go on a date, and then so on and so forth. Rinse and repeat. The garden stuff came, came after I I've done quite a bit of Python program. I'd been a Python programmer for five years, maybe when I did the garden. It was an interesting place to work. I can tell you because I was there when the Snowden revelations were happening and yeah, every morning they have a good morning. conference and I got our morning standup moved. So that so that we could all go. And there, you'd see Rusbridger that the the editor and all the other folks in the room discussing what the day's news was anybody could attend. And it was just fascinating watching a newsroom and thinking about it. It was it was their morning standup except that they were talking about Snowden. And what was happening in US elections or, you know, the way Downing Street was dealing with such a such a thing. So it was, it was some It was fascinating place to work,

 

Will Vincent  17:33  

and they still gengo stack or something like that.

 

Nicholas Tollervey  17:36  

When I was there. The dating website was Jenga and it was backed by MongoDB.

 

The main website is a Java app,

 

which was which is built in house I think, no, not Java, it's JVM. So Scala

 

is what they used. But it could have all changed by now. I was there 2013 2014, something like that.

 

Will Vincent  17:59  

Okay. Well, I know you're incredibly involved in Python and teaching realm. And yeah, I want to talk about that. But I'm also you have this perspective of, you know, where do you see Django fitting into all that? Because my sense was, this is my first Python. I know you've been to many, that maybe four or five years ago, Django and the web was a bigger presence. Whereas now, you know, I went to a talk that Jacob Kaplan moss gave, and not that many people there fantastic talk. I mean, he was very much a secondary citizen, which, you know, I'm in the Django world. So it was eye opening to me. I'm curious how you've, you know, seen that evolution of the web, and, you know, just Python and there's hardware, and what do you make of all, all that with your experience? Because it's, you know, it's all new to me. I was like, wow, maybe? Like, where do they get their data for the web? You know, for all this stuff? I don't know, somehow. So I guess that's not that that's, that's, that's more of a thought rather than question. I guess a question would be, when were your first icons, and how have you seen those developed over time because it was a fantastic experience. And it's a little bit different than a Django con.

 

Nicholas Tollervey  18:58  

Yeah. So My first

 

my first popcorns were 2007. I think I I went to my first Django con. It was a euro Django con that had been 2010 2009. That's before

 

Will Vincent  19:13  

Carlton, right?

 

Nicholas Tollervey  19:14  

Yeah, no, but I, I was in the closet for years. I you know, I've been using Django forever, but I'd never went to a Django event until, like, 2017. And then I was like, wow, yeah, I've not been before this is Yeah.

 

I think I was lucky because I experienced the community very early in my sort of Python story. When I remember your pipes, and in 2010, which was held in the UK, Django was everywhere because I think 1.0 had just been released. And yeah, Django, this Django that Django the other. It was all over the place. And this made me very happy because I was earning a living making Django stuff, um, in terms of the evolution and the You've mentioned, you know, Jango seems to sort of be a second class citizen I, and also its relation to education. I don't see that. And I think this is just a natural sort of life story, the journey of a piece of software, and that it starts, you know, as being kind of under the radar and then all of a sudden, it's, it becomes the next shiny new thing like micro Python. Perhaps there's a circuit Python currently is and then things mature. It's it's like the Gartner hype cycle, really. And I think Django as a project has been extraordinarily well, at least from the outside, from my perspective, well run and instead so that you have this solid stack that that folks you know, have no problem using. It's, it's so good at its job. It's almost sort of boring

 

Carlton Gibson  20:56  

plumbing is kind of like the plumbing now.

 

Nicholas Tollervey  20:58  

Yeah, exactly. I know. Don't mean it's boring. You know, you're boring. I mean, it's business as usual sort of stuff. You know, I want to write the Python website. Well, my first thought is okay, I use Django for that. Because I understand what the steps are likely to be on what the stack might look like. So it's, it's not an unexpected proposition. And, and this is, in a sense, a good thing because there are no surprises, but to speak of Django in education, and sort of elephant in the room with that is Django girls and the work for Allah and Allah have been doing with that, which is phenomenal. I, well, I it always gives me a huge Cheshire Cat grin, think of think of the stuff that they've done. But I think the genius that they have is they realize that people want to be able to write their own website because it's a kind of a Hey, Mom. You see what I've built then you can play When you graduate your mom or your dad or your uncle or your son or your daughter to this thing, interspace simple blocks that people get it. And in a day, you've you've, you've created something that you can feel proud of, it feels like it. And I've been a mentor on several jenko girls on that, but looking at the the end result, at the end of the day, people will proud of their work. And what's more important is that people can see how they might change that block and customize it. And that's what you want is that they've been given the foundation. They've got the skills now to start experimenting, and they feel ownership over this code. So So Django girls forever that's what I say.

 

You know, entirely entirely to it is to I just did mentoring at Django, girls, Barcelona and Yeah, kind of two moments that really stuck out what stuck out for me stuck out was that stuck out for me one was when they cracked open the shell and, you know, we've created these models and all the sudden there In the shell, and they're using the querying the ORM. And then all of a sudden, they're like, they're flying the ORM. And you see the spark, and they're like, ah, and it's like, yeah, you're driving it. And that was magic. And then the second for my group was due towards the end of the day when they started to push beyond and they said, Oh, I could put a map in here. And you know, they've gone on to Google and, you know, got the snippet from Google and embed it in the HTML. It's

 

Will Vincent  23:20  

like a little cobalt map on my blog.

 

Nicholas Tollervey  23:22  

So that what I really like I'm gonna step back and do a kind of a meta thing here. It's not only that mentals like the chanko girls, see the sort of the joy of coding in the in the Django girls who turn up to learn, but what I like to see is what you've just done, which is seen people who are usually professional coders, who have been asked to mentor a Django girls. They everybody has their favorite story about that time when you just said I could put a map in here, I could do this thing. So It, it speaks to me because I haven't been a teacher. I know what a rewarding experience that can be. And I think that as software developers as part of our career development, perhaps at some point, we're always going to have to mentor somebody else, a junior programmer, or a new hire that needs to understand how the system works and get up to speed on the pair programming and you need to develop the skills of being able to explain and listen importantly, listen. And, and listening to you just now as you know, another one of those moments, so it's good, but this happens. Django girls facilitates so much good stuff, lots of

 

Carlton Gibson  24:41  

more power to it.

 

Will Vincent  24:42  

So let's maybe hear How's this for a segue? So mute I want to ask about that because seamless, so see, Carlton, we're learning something over time. So this is awesome because one of the takeaways from anyone who's tried to use Python is it's can be challenging to install an Everyone's on different computers. And so this is not just web based but deliberately simplified. Right. So we'll link to the website. And you you want to.

 

Nicholas Tollervey  25:09  

Yeah, so it's not web based. It's a native codecs. Oh,

 

Will Vincent  25:13  

oh, sorry. Um, don't worry. Although I have, I'm not afraid to be ignorant on the podcast, don't worry.

 

Nicholas Tollervey  25:20  

So it was written as part of the PSS contribution to micro bits. I wrote a browser based Python editor for micro bits. And being a good engineer, I hope I took it out and tried it out on teachers and students and developers and things. And the feedback I got was, whilst it's convenient to have a Python editor in a browser, actually, because of the limitations of browser being a sandbox and things, we can't connect to the repple through USB serial or you couldn't back then and you couldn't do this than the other and so I sat down once on Afternoon thinking, you know, how hard can it be to write codes for users? You know, I've got pi Qt that's mature platform, there's q subtilis. I could use that as a widget. We just need some, you know, new load, save run site buttons. That's all you need. And, and new was was born and people started using it much to my surprise. And after a while, people started asking, well could rather than just being a micro bit, editor nativist, could you make it a generic Python editor. And so the Raspberry Pi foundation were very gracious and supported me in a block of time where I was able to do the refactoring and turn it into a generic beginner's Python editor. So it It also has a debugger and the requisite ipython repple and so on and so forth. And so it's sort of grown from there. But what we do Or what I did at that time is went around lots of schools to observe how teachers were using the Python stack. And they were using idol. And idols great because it's always going to be there. But it's based on TK into so it really looks like it's from 1997.

 

This is off putting to, you know,

 

teenagers who might not be used to that sort of GUI widget set. And there are other sorts of hacking put it pedagogical problems with idle kids are forever losing to Windows behind each other. And so, you know, idle is an amazing tool, but you know, there are certain ways in which it could be improved or if it's not, it needs UX, love and things like that. So I did all that stuff and, and the next generation of new, the next version of new sorry, was, was created. And the other interesting revelation was that I got to meet with School Network admins, who generally live in some dark room in the basement of a school, and even the teachers only hear of them via rumor. But I find several often and entice them with a cup of tea to just have a chat with me about what their work entailed. And essentially, and unsurprisingly, it was just make it as easy as you can for us to be able to install this thing in such a way that the students won't be able to take down my network. So, so new, actually, if you use the package version of me, the installer for Windows and OS 10 comes with Python bundled in it. So it doesn't use system Python if you already aren't, because a lot of schools, the attitude of the network admins was, you know, I'm not letting children anywhere near Python on my shiny School Network. It's taking me years to make it like that. And kind of a classic aside here is I was at a school in North Hampton beach Were the network admins. You know, Python was a was like a swear word for them, because a student had worked out that the in the SIS module, you could automate the shutting down of the operating system. And so they'd written a script that did the equivalent or windows of shutdown minus h. Now, you know, part shut down. Just close, everything switched off. He mailed it to a friend. We don't have it right. And his machine switched off. And if you're 14 years old, this is hilarious. So he switched his machine back on and then emailed it to everybody else in the year. This is the second kid but the kid who originated the script. And of course, what happens is that everybody in his year clicks this thing and people were losing their work, because they had word open or they were on a website filling in a form or something like that. And so I pointed out to their network admins, that actually this kid should be congratulated because he's only automating something that you're allowed to do. Anyway. You can click start and then shutdown up to close to machine damage. He doesn't want to any programmer does, which is feel a bit lazy and automate something. So it was a good life lesson. But But what I'm getting to is that network admins, they are small, C conservative and very, very risk averse, because their job depends on it, really. And so putting a programming language that makes it easy for children to do interesting things with computers. It's their worst nightmare. So what we do with new is pythons bundled with it. And so the kids can't actually they can only use Python via view. So, and it also means that the network admins, if they want to install new on a computing suite or several classrooms, they only have one thing to install. They don't have to first install Python and then install the dependencies and then install new it's just a single package. So I might be laboring a point here. But this is so incredibly important for the folks who actually administer things in schools, that this is something that

 

Python more generally could learn from as well. Oh, you know, people come to it. And it's like, install Python. Aha. Okay, that's non isn't still non trivial. And then, you know,

 

yeah, packaging is hard, especially if you want to create a standalone Python app on the desktop. Now, I realized that that's not a typical Python app. But you know, I'd say maybe a typical Python app is say, for example, a Django website or something like that, in which case, you're accessing the Python assets through a web browser and interacting with the website. But if you want to have a desktop app, you know, Russell, Keith McGee's everywhere is an astounding project. And I recommend everybody go listen to his keynote from icon 2019 this year.

 

As keynote you just mentioned in his keynote, exactly about this. He's like what happens when you No, everybody hasn't got a laptop where you know, we've got a tablet, and we'll you know, is Python going to be available on that tablet? Can I code in Python on that tablet? And if I can't, am I going to choose Python?

 

Yeah, yes. Well, I was talking yesterday. Somebody wants to cross platform, mobile friendly app. And essentially, the simplest way to do it is to shim a website. Within an app, you know, you get various frameworks where they, they use the browser as a way of delivering a mobile app. And so you write JavaScript and HTML, and then it's packaged up for iOS and iPads and Android and things and Well, where's the Python story in that we're in danger of missing the whole mobile thing and, and packaging, and embedding Python within your application assets so that it runs properly, that's a non trivial problem and I spend, I have spent an ordinate amount of time feeling the pain of packaging new So, so teachers network admins don't have to, you know, they get an easy story at the end of it, and it would be so good if we could do the same sort of thing for if there was a well, as they're saying, There's no Python there should be one and one obvious way of doing it.

 

There needs to be a standard story that you know, oh, I want to I want to I want to bundle Python, here's how you do.

 

Yes, exactly a tool or a way of doing it that

 

that's a no brainer that covers most, you know, most things apart from the difficult edge cases. So you've got sort of the 8020 rule going on there as well. So for most people, it will work and Russell is is is making significant inroads into that his briefcase project which is part of beware is something that new uses and it was just beautifully simple to to package things for for os 10 using you Using Keith, Russell Keith, Mickey's work, and he's put a huge amount of effort into it. So kudos to him. He deserves all the respect and, and celebration that he's getting at the moment. And he needs help as well, financial support and ways of folks paying for the work that needs to be done to make this fundamental sort of infrastructure work. But now I'm just echoing his keynote, and he does it so much better. So go and watch his keynote.

 

Will Vincent  34:28  

He does he did. He sets a high bar. Yeah. We'll link to that. Yeah, that talk. I was able to be in the room for it. Well, so one of the takeaways I had from Well, I actually I want to say so the teaching tracks at these Python events, because I know you were involved with setting up the first one at pike on UK. Right. That's right. Yeah. And then, one of the things I heard teachers say, again, this won't be new to you is that they keep repeating the same content over and over again. Yeah, and I know you have what are your thoughts on that. I don't want to

 

Nicholas Tollervey  35:00  

So we're going into Calgary's territory here normally,

 

Will Vincent  35:02  

yeah, I'm staring at the code grade site. So I was. So I want to get at that too.

 

Nicholas Tollervey  35:08  

I'm gonna use a friend of mine as a typical example. And

 

she's, she's called dawn who isn't. And she is the

 

lead tutor, the person who runs the course at edgehill University in the UK, that trains computing teachers, and Ofsted we have this thing called offset in the UK. It's the Office of standards in education. And they basically the school inspectors, and Dawn's course, is rated the highest in the whole of the UK for computing, Teacher Education. And dawn made a fantastic point A few months ago, when we were chatting, which was that we have so many beginner Python things you know, making LED blink, say hello world, make a simple blog, that sort of stuff. Get as professional software developers, the sorts of learning that we do are perhaps based on a in depth technical discussion on Stack Overflow, or reading something on read the Docs or auditing the source code and what have you. And so, in this continuum of educational resources, everything's on either side, there's nothing kind of in the middle, how'd you get from one end to the other? And this reminded me of the problem of how you train musicians, you know, how'd you get the five year old little girl scratching away on the violin and entertaining the local cats to become Nicola Benedetti, a sort of a concert, violinist virtuoso violinist. And, you know, at some point, she got a little bit better and then a little bit better. And then she was kind of average, and then she was good, and so on and so forth. People have to go through this process. You're not just born a violin virtuoso, you have to figure out where to put your fingers and how to hold the bow and things like that. And so the way we do this In the UK, and it's a very successful system. It's been around for about 150 years. And this also speaks to the fact that music education, I have 500 years of music education I can draw upon. Whereas in programming education, I don't know, 20 years we've only programming

 

Will Vincent  37:16  

violin, yet doesn't change

 

Nicholas Tollervey  37:18  

every nine months. Yeah. And there's been there's been enough time in the world of music, to have revolutions, counter revolutions, and consolidations, and different schools of thought, and so on and so forth. And that's not so much the case in programming. And so I being amused, having been a music teacher, I thought, well, what could I borrow from the world of music and transpose them? No pun intended transparency into the world or for technical education. And so this notion of music grades, is is the first thing that that happened, although that it's a rich vein and I have lots of ideas about how we could use techniques, using music pedagogy, to help in technical education, computing education. But music grades work like this on grade one is easy enough that most people who practice semi regularly will be able to take a grade one after only a few months. Okay? And what happens in the grade? Well, what you're doing is you're practicing what a musician actually does. You go in and you give a performance, and you have to give a performance that has three pieces in it. And then you're also asked to sight read music, which is something else that musicians have to learn to do. And then you get some oral tests. So which sort of check out your listening ability, and you might have to sing back as well because musicians are always doing that sort of thing. And finally, you might be asked to play some scales and arpeggios or an orchestral x or something because scales and arpeggios are like Lego bricks, building blocks of how you play and perform your instrument. And so if your grade one, you have three buckets containing I don't know about 10 pieces each And you choose one piece from each bucket so that you'll get a nice little recital out of it. And those pieces are appropriate for grade one. So grade one is very, very easy. Okay. And then, by the time you've taken grade one, you've got a feather in your cap, you've had some feedback from the examiner who listened to you, this examiner is a professional musician, they're probably an expert in your instrument as well. And you get a mark so you can see which aspects of your performances were good and which need work on and that sort of stuff. And you get written feedback as well, that tells you in an encouraging and supportive way, the sorts of things that you should perhaps Think about all well done in that first piece. You really set the tempo and the mood really well. I really enjoyed what you did at letter J. But think about tuning it letter Zed or something like that. It's that sort of feedback.

 

Will Vincent  39:53  

letter J. I like that. Yeah.

 

Nicholas Tollervey  39:55  

Well, these rehearsal marks in music, so we know where we know where We also can talk about a specific bar and a piece of music. And so you take a great one, and then grade two comes into view, it doesn't seem so impossible, because you've acquired the skills for grade one, you've, as it were, you've passed, no one could take away from you the fact that you are not a grade one pianist, or trombonist, or, you know, fruit platter or something. So you take your grade two, and so on, and so forth, rinse and repeat. And so you get to grade eight. And grade eight is kind of like black belt karate, in music.

 

And so we're lasting memories of six formulas. So all my musical friends stressing to death about their grade eight, you know, whatever. Oh,

 

yeah. What if you get to grade eight.

 

So to audition for music conservatory, you need to be grade eight. The important thing is, is that a music education and in the wider musical world, folks will say on grade six, it's such a such thing and people kind of know what that level is. And so if you're joining A like a youth orchestra, they might say you need to be grade five or above. And so it's also a signal to those people who might not be confident. But they are grade six. So they're one grade better than the minimum requirements, perhaps maybe I will shoot for it. So it's also important because its trajectory as well. You can see where you're going to you can see when you go to music school on a Saturday morning, and you're only grade three and you see the grade eight sixth formers, your buddies from school, doing amazing things you you can see what you're, what you're aiming for, and what sort of skills and what sort of music playing and how cool they sound when they do that electric guitar riff or they're playing in their jazz combo, or the string quartet plays this beautiful piece of music. And so I thought, what if we were to do that with programming? What would that look like? And this is where co creates comes in. And like music, it's it's a grades. What I wants to do so far, and it's early days. I wanted to test where the idea would work. So before Christmas, I helped a cohort. A handful of folks learn grade one Python, which is very basic Python, what they were asked to do was prepare a project of their own devising. So they had ownership of this code, it was something that they were passionate about, or it was a problem that they wanted to solve. Or, in one case, it was a game that they wanted to play. And they need to show some core concepts that matched to the level of attainment for grade one. Okay, so we need to see that you understand what loops are or that you can call functions or you understand how assignment works. These are very basic things, but with that sort of stuff, you can make very simple projects. And then I asked a friend of mine, Tim Gordon, who's a core developer, Python core developer to play the part of an examiner. And these rather nervous beginner programmers came along, and they did two things. They presented their projects to Tim, one to one. And it was like a code review. But you stand up and you say, this is my piece. This is my this is my project. This is this is why I wrote it. This is how it works. Let me show you the code. And Tim would ask them questions and make sure that they were sort of ticking all the boxes for the requirements. And then the second thing that they did is they did a pair programming task, where they were given a short fragment of code, and it had two errors in it for grade one, a syntax error and a runtime error. And they had to just sit there and debug it together so they could ask questions of each other. But it allowed him to get a feel of how this person approached code. Watch them make mistakes, see what sorts of questions they asked, see how they were actually getting into the code and interpret it. reasoning about it. And then at the end, he filled in the Google Form. And they would give marks and, and there and that was an entirely positive experience for them. They would arrive very nervous. They would go in and do their stuff, they would come out and wipe their forehead and go, I'm pleased that's over. I say, Well, how did it go? And they said, I forgot about this. I didn't do that, you know, you go through all the things that you wish you'd said. And then they'd go, but actually, the demo went really well. And he laughed when my game started. And he really liked the way that I use the the loop within the loops do the thing. So actually, it wasn't that bad. And when we

 

put together that the feedback for the people who took the grades so that they could see

 

how that project had gone and how that pair programming task had gone. The feedback We got from that was was universally good, because they really liked the fact that somebody was telling them where they were making mistakes, giving them ideas about what they should improve. It allowed them to see where their weaknesses were and things like that. And so all of them said, well, when can I do my next code? Right? And so since the New Year, you know, great one Python before Christmas was me making it up as I went along. Now, I've been working on eight grades for Python and eight.

 

Carlton Gibson  45:29  

Go on there. All right, there are a will

 

Will Vincent  45:31  

there will be there are there yeah, that there

 

Nicholas Tollervey  45:33  

are eight I'm I would say I'm about 60% through this process of making the syllabus for it. So there are eight grades and when you write a syllabus, or educational resources, you don't just make it up as you go along. And you have to make sure that things lined up in the right way. And you also need to make sure that you read revisit things as well as So I've been sort of going back to my geeking out as a teacher, putting on my teacher hat and thinking about when I was writing it, school curriculum for a music department and thinking about going through that sort of process, analyzing what sort of knowledge, what sort of skills, what sorts of social interactions, because this is important software developers, should people take in grades encounter? And when should that happen on the story and what needs to be in place before they can get to that place? So the way I did it was I started with grade one. What would the first step look like? So that it was appealing to people and I landed grade eight, you know, what's the end point, and grade eight if your grade eight. You are a competent junior developer, you understand GitHub, you understand how to merge code you, you understand object orientation, you could write unit tests, you can write a test suite, you know what continuous integration is. You can take part in the code review. You have written a website, you have done, you know all This sort of stuff. So somebody who's turning up to an open source project or their first job in code, and they have the skills necessary to build on those. So

 

what I love about this idea is the point you made earlier about having the confidence because yeah, they're only asking for grade five and grade six. And so many people I see, are unwilling to bet on their own ability. You know, and that's natural. And it's, you know, the imposter syndrome is a real thing. But yeah, you know, to find it to give be given an objective measure that helps you overcome that is just phenomenal. Fantastic.

 

It's, um, thank you. It's a imposter syndrome, as you say, I mean, I have that. You know, I'll be honest, I'm a classically trained musician.

 

Whenever I'm stood up, I'm for everything here. Just when are they going to find out?

 

You know, I might be really good at playing tuba. But, you know, this programming stuff is stuff I've picked up as I've gone along. ready to go, sweetie?

 

Will Vincent  48:03  

I think musicians make the best coders though. I mean, here in here in Boston, there's any number of you know, there's a Berklee College of Music. You know, folks who've, you know, who self taught and just they have, as you said, they have that structure. They had the idea of dedicated practice. Yeah. And just that progression, right? Because when I'm, yeah, no one can even say what level you're at. I mean, at at pi Khan, I met a number of people who'd read my book or learning Django and I just have the sense of, they just don't know where to put themselves. And so yeah, that leads imposter syndrome, where it looks like an ocean of knowledge. And there's no, well, yeah, it's such a brilliant idea.

 

Nicholas Tollervey  48:36  

Yeah. Well, I had a conversation yesterday, where I was talking to a friend who is exceptionally talented software. She's very talented software developer. And she said to me, she confided in me she said, You know what? I'm not sure I understand this or that about Python. But people think I do. And it's like, imposter syndrome. It's terrible, terrible, terrible. We were sprinting on something. And at this point, she's involved in this particular project, some random person came up as they're doing sprints and said, Hey, you know, I've got this problem. There's a thing that does a thing, but it doesn't do the thing, which I was expecting to. And then my friend said, Oh, yeah, that's easy. What you want to do is bla bla bla bla bla bla and beautifully and succinctly gave the technical support required for this person to be able to sprint and I said to my friend, you know, you know what, how can you possibly say, you know, you're worried about you know, your technical competence when not 10 seconds later? She beautifully answer. This email is some this person's query in the Sprint's in a supportive and technical way. And so, the code grades are, it's like an initiation, you've, you've got your grade five, no one can take that away from you. And by taking grade five, you've shown you've done A, B, C, and D. And so hopefully It will be a confidence building thing because like music, you need to have a lot of confidence in coding as well. It can be quite a frightening proposition.

 

Can I have to ask one question about it in the music grade says this great barrier, this great milestone, which is the grade five theory test. So is there an equivalent of the grade five theory tests where I'd have to learn about binary trees or

 

something like that? No, reverse a linked list? Yeah, exactly. on a whiteboard only on a whiteboard, not in a computer. No. So the other important aspect of this is that the syllabus curriculum, whatever you want to call it, it's written. It's not just me who's writing or I'm doing most of the legwork. I'm getting help. But it is professional working jobbing Python programmers who are contributing to what they believe should be in CO greats right good. Good rather than a professor of computer science. doing, you know, type B Tree Search or you know, you know, I can't think of something that

 

Carlton Gibson  51:07  

we just did, you just did

 

Nicholas Tollervey  51:09  

your tail call recursion or something like that, you know, you're you've got to learn about this stuff. And you do have to learn about this stuff. But this is more practical focused. It's about giving people the nuts and bolts and skills and the social models and conventions so that they can engage initially with the Python community and become become part of it and feel that they have the technical chops to be able to do the things that they want to do that they're interested in doing. themselves. It's a kind of an emancipation exercise. Sure,

 

Will Vincent  51:41  

yeah. I love that roadmap. I mean, I often think of that, when I'm teaching of, you know, for web, right, because there's so much involved with web and, you know, I think he mentioned you'd already sort of learned some of the basics of web stuff. But, you know, some people as people do come to me and say, I don't know anything, I want to build a website, you know, what is that progression? What is that hierarchy, you know, if I can Point to things. And also as a teacher, like, it's so much more helpful to agree upon the concepts that we're going to cover. I love that idea. Because when people come in and volunteer, it's like, yeah, they're gonna, you know, hop into vim or something. But if it's like, nope, we're talking about this discrete level of concepts. Yeah, that really helps. Yeah, helps

 

Nicholas Tollervey  52:18  

volunteers. That's a really great point. Because in the UK, and I'm imagining all over the world. computing, teachers often don't have a computing background. They are business studies, teachers who have been co opted into teaching computing, and they don't know anything about perhaps some of the more technical aspects of that subject. Obviously, computing isn't just programming, it's that there's a whole bunch of other stuff that kids do, but in the UK, there's a large part of it, though, is learning to code. And you have a bunch of teachers who are like, well, they're not professional coders, they, they've not seen what it is to be a coder experienced writing a piece of code and releasing it and all the life cycle of What code isn't so? So being able to share in a helpful and constructive way? What it is that software developers what coders expect coders do, it's useful for teachers because then they can start to write resources that that speak to that, that that meet these requirements. It also shows teachers for what sort of things what sort of skills to walk needs to become a computing teacher as well.

 

Will Vincent  53:24  

Yeah, yeah, I found that I got picking up coding. I Well, I think even later in life, and the new I mean, the hardest thing was a lack of good educational resources and a sense of progress. It's all just, who knows and and I think maybe combined with the fact that I mean, I also play musical instruments. My daughter is sick. So I'm hearing her scratch off the scales. Yeah. You know, there's, in a way, as a as programmers, we sort of write the script and then we don't practice the scales. Yeah, right. Like as a musician, you know, you're a professional musician spends hours every day and you kind of, you're like, Oh, I don't know how to play this. Like it makes it better. But in programming, at least, it's I'm tempted to I've completely forgot something I learned because I just read a script and now I move on. And yeah, so that sort of yields the imposter syndrome because I go, Well, I haven't done that thing in a year. Yeah. Right. Like I, you know, that sort of, I think expert level is you, you have a concept and you've done it once, but you're like, well, I gotta go look it up. You know, I don't, I can't sort of saw my head. Whereas, you know, where it's a musician, you know, right. It's whatever a that's half the day is, is the fundamentals. violinist anyways, my, I know, some of those professionals, you know, they're just doing so I sort of wonder what is that, you know, I know, there's like code courses and stuff. But

 

Nicholas Tollervey  54:35  

I think that's perhaps a different stream music encoding, though, is that as when I was playing the cheaper freshly, I kind of knew what sort of things I would be doing and the scales and you know, all that sort of stuff and the breathing and the posture and the getting yourself into the right mental state as well that music is an incredibly intense experience when when you do it properly. level, but for the nature of our job programming is that we are going to be ignorant of most of our subject area. You know, I know Python relatively well, but not as well as many other people but I don't know go I don't know rust, I don't know, c++ or anything like that. I don't have, although I have an MSc in computing that was that wasn't a an amazingly technical degree. So I don't have like a computer science background. I don't know about the academic aspects of this. And like you say, this kind of a halflife of knowledge. You know, I learned about this thing. And then I met somebody who is the chair of the x MPP Foundation, you know, jabber, that sort of stuff at pike on a couple of days ago, and I said to him, oh, we used x MPP as a protocol for some federated system I built in 2012, or something in the startup industry. Ready for me? All right, excellent. So did you choose this, this, this or this? And if I had no idea. I remember XRP was really helpful in this particular problem. But so being ignorant is part of our job. And knowing, knowing that you're ignorant is an important aspect of that. I mean, Socrates said, you know, why is this today that? No, they know nothing? I think that holds very well for programmers. And one good test of a program is how quick they can get the docs open. Yes, yes. Exactly. Exactly. Exactly. And I think as programmers mature, I know I'm speaking for myself only here is that I've done enough different things that I know you could potentially do a thing. And I once did a thing like that. And so I have in the back of my mind the right words or concepts to Google or, or where the documentation might be or The name of the person who was maintaining that library so that I might be able to drop them an email because we once had a beer at pi con three years ago, that sort of thing. But it's certainly not, you know, I have now retained the specification for x MPP. From 2012. That's certainly not the case. And

 

strategy might work, you know, you sort of, as time goes by, you kind of learn to start in the right way. It's not that you've got a solution, but you kind of think, well, that kind of shape is gonna be about right here. And this kind of shape will be about right there. And a little bit later, it fits together. And that happens, and that's nice.

 

Will Vincent  57:37  

Yeah, but there's also scar tissue. I mean, that's the, I was talking to, yeah, some educators and they were telling me things they wanted to build, you know, they didn't know where but they knew Python and things they want to build. And I'm just sitting there thinking, Oh, my God, you know, they're like women, a third party API, call this enterprise system and I'm not 12 of those. And, you know, it's It was great for me. I was like, I love your optimism and your ignorance, right? It may have gotten better, but I'm just seeing all the problems and there is a little bit of a, you know, er aspect to programming where you're just thinking of problems. Yeah. So I think that, you know, that scar tissue, I love having those conversations with people who don't know anything because they, you know, they open my mind and they're so excited. And, you know, I usually in those cases, I can say, well, maybe let's, let's, you know, let's narrow it down a little bit, but just that like, anything's possible, right? Instead of, well, as we do go, Oh, well, I felt you know, I wasted two weeks fiddling with that thing one time, and I don't go anywhere near that again.

 

Nicholas Tollervey  58:33  

Yeah. I Damian, micro Python, Damon, on several occasions on the micro bit projects, I'd say, you know, because I'm not an embedded programming, you know, would it would it be possible to do this? And he'd say, with that sort of a wistful smile, Nicholas, anything's possible with a computer. It's just whether you've got enough money in time. What's the answer, but that what you've just spoken on again, speaks to Education here, because as software developers, we're constantly learning and forgetting and reconciling and retrieving and synthesizing knowledge and skills and things. It's just part of the job. We're always learning. There's always a new API, there's always a new technology, there's always a new cool thing. And we're also and this speaks to your point, just now we're kind of learning how to learn. And that's I think what I'm trying to do with code grades is give people a safe place where they're learning the right sorts of learning skills so that they can become effective by the time they grade eight, understand, I'm new to a project. I'm going to read the docs, I know where to look, I know how to ask for help, that sort of stuff.

 

And the ability to pick up a new language or a new library or, you know, the how to get through the readme, how to get it installed, those kind of things that you pick up and you're like, I can get started with this new technology because I've done it. Lots of times not with this one but with similar

 

so if people are interested in, in music,

 

also linked to the made with.edu. website as well. So that's a blog where we put all the goofy projects that people make with new or things that that folks have done with me. I would say to developers, if you have an opportunity to volunteer in a school or just go in for an hour to tell people what you do, or you have kids and and the teachers asking for help, go and volunteer, if you can, because it's an extraordinarily rewarding experience to work with beginner coders like to say there's the there's the perhaps naive optimism, but also there's the energy as well. And sometimes if you're darkly cynical, he or I like that I'll use that again. Then, then it kind of is, yeah, but it's it counterbalance. It's things it says like Aristotle, you know, when he's talking about you, to be brave means to be a little bit foolhardy, but not too foolhardy and careful, but not coward, coward. Like, you know, you've got to kind of try and find the, the mean, as it were in this. And so you do want to be naively optimistic in some sense, but at the same time, that needs to be tempered with a sense of Mm hmm. And how long is that going to take you then? You know, so? Yeah. And you learn that as you as you go along, and working with other people, especially beginner programmers, it's a great way to bring those sorts of feelings to the floor. And finally, it's an unambiguously good thing to do.

 

Will Vincent  1:01:42  

Yeah, one teaching is I mean, in some ways to I see this with, you know, you sort of get used to doing certain things, but like having as a parent having kids, you know, my daughter's will make brushing teeth, so much more interesting and creative and challenging than I thought it could be. You know, that's what and so it just makes it interesting, right? Instead of me just, you know, zoning out It's like, Oh, I never thought about it. Yeah, that way.

 

Nicholas Tollervey  1:02:02  

Yeah, exactly. Exactly. capacity of creativity. When people see an opportunity is wonderful.

 

Will Vincent  1:02:12  

Well, thank you so much for coming on. You're welcome link to all these things we've mentioned. And if if people want to follow up to help, is there, what's the best way for them to get in touch with you?

 

Nicholas Tollervey  1:02:20  

Okay, so if they have questions about code rates,

 

there's a form that they can fill in. And when I'm ready with more information, I will just ping people or they can reach out to me on Twitter, from you. We have GitHub code without me is the user facing website but new dot read the docs, is if you're a developer is where is where you can go if you want to get involved and help there.

 

And I think that's it. Yeah. super great.

 

Will Vincent  1:02:49  

All right. Well, thanks so much for being on. Thanks very much. Thanks for having me.