Nicholas Tollervey is working toward better ways of teaching programming. His projects include the Mu Editor, PyperCard, and CodeGrades. Many of us talk about problems with software education. Nicholas is doing something about it.


Transcript for episode 89 of the Test & Code Podcast

This transcript starts as an auto generated transcript.
PRs welcome if you want to help fix any errors.


On today’s episode of Test and Code, I have Nicholas Taller V. Many of us talk about problems with software education, but Nicholas is doing something about it. Nicholas is working towards better ways of teaching programming. His projects include the new editor Piper Card, and Code Grades. Thank you to Azure Pipelines for sponsoring this episode. Many organizations and open source projects are using average pipelines already, including me. Get started for free at Azure. Compipelines.

Welcome to Test and Code podcast about software development, software testing and Python.

On today’s episode of Test and Code. I am thrilled to finally get on Nicholas toleravy we’ve tried to get us together on a call for a long time and it’s finally happening. So I know bits of what you do and who you are, but for everybody else and for myself, when you introduce yourself.

My link with Python is that I’m a freelance Python developer and I’ve worked for all sorts of different people, including the Guardian, various startups, big investment banks, the NHS in the UK, the European Union, and the BBC for the Microbit project, although I was working as a volunteer under the auspices of the Psf for that. And I have a passion for Python in education.

I used to be a teacher, and the reason I was a teacher is because before then I used to be a musician, and music isn’t exactly the most secure line of work to get into. So I did what most musicians do and ended up teaching music. And then from teaching I went into coding. And then I guess looking backwards at the things that I’ve done and reapplying things to do with music and education to my coding activities. That’s sitting in a nutshell.

That’s pretty cool about when did you switch to do from teaching to essentially full time freelance?

16 years ago, I was in a classroom as a bona fide teacher who’s trusted with children.

I’ve been in the classroom a lot since then, but as a guest, as a software developer with a teacher there. But essentially when my kids started arriving, I decided I wanted to get home from school, get home from work and not think, oh my gosh, not another bunch of kids when I saw my own children. So, yeah, I cross trained and I’ve never regretted it. It’s been a lot of fun. Okay.

Now do you teach Python to kids still, or to grown ups, or is teaching Python part of what you do?

Yes. So it’s part of my professional activity and that I will go into companies and deliver Python training.

But I also teach beginner adult learners. These are generally folks who have graduated from boot camps after three months and might not quite be there yet. So I help them. And I work regularly with young coders, so I’m working with a bunch of young coders in London at the moment.

We meet on a Friday evening, and these are generally teenagers and their parents, we’re having a lot of fun. They’re learning how to write Python code and they’re doing all sorts of really cool stuff because they’re kids and they’ve got a lot of imagination and no limits to that. Imagination that can’t do that. That’s too silly. But for them that’s not the case.

That’s wonderful. Did the parents learn you as well?

Yes, they do. And that’s a really good thing because I do pair programming and group activities as part of the learning. And so it’s hilarious when you get a parent and child put together the pair programming task and the sort of the number of rolled eyes from the teenagers because generally the teenager is a lot more proficient at computing than the parents generally is. And so there’s a hilarious sort of raw reversal in terms of who has authority. You see what I mean? Who’s the one in charge with all the knowledge. So that’s really good because it helps the kids learn to explain themselves, really, which is an important skills we know as a software developer. We spend half our time trying to explain to the other people we work with how our code actually works and how the API works and things like that. So being able to explain yourself was an important school and I use that a lot. And the kids enjoy it because they get a one up on their parents.

And the parents, they’re old enough that their game as well. They enjoy the rather silly situation that they find themselves in.

That’s great. Kudos told the parents to do that as well. That’s cool.

Yeah.

Your freelancing actually. You also get paid to write code sometimes, right?

As well.

