I’m rather pleased with the course so far and the students like it. It even got “highest rated” badge due to positive student reviews.

I will share a more detailed stats later in this post.

What is certain is that I learned a great deal in the process. In this post I will try to capture the most important lessons I learned while it’s all still fresh in memory.

This knowledge might come in handy if you plan to launch an online course yourself (or any other online content for that matter). But even if you don’t, this post might give you interesting insights into what it takes to actually produce such a course.

The good – have a clear picture of an ideal student in mind:

I had a very clear picture of an ideal student in mind when I planned and designed the course: Android developer; at least 6 months of professional experience; very busy; willing to learn about Dependency Injection; ready to invest into professional educational content. This clarity with respect to target audience was of utmost importance.

The content of the course, its length and its pace were all derived from the aforementioned profile of an ideal student. I decided to make the course as condensed as possible (without sacrificing clarity) and leave out some parts that I would probably include otherwise.

Based on the feedback so far, it looks like I did manage to get very close to the optimal trade-off between length, depth and clarity of the material.

It was easy for me to come up with this persona representing the ideal student because it is very similar to the profile of an ideal reader I think about when I write posts for this blog. However, I’m sure that in most cases it is not an easy task that requires a thorough preliminary research.

The good – learn how to produce online courses:

By the time I decided to produce a full blown online course I have already uploaded several video tutorials to YouTube. These tutorials were received pretty well and the feedback was mostly positive.

When I planned the course I contemplated whether I had already known enough to be able to create right away. Luckily, I came to a conclusion that I hadn’t. So, I took four different Udemy courses about production and promotion of online courses.

This investment payed off enormously later. It simply scares me to think how much time I would waste if I wouldn’t learn about course production upfront.

The bad – not enough preparations:

About a month prior to starting the recordings I wrote down course curriculum in Excel spreadsheet. This spreadsheet had all the planned lectures structured into modules and each lecture had an associated list of topics that I intended to cover in it.

I was confident that I will be able to speak fluently through the lectures based on this high-level outline because, by then, I had already produced lots of written and video content on this specific topic.

Well, I was wrong. The assumption that I could create a course from high-level specification turned out to be my biggest mistake.

I started the recordings and very quickly realized that a minute of finalized content could take a hour or more to produce. I constantly went back and forth in the already recorded material to ensure content consistency and had to record the same pieces over and over again.

After three days I realized that if I’ll keep doing this, it will take several months until the course will be completed. Therefore, despite being under a huge time pressure at this point, I bit the bullet and wrote detailed scripts for all the lectures.

The initial plan was to produce the course in one week. I made sure to free up my schedule and notify the client I was working with that I won’t be available during this period. When it became clear that this plan was way too optimistic, I was faced with a difficult dilemma.

Letting the client down was not an option. Therefore, I had to choose between pausing the recordings and getting back to it later, or doing it on my spare time. I knew that postponing course production would most probably mean that I won’t complete it at all, so I chose to opt for a work marathon. I ended up working like crazy for three and a half weeks, about 14 hours a day.

Learn from my mistakes and prepare detailed scripts for all the lectures upfront.

The bad – compromising well-being and health:

At some point I was so desperate to complete the course that I decided to stop exercising. I thought that freeing up several more hours a week will make a difference. Another bad decision.

Not only did I exhaust myself by working and recording the course in parallel, but I also screwed up my own health. Not surprisingly, by the time I completed the course I had a severe neck pain which I’m still struggling with.

No matter what happens don’t stop exercising.

The ugly – screwing launch email campaign:

Except for the big mistakes I made during preparations and production stages, I also screwed up course launch a bit.

I decided to try MailChimp service to make a proper launch campaign among the subscribers of this blog. This service provides templates for beautiful emails which are much more appealing than our standard notifications about new posts. It also tracks metrics like open and click rates. Really good stuff.

So I created a campaign, wrote an announcement, included a coupon code and sent the mail. This mail landed squarely into “promotions” tab of the subscribers who use Gmail which amounts to more than 90% of all subscribers.

This mail landing in promotions tab was only fair because it was, in fact, a promotion.

Unfortunately, many people ignore all the mail that goes into promotions tab. But even those who do review promotions might not notice new ones for quite a long time because Gmail doesn’t notify about them. That wouldn’t be super bad if not for another mistake I did.

