I love helping others learn to code. My approach is to preserve the enthusiasm people bring to the table when they first show up.
Enthusiasm is easy to squander. When people feel lost, they lose enthusiasm. When they’re told that they’re doing something wrong over and over, they lose enthusiasm. When they feel embarrassed about what they don’t know, they lose enthusiasm. When they can’t see the end in sight, they lose enthusiasm. When they face constraints peers don’t seem to have, they lose enthusiasm. And they especially lose enthusiasm when they are made to feel like they will never be okay at it. A lot of this can be prevented by the educator’s approach.
Learning anything new is hard, and with that comes an inevitable loss in enthusiasm. To counter that effect, I try to:
- Keep new information to absorb to a minimum and revisit what they already know
- Structure learning so participants can make regular and visible progress
- Encourage experimentation and making mistakes
- Show genuine enthusiasm yourself – how you visibly perceive the content has an effect on others
- Align content to other interests they have as to leverage their enthusiasm for that other subject
- Create my own teaching material which prioritizes the reader’s feelings over quantity
It’s much easier to preserve enthusiasm when there’s no fixed deadlines. Still, no matter what the context, I place as much importance on listening as to speaking. It’s also important to the participant’s success and those of others for there to be boundaries, but I am very selective about which constraints are necessary. I don’t offer unsolicited advice, instead keeping the pace commensurate with the learner, checking in regularly, and showing genuine interest in the questions they ask. Anything new tidbit they glean is great so no question is ever too rudimentary.
Bringing this into the real world, I’m currently mentoring a comp sci student. They chose the problem they wanted to solve. They drew what they wanted the ideal app to look like. I helped them identify the MVP and reduce the scope. This brings the deliverable into something tangible, which reduces the chances of getting discouraged to the point of wanting out later in development. We then broke the project into three discrete parts: the front-end, the back-end, and the data store. We focused on each component starting at the data store. Isolating the problem space to one component gives a light at the end of the tunnel and reduces how many new concepts they have to grasp. They created the repo on GitHub. I gave them small assignments that could be done in 30 minutes.
For the two-part workshop I gave at Algonquin college, my approach was “less is more”. I wanted participants to come out of the sessions being able to say that they could code. I wanted their computer screens looking like that of a professional developer. I also wanted to impress that they already had many important skills relevant to this type of work.
I showed them what software developers actually do (Google things a lot), covered what a programming language is, went over the emotional intelligence aspect of software development, before finally getting into a bit of coding. I selected a programming language with real-world applications (Python) and IDE (Visual Studio Code). The format was alternating between showing a new little thing they could do, and then having them experiment, with one mentor per four participants. They learned about showing text on the screen, doing simple math, using functions, getting user input, creating functions, and reading files. I omitted a lot of content that’s usually in introductory lessons for the sake of keeping it as simple as possible while covering a lot of functional ground. So I didn’t go over the difference between an integer and a float, or cover index-based loops, or ASCII vs UTF-8, etc.
The workshop was free. They didn’t have to come back for that second session if they didn’t want to but they all did, safe for one. They were enthused and wanted to learn more. That’s exactly the emotion I had hoped to elicit and what we should all strive for.
When approaching instruction, center how you want people to feel. You want them to feel like they can do this. Like they’re making progress. Like what they’re learning is relevant. You can pull all of that off in a way that’s honest with them. I think too often the enthusist’s emotions isn’t considered at all, and that this is to the detriment of all.