That’s what I do. I’ll work an example. So a couple of years ago I spent a year writing a Christmas website starting in January for a large retailer in the UK. It was myself and about six other Python Easter, and I was just a contractor working for the year. I was contracted for the year. So that’s the sort of work that I do.

One of the questions I was going to try to get at it was does your effort in teaching, does it affect how your code do you think?

I tend to try and make things as simple as possible.

I know that’s a good thing anyway, but at the back of my mind, a lot of the projects that I work on are education leaning, if you see what I mean. And the code I write, I try to imagine an eleven year old is going to read this.

So making things simple and obvious, making sure that the comments describe intention rather than X equals one comment, make X equals it’s. That sort of a thing. Making sure that the way the code unfolds on the screen also tells the story. As well, as an experienced developer, I can leap around the code and kind of get a general feel of what’s going on. But if the codes in a sensible sort of an order, somebody who’s perhaps less experienced at reading code can read from the top to the bottom.

That’s been something I’ve seen an awful lot that’s tripped people up. They found function or a class that’s defined somewhere else in their code, and leaping to that is something that they might not have the skills to do because they’re not used to using Ides, for example.

So, yeah, I don’t know. I’ll write code if you pay me. That’s what a freelancer does.

You do a whole bunch of other projects as well. You’ve got a lot of side things going on and they’re kind of neat ideas. So I’d like to touch on a few of them. I guess I’ll just jump in on my top of my list.

I think it’s Mew editor. Is it Mew or Moo?

I’ve heard it both ways.

I want it to be okay.

I say Mu because it’s from the Greek letter, which is what we use to represent micro level units of measurement. When we write it down, think of the Greek character Mew. And I originally called it MicroED because it was originally written for the microbit. But the BBC got a bit snotty about me using microedd and saying it sounded a bit too much like they were that it was an official part of the well, it wasn’t an official part of the thing, but they were in some way condoning it. So they said, could you change it from micro to something a little bit less blatantly, like microbit? So I called it new because they wouldn’t see the micro link there. I also thought it would be rather fun because it’s a code editor initially whose primary users are going to be teenagers. I just imagined it would be chaos in the classroom. If a teacher has to say, could you open mute, please? It sounds like a cow or a cat mute or something like that. And kids like that, they like this playful wordplay. It stuck, really.

It’s fun to use.

For instance, one of the things I did was pick it up for using with circuit Python and the Adafruit boards.

That seems like a big endeavor to say, I want to write a new editor. Was this a lot of work?

Yeah, it turned out to be. I must say, I’m an optimist at heart. And honestly, it was Sunday afternoon.

I’d got a whole bunch of feedback. This has joined the microbit, a whole bunch of feedback from teachers and students who are using the browser based editor that I’d written for this. And they were saying, yeah, it’s great that it’s in the browser. It’s really convenient, but we can’t make it do this. We can’t get to the reptile. Putting our code onto the board is a pain in the backside because you have to download the thing, find the thing, drag the thing over to the thing. And then the microbit will say, Syntax error at line ten. And then you have to, oh, God, I’ve got to go right the way back and read and repeat. So I asked myself, how hard can it be to write a very simple editor? And within a week, I had written something very, very simple, really nicely simple.

Hundreds of lines of code, not very much using Pi acute based on some work that a friend of mine, Dan Pope and Damien George, who created MicroPython. The three of us sat down and hacked something together and that turned into Mew and it’s sort of taken off. I didn’t expect it to, but people seem to like it.

There’s some oddly cool features of it. I like the different modes to say, I’m developing a web app or I’m developing just some Python stuff, or I’m developing. There’s a lot of stuff that you simplified, like with the circuit stuff, the serial Port stuff is already built into it, the mapping works. So really, somebody just says, this is what I’m doing and it just works. It has Python built into it, right? Is that true?

