My First Online Course

Last year I launched Learning D3 to teach others how to build interactive data visualizations with D3.js. I spent over a year working on it, and in this post i'll dig into each step of the process sharing the hurdles I had to jump along the way.


I wanted to build a course on D3.js because it was instrumental in my own career. There wasn’t a comprehensive course on D3.js yet, it was a popular library, and it was often people’s first stab at web development. As a designer it was my entry point into learning front end development. I’d also spent a significant amount of time on boarding team members to the library. I wasn’t sure if other people would pay to take a course on D3.js and I didn’t have a following large enough to ask and get meaningful feedback. For good or ill, I made a reasoned guess.


I went through and outlined the entire course. This wasn’t too difficult because i’d been on-boarding team mates to D3.js for the past 2 years. Once I had a scaffold, I decided to write out everything I was going to say in the screencasts. This took me a lot longer than I originally expected. Writing out the content for a technical course isn’t easy. Some people prefer to wing it, and speak from the cuff. Because I was charging premium prices I wanted to make sure there was no fluff in the course. Writing my transcript meant that I could consider every word and phrase, and eliminate any filler material.

Recording and Editing

One of the biggest challenges with recording a course in San Francisco is isolating yourself from the noise around you. I had a pretty good microphone but still had to record at odd hours so that sirens, cars, and conversations couldn’t be heard. Recording the audio was pretty straight forward, just read off the transcript that I wrote. Speak slowly, and take proper pauses for when I would be writing large amounts of code.

After I recorded all the audio, I transitioned into recording the screen to match the recorded transcripts. ScreenFlow was one of the best purchases I made during this process. Even with it, the time it took to record the audio, capture the screencasts, and edit it all together was enormous. I had never done anything like this before and getting to the level of quality I wanted meant my normal pace wasn’t cutting it.

Building a platform to sell it on

Instead of selling the course using a service like Teachable, or Udemy, I made the decision to build my own platform. This meant teaching myself node.js, express, the basics of database management, certificates, security, and basic server management. I used Digital Ocean for hosting, stripe for payment processing, and github for authentication. The application was pretty lightweight but it meant I was in full control for better or worse.


The launch was a dud, not many people visited the site and nobody signed up for the first week. The course was expensive and I had technical glitches. About a week in, I got my first signup. It’s hard to describe how exciting it felt to build something from scratch, and have someone pay you for it. I got another signup, two days later, then another. It was so exhilarating. I wanted to make sure the people taking the course were happy with it, so I reached out to all 3 of them and started talking with them. This was super helpful, as I got valuable feedback.


I knew it would be hard, but didn’t know how hard. My top priority was to build an email list. I tested out linkedIn, facebook, and google advertising to get people to my site but the results were dismal. Content marketing worked much better. I would write a post, and then share it on hacker news, designer news, and data tau. I got lots of site visits, and my email list grew to over 500 people. With each article, I would share it with my list.


Building the course cost me hosting fees and a year of my life. In the end, I made a modest sum of money. The amount wasn't spectacular, but the feeling of building something that people wanted to buy was. It felt amazing waking up from sleep to see that people had signed up to the course. It felt like I had built a business. After two months of marketing the course, I eased off and signups stopped almost immediately.


I learned a swath of skills during the process of building the course. Technical writing, video and audio recording, back end development, server management, pricing, launching a paid product, marketing, and customer support were all uncharted territories for me. I wouldn’t trade this experience for the world. If you decide to get into online courses yourself, count the cost. It isn’t an easy or lucrative endeavor but you will end up learning a lot of valuable things along the way.