5 Tips For Teaching Programming To Highly Motivated Beginners

Last weekend, I spend my entire free time teaching an iOS workshop at General Assembly to 12 very highly motivated beginners. They say that by teaching, you learn. And I definitely did learn a lot!

Here are some things I learned about teaching that I’ll make sure to do when I teach again (soon)!

Brush Up On the Basics

I didn’t realize how many concepts I take for granted as a more experienced programmer. I was prepared to answer questions about more complex programming patterns, such as the Delegate pattern and blocks, but I stumbled when people asked me what a property was or what a Class or Object was.

Have Advanced Content Ready To Go

The students in my class were of varying levels of programming, so I should have anticipated that some would finish most of the Day 2 tutorial by the end of Day 1! I had to wake up early on Sunday to create a much more advanced tutorial, which most people finished in Day 2 without issues!

If you’re teaching people with a bunch of different levels of experience, have different levels of content ready to go!

Make it Personal

I really hate doing tutorials about how to make yet another To Do list. It does not personally excite me at all. So when I was creating a tutorial for my General Assembly iOS workshop, I came up with the idea of making a Resume app. What could be more personal than an app about yourself?

The great thing about the Resume app is that the tutorial can be generic, but the content in each student’s app will be different (their photos / their bios). Here is one student’s About me page:

Alena Starostina Resume App

Encourage Exploration

While some students were really focused on just getting through the tutorial, some really took the time to improvise and look up things they wanted to learn.

For example, one student, a designer by day, took a bunch of time looking up how to add gradients to images. Another student figured out how to make his image circular. Another student figured out how to make the scroll view’s content offset mathematically correct using the size of the view, the text view, and the status bar on the About Me page.

Alena, the student in the About Me screenshot above, took the time to figure out how to add an Launch Image and change the Tint Color of her app to gray:

Resume App Contact Me

I highly recommend having some free creative time built into your content to really have the students improvise and work on things that they are personally interested in and are curious about!

Have a Good Mix of Lecture / Working

I only had about a week’s notice before I taught the iOS workshop, so I focused on creating the most scalable content first – a tutorial. The tutorial had a lot of hand-holding details in the beginning, but became more brief as it went on assuming the students should know what to do from the beginning of the tutorial.

During the workshop, I had the students pair up and work on the tutorial at their own pace, while helping each other. I walked around and helped / explained concepts to students in small groups during the class.

The class ended up very hands-on, which is fun, but the feedback I got was that the students wanted more lecture, especially about the basic concepts (see tip #1!). For my next class, which I’ll likely teach in February, I will focus on adding a substantial lecture component to the class!

Have you taught programming to highly motivated beginners? What tips do you have?

Enjoy the article? Join over 17,500+ Swift developers and enthusiasts who get my weekly updates.

  • Harsh

    Why yes, I have taught programming to highly motivated beginners and have tons of tips! 🙂 You hit a bunch of the important ones already, but I would also add the following:

    Build in a way for students to interact with, and get to know each other at the beginning of the class, throughout the class, and at the end. It will give them a lot of context as to where everyone else is coming from, and will help them pair better when they have questions, or are exploring a new topic. The more collaboration you can encourage, the better students feel about asking and answering questions.

    Give students homework, and prepwork. There are a ton of tutorials on everything out there on the web, which means it can be very overwhelming for beginners to know where to start, what to dedicate time to, and what’s relevant. If you give homework, it could be simply to check out a few additional tutorials that you’ve hand picked so they know they won’t be wasting their time.

    As for prepwork, you could give them a relevant youtube video to watch or find a good conceptual tutorial for the topic you’ll soon be introducing. This will make sure they have relevant questions come class time, and will help you identify common questions before class even starts (as I’m sure some will e-mail you their questions as they’re doing the prepwork).

    Just a couple. Hope it helps! Let me know when you’re preparing for your February one, I’d love to help.

    • Hi Harsh,

      Thanks for the added tips! Do you have any ice breakers you like to use in your class? I just had the students introduce themselves and talk about what apps they like and what they’d like to make in the beginning of class.

      They also paired throughout the class and had an hour to chat during lunch – some of us even went out to get coffee together. But I’d love a better ice-breaker / group exercise that’s not coding related. I can even make an app for the ice-breaker! Keep in mind that this is a short weekend workshop, so there isn’t too much time to do something elaborate.

      As for homework – it’s only a weekend workshop. But some students definitely went home and either re-did their work or tried to understand it better – maybe I should come up with something more structured! I made sure to give them good resources at the end of the class on Sunday if they want to continue learning more.

      I like the idea of having them watch a video as prep work and then discuss it during the class. Now I just have to find a video!