That’s right. Because I spent a lot of time talking to technicians in schools and teachers, and generally it’s down to bureaucracy. If I’m honest with you, to get something installed on a schools network requires all sorts of technical and bureaucratic hurdles, because in the UK, there are laws about child protection and things like that, and folks need to have an audit of what’s on computers in schools and things. And so it’s easier just to install one thing. Whereas if I ask them to install Python and then install new, that’s two things. That’s twice the amount of paperwork. So having spoken to a bunch of school network admins, these mythical troglordite, like people who sort of inhabit the basements of schools and only come out when it’s dark and then magical things happen to school networks. I actually found some tame ones and sat down for a cup of coffee with them. Essentially, it’s made my life as easy as you can and I will do the thing. So if you have just one thing to install and having Python built into mute helps you do that. The other aspect, so they can then install new on however many computers on the network. The other aspect of this is, as a beginner programmer, I don’t know what I need to install. If somebody says, Just install Mew and it will just work, then that’s again, another case of don’t make me think, it’s just all there for. And I’ve seen and I speak from painful experience here. You’re at a Python or something and you have a room full of 30 expectant children of different ages and abilities and attention spans, all wanting to learn Python. And they brought their laptops, and if you can say to them before they turn up, just install new. And they all turn up with New working, then you can go straight in.

If they all turn up Premier days with different versions of Python install, some without Python install, you spend the first half hour trying to get everybody to a base level of tooling that you can then use in the classroom. And of course, they really sort of switched on. Kids will have this done already, so that’s half an hour of their time wasted. There’s going to be one kid who it doesn’t matter what happens. As soon as he or she touches the computer, it goes wrong in some spectacularly strange way. So it’s a time saver, really, for teachers as well. If you give any part of the lesson over to fallow time where you’re faffing about with some kid over here and the rest of the class can kick back and perhaps start to lose attention, then it takes a longer amount of time to get them refocused to you or to the task in hand. So it’s about classroom management as well, I guess.

How much time does it take for you to maintain it now that it’s rolling quite a bit?

So for a start, because of the broad Church, as it were of our users, we have a lot of beginners who use New. And so a lot of the issues that we get might not be helpful issues for us as developers of New and I spend a lot of my time on our get a chat channel going. That’s actually a Python question, not a new question you should ask over here or this is an ad fruit question. Go and chat to them on their discord channel, that sort of stuff. But we also get a lot of teachers and software developers who provide suggestions. I spend a lot of my time reading that and generally trying to meet these folks as well, because they’ve generally got an interesting story. And then when I have the time trying to get the features together for the next release and fixing bugs and things like that, I’ve got some amazing helpers. Really amazing helpers. It’s been an absolute pleasure to work with some of the other folks that have been in store that have been working with you. So they range from, I don’t know, a 16 year old kid in rural England who seems to know everything there is to know about CSS and Piquet. I might spend a whole afternoon trying to make this thing just move four pixels this way, but he does it in five minutes. It’s incredible, Xander. He’s really good. And then, of course, there are a whole bunch of rather technical folks who bring their expertise to the project.

I really appreciate it. Wouldn’t be able to do it without them.

That’s wonderful.

Yeah.

This episode of Test and Code is sponsored by Azure Pipelines. Azure Pipelines is a continuous integration, continuous delivery service that supports Python and any other language on Windows, Mac and Linux and lets you run automatic builds and tests of your code. It is fully integrated with GitHub and lets you define your continuous integration and delivery pipeline with a YAML document. Azure Pipelines is free for individuals and small teams. If you are maintaining an open source project, you get unlimited build minutes and ten concurrent pipelines. Many organizations and open source projects are using Azure Pipelines already, including me. Automate your builds and deployments with Pipelines so you can spend less time with the nuts and bolts and more time being creative. Get started for Free at azure.com pipelines.

I want to talk about a couple of other projects you’re working with as well, and they all seem to be kind of education related.

I sense a trend, yes, but this is sort of a fun little project, this Piper card.

Yeah.

Now I remember HyperCard. There’s like a small window of people that had that around, I think.

