The launch was a major success and each day continues to exceed our expectations. While we are unable to claim to have acquired any deep insight about how to run a startup, we feel it's important to share our discoveries, however biased and circumstantial they may be. We are thankful to those who did so before us, as we have learned a lot from reading, both online and in books, about other startups' experiences and mistakes.
After working on it in our spare time for months, we finally decided to incorporate ThinkCode Labs, Inc. (the incorporation was done through a solid law firm in Toronto and cost us less than $2000) and launch the Italian site.
Learn to ship imperfection
There were about a thousand little things that popped up and got in the way, strongly suggesting that we should wait and delay our launch date. We truly had to give up perfectionism and learn to "ship imperfection" or we might have put off our launch forever. As it turns out, every small issue we thought might be problematic, did not end up impacting our customers, and the feedback we've received so far has been overwhelmingly positive.
We were put to the test on the night before our launch. It turned out that our e-commerce provider (who is otherwise excellent) could only apply our corrections to their Italian translation for our cart in two to three weeks. Not only that, but Italian customer who tried to apply a coupon we'd issued would see a message along the lines of "You just saved #(quantity} dollars". Note those pesky unbalanced parenthesis! This typo was a bit more serious than a funky Italian translation. It could have cost us some serious money.
So we had to decide if it was worth waiting another two to three weeks for the "perfect" launch, or to go ahead and embrace imperfection. We chose the latter and are glad we did.
Create a minimum viable product
If it were up to me, I would have loved to create a very fancy site full of fundamental features and start with a catalog that was rich in videos both in Italian and in English. But we had to give up on this idea pretty quickly or it would have taken us over a year to launch (remember, we work hard in our spare time, but we are employed full time elsewhere, except for Marco who is CEO of his own publicly traded company in Italy).
In the end what allowed us to go live was the notion that a minimum viable product was all we had to achieve.
So we started in Italian, and with only five videos:
- The first two lessons of the course on Test-Driven Development;
- The first two lessons of the course on Python;
- An individual screencast covering MacRuby and HotCocoa.
Be ready to change and adapt very quickly
This is nothing new for those who have experience with Agile programming or the concept of Lean Startup, or Evolution for that matter. Being reactive and ready to change proved invaluable for us.
When we started we didn't have Flash previews, but rather Quicktime Movie samples. We simply didn't have time to set them up, and we opted to offer previews in one of the formats we had (our files are downloadable in HD 720p, as .mov, .avi and Theora Ogg).
We received several support emails asking for Flash previews. It would seem people were passionately in favour of this. We literally rolled out Flash previews in two hours that night. The conversion rate increased sharply. A relatively small change, implemented quickly, ended up pleasing our customers and helping our bottom line out.
Do what's right, even when it makes things more difficult
A more drastic example of this scenario related to pre-orders. Before launching we discussed at length whether or not we should have pre-orders of whole courses, while they are still being developed. We liked the idea of this sort of "beta" a lot, because it could have helped our cash-flow and provide customers with a convenient method to pay once and receive the lessons as soon as they become available.
The real downside was that this is not a feature that is supported by our payment processor and e-commerce software, so it would have involved manually fulfill the orders, other means for delivering the digital goods (e.g., Amazon S3/CloudFront), securely storing a mailing list of people who pre-ordered for each course, complicated accounting if the course was produced by an external author, and so on. It would have required a lot of extra work at a time when we had plenty already.
We opted to start by simply selling the lessons that we had available (at €4.99 each). Guess what the most requested feature was? Pre-orders. Our company may be new, but Giuliano, Marco and I are relatively well-known and trusted by our Italian audience, some of whom had strongly advocated for us to introduce pre-orders. (I believe that pre-ordering from a brand new company involves a certain level of trust.)
We quickly adapted and decided to do the right thing, even if it complicated our job, and launched this feature in record time. We made a decision on Thursday night, and ended up launching it a few hours later that same night (Friday morning in Italy).
We offered a substantial discount (about 30% off) compared to purchasing the lessons individually (you can still buy them individually though). What were we supposed to do though with those customers who had already purchased one or two lessons? We offered them a coupon that essentially gave them a full refund on the lesson(s) they had already paid for. So instead of paying €4.99 for 11 lessons of the course on TDD, we gave them a €10 discount on the pre-order price of €39 (we gave the same coupon to those who bought Python lessons, despite the pre-order price of just €29).
I went to sleep that night thinking that we had rushed a lot of manual work for what would probably be relatively little return, but the satisfaction of a few early adopters was good enough for me.
In the morning when I checked my email I found more than a dozen pre-orders. By the end of that day, we had earned more money than the rest of the week combined. We were blown away and this really motivated us to push harder when it comes to creating the rest of the courses for those customers, as well as looking forward to the contributions from our external authors (that have already been working with us for some time now).
We believe that listening to our customers, without letting them guide the company for us, is a very balanced approach that pays off in the long run. Had we not listened and acted quickly on it, despite the challenges involved, we could have missed this great revenue opportunity and disappointed many customers in the process.
Don't assume, let the market be the judge
The surprising results above taught us how misleading assumptions can be. Letting the market judge ideas and theories is really the best approach, when feasible.
We assumed people would buy the Python course much more than the Test-Driven Development one, or that they'd sell equally well, after all we are incredibly established in the Italian Python community. It turns out, the TDD course entirely outperformed the Python one (which is doing pretty well anyway).
We assumed that our customers would buy a single lesson of a course, see if they liked it, and then eventually purchase the other one (this was before we introduced pre-orders, of course). Wrong again, almost every customer bought both lessons of one of the two courses (and some customers simply bought every video available in the store).
We assumed that sponsoring an Agile conference would significantly boost sales for the TDD course. Unfortunately it didn't. The TDD course is selling like hot cakes, but not from that source. Things may change when the conference actually takes place (for now our ad is just on their website for people to see when people register), but we are not going to assume this. ;-) Regardless of the outcome, we are happy to support attempts to improve the craft of programming in Italy.
We assumed that having a decent budget, high max. CPC, focused keywords, and optimized ads for Google Adwords, would lead to a more or less constant stream of conversions. So far, that's been far from the case and several of the specific keywords we target have incurred an insufficient volume of searches originating from Italy.
The lesson for us here was, when in doubt don't be lazy, try it in the market (and split test).
Measure everything
One of the nicest things about charging for a product is that most of your metrics can be expressed in dollars. Your whole approach to measuring your web performance changes. Most sites measure their success in absolute visitors, pageviews, registered users, and so on. If these numbers are large enough, even with a tiny conversion rate (from visitor to customer), you'll get enough business. But it's not really what we are focusing on.
As a business, we think it's important to measure success in dollars and customer satisfaction, so the single most important factor for us is obtaining conversions and making first time customers so happy that they become returning ones.
A smaller, more interested group of visitors, will always lead to more sales than a larger, vaguely interested one. In fact, most of our business so far has come from the few hundred people who joined our newsletter or followed us on Twitter in the months leading up to our launch. When I covered the announcement of our launch on a popular Italian programming site I started, that's followed by more than five thousand people, we received very few sales in comparison.
Focus on what you do best
Whenever possible we opted to delegate our non-core business to those who do it best. We use Dropbox for sharing files with our authors, Amazon S3 for archiving, backing up and for part of our digital deliveries, MailChimp for handling newsletters, Radiant CMS for our brochure site, FastSpring for our e-commerce and payment processing, and so on. Each of these five services/products is spectacular in its own right and has made our lives a little bit easier.
tl;dr Ship your product/site as fast as you can, and then adjust continuously based on valuable metrics and your customer's feedback.
For those of you who haven't already, please subscribe to this feed and join our English newsletter. Also, if you are a native English speaker (or virtually so), an excellent programmer and communicator, and would love to become one of our authors for the English catalog, feel free to get in touch with us (authors@thinkcode.tv). We offer very generous royalties and would love to hear from you.


