How Hasura Makes Learning Code Easier - Ali Spittel @HasuraCon'20
Ali Spittel spoke last year at HasuraCon'20 on how Hasura helps with teaching code and how it helps students learn faster!
As HasuraCon'21 is almost here, we thought it would be the perfect time to take a look back on all the amazing talks by our amazing speakers from 2020!
Here's Ali's talk in video form:
And below is a text transcription of the talk for those who prefer reading! (The text is slightly paraphrased and edited here and there for clarity's sake.)
Hey, I'm Ali, and I'm going to be talking about how Hasura makes learning to code a little bit easier!
A bit about me
I teach people how to code both as my job and as my hobby. I am a lead instructor at General Assembly where I teach people to code as my full-time job all day, every day, teaching people from "hello world" all the way up until they are professional developers.
I've also been really privileged to teach a lot of people through online platforms such as videos, podcasting, blogging, and all that. So, I definitely have some experience in getting new developers to learn to code and it’s something that I get to do every day!
How I learned about Hasura
I tried Hasura for the first time in 2019, and my mind was blown! I thought it was the coolest thing ever! Rajoshi came on my podcast, the Ladybug Podcast, that I host with two other women, and I was super, super amazed by the technology. I have also gotten to teach with it a couple of times. I have a workshop that's up and a blog post on how to use Hasura. It's been so cool to see how easily some new developers can get started with it, and how much more accessible it makes coding for them. It would have made my life a lot easier too back in the day!
GraphQL used to be hard
I started using GraphQL pretty much exactly when it came out. And it was really, really, really tough at that point. I was working on our Django back end, and getting GraphQL set up for it was a really, really, really painful process. Remember, there was pretty much no documentation for how to make a GraphQL query, let alone how to hook it into a Django app, and then how to hook it into a Vue frontend after the fact. It was really, really tough. And I, at that point, just thought that GraphQL was really hard and that it wasn't technology that would work for me.
But Hasura made it so much easier
So, I came into Hasura biased against GraphQL for that reason but was completely taken aback by how accessible it was to create endpoints with Hasura instead of having to set up GraphQL from zero by yourself. With Hasura, it just takes a couple of clicks to get a full back end up and running. There are full guides for hooking Hasura into a bunch of different technologies. So you don't need to use it in isolation. I've always been really, really impressed by that. There's even a button to try out Hasura on Heroku in 30 seconds and have a whole entire deployed application ready for you to use with just a couple of clicks. Pretty incredible!
Everyone’s a full-stack dev with Hasura!
Hasura also allows everybody to be a full-stack developer. It can be really challenging to see all the different technologies that you have to learn in order to get something up and running. Even for just a GraphQL application, just think about having to write that whole entire back end from scratch, the whole entire front end from scratch, connecting them from zero, connecting to the database from zero, doing all the queries, and more. That's pretty intimidating!
You may have seen this diagram of what it means to be a full stack developer where you know one part of the stack really well and then the other part of the stack, maybe not so well. So in this case, we need a really strong front-end developer who's really great at that but then has to do a little bit more backend work. And maybe that doesn't go so well.
Hasura makes it so that that developer doesn't have to worry too much about all that back-end code. It makes that process a lot more simple to build an API and a GraphQL endpoint without having to worry too much about writing all the code yourself.
So I want to talk a little bit about teaching. My first rule is to teach the pool, not the ocean. It can be tempting to give your input on absolutely everything, teach every detail that you know about something. And that doesn't normally help your learners because giving it to them simply at first, teaching them one way to do things simplifies a new topic for them, and makes it so that it's not super intimidating for them.
Teaching with Hasura
With Hasura, instead of having to teach your students every single piece of writing a back end and doing that from absolute zero, instead, you can teach them the pieces that they really need to get something working and something that they can be proud of demonstrating. So Hasura allows us to teach maybe just the front-end piece of programming instead of working too hard on the back-end side.
Another big piece of this is to instill confidence and celebrate people's wins! Especially when learners are starting off, there's a lot of imposter syndrome, and a lot of feelings of this is never going to be something that they can do. That's something that I really dealt with when I was learning to program. But something like Hasura allows students to have quick wins, where they can build something that displays in the browser or connects to that back end or displays their data without having to do a massive amount of work. And that's going to make them more confident, it's going to make them feel like they can build applications, and they're going to be able to celebrate that when they see what they've built in the browser.
Building Games with Hasura
Another really awesome thing is gamifying learning. Making it so that the students are building games, building things that are interactive, things that are fun. That's going to make it more entertaining for them. In addition, writing game logic is usually a lot more difficult than basic application logic that we might use day-to-day. So it's a really great challenge for that.
I have had a ton of fun building games with Hasura. I built this real-time drawing application (https://quizzical-mclean-87c84c.netlify.app/) where you can click on any of the pixels and the colors and draw things in right now. Some people have made it maybe not so attractive! :)
You can have it with multiple users. So I can have two tabs open of this game. And you can see that it updates in real-time. So what I'm drawing on this tab, it's also drawing on this tab. And it's the same thing across computers.
Implementing this in Hasura is not an overly difficult process. It's just changing your GraphQL query to a subscription. Which is pretty awesome! You have this fully real real-time application that you can use.
The Gradual Release of Responsibility (with Hasura)
Another thing I like to talk about is the Gradual Release of Responsibility. This is when at first, you give a lot of structured instructions, things are really handed to students and it's a little bit more handheld. But then as you move on, that responsibility is released to students, and it's more on them to research things and teach themselves and extend the learnings and interpret instructions in a little bit more of a loose manner.
Hasura allows for this as well where it can start really simple and just have a couple of clicks to build out that back end. But then you can go more in-depth and build something more complex or hook the parser up to a back end that you built yourself or build it through the command line instead of the Heroku one-click button. So, Hasura definitely enables the gradual release of responsibility as well.
Building things yourself is the best way to learn something, and Hasura allows you to build full-stack web applications without having to know a million different tools and technologies and also be able to deploy it without a huge amount of effort. So you can have these portfolio projects that are released to the public that other people can see without having to go super, super wild with learning everything. So you can build things, show them off, and all that, using Hasura.
Well, I hope that was a good introduction to a few teaching tips and how Hasura can help with learning these new things. If you want to learn more about teaching or ask me any questions about any of this, please do! I also have some Hasura tutorials on my profile.
Keep in touch, I'm @ASpittel everywhere! Thanks!