See, the coupon that I included in this email had a limited validity period of one week. I don’t know what I was thinking to myself when I did it. Probably it was a result of me reading digital marketing articles on the web – “create a sense of urgency”, or some other clever marketing trick.

Limiting the validity period of this coupon was totally unnecessary because it wasn’t a huge discount to start with. In addition, some subscribers noticed this email only after the coupon had already expired ???.

The ugly – not understanding Udemy’s “pricing climate”:

I set the price of this course according to the value I think it provides to the students.

This course can spare weeks (literally) by explaining dependency injection, which is a complex concept, quickly and efficiently. Some of the material covered in this course is effectively unique (e.g. implementation of “pure” dependency injection).

I thought that given the value proposition, charging 25$ for it is a reasonable price. This is comparable to having three beers at a local pub in my city.

There are countries with lower cost of living where 25$ might be considered a high price. However, even in these countries, professional developers (who are the target audience for the course) earn enough to justify this investment, given that it has the potential to spare weeks of effort.

In addition, Udemy’s 30 days money back policy makes it safe to try the course to see whether it is indeed interesting and useful.

However, while setting the price in this manner, I didn’t account for one very important factor.

See, practically all courses on Udemy are priced very high, but sold on discounts for 10$-15$. This is the model that Udemy discovered to work best because it creates an illusion of big discount.

I set the price for my course using the same strategy, but I wanted to sell it for a higher price of 25$. This created a problem which I discovered only when a potential student contacted me directly. This gentleman said that he is accustomed to buying courses for 10$ and asked me to provide additional discount to match this price point.

I had to decline this request despite the fact that, given the marginal cost of a course is basically zero, it would be profitable to sell it for any price.

What I told this gentleman is that if I offer this additional discount to him, then I will need to provide a similar discount to anyone asking for it in the future. Since I wouldn’t like to answer many personal discount requests, I decided that it doesn’t worth the trouble for me.

This request by a potential student demonstrates that some students on Udemy developed an expectation that courses will be sold for 10$-15$. This makes the courses priced higher look expensive, which makes it harder to sell these courses to an average Udemy student.

However, I believe that there is also a potential upside to this situation.

Since the barrier for purchase is higher, students who are not genuinely interested in learning dependency injection will not buy the course. This will lead to a higher average engagement among the students who take the course and, assuming that the course is indeed good, higher satisfaction.

It is too early to reflect on this theory of mine though.

First month stats:

I guess those of you who read this far would be interested in some numbers. I don’t see a reason to hide them:

46 students total, 35 paying.

15 ratings, 10 from paying students.

4.88 out of 5 average rating.

more than 50% of paying students completed the course.

earned 477$ (not including potential refunds)

My revenue for the first month, 477$, is a great result that many Udemy instructors could only dream about. In addition, as confirmed by other instructors, 50% completion rate is an extremely high engagement.

However, as I said, the course required a huge effort to produce and I live in a very expensive place.

I was curious how long will it take me to break even at this monthly revenue rate. So, I estimated the effort I put into this course and multiplied it by the lowest hourly rate I would charge my clients. If this course will make the same amount of money every month, I will break even in about two years.

Obviously I hope that the revenue will start building up faster such that I could justify to myself production of another course as soon as possible. My wildest dream is for this course to become the de-facto standard for learning dependency injection in Android.

Fingers crossed.

Summary:

I tried to capture the most important lessons that I learned by releasing my first course in this post. If you don’t intend to publish your own courses any time soon, I hope that this post was at least an interesting read.

In the coming days I will send another promotional email for this course with a discount coupon. This time the coupon will not expire.

If you don’t mind, I’d ask you to drag this email from “promotions” tab into “primary” if you are a Gmail user.

This will ensure that all my promotional emails will end up in your primary tab and you will be notified about them. In addition, if enough subscribers will drag the email into primary tab, Google might actually start routing all my promotions into this tab for all users by default.

I’ve been blogging for more than three years and during this time I sent just one promotional email. Given the effort required for production of an online course, there is no chance you’ll be spammed by my promotions any time soon.

You might have noticed that I wrote quite a lot of posts lately. This became possible because I can now tell myself that I don’t simply blog, but do content marketing. This fancy term means that I attract potential customers by producing interesting and useful content.

Therefore, even if you don’t intend to take my course(s), you’ll still benefit from it. Internet economy is great, isn’t it?

As usual, you’re more than welcome to leave your comments and ask questions below.