Yes, because we’re getting old.

So briefly, what is HyperCard and why?

Okay, I don’t know a minute explaining HyperCard and then just say it’s that, but with PY in front of it. Hypercard is a Hypertext system from the early 80s, originally written for Max.

And unlike the World Wide Web, it was a desktop application.

The modus operandi was that you had an application that was a stack of cards, hence HyperCard.

Any one period of time, one of those cards would be displayed on the screen. In that card could be buttons or links or images. And if you clicked on those, a transition would happen to another card. And at that transition point, some logic could be written. So that’s how you make your application useful. Okay, okay, so it’s like the World Wide Web, but for Mac geeks in the early Eighties, only had sort of three and a half inch disk sort of thing, rather than the Internet. Now, the beautiful thing about HyperCard is that it’s very, very simple to understand.

A beginner. Famously, beginners would create rather complicated applications out of Hypercarb because it’s rather intuitive. Once you’ve got this stack of cards model and transitions model sorted out, you intuitively know what you’re going to do. And a few months ago, I was working with some young coders. They were getting rather frustrated with having to use console based Python print Hello World, that sort of thing. And they had lots of ideas about what. I’d love to write an application that does this, that and the other. But it’s a Gui based application because the children of the early part of the 21st century and consoles aren’t a thing really in their lives. So I was looking for a way in which I could create something that would help them quickly create graphical user interfaces with Python. At the same time, in an extraordinary sort of event of the moons lining up as the planets lining up, as it were, the folks at Ada Fruit Phil just released a new Python board circuit Python board that had a touch screen on it. And he, like me, was a child of the 1980s and created a choose your own adventure game style application. So you are in a maze of twisting passages. There’s a button on the bottom that says Turn left and a button on the bottom that says Turn right. So you point at that and then you get to the next room. And he called this HyperCard because it’s like HyperCard, but with Python. He emails me, We’ve done this thing, what do you think? And I’d do the same back to them. And he emailed this to me. And that was when the sort of light bulb went off on top of my head, like Bugs Bunny in the cartoon. When he thinks of something, I saw the kind of the links together.

And so I said to look, can I take your pipe card thing and just make it into a desktop app rather than something that just targets circuit Python? He’s fine about that. And so I’ve built essentially a ship around Kivi, which is a crossplatform user interface gaming type library. Now, the fun thing about Kivi is that not only does it work on Windows, on a Mac or on Linux, but it also works on Android and on iOS as well. Yes, that’s what I thought, too. I didn’t realize that there was such a thing. Now, the reason I wanted to find a platform that would target mobile is because the primary computing device for most of these young coders is an iPad or their smartphone or something like that. Okay. And so if they’re able to write an application that runs on their funky tablet or mobile that they can show to their friends, this is a lot better than using what they must see as something from when dinosaurs are all the world, like a laptop like we’re probably using, or something like that. So Piper Card was born and so Piper Card, this goes back to my comments about trying to write code as if an eleven year old is going to read it.

So there’s lots of ways in which I could have implemented this ship around Kivi, but essentially all I did was ask them to create functions that had a particular sort of function signature. And those were the transitions between cards. And they had to instantiate a card and a card class.

And as they instantiated, the arguments would be text equals hello world, and then some text would appear. So it’s all very simple stuff. There’s very simple forms as well.

You can play music, add pictures, add images and things like that, but it’s a very simple way to get beginners to write a graphical user interface based application.

Now, at the time I started doing this, Mum is written in Piquet, right?

Yes.

And I was like tearing my hair up because I was trying to work out, well, how can I write a Shim around Piquet, and this just wasn’t I was getting quite frustrated with it. So this was the cavalry arriving, just filled insight into HyperCard. And so on Friday, I had a whole bunch of kids making adventure games for me to choose your adventure games using Piper card. And they managed to do quite sophisticated ones in the couple of hours I had with them on Friday evening, which bodes well.

