"You might not think that programmers are artists, but programming is an extremely creative profession. It's logic-based creativity.” - John Romero
It goes without saying that the past year has turned the world of education on its head. Both students and teachers alike have had to adjust to doing everything virtually. Programming, however, has always been virtual in some capacity. Even if lectures and instructions are delivered in person, as programmers we need the actual code in order to learn.
Since the programming world is constantly evolving and changing, this means that as developers, we are constantly learning. Whether it be online tutorials, Stack Overflow questions, Reddit, or another source, every single one of us has used some sort of online tool to learn what we needed to know to get our job done. We’re constantly in pursuit of how to find out the information we need quickly and efficiently.
I myself am newer to the world of programming. I started at a coding bootcamp in March of 2020. I had exactly four days of in-person classes before lockdown hit here in Vancouver, and the remainder of the bootcamp was taught online.
With a program like coding, you would expect that learning it entirely online would be a simple switch. I certainly expected that to be the case. However, there were a lot of difficulties to transverse. Technical difficulties were much harder to overcome, especially when students were each facing their own. We jumped between different platforms to hold our meetings, trying to find the clearest and simplest way to communicate. We relied on Slack messages and GitHub pull requests to provide us with so much of our information outside of lecture time.
The bootcamp gave us the unique opportunity to experience both learning and teaching code at the same time. There were only ten of us and we learned to rely on each other outside of our lectures. This meant when you understood something, you were the one teaching and explaining it to your classmates the best you could.
Like a lot of programmers, I am a very visual learner. I need to be able to see the code and read what it’s doing to properly understand how it's working. Explaining the theory behind it isn’t going to cut it. Sometimes, for more complicated bits, this meant picking through code chunks line by line until it was clear.
As much as instructors try to provide clarity during class, a three-hour lecture provides a lot of information. The concept will seem crystal clear and then you get to your first exercise and those very beginning steps have been forgotten. We needed a way to quickly and easily be able to go back and see the changes happening to the code at the exact moment we needed it. GitHub pull requests served as a wonderful foundation, but unless an instructor made constant commits, you would be left with a multitude of changes and wondering exactly what made the change you saw happen.
Our school had the unique opportunity of being able to use CodeCast for the entirety of the bootcamp. We were able to use it in class so we could follow along and copy the code, but we were also able to go back and view the casts later, properly seeing every individual change as it happened.
The bootcamp and my time interning here at CodeCast have taught me a lot. It’s taught me what works for me and a lot of my peers when learning new languages. It’s also taught me what absolutely doesn’t work for me as well.
That being said, from student (and sometimes teacher) to teacher, here are my top five tips for how to effectively teach coding online:
- Don’t gloss over the simple things. Repeat them often, even if it seems obvious to you. That very first step so often gets mentioned once because it seems so obvious. But you’d be amazed at how many times we all messaged each other asking how to initialize a project again.
- Make a clear list of commands. I mean everything from git init to npm start to how to clear your terminal. Make a clear list of all the commands you use throughout the lecture or the project as a whole. Put them in a separate 'read me' file and have it be very accessible. I cannot express how much time was spent searching for commands instead of writing code.
- Share your favourite tricks as you go, even if they seem obvious. I am personally someone who loves to accomplish things in the simplest possible way, even if that means there is a learning curve. Now, that doesn’t mean cutting corners, it means taking one step to do things when possible instead of four. Keyboard shortcuts are my holy grail, and every single teacher I came across would use them, but would never explain what they did to make it happen unless I asked. Skipping to the end of a row with Command + Arrow? Mention it. Copying with Command + C? Not everyone knows it! The amount of time I have saved learning keyboard shortcuts makes it so I can focus on actually coding, and not navigating the code.
- Be. Patient. This is, of course, nothing new. It’s also sometimes incredibly difficult. There will be students who will consistently ask you how to do things you taught a month ago and have used in class every single day. It’s so easy to assume that the student wasn’t paying attention, but in reality, after repeating a task a certain amount of times, instructors often skip-over explaining it. If a student asks how to do something you’ve repeatedly re-explained to them, perhaps take a moment after class to discuss a different way for them to try to grasp the concept. But if a student brings something up that you haven’t explained in a while, don’t skip the moment to re-teach everyone how to do it. If anything, it will solidify the concept to the other students who appear to understand how to do it correctly.
- Have a detailed history and a clear way for students to revisit the material you taught them. We, of course, recommend CodeCast, since it’s an all-in-one package of code, audio, and video that students can easily navigate through to find exactly what they need. Regardless of the method you choose, make sure your students have a way to access every little thing you mentioned again, no matter how pointless or obvious they may appear to you.
Of course, there is a myriad of other tips and tricks and we’ll continue to share those over time.
Just remember this: the best teachers are the ones who are constantly learning alongside their students.