Skip to content

Building My First Course

JavaScript, courses5 min read

Destructuring Arrays

I’ve been wanting to make and sell a course for years, but have put it off for a number of common reasons:

  • I’m too busy
  • Imposter syndrome and fear of putting myself out there
  • Videos are time consuming to edit and shoot
  • Everything has been covered

I’m not alone here. Seeing some of the more massive course launches from folks like Kent C. Dodds, Wes Bos, Josh Comeau, and more. It can be intimidating. They’re putting out such polished content and covering a ton of ground in their courses. I honestly don’t know how you do that without going full-time.

So what sparked my fire enough to move beyond being intimidated and ready to just build a thing and put it out there? I started seeing smaller micro courses pop up.

One, in particular, that stood out to me was from Joe Previte (check out his Vim for VS Code course). What I noticed was that he has you learning interactively inside VS Code. I’m not saying it’s ground-breaking, but Joe got me thinking - not every course needs to be massive and not every course needs to be video-based. One thing I’ve struggled with in the past is zoning-out in video tutorials, but with the constant engagement of this format, concepts seemed to stick better for me.

With the launch of Josh Comeau’s amazing new course, I noticed this same thing. Josh brilliantly mixes reading, multiple-choice questions, video, and exercises to keep the student engaged. The course also goes deeply into a subject often overlooked. There are a plethora of resources for learning CSS Grid and Flexbox, but what about everything else? Personally, it was the exact content I had been wanting for quite some time, but just wasn’t finding.

Taking some characteristics from both Joe and Josh’s courses, I started brainstorming ideas for what I could teach and building a platform to do so.

I first considered areas that are often overlooked but heavily used in a work setting. A few things came to mind (and I will be making courses in the future for some of these):

  • Chrome devtools
  • Setting up a development environment
  • Arrays and the plethora of methods
  • Functional Programming
  • The JavaScript Engine and Event Loop

Some of these are rather large topics, so I naturally went for one that seemed smol enough to tackle, but would provide real value: arrays.

One thing that stuck out to me with arrays is that I felt like I had a good handle on the various methods and techniques, but when looking through the list, quickly realized my ignorance. I didn’t know there were so many arguments you could pass into reduce, for instance. If someone asked me what the return value of many of them was, I couldn’t say for sure.

With my topic set, I started planning out what a platform would look like and what would be necessary. I would want something that could handle text, video, code editing and execution. It started looking more and more like another massive undertaking and a side project that would never see the light of day.

Then, randomly on Twitter, I happened upon some app called Slip. It was a brand new Indie Hacker product by Kenneth Cassel and it weirdly checked all my boxes. What impeccable timing!

With Slip, it’s a relatively small monthly fee + 10% from each course sale. What I like about this model is that in a bad month, the worst that could happen is I’m out the equivalent of a few cups of coffee and the 10% is much more reasonable than other platforms. Besides that, I wouldn’t have to spend months building out a platform.

I quickly got onboarded to the platform and poked around a bit to get an idea of how I would need to format my course.

With Slip, you build your course in blocks. Like Squarespace. So you can have a Markdown block (soon to be MDX), a code snippet block, and a code execution block (that has a question prompt, a code editor, and a console for the output). Also, soon Slip will have multiple-choice questions 👌🏻

Knowing the possibilities, I started outlining what the course would cover. I would need to start at some basic level and cover the necessities. I’d also need to try and cut out some lesser-used methods to keep the course from becoming too large. Finally, I’d need to spend the majority of time on the more useful, but difficult to grok, methods and techniques.

Here’s what I ended-up with:

  • Introduction
  • The Basics
  • Looping through Arrays
  • Slice vs Splice
  • Sort & Includes
  • Filter, Map, and Reduce
  • Spread & Destructuring
  • Arrays of Objects
  • Bonus: Interview Questions
  • Bonus: All the Methods
  • Conclusion

With my outline ready, I then created a Notion doc that would house all of my course content until I was ready to input it to Slip. I went with Notion for the ease of use, my own familiarity, and the Markdown formatting. I would then be able to just copy/paste straight from Notion to Slip.

From there, I broke each of these sections down into sub-sections of what I needed to cover. For the “Looping through Arrays” section, I broke it down into an intro, classic for loop, forEach, for..in, for..of, and exercises.

For each of the sub-sections I would go through the MDN docs and various blog posts I could find and take notes if needed. I also scoured Stack Overflow to see where people were running into issues.

Then I just started writing.

I initially made a Trello board to keep track of everything, but for the most part I went sequentially through my outline. I would spend any time I could find in my day (early morning and evenings) to just get one sub-section completed.

Much like my day job, breaking it down into small pieces really helped me to ship/complete at least 1 thing per day. This gave me momentum.

After a while, I started to split focus between writing the course and creating the adjacent materials, like a course landing page, newsletter signup, personal branding overhaul, and assets for Twitter cards and my course cover art. Those things take time, but are 100% necessary.

This all leads me to now. I just finished writing the course. So now I’ll need to go through and proofread (and beg some colleagues to do the same), then I’m going to generate an ebook (mostly the same content) from the course materials, and build an array cheat sheet.

Outside of finishing the course, I’m having to change my mindset a bit. One major thing that has prevented me from an endeavor like this (or even pursuing my own Indie Hacker product) is a fear of putting myself and my work out there.

I’ve gone through a bit of a roller coaster, feeling really confident about it and feeling absolutely terrified to release it. At times it’s been debilitating. I've had many nights where I considered scrapping the whole thing and disappearing back into the bushes like Homer.

But, for all of the bouts of stress and anxiety it’s caused, it’s brought me a lot of joy. I love building things, and I’m tired of building side projects that never launch. This time I’m actually finishing and launching it 🚀

I’m really excited about the Slip platform. It’s such a genius idea and the possibilities are limitless. It has its rough edges, but new features are constantly shipping and we even have a Discord community going for course authors. If you’re interested in creating your own course, give Slip a try!

Wanna get better at working with arrays in JS? Check out my latest course 🔥

© 2021 by Jonathan Speek