So you have had kids use it and good feedback.

Yes. These are kids who are used to programming. They’ve been programming, I don’t know, maybe four or five months. So they’re used to what programming feels like. But yes, we had some rather amusing adventure games created for us, some Harry Potter themed ones and stuff like that.

I’ve got a ten year old daughter, and I think she would just get a kick out of this.

Yeah, try her out on it. The thing is, type of card is only a few months old. It’s an experiment. And the more people who use it and go, this works or it’s missing this thing or it broke when that happened, then I can go fix those things and it improves everybody’s life. So, yeah, try it out.

Okay. Now the last thing we were going to talk about, or at least one other project, is that I’m still having a hard time getting my head around is code grades.

Okay. Have you ever done martial arts?

Martial arts? Well, I did do when my older daughter was younger. We took Taekwondo together for just a little while, and I never got up past the belt, but I think I got one stripe on my white belt.

So what you’ve just described is code grades. But for code, rather than kicking people in the head, which is what Taekwondo is, my son does Taekwondo, I don’t know, Brown belt or something like that, or Brown belt with a green stripe or something like that. But yeah, that’s it. In a nutshell. Is that the story behind Co grades is that I realized that a lot of the educational materials the programmers have are on either side of a continuum, and there’s nothing in the middle. So on one side you have all the Raspberry Pi type, how to make something blink. Let’s print Hello World sort of beginner tutorials, and there’s loads of that. And on the other side is what we professional programmers might use, which is AWS API documentation or technical questions on Stack Overflow or something like that.

How do you get from turning an Led on and off twice a second to how do I use an O RM with Postgres or something? There’s a bit of a discontinuity there. And I asked myself, well, being a lazy engineer, surely someone must have done something like this before. What other activities that require long term effort to become proficient at? What do these folks do? And I used to do karate. My son, as I said, does Taekwondo? I used to be. Right? I still am a musician, I guess, but I had the musical training in the UK, and we have music grades, and it’s the same sort of thing. At five year olds, you’ll have a little girl sort of scratching away on her violin, entertaining all the local cats, and it’s going to sound like a bunch of cats howling away. But 20 years later, she’s Nicola Benedetti playing in the Royal Albert Hall in the last night of the Proms. So how do you get the five year old girl who’s just enthusiastic about making cat sounds on the violin through to one of the world’s a really proficient violinist? And we have this grade system in the UK, which is essentially like belts and martial arts. There are eight grades. Grade one is easy enough for most people to do if you practice semi regularly. And then grade eight is the highest grade. And if you get grade eight, then you’re a good enough musician to know that you don’t know enough about music. Do you see what I mean? You’ve got past that bump of a little bit of knowledge is a dangerous thing. You’ve been around the block enough times with music to understand that actually you perhaps need to be a bit humble about your attitude towards music. And you can’t be a know at all or overly confident performer. I guess we’ve all seen some of those where people have thrown their all into their musical performance, but musical performance perhaps hasn’t been quite what the audience was hoping for. So it’s that sort of a situation we want to try and avoid encoding as well. So code grades is that making a set of discrete steps from grade one, where you’re a beginner programmer through to grade eight, where you’re at what I would say an equivalent level of a good junior developer is. And so by taking a grade, describe what that involves in a second. The next grade comes within graphs, within your grasp. Okay. And so by having these steps, you’ve also got a sort of a framework as well to guide you to that endpoint of being a proficient software developer. And what’s involved with taking a grade? Well, you make a project, your own project. It’s up to you what your project is about. But for each grade, we say we’re expecting to see this, that or the other sort of thing. Okay. So grade one, we might say you need to be able to define a function and call it. We want you to be able to see you’re using conditionals and simple loops, and you might use simple input and output with the input statement or print statement, that sort of thing. Grade eight is a lot more complicated than that. But after you’ve passed one grade, the requirements get a little bit more difficult for the second grade and then a little bit more difficult for the third grade. And so there’s a cumulative effect of acquiring these skills and this knowledge by creating projects to pass each of these grades that demonstrate each of these particular sort of aspects and attributes required for the grades. That’s how it works. It’s karate belts for coders.

