How I Launched my First Product
September 07, 2020
On September 4th, 2020, I launched my first product Vim for VSCode.
Today I'm going to share with you how I did it.
The whole idea for this started back when I heard about "info-products". I think of it as "a piece of content that people buy." The most common form I see is the ebook. But, there a variety of forms. I thought to myself, as a teacher, this is what I want to learn more about: selling info-products like ebooks and video courses. It's probably one of the most common ways content creators make money online.
I can't recall where ideas started, but after I saw multiple friends launching ebooks this summer, I told myself, "I want to do that."
My friend Will and I have been chatting about making info products since April 2020. He had his own book idea in mind. We both said we would push each other in that direction.
My advice to first-time info product creators:— Daniel Vassallo (@dvassallo) July 26, 2020
1. Start with a very small product.
2. Choose a topic you know well that will almost write itself. Avoid doing research.
3. Timebox production to 2 weeks.
4. Charge $10.
5. Promote it!
All the lessons are in #5. Best of luck!
Then, we saw this tweet. This was back in July and I immediately bookmarked it. I told myself in August, I would give it a shot. I chatted with Will and he said was onboard to join me as well.
Neither myself nor Will knew anyone else that was interested in doing this with us. I set a day for August 21st - September 4th in my calendar for myself and Will. As the date approached, I started telling a few friends. One of those friends was Lauro. Lauro loved the idea. I told him I would love to do it with a small group of people.
He suggested I post the challenge to the egghead and Party Corgi Discord communities. It was a fantastic idea.
I ended up receiving more requests than I could handle.
To organize the small groupsI chose Discord Group DMs, which are capped at 10 people. I told the other folks there would be a future round, which has two groups running as I write this.
That's the backstory behind my first product. Now onto actually building the product!
If you have an idea, actually building it is the easiest part. At least, that's how it felt for me. Before the challenge started in August, I began thinking of ideas. "What could I build?" I asked myself. One idea I had been playing around with was exercises to teach you programming topics. I chatted with my friend Prince who helped me smooth it out. Eventually, I landed on Vim. I knew enough Vim to teach it and I figured that was something I could build within two weeks. I thought it fit the mold perfectly since learning Vim is very hands-on.
I have a full-time job so planning out my work for this challenge was essential. I came up with this plan:
I told myself I would work on it on my own time before work, after work and on the weekend. I think I spent maybe an hour in the morning, and an hour after work. On the weekends, it was a few hours. I didn't stick to the plan exactly, but having the rough outline made me think less and made it easier to get things done.
To actually manage the project and keep track of tasks, notes and anything else, I used the following tools:
- Foam: my second brain, I have a long page of notes and thoughts
- Notion: for things I needed to write down while on the go or high-level goals for the day
- VSCode: I use Foam with VSCode, but I also built my product in VSCode (because they're exercises)
Ultimately the tools you use don't matter that much, but I'm sharing it case it helps you figure out what you might use.
Probably the most important part of this was having accountability. I used two forms:
- tweet thread: I kept a thread of my progress each day
- small group: the Group Discord DM I mentioned earlier. We had 10 people total
The tweet thread worked well as the medium for sharing progress while the small group provided a safe space for me to bounce ideas off other people and get help with specific things.
After I finished building the product, I needed a way to bundle it up into a single package. I ended up taking this approach:
- using a private GitHub repo
- tagging it with the version
- downloading the tagged release as a zip
- shipping the zip as the product
I don't think this approach will work for most products, but it certainly served my needs well.
The next phase in the process: selling the product. Here I broke it into 3 phases
- building a landing page
- getting a domain
- taking money for the product
Originally, I was going to build a landing page with Next.js and MDX. I started to build it and then realized I might run out of time. Instead, I opted to build it with ConvertKit's landing page builder.
This worked out surprisingly well. I wasn't able to customize how I might if I were writing the HTML from scratch, but using their builder allowed me to focus on the landing page copy. I didn't have to make decisions about the design (beyond a few colors) or the tech stack. It saved a lot of mental overhead!
Note: If you sign up for the ConvertKit free plan through my referral link, it increases my subscriber limit by 100 subscribers. Think of it as a small way to say, "Thanks! Your post convinced me to give ConvertKit a try!"
"You're waiting till after you build the product to buy a domain???" was the common response I received after sharing my plan. Contrary to what we (developers) usually do, yes, I waited. I had a name in my head and I would be lying if I didn't say I checked the domain registrar to make sure it was available.
I bought the domain through Google Domains for \$12.99 year.
I later learned from a friend that the keywords "vim vscode" receive over 4,000 searches per month! A smarter person would have used this research to drive their decision around the domain for their product. Future me will do that. Me today lucked out.
A month or so before I started working on this, I received an invite to try out ConvertKit Commerce.
"Perfect! I'll get to try this out for my product." Even though it's still in beta, I accepted the risk and set up my product with it.
At the time of trying it, it didn't have all the bells and whistles that I wanted such as:
- coupon codes
- PayPal support
I made it work through! You can see the product page live here. I added links to the landing page which then take you to the product page to purchase. I was worried the extra click (landing page -> product page) might deter customers, but people still bought it. I don't have metrics or data to measure how many people dropped off at the product page though.
While ConvertKit Commerce is still in beta, you can sign up for the waiting list here.
One of the most important parts of launching products is the marketing piece. If you don't consider the landing page copy as part of the marketing efforts (which I am not in this article), then I would say marketing was one of my weakest points.
When I started making the product, I created a tweet thread to share updates. This is was main form of marketing. I then posted a tweet on the day of launch and wrote a short thread. The only other things I did were:
The only reason the tweet actually worked is because:
- I have a decent-sized audience (28K followers)
- I have friends with 100K+ followers who were kind enough to spread the word
Without those two pieces, I don't think I would have had much success with this marketing approach.
As you can see, this approach is focused on "launching a product", not the actual product. Ideally, I would have done both, but I ran out of time.
Though now that the product is launched, the marketing piece is an active work-in-progress. I plan to continue finding ways to market it and possibly build something bigger.
Anyone can launch a product, but what matters most is, do people buy it? I didn't know what to expect since this was my first product launch. I told my email list the night before:
- 10 sales would be great
- 100 sales would be awesome
- 100+ sales would make me go "Okay, this was a success"
The date and time of ConvertKit Commerce's analytics and reports is not lined up with my local time so I can't tell you how many I sold the first day, but I can share the stats between launch at midnight September 3rd and today, 11am PT September 7th.
Honestly, this shocked me. I didn't realize that many people would buy it. I received a lot of positive feedback on it as well, which filled me with joy:
just checked out this Vim course. It's excellent! Gives many exercises so you can use spaced repetition to build muscle memory. And the format is innovative - it is taught RIGHT INSIDE VS @CODE!— shawn swyx wang (@swyx) September 5, 2020
By the end I was channeling my inner @ryanflorence and flying across the screen 🦸🏽♂️ https://t.co/OOAjWL6WkI
@jsjoeio Going through https://t.co/5PVE4pxYBA right now (actually using @oni_vim, sorry 😏). It feels ridiculous at first, to have this many exercises for the basic movement keys. But after half an hour I gotta say: You have created an excellent learning resource here. Thanks!— Jonathan Siebern (@j_siebern) September 5, 2020
I had the pleasure of getting a prerelease of this to help give feedback and really have to say that it's incredibly well thought out and really enjoyable. Worth every penny of the $10 and every moment of your time if you want to get into Vim. https://t.co/uAFQ4dpeq3— Tre Tuna (@TreTuna) September 5, 2020
I just completed this and it's excellent 👌 Hello, Vim! https://t.co/6Bek3BlwAb— Matija Marohnić (@silvenon) September 5, 2020
And people were even asking about future expansions with more advanced commands! It made me realize - I think I've stumbled upon a good product idea. As I said earlier, I'd like to expand it into something bigger.
A tip I learned from colleagues is writing a post-mortem after completing a project. Here are a few things I might do differently next time I launch a product.
When I started building this, I was two-thirds done with another project I started: ClojureFam. Naive me thought, "Oh yeah. I can do both at the same time." But after a few days, I noticed my progress on the ClojureFam project dwindling. I put that on pause and focused on the product.
If I were to do it again, the product would be my sole focus. No other side projects or commitments outside work and family. Having a clear plate sets you up for success.
I haven't yet decided if I prefer the Group Discord DMs over a Discord server. A few members of our group expressed interest in a server.
Some advantages of that would be:
- ability to use bots (daily standup bot?)
- transparency (Group DMs are private)
I liked the intimacy of the small groups and honestly, I think they're less overwhelming compared to servers. But, if we have multiple groups running, they might benefit from at least being able to see what the other groups are discussing. Something I'm considering for the future.
Using tweet threads to keep track of your progress are great for you, but not for the platform. It's easy for me, the author, to post my daily update as a reply to my previous tweet. At the end, I can see all updates as replies to one tweet. This is great, but there are two problems:
- these replies look random to your followers
- Twitter's algorithms treat them differently than "one-off tweets"
If I were to do this again, I would do both. I would post regular tweets sharing updates. Then I would keep a thread (mainly for myself) where I referenced the day of the challenge (e.g. Day 4/14) and a few line items of what I accomplished. The benefits of this approach are:
- the one-off tweets keep Twitter and your followers happy
- the thread can be your public product journal which you can reference later
I wish I would have created the landing page first and started collecting email addresses on Day 1. Why didn't I? Well, I was afraid. Afraid I would promise something and then not deliver. Instead, I waited until the product was complete to start selling it.
The problem with this is:
- I didn't validate the idea
- I missed out on hyping up the idea
If I had created the landing page first, I could have started getting people thinking about the product before launching. Then, while building it, I could have shared updates with them directly and asked them for early feedback. This would have helped because instead I relied on people who weren't in my target audience to give feedback. It worked out thanks to luck, but I could have had a stronger product and stronger launch had I started with the landing page.
I learned a ton from launching a product online. As cheesy as it sounds, I feel like a real indie hacker now! I plan to keep building more products and sharing my learnings along the way.
Here are the key takeways I would give to past Joe or friends who want to launch their own products:
- Participate in the #2WeekProduct challenge
- Have an accountability system
- Start with a landing page on Day 1 and let people sign up
- Build in public
- Leverage tools like ConvertKit
- Have a marketing plan
- Celebrate the wins and learn from your mistakes
I hope you enjoyed reading this as much as I enjoyed writing it! If you ever want to chat about anything here, my inbox is open! You can DM me on Twitter or email me at jprevite at hey dot com. I love talking about this stuff!
Interested in the #2WeekProduct challenge?
I wrote a cheatsheet for the Fast Framework. Think of it as a handy guide for starting your fast learning projects. Sign up below and I'll send you a free PDF copy.