Helping people learn more about programming

A number of people I know want to learn more about code. People see it as a useful skill, whether they’re dealing with functions and macros in Microsoft Excel, building tools in Ruby or PHP, or playing around with graphics in Processing. I had tea with a designer who’s learning how to code in the process of building a personal project. Since he was there and the code was there, I figured I’d help by answering any questions he had. By the time we wrapped up, he’d solved three of the things he was getting stuck on: limiting queries, working with inline PHP, and using AJAX to dynamically pull in data. Good stuff.

Helping people learn is so much fun. I loved teaching introductory computer science. Even though sometimes it was frustrating, it was such a thrill getting people to those "aha!" moments. I speed-read, so it’s easier for me to skim through Google results and documentation to spot just the right function. I’ve made lots of mistakes, so it’s easier for me to debug things than it is for people who are starting out. Sometimes all people need is a nudge in the right direction, a snippet of sample code, and then they’re off. I get such a kick out of it. It’s high-leverage – a little help can go a long way.

Problem decomposition is a key skill: breaking a challenge down into small, motivating steps, identifying the things you need to figure out first so that you can build on top of them. It’s hard when you’re new, and easier when you’ve solved lots of similar problems. I want to get super-good at this, which probably means doing this with more breadth and depth so that we have more building blocks to play with.

I’m figuring out what I like. I like one-on-one sessions and co-working chats more than group tutoring or teaching a class. I don’t mind looking at someone’s screen using Skype. I’m not an expert, but we can learn together, and I’ve been told that my enthusiasm is infectious.

What could this look like, if I folded this into my experimental life? Maybe it starts with informal coworking in a shared space, helping people while hanging out and doing my own work. (I might have a "Do Not Disturb" / "Open for Helping with …" sort of sign on my laptop.) I’m planning to join HackLab.to in March, after my current consulting gig winds up. (I hope the weather will be nicer by then!) More formally, people might book hour-long sessions in a cafe, coworking space, or library, like the way tutors meet with students. I’d get paid in cash (pay-what-you-can) and/or barter. I could offer virtual help, too – e-mail? Skype?

So there’s this idea of code coaching, for those questions that you can’t ask on Stack Overflow or on mailing lists, and for learning not just a specific thing but also the process of learning it. Shall we give it a try? I’m open to inquiries about Emacs Lisp, PHP, Ruby, Rails, JQuery, Excel functions and reporting tools, AutoHotkey, Bash scripting, and other things people might want to learn.

I’m a little anxious about the impostor syndrome, but I should just get over that. I confess up front: I’m not an expert in any of these frameworks, especially since most of them move faster than I can learn. <laugh> (You won’t believe the kinds of things people are building with Emacs Lisp these days!) I’m always going to be looking things up, because I switch between languages and don’t have all the syntax in my brain. I sometimes have to look up how to do basic control structures like a for loop. And I’ll tell you if I don’t have the foggiest idea how to solve something, but at least I can show you how I’d look for it.

This sort of mentoring is an expected part of teamwork. Who’s done this as an independent? Are there things I should watch out for? Will it hopelessly fragment my brain?

Who’s interested in exploring this with me? How would you value it, and how do we test whether it’s worth it for you and me? Jan/Feb’s busy with consulting, but maybe we’ll see what this looks like in March, or we’ll do low-key coaching for starters…

Related: http://news.ycombinator.com/item?id=4857854

  • http://lamattgrind.tumblr.com Matthew Darling

    This reminds me somewhat of Avdi Grimm’s pair programming services. Is that sort of the idea? Perhaps he has tips on doing this sort of thing digitally :)

    Which reminds me, if you’ve never seen it, you might like his post about he works with his assistant(s). But since I found his blog because of Emacs, maybe this is all old news to you ;)

  • http://sachachua.com Sacha Chua

    Both are new to me, so this is awesome! Thanks for connecting the dots. =D

  • http://users.dcc.uchile.cl/~jbarbay/ Jeremy ‘LeJyBy’ Barbay

    Hi Sacha!

    Maybe one way to fund such tutoring would be to collaborate with learners to create an online course?

    For instance, when people contact you because they want to learn some programming skills, you would either
    – direct them to an existing tutorial or
    – assign them tasks of incremental complexities that they will implement and describe in a new tutorial, that you will correct.

    The production of the tutorial could produce revenue (or satisfaction) to motivate the exchange (by more than just the pleasure of teaching one person).

  • http://sachachua.com Sacha Chua

    Yes, that would be a great way to scale up! =)

  • Pingback: Monthly review: January 2013 » sacha chua :: living an awesome life

  • Pingback: Emacs Chat with Avdi Grimm (Org-mode, Ruby, etc.) » sacha chua :: living an awesome life