So is somebody looking at the code of these projects then?

Yeah.

Okay.

I call them code mentors because that sounds a lot less frightening than examiner. But essentially people pay I hope this remains to be seen because it’s an experiment at the moment, but eventually people will pay to take their code grades. And who are they paying? Well, essentially they’re paying for the overhead of running this thing. And secondly, for the time of somebody to actually be the examiner in the music world, a lot of folks become examiners because you need the flexibility and your time to drop everything and go do that tour or gig or whatever it is when the phone call comes. Okay. And being a music examiner helps you do that. Similarly, I know an awful lot. I’m sure you do too. An awful lot of free software open source developers who would rather be working on their pet projects than having to work for a big Megacorp turning blue, widgets red with some piece of Python code, if you see what I mean.

Yeah.

So this is a way for them to spend time giving back to the community, being paid for it, developing the sorts of skills you need as a developer, such as assessing code, being supportive to colleagues, helping them when they have a problem. Because there are two aspects to this. You present your project and you do some pair programming with the examiner as well. So it’s hopefully a way for people to get gainful employment whilst giving them the flexibility needed to be able to work on their own projects as well.

Sounds awesome. Sign me up.

Is this something that’s running now? Is it going at the moment?

If this is a piece of software, it’s an Alpha.

So I’ve had two cohorts of people go through the grading process at whatever various levels. And this time last year I was trying it out with a bunch of adults just to see if it works. And they took their grades in December and all of them who took the grade, and that was more than half of who started process.

All of them wanted to know when they could do the next one, because the thing that I realized is that by taking the grade, they’re being initiated into a particular level, if that makes sense. And nobody can take away from them that they have now got grade one Python because some really cool professional software developers said, I’ve looked at your code and I can see you’ve done all the things that we said you need to do to get a grade one Python. So in a sense, it helps combat imposter syndrome. If that makes sense. Am I good at this?

Somebody who’s not me, whose job is to assess me, has said I’m in a grade one level. So that happened immediately in the New Year, I spent a lot of time writing the actual syllabus. Now, I knew that it kind of worked. People reacted positively to it. And over the summer, I’ve been working with these young coders, the young coders who are describing in the Piper Guard section, and they and their parents will later in the autumn, later in the fall, as you say, will be taking their grades. And then I guess in the New Year, we say it’s a beta. Once I’ve done the washop and figured out where they fell over and where things could be improved, and it will be a public beta where people will be able to start to actually take part. Okay.

Is this something that’s going to be just regional or is it a worldwide thing?

You’re asking me, am I building a death star or is this just like little shed in my backyard?

No, but one of the things that what you described seems like it would work no matter where the mentor and the student are. But on the website, it kind of looks regional.

There’s a reason for it looking regional, looking UK based. And that’s because I’m based in the UK, and I wanted easy access to folks who were in the UK. The people who supplied the students, who became the students in the first cohort were all based in London, near where I live. And the same for the young coders and things.

Okay.

But the way it will work on the beta is that the actual assessment takes place using video call like the one we’re using now. So you screen share, and each grade has a particular length of time for grade one is 20 minutes. For example, a grade eight is 55 minutes. And if you imagine, I guess it’s a little bit like doing an interview question when you turn up for an interview, but it’s done in a supportive and friendly sort of a way. Well, interview questions should be like that as well.

Do you know what I mean? Everybody’s there to try and get a positive experience out of it. And what do they get at the end of it? Not only do they get the validation, but the code mentor as they are assessing, they have a form in front of them. And this is where I’m bringing the skills of a teacher to bear that I had to develop before I became a programmer. An assessment form that allows them to very quickly indicate where this person is in the assessment criteria for that particular grade. And that, along with some free text fields, turns into a report that the candidate gets at the end that will give them a Mark so that they can see where their strengths and weaknesses are, gives them encouragement and suggestions and hints and tips on where they might want to improve and hopefully winding their sales to keep going as well, because that’s an important aspect of learning to code as well.

