by Pierre de Wulf
How we went from three failed projects to 1200 users in just one week
Over the last two years, my partner Kevin Sahin and I tried to launch several projects while working full time. We failed. We failed hard. Sometimes because of a lack of motivation, but often because of a lack of methodology.
In this article I will share my experience about what we did wrong in all these failed side projects, and what we did right to finally launch Shoptolist.
Shoptolist is a universal wish list. It allows you to track the products you want to buy, and get notifications if the price drops. Think Pocket, but for shopping.
Why did we fail before?
Too much focus on the wrong processes
As developers ourselves, we spent too much time hunting for the perfect process. We wanted a perfect Continuous Integration/Continuous Deployment process, and 100% unit tests coverage. All these things are important for “mature” projects, but it’s a waste of time if you want to build your Minimum Viable Product (MVP).
Not enough focus on productivity
Not utilizing proven systems
We did everything on our own. For example, on our first project, we spent two weeks implementing our home-made login/register/forgot password system. It’s a “commodity feature,” and there isn’t any value for our users in it!
Then there is the design part. Again, we did everything from scratch. We spent so much time trying to make a good looking design. Design is really important, and it can sometimes be a feature. But arguing about how we should name our CSS classes or this
10px padding is a perfect example of how not to launch your MVP quickly.
For our first project — a lead generation tool that tragically died before even one user could try it — we spent three weeks working on a cool admin interface full of data and analytics. What a waste of time!
We spent countless hours watching entrepreneurship videos and advice, instead of shipping our product. It’s kind of funny to write this in an article about entrepreneurship, but there is so much information available — with Hacker News, Reddit, YouTube channels and more — it’s really easy to get lost and procrastinate.
Not talking with our users
We barely talked about our side projects, even to our friends. By doing this, we kept ourselves inside a bubble, and it had two bad consequences. First, we did not have any input on whether or not it was a good idea. And second, nobody but ourselves could encourage us.
What is different this time?
We changed our focus
We often read that ideas don’t matter, only execution does. In fact, we think ideas do matter a lot, for your own motivation. We switched our mindset from “There is this opportunity in that niche” to “I would love a product that does this.”
With Shoptolist, the problem we wanted to solve was first for ourselves. We were really motivated because for the first time we were about to launch a product we would actually use everyday.
We used systems we were comfortable with
Instead of playing with shiny new languages and frameworks, we used Python and Flask, because we felt productive with them.
We could have used React-Redux, but we are bad with front-end and we know it. So instead we went with the basic CSS-Html-Semantic User Interface.
For hosting, we used Amazon Elastic Beanstalk, which is a service that automates the deployment setup on AWS. We can deploy our code with a single command, and that’s great. There are lots of alternatives, and Heroku could have been a good fit, too. You don’t want to spend time configuring servers.
We used templates and boilerplates
This is something that saved us a lot of time. We used a boilerplate for our app, Flask-base. Basically it’s an open source code skeleton that does all the basic things every web app needs. User management, email, admin dashboard… There are boilerplates like this for almost every language and framework — so use them!
By doing this, we were able to focus on our core features, not the “noise” around them.
Then instead of building a custom dashboard for business metrics, we leveraged Google Analytics and tracked everything in it. It works great and took us 1 hour.
For our landing page, we used a landing page builder called Launchaco. There are lots of tools like this, and it’s an easy way to build a great and responsive landing page.
We spoke to everyone
From day one, we talked about our project to everyone around us, including our friends and colleagues. It helped us understand how people shop online, what they want, and allowed us to focus on the “Viable” part of the MVP.
Then after a month of hard work, we made several posts on social media with Reddit, and got 1200 signups in one week. It was great to have that many users early on. It allowed us to get tons of feedback — via email and Google Forms surveys — and to iterate around this feedback.
For example, on the first version of the landing page, lots of people told us they didn’t really understand what the product did. Or they asked questions like “Does it only work with clothes?”
So we changed the wording, adding phrases like “It works with every website/product,” and included some screenshots to make it more understandable. And it worked. Our conversion rate on signup immediately went up!
There’s more to come…
We still have a lot to do. We are not very proud of the design, and we’d like to add support for every major browser — there is only a Chrome extension for now. We want to deliver notifications if we see the product cheaper elsewhere (not quiet sure about how to do that at the moment), build mobile apps, and fix any bugs we find.
With ShopToList taking more and more of our time, we might have to think about a monetization strategy. Early on, we were upfront about the fact that we don’t want ads at all, so we might go the affiliate links way if it is necessary.
This was a humble article about our experience, what worked, and what didn’t. I hope it can help people with launching their projects, so that they don’t make the same mistakes as we did on our failed projects!
In the next article we will talk about the money problem, the mobile app, and getting traction.
Originally published at medium.com on February 23, 2018, made by Kevin Sahin and Pierre de Wulf.
Thank you for reading:
Don’t forget to subscribe if you want to receive my new posts directly in your inbox. I soon starting something new 😎 and exciting.
I write about tech in general and recently, more about how I built my new price competitor monitoring business.
Other things I wrote that you might like:
Git series 1/3: Understanding git for real by exploring the .git directory
"Whoah, I've just read this quick tuto about git and oh my god it is cool. I feel now super comfortable using it, and…www.daolf.comPython tips 1: beware of Python dict.get()
Beware of Python dict.get() If you think that value = my_dict.get('my_key', 'default_value') is equivalent to value =…www.daolf.comThings you should know about JS events
If you had the chance to do some client-side JS you certainly had to handle events. While libraries such as Jquery have…www.daolf.com