31 10 / 2011

People Paid Us $10,000 Last Week To Learn How To Program. Lessons Learned…

We had a few key experiences with Niroka so far. In order to jumpstart our growth, we approached AppSumo and worked out a deal to have them promote our first class. Within 24 hours, we signed up 202 people and sold $10,000 of digital classroom time. So was it as easy as we made it sound? You’re reading a blog post about how we miraculously just created this web site, and instantly made thousands of dollars! We’d be fooling you if we made it seem so easy.

Mistake #1: changing URLs just before the class starts.

We believe the release of Flash Player 11 coincided with the instructors’ particular operating system—an unreleased developer version—causing some unforeseen problems with the course software. As a last-minute resort, we purchased a 1-seat $100/month Adobe Connect account and realized 20 minutes before the presentation would start that it had a 100 user limit. So we paid the $350 fee to get LiveStream to work, and e-mailed everyone the new address. Some people got frustrated about that. The fix to this problem is have somewhere the user can always go, even if there’s a failure somewhere. 307 Redirect them, or grab live updates to display both in the web site and e-mail. Changing URLs should never happen.

Mistake #2: understating the challenges of learning a topic like how to program.

We noticed some people were very vocal about the course being more difficult than they anticipated. At times we weren’t sure whether to interpret the feedback as valid criticism or as someone who is too impatient to commit to learning the material—Objective-C is not a walk in the park for newcomers when you compare it to languages like Ruby or Python that don’t deal with things like memory management.

Mistake #3: treating our online classes like our college classes.

Live videos are nice because you have interactivity: when you watch a YouTube tutorial, you really can’t ask questions if you get stuck on something. In this course, with over 100 people in attendance, we also couldn’t stop to answer every question that came up. That’s a real problem since it defeats the purpose of doing live courses. Why were we putting everyone together in the same class at the same time and expecting it to be any different from a large lecture hall?

We got around these problems by making some important changes:

Talk to your customers when something goes wrong and make it right. We had 10 unhappy e-mails from people requesting refunds, and we turned all of them into happy customers because we paid attention to them and made it right. Only 1 person out of the 10 insisted on the refund after we tried everything here. We could have just shrugged it off, but we would have heard about it on Hacker News or someone would have wrote a blog post criticizing us on some of these mistakes. We also do this stuff because we’re excited by it; when people complain then we also feel their pain because we’ve been in their shoes and feel frustrated when technology doesn’t work or we felt misled.

We will always guarantee small classrooms. Roshan and I didn’t like large lectures in college; we usually didn’t even show up to class because there was no point in sitting with 200 other students when you could sleep in and watch the recording later. We don’t believe you have to sacrifice quality in order to accomodate larger crowds who want to learn something. What this means is that if we sell 200 seats next time, we’ll break the class into 10 sections so that there won’t be more than 20 students per class.

Give users the mental preparation and encouragement they need. A lot of people say “those who can’t do, teach”, but I realize now that teaching requires a different skill set that might make the inverse true: “those who can do, can’t teach.” I wasn’t instructing the class, but I had the urge to put people’s mind at ease before jumping right into the course material, as I had flashbacks of my younger self taking CS 125. I distinctly remember Professor Angrave telling us all at the beginning:

You are about to embark on a magnificent journey. You may see some people, especially in the engineering department, walking around with their heads held high. They may think they’re better than some of you younger guys because they’ve gone through what you’re about to go through. You are all at the very bottom of Mount Everest, and we’re going to climb it together. This course and CS more broadly speaking is not easy, and you will struggle at times. Some people will decide it’s not for them and drop out entirely. Just remember that things won’t make sense the first time you see them, and that’s perfectly normal. Keep practicing and you’ll get there.

I was lucky to hear this and mentally prepare myself. I could see how it could intimidate newcomers, and I hope to pass along the sentiment to them when it comes to topics like programming. When you’ve been programming since you were a kid, you forget how intidimating it is to look at all of these semicolons, and dear god, the endless brackets in Objective-C! What do they all mean!

Send out all class materials. We did this on the first course and sent out the entire collection of Dive Into iOS materials. People loved us because of it, and I think they got a great deal from it ($130 value). We provided recorded videos afterwards in case people showed up late, got lost in the middle, or needed to play back certain parts. On this one, since it was our first course, we offered each person enrolled in that class a coupon for a free class the next time around to give us another shot if they were disappointed with anything.

Don’t give away any free answers in the first 5 minutes. My girlfriend taught Java tutoring in high school and she said this was one of the key rules to tutoring successfully. I noticed something felt weird when we started our first course, and looking back it would have been much more engaging if I were forced to think about the topic first. My computer architecture professor used to say, “We’ll stay in class and do nothing else for the next hour if nobody answers this question, so someone please help us move things along.” I never really understood why that was important and I sometimes found that tactic annoying, but for the sake of teaching, it’s important.

Be human, be encouraging. I remember watching the Stanford CS 101 class and noticed that Mehran was not only incredibly entertaining to watch, but he handed out candy every single time someone raised their hand; regardless of whether they answered correctly or not, they are rewarded for trying to answer. You don’t want to be judgmental or shame anyone for being wrong, you just want to encourage participation by providing rewards. Admittedly, we received some e-mails that the first live course was a little dry and felt robotic at certain points, so we want to make sure that people are engaged and happy whenever possible.

With all of that, hopefully the negative feedback doesn’t overshadow the positive feedback. Our instructor was flexible enough to get up early on Singapore time and work around our schedule, he’s offering Q&A sessions, he sent out all of his course materials, and he executed.

Thanks for being our first instructor and helping shine a light on the world of programming, Sidwyn. We taught people—many who had zero experience programming before—how to get their start programming in Objective-C, and we made it happen. We’ll keep making it better.

jared