Well, I mean, I definitely see the benefit from the student side of the learning and having somebody there, even if they don’t make the grade. So I assume that some people it’s possible to not get the not pass, right?

Yes, absolutely.

And when that happens, I mean, the marking schemes organized in such a way that if you don’t pass, you only very nearly no, don’t pass if you see what I mean, there are enough different things that you are being assessed on. It’s not like there’s one thing and you’re given a Mark out of 100. There’s actually about five or six things and you’re given a Mark out of 20 or 15 or ten for each of those things that are testing a different aspect of what it is to be a software developer. So cumulatively, you shouldn’t miss too much at passing the pass Mark is 60.

By the way, I’m trying to get out is that there’s a lot of benefits, not just from learning how to code, but it’s learning how to interact with people, learning how to talk about code and starting with smaller projects and building to larger projects. I think that’s an awesome idea, but I also see the benefit from the person being the mentor. They’re going to learn also not just maybe they’re not going to learn code, but they’re going to learn interacting with somebody, trying to help teach them and stuff.

It’s an opportunity to see into somebody else’s world. And as professional software developers, our view of computers is very much skewed to being somebody who can sit down at a computer and type and just make things happen instinctively, almost with Python, it’s a privilege because it’s such an easy programming language to make anything happen. It’s used all over the place for lots of different things.

And so when you see somebody who might be a user of your code or they might be using one of your modules that you’ve written in their code and you notice where they’ve made mistakes or they’ve misunderstood or they’re finding it hard to maybe get their head around the difference between a class and an object.

In Python, classes are objects. But anyway, that’s academic. Do you know what I mean? A class in Stan States an object is what I’m saying here in sort of regular sort of Parliament, as it were. And that’s a big step for some people to be able to make. And for me, as somebody who’s taught an awful lot of people, it’s been quite a humbling experience where you turn up with something like pipe a card or some goofy educational project and you let a bunch of beginner developers. And I don’t just mean children, I mean adults as well loose on this and they can be brutally honest, especially since I generally don’t tell them. Now, this is my code that I’m showing you.

So it’s good to see how other people are working with computers because it broadens one’s own Horizons, I guess.

I also think it’s neat that you’ve set up not precanned projects, but a project that now, what’s that word? There’s a word for the list of things that somebody has to get, like a syllabus.

Yeah, syllabus questions or something like that. In the UK, this is a famously terrible problem. It’s the hotel booking system problem. At 18 years old, kids in the UK take what are called A levels, and the marks from the A levels tell you what University you’re going to get to. Okay. A level programming tasks.

Brian can see me, but I have my head in my hands. They are all make a hotel booking system or some other such incredibly boring, already solved project. And this is about as inspiring as I’d rather stick Forks in my eyes than have to write yet another hotel booking system. Do you see what I mean? Allowing a person to scratch their own. Itch is a way of getting them into programming, but also because they’re scratching their itch. And the software developers we know this, there are going to be times when you just can’t make the damn thing work. If it’s a hotel booking system, you’re going to, after a couple of minutes, go, oh, this, I’m going to go off and do something else. Okay. If it’s this project that you’re really passionate about, you’ve got the wind in your cells. You’ve got the motivation to actually overcome that bump of frustration of why isn’t this working? If only I could debug this thing. Perhaps if I read this thing, I’ll understand it rather than the I can’t be doing with this, I’ll just do something else instead.

And a couple of other aspects as well.

The projects will, I guess over the years, they’ll get more sophisticated with different tools, but the base skills are still mostly the same. And then also on the mentor side, you don’t have to look at 50,000 versions of hotel booking.

