Learning to code by failing safely

Thoughts on my talk at WordCamp Ottawa 2017

I was fortunate enough to present at WordCamp Ottawa 2017 this weekend. Going into a talk, I’m never quite confident that it’ll meet audience expectations. WordCamp organizers have been gracious enough to give me the chance to try to meet those expectations on multiple occasions—for that, I’m grateful.

The talk

I delivered a talk on learning to code by failing safely. It was a modified version of a guest lecture I delivered to one of Sheridan College’s intro to web development courses last year.1

In the past, I’ve struggled to reconcile the theoretical with the practical, especially in WordCamp talks. WordCamp audiences are frequently—and understandably—interested in practical lessons and insights. I tend heavily toward the theoretical in my day-to-day thinking. Trying to turn those theories into practical knowledge is a humbling experience, and I’m always grateful toward any audience willing to work through that process with me.

With this talk, I tried to create a framework for learning to code—the theoretical—that was connected to analogies and resources to help beginners embrace that framework—the practical.

My own experience of learning to code was haphazard. I lurched from tool to tool, picking up whatever I needed to get a project done, to get the invoices paid. There wasn’t much of a grand plan—there still isn’t. In retrospect, though, whenever learning some new tool, I followed this process:

  1. Identify: What problem are you trying to solve? Get to know the problem in front of you, ideally by writing out a one-sentence descriptor of your goal.2
  2. Research: What are some possible solutions to this problem? What solutions already exist out there that you could mimic/take ideas from? Based on what you know already, is this possible? Do you have to extend your knowledge to make it happen? Where should you look to do that?
  3. Try (and fail): Pick the solution that seems most reasonable and make a working version of it. At this point, that solution might not work—that’s okay!
  4. Iterate: Go back to step #1 and repeat the process, building on the lessons learned from each previous attempt.

This learning process is applicable far beyond learning to code. Key to learning in general, and especially to learning to code, is finding an environment in which to practise this process. During my talk, I advocated for personal projects, finding a personal problem and trying to develop a coded solution to it.

I also provided a heap of resources to help beginners find where to go for each of the steps. Knowing where information is, knowing to whom to turn when you need help—these are some of the keys to any learning process. Fortunately, the WordPress community is a great one in which to learn, focused as it is on inclusion and beginner friendliness.

From here

As I delivered the talk, I realized that one portion in particular had potential for a future iteration. I provided several analogies to help people put programming concepts—in this case, queries, markup, variables—in the context of their daily activities. These analogies could certainly be improved and extended. Would people find a talk full of generally comprehensible analogies for common programming concepts useful? I’m considering it.

I’ll be delivering a much more focused version of this talk at WordCamp Montréal in a few weeks. Speaking specifically about HTML will be fun. I’m excited to nerd out about markup languages! If you’ll be in Montréal, let me know.

  1. Thanks to Shanta for inviting me into her classroom last year! 

  2. Writing a problem in simple, direct language helps me understand it better. By eliminating meandering thoughts, I can keep to the problem at hand, thus focusing my efforts in the following steps. Writing is a powerful tool.