Exactly. And let me tell you, music examiners, they have to listen to like a day full of grade one violins. I mean, that really needs danger money.

It’s a lot better proposition to go and see somebody present a piece of code that they’re really enthusiastic about.

You get energized by that.

Okay.

The only thing I was going to say is that by the time you’ve done all eight grades and it’s important to point out you don’t have to do all eight grades if you’re good at this. You could start at grade one and do grades three, five and eight or something like that. Or you can stop after grade five because you’ve learned all that you need to know to do the stuff that you want to do. You don’t have to do all of them, but by the time you finished going through the grades, you now have a portfolio of work. And so if you want to go into the industry and show evidence that actually you can work with code, that people have reviewed this sort of stuff and agreed that this isn’t a shonky project, it actually does what it’s supposed to do, then having your projects from the grades is a great portfolio, and the latter grades are expecting you to have evidence of working with Git or some other version control system, triaging bugs and things like that, so that the latter grades really try and get you into the whole process of coding as well as just writing code.

I’m rather excited to watch to see how this grows. I think it will be a big thing.

Well, we’ll see.

I hope so, too. There’s a lot of things that need to happen to make it work. And you know how you said to me earlier in the program, I’ve seen a pattern here, Nicholas. This is all sort of an educational bent here. The pattern is that I’m slowly building the tools that beginners will need to be able to access the code grades so that then they have the foundations upon which they can build to acquiring the skills they need to code the stuff that they want to do. That’s the outcome that I’m looking for.

It’s not there yet. This stuff isn’t happening. So I’m kind of making it up as I go along. Improvising.

Well, you also said before you were rather an optimist.

Yes, well, I live in the UK, Brexit and everything. I mean, you can’t be anything else but optimistic at the moment, whether you were for it or against it.

I picked the topics so far, looking ahead, even either within these projects or outside of these projects, just the future. Do you have any optimistic ideas about coding or Python or anything going forward?

I’m excited to see where Python goes now that we have a steering counselor on the BDFL and the steering Council, I guess they’re coming to terms with what their role is and how they will interact with the language itself.

It feels like it’s a Supreme Court type set up, but it could also be perhaps a bit more Proactive in some ways. So I’m interested to see what they make of it. And all the folks on the steering Council are good people. I know all one of them quite well, and so I’m looking forward to seeing what their work is. I’m looking forward to ten years time when the kids who got their microbits and raspberry pies and Ada fruit gizmos, your kids and my kids when they graduated from University, and we’ve had a full cycle of kids who, like in the 1980s, grew up with programming in the air. If they so wanted to follow that, I’m interested to see what they make of things. They’ll have the skills. They don’t have to go out and look for a technical cofounder. They are the technical founder. They’ll go and build stuff and it’s going to be amazing to see what they come up with. I don’t know. We’ll see. It’s going to be fun. This is part of the good thing about being a software developer is that ten years ago I wouldn’t have imagined any of the stuff that I’m doing at the moment, really, if I’m honest with you, right? So it’s all kind of a little bit surprising and cool to be working in software.

Definitely agree.

Well, thank you so much for taking the time today to talk with me.

You’re welcome.

I think we’ll probably touch bases with you once in a while to see how things are going. Cool.

Fantastic.

The word I was trying to remember rubric don’t know why I couldn’t remember during the interview. It’s been bugging me ever since. Anyway, thank you to Nicholas for this great interview and for all you do to help teach the next generation of programmers. Thank you to Patreon supporters for continuing to support the show. Join them by going to testenco. Comsupport and thank you to Azure Pipelines for sponsoring this episode. Automate your builds and deployments with Pipelines so you can spend less time with the nuts and bolts and more time being creative. Get started for free at azure.com pipelines that link is also in the show notes at testandcode.com 89 that’s all for now. Go ahead and test something or maybe help somebody else learn to code. Just don’t forget to teach them how to test.